当前位置: 首页 > news >正文

XXL-TOOL v2.1.0 发布 | Java工具类库

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、验证码、限流器...” 等数十个模块。

文档地址

  • 中文文档:https://www.xuxueli.com/xxl-tool/
  • Github:https://github.com/xuxueli/xxl-tool

组件列表

模块 说明
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()                   // 波纹效果));

验证码示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.hskmm.com/?act=detail&tid=10201

相关文章:

  • Python-Pathlib库
  • 反省
  • [Nacos/Docker/MCP] Nacos 3.x : 为 AI MCP 而生
  • 牛客周赛 Round 108 CDEF题解
  • Redis的使用问题
  • AIGC拾遗:Flash Attention
  • 深度好文-风雨飘摇信竞路
  • Python-CSV库
  • C++小白修仙记_LeetCode刷题_位运算
  • C++小白修仙记_LeetCode刷题_双指针
  • 前路漫漫亦灿灿 往事堪堪亦澜澜
  • 使用uv和pycharm搭建python开发环境
  • lc1032-字符流
  • C++小白修仙记_LeetCode刷题_哈希表
  • 【F#学习】字符串String
  • 现代汽车前瞻杯2025牛客暑期多校训练营3
  • 实用指南:多技术融合提升环境生态水文、土地土壤、农业大气等领域的数据分析与项目科研水平
  • 【F#学习】“变量”?绑定!
  • 2023 CCPC 深圳 F
  • 完整教程:【算法】双指针(三)[快慢指针]-快乐数
  • 9.19做题资料:哈希表查找时间复杂度分析
  • CF2143F Increasing Xor
  • 提到链接,你能想到什么
  • 实用指南:容器逃逸漏洞
  • 三种方式处理SpringBoot全局异常
  • ECT-OS-JiuHuaShan 框架的元推理,是历史性的文明话语权
  • 应对连写与变体:深度学习赋能维吾尔文识别的核心方案与难点解析
  • CMake工具链
  • 20250918 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
  • 【脑电分析系列】第6篇:经典ERP成分解析 — P300、N170、N400等波形与它们代表的认知功能 — 洞察大脑的认知“电信号语言” - 教程