Hutool,一個豐富的Java工具類庫

《開源精選》是我們分享Github、Gitee等開源社群中優質專案的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的是一個小而全的Java工具類庫-Hutool。

Hutool,一個豐富的Java工具類庫

Hutool透過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函式式語言的表達能力,用起來更加方便。

Hutool中的工具方法來自每個使用者的精雕細琢,它涵蓋了Java開發底層程式碼中的方方面面,它既是大型專案開發中解決小問題的利器,也是小型專案中的效率擔當。

Hutool是專案中“util”包友好的替代,它節省了開發人員對專案中公用類和公用工具方法的封裝時間,使開發專注於業務,同時可以最大限度的避免封裝不完善帶來的bug。

Hutool,一個豐富的Java工具類庫

包含元件

一個Java基礎工具類,對檔案、流、加密解密、轉碼、正則、執行緒、XML等JDK方法進行封裝,組成各種Util工具類,同時提供以下元件:

模組

介紹

hutool-aop

JDK動態代理封裝,提供非IOC下的切面支援

hutool-bloomFilter

布隆過濾,提供一些Hash演算法的布隆過濾

hutool-cache

簡單快取實現

hutool-core

核心,包括Bean操作、日期、各種Util等

hutool-cron

定時任務模組,提供類Crontab表示式的定時任務

hutool-crypto

加密解密模組,提供對稱、非對稱和摘要演算法封裝

hutool-db

JDBC封裝後的資料操作,基於ActiveRecord思想

hutool-dfa

基於DFA模型的多關鍵字查詢

hutool-extra

擴充套件模組,對第三方封裝(模板引擎、郵件、Servlet、二維碼、Emoji、FTP、分詞等)

hutool-http

基於HttpUrlConnection的Http客戶端封裝

hutool-log

自動識別日誌實現的日誌門面

hutool-script

指令碼執行封裝,例如Javascript

hutool-setting

功能更強大的Setting配置檔案和Properties封裝

hutool-system

系統引數呼叫封裝(JVM資訊等)

hutool-json

JSON實現

hutool-captcha

圖片驗證碼實現

hutool-poi

針對POI中Excel和Word的封裝

hutool-socket

基於Java的NIO和AIO的Socket封裝

hutool-jwt

JSON Web Token (JWT)封裝實現

安裝使用

Maven

cn。hutool hutool-all 5。7。15

Gradle

implementation ‘cn。hutool:hutool-all:5。7。15’

Maven地址:https://repo1。maven。org/maven2/cn/hutool/hutool-all/5。7。15/

舉例Codec編碼

1.Base62編碼解碼-Base62

介紹:

Base62編碼是由10個數字、26個大寫英文字母和26個小寫英文字母組成,多用於安全領域和短URL生成。

使用:

String a = “一個非常長的字串66”;// 17vKU8W4JMG8dQF8lk9VNnkdMOeWn4rJMva6F0XsLrrT53iKBnqoString encode = Base62。encode(a);// 還原為aString decodeStr = Base62。decodeStr(encode);

2.Base64編碼解碼-Base64

介紹:

Base64編碼是用64(2的6次方)個ASCII字元來表示256(2的8次方)個ASCII字元,也就是三位二進位制陣列經過編碼後變為四位的ASCII字元顯示,長度比原來增加1/3。

使用:

String a = “一個非常長的字串”;//5Lym5a625piv5LiA5Liq6Z2e5bi46ZW/55qE5a2X56ym5LiyString encode = Base64。encode(a);// 還原為aString decodeStr = Base64。decodeStr(encode);

3.莫爾斯電碼-Morse

介紹:

摩爾斯電碼也被稱作摩斯密碼,是一種時通時斷的訊號程式碼,透過不同的排列順序來表達不同的英文字母、數字和標點符號。

摩爾斯電碼是由點dot(。)劃dash(-)這兩種符號所組成的。

使用:

//編碼:final Morse morseCoder = new Morse();String text = “Hello World!”;// 。。。。/。/。-。。/。-。。/——-/-。。。。。/。——/——-/。-。/。-。。/-。。/-。-。——/morseCoder。encode(text);

//解碼:String text = “你好,世界!”;// -。。——。——。。。。。/-。——。。-。——-。-/————。。。。——。。/-。。——-。。。。-。——。/——-。-。-。-。。——。。/————……。-/String morse = morseCoder。encode(text);morseCoder。decode(morse);

4.BCD碼-BCD

介紹:

BCD碼(Binary-Coded Decimal‎)亦稱二進碼十進數或二-十進位制程式碼。

BCD碼這種編碼形式利用了四個位元來儲存一個十進位制的數碼,使二進位制和十進位制之間的轉換得以快捷地進行。

使用:

String strForTest = “123456ABCDEF”;// 轉BCDbyte[] bcd = BCD。strToBcd(strForTest);// 解碼BCDString str = BCD。bcdToStr(bcd);

5.迴轉N位密碼-Rot

介紹:

RotN(rotate by N places),迴轉N位密碼,是一種簡易的替換式密碼,也是過去在古羅馬開發的凱撒加密的一種變體。

使用:

String str = “1f2e9df6131b480b9fdddc633cf24996”;// 4s5r2qs9464o713o2sqqqp966ps57229String encode13 = Rot。encode13(str);// 解碼String decode13 = Rot。decode13(encode13);

6.Punycode實現-PunyCode.md

介紹:

Punycode是一個根據RFC 3492標準而制定的編碼系統,主要用於把域名從地方語言所採用的Unicode編碼轉換成為可用於DNS系統的編碼。

使用:

String text = “Hutool編碼器”;// Hutool-ux9js33tglnString strPunyCode = PunyCode。encode(text);// Hutool編碼器String decode = PunyCode。decode(“Hutool-ux9js33tgln”);// Hutool編碼器decode = PunyCode。decode(“xn——Hutool-ux9js33tgln”);

更多使用文件:https://apidoc.gitee.com/dromara/hutool/