Release Notes
- 1、【新增】新增“令牌桶/限流器”工具,TokenBucket,支持 突發限流、預熱限流 等模式;
- 2、【新增】新增“驗證碼”工具,CaptchaTool,支持字符驗證碼、算式驗證碼、中文驗證碼等多形式。支持自定義驗證碼生成算法、寬高、顏色、文字字體、文字大小、文字間距、背景顏色、邊框寬度、邊框顏色、干擾組件…等。
- 3、【新增】新增基礎模塊工具,包括:ArrayTool 等;
- 4、【強化】已有工具能力完善,包括:PropTool、StringTool 等;
-
5、【升級】升級依賴版本,包括gson、nimbus-jose-jwt、spring等;
簡介
XXL-TOOL 是一個Java工具類庫,致力於讓Java開發更高效。包含 “日期、集合、字符串、IO、緩存、併發、Excel、Emoji、Response、Pipeline、Http、Json、JsonRpc、Encrypt、Auth、ID、Serializer、驗證碼、限流器...” 等數十個模塊。
文檔地址
組件列表
| 模塊 | 説明 |
|---|---|
| Core模塊 | 包含 集合、緩存、日期、反射、斷言、……等基礎工具。 |
| IO模塊 | 一系列處理IO(輸入/輸出)操作的工具。 |
| 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模塊 | 高擴展性流程編排引擎。 |
| Exception模塊 | 異常處理相關工具。 |
| Freemarker模塊 | 模板引擎工具,支持根據模板文件實現 動態文本生成、靜態文件生成 等,支持郵件發送、網頁靜態化場景。 |
| Encrypt模塊 | 一系列處理編解碼、加解密的工具,包括 Md5Tool、SHA256Tool、HexTool、Base64Tool...等。 |
| Auth模塊 | 一系列權限認證相關工具,包括JwtTool...等。 |
| ID模塊 | 一系列ID生成工具,支持多種ID生成策略,包括 UUID、Snowflake、Date、Random 等。 |
| Serializer模塊 | 一系列序列化、反序列化工具,支持擴展多種序列化格式,包括 jdk、protobuf、hessian 等。 |
| Captcha模塊 | 一個驗證碼工具,支持字符驗證碼、算式驗證碼、中文驗證碼等多形式。支持自定義驗證碼生成算法、寬高、顏色、文字字體/大小/間距、背景顏色、邊框寬度/邊框、干擾策略…等。 |
| ... | ... |
代碼示例01:令牌桶-限流器/TokenBucket 用法
令牌桶算法實現,具備高精度、預熱支持以及線程安全等優勢。
// a、令牌桶定義,自定義設置每秒獲取的令牌數
TokenBucket smoothBursty = TokenBucket.create(5.0);
// b、獲取令牌, 返回獲取的令牌耗時
double cost = smoothBursty.acquire();
// c、獲取令牌, 嘗試獲取令牌, 100毫秒內返回結果;獲取不到時返回false
boolean result = smoothBursty.tryAcquire(100, TimeUnit.MILLISECONDS);
代碼示例02:驗證碼/Captcha 用法
一個驗證碼工具,支持字符驗證碼、算式驗證碼、中文驗證碼等多形式。支持自定義驗證碼生成算法、寬高、顏色、文字字體/大小/間距、背景顏色、邊框寬度/邊框、干擾策略…等。
-
常規使用方式:
// a、定義 CaptchaTool CaptchaTool captchaTool = CaptchaTool.build(); // b、驗證碼文本生成 CaptchaTool.TextResult textResult = captchaTool.createText(); logger.info("驗證碼文本: {}", textResult.getText()); logger.info("驗證碼結果(可選,支持算式驗證碼): {}", textResult.getResult()); // c、驗證碼圖片生成 BufferedImage image = captchaTool.createImage(textResult); // d、保存驗證碼圖片 // 方式1:本地保存 ImageIO.write(image, "png", new FileOutputStream("/Users/admin/Downloads/captcha/captcha-1.png")); // 方式2:Web接口(通過HttpServletResponse)返回 response.setContentType("image/png"); response.setHeader("Cache-Control", "no-cache"); ImageIO.write(image, "png", response.getOutputStream()); -
驗證碼初始化配置方式:
// 字符驗證碼,默認 CaptchaTool captchaTool = CaptchaTool.build(); // 字符驗證碼,自定義長度 CaptchaTool captchaTool = CaptchaTool.build().setTextCreator(new CaptchaTool.ArithmeticTextCreator()); // 字符驗證碼,中文漢字 CaptchaTool captchaTool = CaptchaTool.build().setTextCreator(new CaptchaTool.DefaultTextCreator("物華天寶人傑地靈山清水秀景色宜人")); // 算式驗證碼 CaptchaTool captchaTool = CaptchaTool.build().setTextCreator(new CaptchaTool.ArithmeticTextCreator()); -
驗證碼設置參數:
CaptchaTool captchaTool = CaptchaTool.build() .setTextCreator(new CaptchaTool.DefaultTextCreator(6)) // 驗證碼內容生成組件,支持擴展,默認提供:DefaultTextCreator(字符)、ArithmeticTextCreator(算式) .setWidth(180) // 驗證碼圖片寬度 .setHeight(60) // 驗證碼圖片高度 .setColors(Arrays.asList( // 驗證碼圖片顏色;如配置多個,驗證碼生成時隨機獲取 new Color(0xb83b5e), new Color(0xf08a5d), new Color(0xff9a00), new Color(0x00b8a9), new Color(0x004a7c), new Color(0x3d84a8), new Color(0x521262) )) .setFontSize(40) // 驗證碼字體大小 .setFonts(Arrays.asList( // 驗證碼字體;如配置多個,驗證碼生成時隨機獲取 new Font("Arial", Font.BOLD, 40), new Font("Courier", Font.BOLD, 40) )) .setCharSpace(8) // 驗證碼字符間距 .setBackgroundColorFrom(Color.LIGHT_GRAY) // 驗證碼背景顏色 .setBackgroundColorTo(Color.WHITE) // 驗證碼背景顏色,如果From和To背景顏色不一致,會生成漸變顏色; .setIsBorderDrawn(true) // 驗證碼是否繪製邊框 .setBorderColor(Color.WHITE) // 驗證碼邊框顏色 .setBorderThickness(1) // 驗證碼邊框寬度 .setNoiseColor(Color.WHITE) // 驗證碼干擾線顏色 .setDistortedEngines(Arrays.asList( // 驗證碼干擾組件 new CaptchaTool.NoneDistorted(), // 無干擾 new CaptchaTool.ShadowDistorted(), // 陰影效果 new CaptchaTool.WaterRippleDistorted(), // 水波紋效果 new CaptchaTool.FishEyeDistorted(), // 魚眼效果 new CaptchaTool.RippleDistorted() // 波紋效果 ));驗證碼示例: