Release Notes
- 1、【新增】BloomFilter(布隆過濾器):一種基於多哈希函數和位數組的概率型數據結構,具有高效空間利用與快速查詢特性;
- 2、【新增】Trie(前綴數):一種哈希樹的變種,利用公共前綴來節省存儲空間和提高查詢效率;
- 3、【新增】BeanTool 工具:支持 Bean&Map 轉換、Bean對象複製 等能力;
- 4、【強化】ExcelTool 強化:支持流式Excel讀取和寫入,大數據量下提升操作性能;
- 5、【強化】ReflectionTool 工具強化:完善 Method、Field、Proxy 等相關工具化方法;
- 6、【優化】工具包結構調整,規範模塊命名與包路徑,涉及 json、crypto 模塊;
- 7、【升級】升級多項maven依賴至較新版本,如 gson、spring、poi 等;
代碼示例01:BloomFilter / 布隆過濾器
BloomFilter:布隆過濾器,一種基於多哈希函數和位數組的概率型數據結構,具有高效空間利用與快速查詢特性;
// 1、初始化 BloomFilter
int size = 1000000; // 1、容量
double fpp = 0.01; // 2、誤判率
BloomFilter<Long> bloomFilter = BloomFilter.create(Funnels.LONG, size, fpp);
// 2、添加元素
bloomFilter.put(999L);
// 3、判定元素是否存在
bloomFilter.mightContain(999L);
代碼示例02:Trie / 前綴數
前綴數,一種哈希樹的變種,利用公共前綴來節省存儲空間和提高查詢效率;
// 1、初始化 前綴樹
Trie trie = new Trie();
// 2、插入單詞
trie.insert("apple");
// 3、查詢完整單詞
trie.search("app");
// 4、前綴匹配檢查
trie.startsWith("app");
代碼示例03:ExcelTool / Excel讀寫工具
-
常規方式:
/** * Excel導出:Object 轉換為 Excel */ ExcelTool.writeFile(filePath, shopDTOList); /** * Excel導入:Excel 轉換為 Object */ List<ShopDTO> shopDTOList = ExcelTool.readExcel(filePath, ShopDTO.class); -
流式方式(支持大數據量):
/** * Excel導出(流式方式):Object 轉換為 Excel */ ExcelTool.writeExcel(filePath, new Supplier<>() { @Override public UserDTO get() { // 流式獲取數據 ... return new UserDTO(); } }); /** * Excel導入(流式方式):Excel 轉換為 Object */ ExcelTool.readExcel(filePath, new Consumer<UserDTO>() { @Override public void accept(UserDTO userDTO) { logger.info("item: " + userDTO); } });
簡介
XXL-TOOL 是一個Java工具類庫,致力於讓Java開發更高效。包含 “日期、集合、字符串、IO、緩存、併發、Excel、Emoji、Response、Pipeline、Http、Json、JsonRpc、Encrypt、Auth、ID、Serializer、驗證碼、限流器、BloomFilter...” 等數十個模塊。
文檔地址
- 中文文檔:https://www.xuxueli.com/xxl-tool/
- Github:https://github.com/xuxueli/xxl-tool
組件列表
| 模塊 | 説明 |
|---|---|
| Core模塊 | 包含 集合、緩存、日期、反射、斷言、……等基礎工具。 |
| Cache模塊 | 一個高性能的 Java 緩存工具,支持多種緩存類型(FIFO、LFU、LRU等)、鎖分桶優化、緩存過期策略(寫後過期、訪問後過期...)、緩存定時清理、緩存加載器、緩存監聽器、緩存信息統計...等功能。 |
| IO模塊 | 一系列處理IO(輸入/輸出)操作的工具,包括 FileTool、CsvTool、IOTool...等。 |
| Concurrent模塊 | 一系列併發編程工具,具備良好的線程安全、高併發及高性能優勢,包括MessageQueue(高性能內存隊列,30W+ TPS)、CyclicThread(後台循環線程)、TimeWheel(時間輪組件)、TokenBucket(令牌桶/限流器)等。 |
| Http模塊 | 一系列處理Http通訊、IP、Cookie等相關工具。 |
| Json模塊 | json序列化、反序列化工具封裝,基於Gson。 |
| JsonRpc模塊 | 一個輕量級、跨語言遠程過程調用實現,基於json、http實現(對比傳統RPC框架:XXL-RPC)。 |
| Excel模塊 | 一個靈活的Java對象和Excel文檔相互轉換的工具。一行代碼完成Java對象和Excel之間的轉換。 |
| Emoji模塊 | 一個靈活可擴展的Emoji表情編解碼庫,可快速實現Emoji表情的編解碼。 |
| Response模塊 | 統一響應數據結構體,標準化數據結構、狀態碼等,降低協作成本。 |
| Pipeline模塊 | 高擴展性流程編排引擎。 |
| Error模塊 | 異常處理相關工具,包括通用業務異常封裝、異常工具類等; |
| Freemarker模塊 | 模板引擎工具,支持根據模板文件實現 動態文本生成、靜態文件生成 等,支持郵件發送、網頁靜態化場景。 |
| Crypto模塊 | 一系列處理編解碼、加解密的工具,包括 Md5Tool、Sha256Tool、HexTool、Base64Tool...等。 |
| Auth模塊 | 一系列權限認證相關工具,包括JwtTool...等。 |
| ID模塊 | 一系列ID生成工具,支持多種ID生成策略,包括 UUID、Snowflake、Date、Random 等。 |
| Serializer模塊 | 一系列序列化、反序列化工具,支持擴展多種序列化格式,包括 jdk、protobuf、hessian 等。 |
| Captcha模塊 | 一個驗證碼工具,支持隨機字符驗證碼、數字驗證碼、中文驗證碼等多形式。支持自定義驗證碼生成算法、寬高、顏色、文字字體/大小/間距、背景顏色、邊框寬度/邊框、干擾策略…等。 |
| DataStructure模塊 | 一系列數據結構工具,包括 BloomFilter、Trie/前綴樹...等; |
| ... | ... |
Tool明細
| 模塊 | 工具 | 説明 |
|---|---|---|
| core | StringTool | 字符串工具,提供字符串校驗及操作相關能力 |
| core | DateTool | 日期時間工具,提供日期時間轉換及操作相關能力 |
| core | AssertTool | 斷言工具,提供有效性校驗能力 |
| core | CollectionTool | 集合工具,提供集合操作能力 |
| core | ArrayTool | 數組工具,提供集合操作能力 |
| core | MapTool | Map 工具,提供Map操作能力 |
| core | ObjectTool | Object工具,提供Object操作能力 |
| core | PropTool | Prop工具,提供Properties文件操作能力 |
| core | ReflectionTool | Java反射工具,提供Java反射操作能力 |
| core | ClassTool | Class類工具,提供Class類操作能力 |
| core | TypeTool | Type工具,提供Type操作能力 |
| auth | JwtTool | JWT工具,提供JWT生成及解析能力 |
| cache | CacheTool | 一個高性能的 Java 緩存工具,支持多種緩存類型(FIFO、LFU、LRU等)、鎖分桶優化、緩存過期策略(寫後過期、訪問後過期...)、緩存定時清理、緩存加載器、緩存監聽器、緩存信息統計...等功能。 |
| concurrent | CyclicThread | 後台循環線程,支持精準、線程安全的週期性循環執行能力 |
| concurrent | MessageQueue | 高性能內存隊列,單機支持 30W+ TPS |
| concurrent | TimeWheel | 時間輪組件,提供定時任務執行能力 |
| concurrent | TokenBucket | 令牌桶/限流器組件,提供令牌桶限流能力 |
| emoji | EmojiTool | Emoji表情工具,提供Emoji表情編解碼能力 |
| crypto | Base64Tool | Base64工具,提供Base64編解碼能力 |
| crypto | HexTool | Hex工具,提供Hex編解碼能力 |
| crypto | Md5Tool | MD5工具,提供MD5編碼能力 |
| crypto | SHA256Tool | SHA256工具,提供SHA256編碼能力 |
| excel | ExcelTool | 一個基於註解的 Excel 與 Java對象 相互轉換及導入導出工具;一行代碼完成Java對象和Excel之間的轉換。 |
| exception | BizException | 通用業務異常 |
| exception | ThrowableTool | 異常處理工具 |
| freemarker | FtlTool | 模板引擎工具, 支持根據模板文件實現 動態文本生成、靜態文件生成 等,支持郵件發送、網頁靜態化場景。 |
| json | GsonTool | Json序列化及反序列化工具,基於Gson |
| http | CookieTool | Cookie工具,提供Cookie讀寫操作能力 |
| http | HttpTool | 一個高性能 HTTP 請求庫,API簡潔易用、使用高效方便且性能優越;支持 “常規Http請求、Java對象請求、接口&註解編程” 三種使用方式。 |
| http | IPTool | IP工具,提供IP地址及端口號相關校驗、生成及操作相關能力 |
| io | IOTool | IO工具,提供豐富IO讀寫操作能力 |
| io | FileTool | 一個高性能 File/文件 操作工具,支持豐富文件操作API;針對大文件讀寫設計分批操作、流式讀寫能力,降低內存佔用、提升文件操作性能。 |
| io | CsvTool | Csv工具,提供Csv文件讀寫操作能力 |
| jsonrpc | JsonRpcClient | 輕量級RPC通訊工具,客户端實現;基於json、http實現 |
| jsonrpc | JsonRpcServer | 輕量級RPC通訊工具,服務端實現;基於json、http實現 |
| pipeline | PipelineExecutor | Pipeline執行工具,提供pipeline註冊管理以及執行相關能力 |
| pipeline | Pipeline | Pipeline工具,提供pipeline定義及執行相關能力 |
| response | Response | 標準響應結果封裝,統一服務端數據返回格式 |
| response | ResponseCode | 標準響應碼定義,統一服務端響應碼體系 |
| response | PageModel | 標準分頁結果封裝,統一服務端分頁數據格式 |
| id | DateIdTool | ID生成工具,根據日期趨勢遞增生成ID; |
| id | RandomIdTool | ID生成工具,隨機數字、字母、混合字符生成工具; |
| id | SnowflakeIdTool | ID生成工具,雪花算法ID生成工具; |
| id | UUIDTool | ID生成工具,UUID生成工具; |
| captcha | CaptchaTool | 驗證碼工具,提供驗證碼生成能力; |
| datastructure | BloomFilter | 布隆過濾器,一種基於多哈希函數和位數組的概率型數據結構,具有高效空間利用與快速查詢特性; |
| datastructure | Trie | 前綴數,一種哈希樹的變種,利用公共前綴來節省存儲空間和提高查詢效率; |
| ... | ... |