大家好,欢迎来到IT知识分享网。
《开源精选》是我们分享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
<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.15</version> </dependency>
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"; // 17vKU8W4JMG8dQF8lk9VNnkdMOeWn4rJMva6F0XsLrrT53iKBnqo String encode = Base62.encode(a); // 还原为a String decodeStr = Base62.decodeStr(encode);
2.Base64编码解码-Base64
介绍:
Base64编码是用64(2的6次方)个ASCII字符来表示256(2的8次方)个ASCII字符,也就是三位二进制数组经过编码后变为四位的ASCII字符显示,长度比原来增加1/3。
使用:
String a = "一个非常长的字符串"; //5Lym5a625piv5LiA5Liq6Z2e5bi46ZW/55qE5a2X56ym5Liy String encode = Base64.encode(a); // 还原为a String 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 = "ABCDEF"; // 转BCD byte[] bcd = BCD.strToBcd(strForTest); // 解码BCD String str = BCD.bcdToStr(bcd);
5.回转N位密码-Rot
介绍:
RotN(rotate by N places),回转N位密码,是一种简易的替换式密码,也是过去在古罗马开发的凯撒加密的一种变体。
使用:
String str = "1f2e9df6131b480b9fdddc633cf24996"; // 4s5r2qs9464o713o2sqp966ps57229 String encode13 = Rot.encode13(str); // 解码 String decode13 = Rot.decode13(encode13);
6.Punycode实现-PunyCode.md
介绍:
Punycode是一个根据RFC 3492标准而制定的编码系统,主要用于把域名从地方语言所采用的Unicode编码转换成为可用于DNS系统的编码。
使用:
String text = "Hutool编码器"; // Hutool-ux9js33tgln String strPunyCode = PunyCode.encode(text); // Hutool编码器 String decode = PunyCode.decode("Hutool-ux9js33tgln"); // Hutool编码器 decode = PunyCode.decode("xn--Hutool-ux9js33tgln");
更多使用文档:https://apidoc.gitee.com/dromara/hutool/
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/46777.html