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開發更高效。包含 “集合、字符串、緩存、IO、并發、Excel、Emoji、Response、Pipeline、Http、Json、JsonRpc、Encrypt、Auth……” 等數十個模塊。

文檔地址

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

組件列表

模塊說明
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);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78466.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78466.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78466.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于LVGL的登錄界面設計

目錄 一、演示 二、前言 三、部件知識 3.1 圖片按鈕部件 3.1.1 圖片按鈕部件的組成 3.1.2 圖片的來源 3.1.3 添加/清除的狀態 3.1.4 圖片按鈕部件 API 函數 3.2 鍵盤部件(lv_keyboard) 3.2.1 鍵盤部件的組成 3.2.2 鍵盤部件的相關知識 3.2.2.1 鍵盤部件模式 3.…

S3 跨賬戶復制:增強云中的災難恢復計劃

您準備好提升您的云和 DevOps 技能了嗎&#xff1f; &#x1f425;《云原生devops》專門為您打造&#xff0c;我們精心打造的 30 篇文章庫&#xff0c;這些文章涵蓋了 Azure、AWS 和 DevOps 方法論的眾多重要主題。無論您是希望精進專業知識的資深專業人士&#xff0c;還是渴望…

線程與進程深度解析:從fork行為到生產者-消費者模型

線程與進程深度解析&#xff1a;從fork行為到生產者-消費者模型 一、多線程環境下的fork行為與線程安全 1. 多線程程序中fork的特殊性 核心問題&#xff1a;fork后子進程的線程模型 當多線程程序中的某個線程調用fork時&#xff1a; 子進程僅包含調用fork的線程&#xff1…

Circular Plot系列(五): circle plot展示單細胞互作

這是我們circle系列的最后一節&#xff0c;我想常見的弦圖是繞不開的&#xff0c;所以最后從前面介紹的circle plot思路&#xff0c;做一遍弦圖。其實前面的內容如果消化了&#xff0c;plot互作弦圖也就不成什么問題了。 效果如下&#xff1a; #cellchat提取互作結果&#xff…

(11)Vue-Router路由的詳細使用

本系列教程目錄&#xff1a;Vue3Element Plus全套學習筆記-目錄大綱 文章目錄 第2章 路由 Vue-Router2.1 Vue路由快速入門2.1.1 創建項目2.1.2 路由運行流程 2.2 傳遞參數-useRoute2.2.1 路徑參數-params1&#xff09;普通傳參2&#xff09;傳遞多個參數3&#xff09;對象方式傳…

react + antd 實現后臺管理系統

文章目錄 完整路由搭建Layout 和 Aside組件引入 AntdAside組件實現 項目效果圖 項目完整代碼地址 https://gitee.com/lyh1999/react-back-management 項目完整代碼地址 react依賴安裝 最好采用yarn 安裝 react-router 安裝依賴 配置路由 history模式 / // src/router/…

基于AWS Marketplace的快速解決方案:從選型到部署實戰

1. 引言&#xff1a;為什么選擇AWS Marketplace&#xff1f; 在數字化轉型的背景下&#xff0c;企業需要快速獲取成熟的軟件工具和服務以降低開發成本。AWS Marketplace 作為亞馬遜云科技的官方應用商店&#xff0c;提供超過萬款預配置的第三方和AWS原生解決方案&#xff0c;涵…

2021年第十二屆藍橋杯省賽B組C++題解

2021年第十二屆藍橋杯省賽B組C題解 關鍵詞&#xff1a;藍橋杯、省賽、題解、C、算法 一、個人見解 第十二屆藍橋杯省賽B組共有10道題目&#xff0c;包含5道填空題&#xff08;T1-T5&#xff09;和5道編程題&#xff08;T6-T10&#xff09;&#xff0c;總分150分。比賽時長4小…

日語學習-日語知識點小記-進階-JLPT-N1階段(1):語法單詞

日語學習-日語知識點小記-進階-JLPT-N1階段&#xff08;1&#xff09;&#xff1a;語法單詞 1、前言&#xff08;1&#xff09;情況說明&#xff08;2&#xff09;工程師的信仰&#xff08;3&#xff09;高級語法N1語法和難點一、N1語法學習內容&#xff08;高級語法&#xff…

Python|Pyppeteer實現自動登錄小紅書(32)

前言 本文是該專欄的第32篇,結合優質項目案例持續分享Pyppeteer的干貨知識,記得關注。 本文中,筆者以小紅書為例,基于Pyppeteer實現自動登錄“小紅書”。 需要注意的是,對Pyppeteer不太熟悉的同學,可往前翻閱本專欄前面介紹的Pyppeteer知識點,本專欄將帶你了解并熟練使…

