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 模块 | 一个验证码工具,支持字符验证码、算式验证码、中文验证码等多形式。支持自定义验证码生成算法、宽高、颜色、文字字体/大小/间距、背景颜色、边框宽度/边框、干扰策略…等。 |
... | ... |
令牌桶算法实现,具备高精度、预热支持以及线程安全等优势。
// a 、令牌桶定义,自定义设置每秒获取的令牌数
TokenBucket smoothBursty = TokenBucket.create(5.0);
// b 、获取令牌, 返回获取的令牌耗时
double cost = smoothBursty.acquire();
// c 、获取令牌, 尝试获取令牌, 100 毫秒内返回结果;获取不到时返回 false
boolean result = smoothBursty.tryAcquire(100, TimeUnit.MILLISECONDS);
一个验证码工具,支持字符验证码、算式验证码、中文验证码等多形式。支持自定义验证码生成算法、宽高、颜色、文字字体/大小/间距、背景颜色、边框宽度/边框、干扰策略…等。
// 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() // 波纹效果
));
验证码示例: