XXL-TOOL v2.1.0 發(fā)布 | Java工具類庫

Release Notes

  • 1、【新增】新增“令牌桶/限流器”工具,TokenBucket,支持 突發(fā)限流、預(yù)熱限流 等模式;
  • 2、【新增】新增“驗證碼”工具,CaptchaTool,支持字符驗證碼、算式驗證碼、中文驗證碼等多形式。支持自定義驗證碼生成算法、寬高、顏色、文字字體、文字大小、文字間距、背景顏色、邊框?qū)挾?、邊框顏色、干擾組件…等。
  • 3、【新增】新增基礎(chǔ)模塊工具,包括:ArrayTool 等;
  • 4、【強(qiáng)化】已有工具能力完善,包括:PropTool、StringTool 等;
  • 5、【升級】升級依賴版本,包括gson、nimbus-jose-jwt、spring等;

簡介

XXL-TOOL 是一個Java工具類庫,致力于讓Java開發(fā)更高效。包含 “日期、集合、字符串、IO、緩存、并發(fā)、Excel、Emoji、Response、Pipeline、Http、Json、JsonRpc、Encrypt、Auth、ID、Serializer、驗證碼、限流器...” 等數(shù)十個模塊。

文檔地址

組件列表

模塊 說明
Core模塊 包含 集合、緩存、日期、反射、斷言、……等基礎(chǔ)工具。
IO模塊 一系列處理IO(輸入/輸出)操作的工具。
Concurrent模塊 一系列并發(fā)編程工具,具備良好的線程安全、高并發(fā)及高性能優(yōu)勢,包括MessageQueue(高性能內(nèi)存隊列,30W+ TPS)、CyclicThread(后臺循環(huán)線程)、TimeWheel(時間輪組件)、TokenBucket(令牌桶/限流器)等。
Http模塊 一系列處理Http通訊、IP、Cookie等相關(guān)工具。
Json模塊 json序列化、反序列化工具封裝,基于Gson。
JsonRpc模塊 一個輕量級、跨語言遠(yuǎn)程過程調(diào)用實現(xiàn),基于json、http實現(xiàn)(對比傳統(tǒng)RPC框架:XXL-RPC)。
Excel模塊 一個靈活的Java對象和Excel文檔相互轉(zhuǎn)換的工具。一行代碼完成Java對象和Excel之間的轉(zhuǎn)換。
Emoji模塊 一個靈活可擴(kuò)展的Emoji表情編解碼庫,可快速實現(xiàn)Emoji表情的編解碼。
Response模塊 統(tǒng)一響應(yīng)數(shù)據(jù)結(jié)構(gòu)體,標(biāo)準(zhǔn)化數(shù)據(jù)結(jié)構(gòu)、狀態(tài)碼等,降低協(xié)作成本。
Pipeline模塊 高擴(kuò)展性流程編排引擎。
Exception模塊 異常處理相關(guān)工具。
Freemarker模塊 模板引擎工具,支持根據(jù)模板文件實現(xiàn) 動態(tài)文本生成、靜態(tài)文件生成 等,支持郵件發(fā)送、網(wǎng)頁靜態(tài)化場景。
Encrypt模塊 一系列處理編解碼、加解密的工具,包括 Md5Tool、SHA256Tool、HexTool、Base64Tool...等。
Auth模塊 一系列權(quán)限認(rèn)證相關(guān)工具,包括JwtTool...等。
ID模塊 一系列ID生成工具,支持多種ID生成策略,包括 UUID、Snowflake、Date、Random 等。
Serializer模塊 一系列序列化、反序列化工具,支持?jǐn)U展多種序列化格式,包括 jdk、protobuf、hessian 等。
Captcha模塊 一個驗證碼工具,支持字符驗證碼、算式驗證碼、中文驗證碼等多形式。支持自定義驗證碼生成算法、寬高、顏色、文字字體/大小/間距、背景顏色、邊框?qū)挾?邊框、干擾策略…等。
... ...

代碼示例01:令牌桶-限流器/TokenBucket 用法

令牌桶算法實現(xiàn),具備高精度、預(yù)熱支持以及線程安全等優(yōu)勢。

// a、令牌桶定義,自定義設(shè)置每秒獲取的令牌數(shù)
TokenBucket smoothBursty = TokenBucket.create(5.0);

// b、獲取令牌, 返回獲取的令牌耗時
double cost = smoothBursty.acquire();

// c、獲取令牌, 嘗試獲取令牌, 100毫秒內(nèi)返回結(jié)果;獲取不到時返回false
boolean result = smoothBursty.tryAcquire(100, TimeUnit.MILLISECONDS);

代碼示例02:驗證碼/Captcha 用法

一個驗證碼工具,支持字符驗證碼、算式驗證碼、中文驗證碼等多形式。支持自定義驗證碼生成算法、寬高、顏色、文字字體/大小/間距、背景顏色、邊框?qū)挾?邊框、干擾策略…等。

  • 常規(guī)使用方式:
// a、定義 CaptchaTool
CaptchaTool captchaTool = CaptchaTool.build();

// b、驗證碼文本生成
CaptchaTool.TextResult textResult = captchaTool.createText();
logger.info("驗證碼文本: {}", textResult.getText());
logger.info("驗證碼結(jié)果(可選,支持算式驗證碼): {}", 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());
  • 驗證碼初始化配置方式:
// 字符驗證碼,默認(rèn)
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());
  • 驗證碼設(shè)置參數(shù):
CaptchaTool captchaTool = CaptchaTool.build()
    .setTextCreator(new CaptchaTool.DefaultTextCreator(6))      // 驗證碼內(nèi)容生成組件,支持?jǐn)U展,默認(rèn)提供:DefaultTextCreator(字符)、ArithmeticTextCreator(算式)
    .setWidth(180)                                              // 驗證碼圖片寬度
    .setHeight(60)                                              // 驗證碼圖片高度
    .setColors(Arrays.asList(                                   // 驗證碼圖片顏色;如配置多個,驗證碼生成時隨機(jī)獲取
            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(                                    // 驗證碼字體;如配置多個,驗證碼生成時隨機(jī)獲取
            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)                                      // 驗證碼邊框?qū)挾?    .setNoiseColor(Color.WHITE)                                 // 驗證碼干擾線顏色       
    .setDistortedEngines(Arrays.asList(                         // 驗證碼干擾組件
            new CaptchaTool.NoneDistorted(),                    // 無干擾
            new CaptchaTool.ShadowDistorted(),                  // 陰影效果
            new CaptchaTool.WaterRippleDistorted(),             // 水波紋效果
            new CaptchaTool.FishEyeDistorted(),                 // 魚眼效果
            new CaptchaTool.RippleDistorted()                   // 波紋效果
    ));
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容