【翻譯、轉載】【轉載】LLM 的函數調用與 MCP

來源&#xff1a; https://www.dailydoseofds.com/p/function-calling-mcp-for-llms/ 【代碼以圖像顯示的是原文內容&#xff0c;以代碼形式顯示的是大模型給出的參考】 LLM 的函數調用與 MCP 在 MCP 變得像現在這樣主流&#xff08;或流行&#xff09;之前&#xff0c;大多…

【QT】QT中http協議和json數據的解析-http獲取天氣預報

QT中http協議和json數據的解析 1.http協議的原理2.QT中http協議的通信流程2.1 方法步驟 3.使用http協議&#xff08;通過http下載圖片和獲取天氣預報信息&#xff09;3.1 http下載網絡上的圖片(下載小文件)3.1.1 示例代碼3.1.2 現象 3.2 獲取網絡上天氣預報3.2.1 免費的天氣預報…

hot100:鏈表倒數k個節點- 力扣(LeetCode)

題目&#xff1a; 實現一種算法&#xff0c;找出單向鏈表中倒數第 k 個節點。返回該鏈表中倒數第k個節點。 示例一&#xff1a; 輸入&#xff1a;{1,2,3,4,5},2 返回值&#xff1a;{4,5} 說明&#xff1a;返回倒數第2個節點4&#xff0c;系統會打印后面所有的節點來比較。 …

Spring AI 實戰:第十一章、Spring AI Agent之知行合一

引言:智能體的知行辯證法 “知為行之始,行為知之成”,王陽明的哲學智慧在AI時代煥發光彩。智能體(LLM Agent)的進化之路,正是"認知-決策-執行"這一閉環的完美詮釋: 知明理:融合大語言模型的推理能力與知識圖譜的結構化認知行致用:基于ReAct模式的動態工具調…

365打卡第R6周: LSTM實現糖尿病探索與預測

&#x1f368; 本文為&#x1f517;365天深度學習訓練營中的學習記錄博客 &#x1f356; 原作者&#xff1a;K同學啊 &#x1f3e1; 我的環境&#xff1a; 語言環境&#xff1a;Python3.10 編譯器&#xff1a;Jupyter Lab 深度學習環境&#xff1a;torch2.5.1 torchvision0…

W-TinyLFU緩存驅逐算法解析

文章目錄 1. 背景與概述1.1 什么是緩存驅逐算法1.2 W-TinyLFU 的定義與價值 2. 核心思想與設計理念2.1 時間局部性與頻率局部性的結合2.2 高效的頻率統計2.3 窗口機制的引入 3. 架構設計與組件3.1 整體架構3.2 窗口緩存&#xff08;Window Cache&#xff09;3.3 主緩存&#xf…

[特殊字符] 人工智能大模型之開源大語言模型匯總(國內外開源項目模型匯總) [特殊字符]

Large Language Model (LLM) 即大規模語言模型&#xff0c;是一種基于深度學習的自然語言處理模型&#xff0c;它能夠學習到自然語言的語法和語義&#xff0c;從而可以生成人類可讀的文本。 所謂 "語言模型"&#xff0c;就是只用來處理語言文字&#xff08;或者符號…

文章記單詞 | 第60篇(六級)

一&#xff0c;單詞釋義 liar&#xff1a;英 [?la??(r)]&#xff1b;美 [?la??r]&#xff1b;n. 說謊者verbal&#xff1a;英 [?v??bl]&#xff1b;美 [?v??rbl]&#xff1b;adj. 言語的&#xff1b;文字的&#xff1b;口頭的&#xff1b;動詞的comprehension&…

AI日報 · 2025年04月30日|OpenAI 回滾 GPT-4o 更新以解決“諂媚”問題

過去24小時&#xff0c;全球人工智能領域持續快速發展。從模型行為調整到平臺工具更新&#xff0c;再到行業安全規范的探討&#xff0c;以下是為您精選的重點動態&#xff1a; 1、OpenAI 回滾 GPT-4o 更新以解決“諂媚”問題 針對用戶反饋最新版 GPT-4o 模型表現出過度“諂媚…

Linux54 源碼包的安裝、修改環境變量解決 axel命令找不到;getfacl;測試

始終報錯 . 補充鏈接 tinfo 庫時報錯軟件包 ncurses-devel-5.9-14.20130511.el7_4.x86_64 已安裝并且是最新版本 沒有可用軟件包 tinfo-devel。 無須任何處理 make LDLIBS“-lncurses"報錯編譯時報錯make LDLIBS”-lncurses" &#xff1f; /opt/rh/devtoolset-11/roo…