XXL-TOOL v1.4.0 发布 | Java 工具类库 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX    程序员

XXL-TOOL v1.4.0 发布 | Java 工具类库

  • nbsp;
  •   xuxueli 250 天前 1807 次点击
    这是一个创建于 250 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Release Notes

    • 1 、 [新增] JsonRpc 模块:一个轻量级、跨语言远程过程调用实现,基于 json 、http 实现(从 XXL-JOB 底层通讯组件提炼抽象)。
    • 2 、 [新增] Concurrent 模块:一系列并发编程工具,具备良好的线程安全、高并发及高性能优势,包括 CyclicThread (循环线程)、MessageQueue (高性能内存队列,30W+ TPS )等。
    • 3 、 [新增] Auth 模块:一系列权限认证相关工具,包括 JwtTool 等。
    • 4 、 [强化] 已有工具能力完善,包括 CollectionTool 、MapTool 、HttpTool 等;
    • 5 、 [升级] 升级依赖版本,包括 slf4j 、poi 、spring 、gson 、junit 等。

    简介

    XXL-TOOL 是一个 Java 工具类库,致力于让 Java 开发更高效。包含 “集合、字符串、缓存、IO 、并发、Excel 、Emoji 、Response 、Pipeline 、Http 、Json 、JsonRpc 、Encrypt 、Auth……” 等数十个模块。

    文档地址

    组件列表

    模块 说明
    Core 模块 包含集合、缓存、日期……等基础组件工具。
    IO 模块 一系列处理 IO (输入/输出)操作的工具。
    Concurrent 模块 一系列并发编程工具,具备良好的线程安全、高并发及高性能优势,包括 MessageQueue (高性能内存队列,30W+ TPS )、CyclicThread (后台循环线程)、TimeWheel (时间轮组件)等。
    Http 模块 一系列处理 Http 通讯、IP 、Cookie 等相关工具。
    Gson 模块 json 序列化、反序列化工具封装,基于 Gson 。
    Excel 模块 一个灵活的 Java 对象和 Excel 文档相互转换的工具。一行代码完成 Java 对象和 Excel 之间的转换。
    Emoji 模块 一个灵活可扩展的 Emoji 表情编解码库,可快速实现 Emoji 表情的编解码。
    JsonRpc 模块 一个轻量级、跨语言远程过程调用实现,基于 json 、http 实现(对比传统 RPC 框架:XXL-RPC)。
    Response 模块 统一响应数据结构体,标准化数据结构、状态码等,降低协作成本。
    Pipeline 模块 高扩展性流程编排引擎。
    Exception 模块 异常处理相关工具。
    Freemarker 模块 模板引擎工具,支持根据模板文件实现 动态文本生成、静态文件生成 等,支持邮件发送、网页静态化场景。
    Encrypt 模块 一系列处理编解码、加解密的工具,包括 Md5Tool 、HexTool 、Base64Tool...等。
    Auth 模块 一系列权限认证相关工具,包括 JwtTool...等。
    ... ...

    代码示例:JsonRpc 用法

    一个轻量级、跨语言远程过程调用实现,基于 json 、http 实现。

    第一步:RPC 业务服务开发

    public interface UserService { public ResultDTO createUser(UserDTO userDTO); public UserDTO loadUser(String name); ... ... } 

    第二步:JsonRpc 服务端配置

    // a 、JsonRpcServer 初始化 JsonRpcServer jsOnRpcServer= new JsonRpcServer(); // b 、业务服务注册(支持多服务注册) jsonRpcServer.register("userService", new UserServiceImpl()); // c 、Web 框架集成,该入口为 RPC 统一流量入口( springmvc 集成;理论上支持任意 web 框架集成,其他框架参考集成) @RequestMapping("/openapi") @ResponseBody public String api(@RequestBody(required = false) String requestBody){ // 核心代码:Http 请求的 RequestBody 作为入参;业务响应作为输出; return jsonRpcServer.invoke(requestBody); } 

    第三步:JsonRpc 客户端配置

    // 方式 1:代理方式使用 (针对接口构建代理,通过代理对象实现远程调用;) UserService userService = new JsonRpcClient("http://localhost:8080/jsonrpc", 3000).proxy("userService", UserService.class); // 发起 RPC 请求; UserDTO result = userService.loadUser("zhangsan"); 

    代码示例:MessageQueue (高性能内存队列)

    高性能内存队列,单机支持 30W+ TPS ,具备良好的性能及高并发优势,支持生产消费模型。

    // a 、定义队列:指定 消费者数量、批量消费数量、消费者逻辑等 MessageQueue<String> messageQueue = new MessageQueue<>( "demoQueue", messages -> { // 消费逻辑 System.out.println("Consume: " + messages); }, 10, // 自定义消费者线程 20 // 自定义批量消费数量 ); // b 、生产消息 messageQueue.produce("test-" + i); 

    代码示例:TimeWheel (时间轮)

    时间轮算法实现,具备高精度、多任务、以及线程安全等优势。

    // a 、时间轮定义,自定义时间轮刻度、间隔等 TimeWheel timeWheel = new TimeWheel(60, 1000); // b 、提交时间轮任务(定时任务) timeWheel.submitTask(System.currentTimeMillis() + 3000, () -> { System.out.println("Task delay " + waitTime + "ms executed at: " ); }); 

    代码示例:Jwt 权限认证

    JWT 工具,提供 JWT 生成及解析能力

    // a 、JwtTool 初始化,自定义 Signer 和 Verifier JwtTool jwtTool = new JwtTool(SECRET); // 默认使用 MACSigner/MACVerifier ,支持多构造方法自定义实现; // b 、创建 token String token = jwtTool.createToken( {用户标识}, {自定义声明数据,map 形式}, {自定义过期时间} ); // c 、验证 token boolean isValid = jwtTool.validateToken(token); // d 、获取 claim Object userId = jwtTool.getClaim(token, {自定义声明数据 key}); // e 、获取过期时间 Date expiratiOnTime= jwtTool.getExpirationTime(token); 
    2 条回复    2025-05-06 15:06:02 +08:00
    wfhtqp
        1
    wfhtqp  
       249 天前
    与 hutool 有什么优势?
    saltedFish666
        2
    saltedFish666  
       248 天前
    @wfhtqp 看了下文档,还是略微少一些
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1084 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 51ms UTC 18:13 PVG 02:13 LAX 10:13 JFK 13:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86