XXL-TOOL v1.4.0 发布 | Java工具类库
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开发更高效。包含 “集合、字符串、缓存、并发、Excel、Emoji、Response、Pipeline……” 等数十个模块。
文档地址
组件列表
| 模块 | 说明 |
|---|---|
| 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);
XXL-TOOL v1.4.0 发布 | Java工具类库的更多相关文章
- 国人开源了一款小而全的 Java 工具类库,厉害啊!!
最近栈长看到了一款小而全的 Java 工具类库:Hutool,Github 已经接近 14K Star 了,想必一定很优秀,现在推荐给大家,很多轮子不要再造了! Hutool 是什么 Hutool 是 ...
- Hutool :一个小而全的 Java 工具类库
Hutool 简介 Hutool 是一个小而全的 Java 工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的 ...
- 干掉复杂的工具类,国产Java工具类库 Hutool 很香!
Hutool 大家已经比较熟悉了,这是一个超全的 Java 工具库,深受国内开发者的喜爱. 我之前其实是不太喜欢使用这种功能太多的工具类的,也比较担心稳定性和安全性,后面慢慢接受了就感觉其实也还好.而 ...
- RapidJSON v1.1.0 发布简介
时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...
- FineUIMvc v1.4.0 发布了(ASP.NET MVC控件库)!
FineUIMvc v1.4.0 已经于 2017-06-30 发布,FineUIMvc 是基于 jQuery 的专业 ASP.NET MVC 控件库,是我们的新产品.由于和 FineUI(专业版)共 ...
- Jsonnet-PHP v1.3.0 发布,支持 PHP 7 使用 Jsonnet
JsonNet-PHP 是 Google Jsonnet 对 PHP的支持扩展. pecl: http://pecl.php.net/package/jsonnet github: https://g ...
- 好用的Java工具类库,GitHub星标10k+你在用吗?
简介 Hutool是Hu + tool的自造词,前者致敬我的"前任公司",后者为工具之意,谐音"糊涂",寓意追求"万事都作糊涂观,无所谓失,无所谓得& ...
- Solon v1.11.0 发布,Hello Java
一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...
- Solon Java Framework v1.12.0 发布
一个更现代感的 Java 应用开发框架:更快.更小.更自由.没有 Spring,没有 Servlet,没有 JavaEE:独立的轻量生态.主框架仅 0.1 MB. @Controller public ...
- Yearning v1.3.0 发布,Web 端 SQL 审核平台
企业级MYSQL web端 SQL审核平台. Website 官网 www.yearning.io Feature 功能 数据库字典自动生成 SQL查询 查询工单 导出 自动补全,智能提示 查询语句审 ...
随机推荐
- Tensorflow 安装和测试(Anaconda4.7.10+windows10)
一. 软件下载 二. 配置相关 1. 修改 Jupyter notebook 默认工作路径 (1)打开 Anaconda Prompt ,输入 jupyter notebook --generate- ...
- Thymeleaf判断集合是否为空
Thymeleaf判断集合是否为空最近项目使用的是thymeleaf.项目架构是Springboot+Thymeleaf. 在判断集合是否为空的时候踩了坑与大家分享. 以下代码是判断集合是否为空的,m ...
- 解决Typecho文章cid不连续的教程
Typecho下文章编号(cid)不连续,虽然不影响什么,也无关紧要,但是对于有强迫症的人(比如我)来说,真的是无法忍受.还好有大佬提供了解决办法. 将以下代码保存为php文件,上传至网站根目录,在浏 ...
- apache和nginx關聯php的過程
Nginx端 Nginx是一個服務器,同時也是一個功能強大的proxy服務器,除了進行http請求的代理,還可以進行其他協議請求代理(fastCgi協議),為了能使nginx理解fastCgi協議,n ...
- minecraft mods descrip
1. [Advanced Finders]矿物探测器 mod 显示玩家周围附近矿石的方向(指针显示水平面上可到达的矿石) 探测地下深部矿脉(箭头显示最近矿脉的方向(上/下)) 发现大型矿床时发出信号( ...
- Netty基础—1.网络编程基础一
大纲 1.什么是OSI开放系统互连 2.OSI七层模型各层的作用 3.TCP/IP协议的简介 4.TCP和UDP的简介 5.TCP连接的三次握手 6.TCP连接的四次挥手 7.TCP/IP中的数据包 ...
- go-ini 中文文档
简介 地表 最强大.最方便 和 最流行 的 Go 语言 INI 文件操作库 灵活的数据源 不光光可以从文件读取配置,还支持 []byte 类型的纯数据读取和基于 io.ReadCloser 的流式读取 ...
- 使用Win32控制台实现socket通信
本示例使用Win32控制台实现socket通信 ,可多个客户端同时连接服务器. 服务端代码: #include <iostream> #include <winsock2.h> ...
- selenium爬虫2
无头浏览器简介 无头浏览器(Headless Browser)是一种没有图形用户界面的浏览器,它在后台运行,不会显示任何窗口或界面.无头浏览器通常用于自动化任务,如网页抓取.自动化测试和性能监控等. ...
- 【Guava工具类】Strings&Ints
String相关工具 Strings Guava 提供了一系列用于字符串处理的工具: 对字符串为null或空的处理 nullToEmpty(@Nullable String string):如果非空, ...