Stories

Detail Return Return

XXL-TOOL v2.1.0 發佈 | Java工具類庫 - Stories Detail

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()                   // 波紋效果
      ));

    驗證碼示例:
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述

user avatar sofastack Avatar u_16769727 Avatar u_11365552 Avatar shumile_5f6954c414184 Avatar aipaobudeshoutao Avatar lu_lu Avatar immerse Avatar zbooksea Avatar devlive Avatar yaochujiadetiebanshao Avatar wangqingsheng Avatar chengxy Avatar
Favorites 31 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.