V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX  ›  程序员

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

  •  
  •   xuxueli · 3 天前 · 1025 次点击

    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  
       2 天前
    与 hutool 有什么优势?
    saltedFish666
        2
    saltedFish666  
       1 天前
    @wfhtqp 看了下文档,还是略微少一些
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3062 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 13:00 · PVG 21:00 · LAX 06:00 · JFK 09:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.