hutool介绍

简介: hutool介绍

hutool实战(带你掌握里面的各种工具)目录


简介

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。


Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;


Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。


优势image.png主要内容

时间工具类

日期时间包是Hutool的核心包之一,提供针对JDK中Date和Calendar对象的封装


IO流相关

io包的封装主要针对流、文件的读写封装,主要以工具类为主,提供常用功能的封装


常用工具类

此包中的工具类为未经过分类的一些工具类,提供一些常用的工具方法。

此包中根据用途归类为XXXUtil,提供大量的工具方法。在工具类中,主要以类方法(static方法)为主,且各个类无法实例化为对象,一个方法是一个独立功能,无相互影响。


语言特性

语言特性,即lang包,主要针对JDK中的一些数据结构和接口的完善


JavaBean

针对JavaBean已经有BeanUtil的工具封装,且进行了扩展。


集合类

集合包中封装了包括Enumeration、Iterator等的包装


Map

最早Map的相关工具是被包含在CollUtil中的,但是考虑到Map和集合非同一类数据结构,因此独立出来,且Hutool封装了许多自定义的Map类,因此单独成包。


Codec编码

code的编码解码,包含Base62,Base64和Base32等的编码解码。


文本操作

包含对CSV文件处理工具,可复用字符串生成器,Unicode编码转换工具和字符串切割等工具


注解

封装了注解获取等方法的工具类


比较器

各种比较器(Comparator)实现和封装


异常

针对异常封装,例如包装为RuntimeException


数学

此工具是NumberUtil的一个补充,NumberUtil偏向于简单数学计算的封装,MathUtil偏向复杂数学计算


图片

图片工具和图片编辑器


网络

网络工具和URL生成器


配置文件(Hutool-setting)

Setting除了兼容Properties文件格式外,还提供了一些特有功能,这些功能包括:

各种编码方式支持

变量支持

分组支持


日志(Hutool-log)

准确的说,Hutool-log只是一个日志的通用门面,功能类似于Slf4j


缓存(Hutool-cache)

Hutool-cache模块最早受到jodd-cache的启发(如今大部分逻辑依旧与jodd保持一致),此模块提供一种缓存的简单实现方案,在小型项目中对于简单的缓存需求非常好用。


JSON(Hutool-json)

不可否认,现在优秀的JSON框架非常多,我经常使用的像阿里的FastJSON,Jackson等都是非常优秀的包,性能突出,简单易用。Hutool开始也并不想自己写一个JSON,但是在各种工具的封装中,发现JSON已经不可或缺,因此将json.org官方的JSON解析纳入其中,进行改造。在改造过程中,积极吸取其它类库优点,优化成员方法,抽象接口和类,最终形成Hutool-json。


加密解密(Hutool-crypto)

加密分为三种:

对称加密(symmetric),例如:AES、DES等

非对称加密(asymmetric),例如:RSA、DSA等

摘要加密(digest),例如:MD5、SHA-1、SHA-256、HMAC等

hutool-crypto针对这三种加密类型分别封装,并提供常用的大部分加密算法。


DFA查找(Hutool-dfa)

针对DFA算法以及网上的一些实现,Hutool做了整理和改进,最终形成现在的Hutool-dfa模块


数据库(Hutool-db)

Hutool-db是一个在JDBC基础上封装的数据库操作工具类,通过包装,使用ActiveRecord思想操作数据库。在Hutool-db中,使用Entity(本质上是个Map)代替Bean来使数据库操作更加灵活,同时提供Bean和Entity的转换提供传统ORM的兼容支持。


HTTP客户端(Hutool-http)

Hutool-http针对JDK的HttpUrlConnection做一层封装,简化了HTTPS请求、文件上传、Cookie记忆等操作,使Http请求变得无比简单


定时任务(Hutool-cron)

Hutool的定时任务模块与Linux的Crontab使用上非常类似,通过一个cron.setting配置文件,简单调用start()方法即可简单使用。


同时还提供了秒匹配和年匹配等Quartz才有的功能,定时任务表达式上也同时兼容Crontab(Cron4j)和Quartz的表达式。


扩展(Hutool-extra)

由于Hutool的原则是不依赖于其它配置文件,但是很多时候我们需要针对第三方非常棒的库做一些工具类化的支持,因此Hutoo-extra包主要用于支持第三方库的工具类支持


布隆过滤(Hutool-bloomFilter)

布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。


布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;如果都是1,则被检元素很可能在。这就是布隆过滤器的基本思想。


参考:https://www.cnblogs.com/z941030/p/9218356.html


切面(Hutool-aop)

AOP模块主要针对JDK中动态代理进行封装,抽象动态代理为切面类Aspect,通过ProxyUtil代理工具类将切面对象与被代理对象融合,产生一个代理对象,从而可以针对每个方法执行前后做通用的功能。


脚本(Hutool-script)

script模块主要针对Java的javax.script封装,可以运行Javascript脚本。


此模块非常简单。主要功能集中在SCriptUtil这个工具类中。


Office文档操作(Hutool-poi)

