《開源精選》是我們分享Github、Gitee等開源社群中優質專案的欄目,包括技術、學習、實用與各種有趣的內容。本期推薦的是一個小而全的Java工具類庫-Hutool。
Hutool透過靜態方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函式式語言的表達能力,用起來更加方便。
Hutool中的工具方法來自每個使用者的精雕細琢,它涵蓋了Java開發底層程式碼中的方方面面,它既是大型專案開發中解決小問題的利器,也是小型專案中的效率擔當。
Hutool是專案中“util”包友好的替代,它節省了開發人員對專案中公用類和公用工具方法的封裝時間,使開發專注於業務,同時可以最大限度的避免封裝不完善帶來的bug。
包含元件
一個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
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/