Hutool-poi是针对Apache POI的封装,因此需要用户自行引入POI库,Hutool默认不引入。


系统调用(Hutool-system)

系统属性调用-SystemUtil和Oshi封装-OshiUtil


图形验证码(Hutool-captcha)

验证码生成和校验功能


网络Socket(Hutool-socket)

在开发网络应用程序的时候,我们又会遇到Socket这个概念。Socket是一个抽象概念,一个应用程序通过一个Socket来建立一个远程连接,而Socket内部通过TCP/IP协议把数据传输到网络。

JDK中提供了Socket功能,包括:

BIO

NIO

AIO

Hutool只针对NIO和AIO做了简单的封装,用于简化Socket异步开发。


官方网站

参考文档


API文档


源码:github



image.png

目录
相关文章
|
2月前
|
人工智能 运维 Cloud Native
阿里云Serverless计算产品入选Gartner®报告「领导者」象限!
近日,Gartner® 发布了 2025 年度全球《云原生应用平台魔力象限》报告,阿里云凭借 Serverless 应用引擎 SAE(以下简称 SAE)和函数计算 FC,成为亚太地区唯一入选「领导者象限」的科技公司。
236 16
|
SQL 监控 druid
强大的Druid
Druid数据库连接池介绍以及使用步骤
|
3月前
|
前端开发
WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),保存资源(图片、脚本、CSS)
WebView2 控件(基于 Microsoft Edge (Chromium) 的嵌入式浏览器控件),保存资源(图片、脚本、CSS)
218 44
|
3月前
|
存储 人工智能 物联网
QLoRA究竟如何从LoRA进化而来并成为AI工程师的必备技能?
本文AI产品专家三桥君深入解析了QLoRA技术在AI领域的关键作用。作为LoRA(低秩自适应)的升级版,QLoRA通过4位NormalFloat量化、双重量化和分页优化器三大核心技术,显著降低大模型微调的显存占用,同时保持性能。三桥君从技术背景、原理、应用场景(个人开发、企业定制、边缘设备)及未来潜力展开,指出QLoRA已成为AI工程师的必备技能,并预测其将继续推动AI技术发展。
187 0
|
6月前
|
数据采集 自然语言处理 JavaScript
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
随着数据采集需求的增加,传统爬虫工具如Selenium、Jsoup等因语言割裂、JS渲染困难及代理兼容性差等问题,难以满足现代网站抓取需求。微软推出的Playwright框架,凭借多语言支持(Python/Java/.NET/Node.js)、统一API接口和优异的JS兼容性,解决了跨语言协作、动态页面解析和身份伪装等痛点。其性能优于Selenium与Puppeteer,在学术数据库(如Scopus)抓取中表现出色。行业应用广泛,涵盖高校科研、大型数据公司及AI初创团队,助力构建高效稳定的爬虫系统。
313 2
Playwright多语言生态:跨Python/Java/.NET的统一采集方案
|
6月前
|
移动开发 人工智能 定位技术
用 Godot 开发像素风《饥荒》的流程
用 Godot 开发像素风《饥荒》的流程
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
RoBERTa-Large的IA3微调
本文介绍了在ModelArts平台上使用MindSpore NLP组件对Roberta-Large模型进行IA3微调训练的过程。具体要求包括使用GLUE-MRPC数据集,加载Roberta-Large模型并配置IA3算法进行微调。训练过程中遇到了参数更新问题,通过官方修复后得以解决。最终,模型在验证集上进行了评估,并输出了准确率和F1值。此外,还详细描述了数据集GLUE-MRPC的特征、RoBERTa-Large模型的结构以及IA3微调的具体配置。
276 18
|
SQL Java 数据库连接
既生瑜何生亮,浅析下层出不穷的新ORM框架: MyBatis-Flex
这里先说说我的观点哈,仅是个人观点哦,不喜勿喷。现在这些框架层出不穷,其实吧个人感觉没必要过度关注,因为这些框架并没有完完全全做到推陈出新,反倒是有一点互相“学习copy”的感觉,并没有那么新颖强大、从无到有的一个过程。那说回今天的主题ORM框架,在Java后端技术栈里面我们都知道`MyBatis`是主流的ORM框架,现在很多公司都在使用着,后来在`MyBatis`基础上出现了两个比较主流的增强框架`Mybatis-Plus`和`Fluent-MyBatis`
785 0
|
人工智能 供应链 大数据
1688跨境寻源通代采系统
1688跨境寻源通代采系统助力全球买家高效采购,2023年1月跨境注册买家增长76%,超594万。系统提供多语言支持,AI技术优化搜索,集成API接口扩展销售,支持自动化下单和支付。源头厂商合作,1亿+货盘开放,还有定制化解决方案,构建一站式智能采购平台,促进跨境贸易发展。[c0b.cc/R4rbK2](API测试账号)
|
12月前
|
分布式计算 监控 大数据
大数据-129 - Flink CEP 详解 Complex Event Processing - 复杂事件处理
大数据-129 - Flink CEP 详解 Complex Event Processing - 复杂事件处理
236 0