Java开发神器Hutool工具

前言

只要是从事java开发的同学,Hutool这个工具类应该不需要我过多介绍,非常有名,工具类非常齐全,可以满足日常开发的各种用途,这边文章长期更新,将常用的工具类我会一一列出来,做个笔记,方便后面使用参考

安装

这里是官方文档,介绍了安装方法和常用的一些工具类

Maven项目使用

1
2
3
4
5
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.4</version>
</dependency>

Gradle项目使用

1
implementation 'cn.hutool:hutool-all:5.8.4'

也可以自行下载jar包,下载方式参考官方文档,这里不展开

图片压缩
1
2
3
Img.from(FileUtil.file("e:/pic/1111.png"))
.setQuality(0.8)//压缩比率
.write(FileUtil.file("e:/pic/1111_target.jpg"));

获取base64图片大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int size = base64Str.length() - encode.length() / 8 * 2;//计算出来是字节


/**
* byte(字节)根据长度转成kb(千字节)
* @param bytes 字节长度
* @return kb(千字节)
*/
public static Integer bytesToKB(long bytes) {
BigDecimal filesize = new BigDecimal(bytes);
BigDecimal kilobyte = new BigDecimal(1024);
float returnValue = filesize.divide(kilobyte, 1, RoundingMode.DOWN).floatValue();
return Convert.toInt(returnValue);
}

//以上方法转为KB,其实就是除以1024,只不过是四舍五入

压缩base64图片

1
2
3
BufferedImage bufferedImage = ImgUtil.toImage(base64Str);
Image scaleImage = ImgUtil.scale(bufferedImage, 0.2f);
return ImgUtil.toBase64(scaleImage, ImgUtil.IMAGE_TYPE_JPG);
StrUtil

这是一个string处理相关的工具类,方法特别的丰富,基本上涵盖了我们日常开发中所能想到的所有方法,下面介绍几个

字符串是否为空白isBlank,空白的定义如下:

  1. null
  2. 空字符串:""
  3. 空格、全角空格、制表符、换行符,等不可见字符
1
public static boolean isBlank(CharSequence str)

相反的方法就是isNotBlank

1
public static boolean isNotBlank(CharSequence str)

这是我们常用的判空的方法,其实还有isEmpty可以判空,但是这个不处理空白符,所以一般我们只用isBlank就行

其他的比如我们常见的字符串方法

split 分割

``sub` 截取

indexOf 索引

startWith 前缀是否匹配

endWith 后缀是否匹配

equals 两个字符串是否相等

都有很多类似的相关方法,具体的方法和API文档参考这里

IdUtil

在分布式环境中,唯一ID生成应用十分广泛,生成方法也多种多样,Hutool针对一些常用生成策略做了简单封装

uuid生成

1
2
3
4
5
//生成的UUID是带-的字符串,类似于:a5c8a5e8-df2b-4706-bea4-08d0939410e3
String uuid = IdUtil.randomUUID();

//生成的是不带-的字符串,类似于:b17f24ff026d40949c85a24f4f375d42
String simpleUUID = IdUtil.simpleUUID();

ObjectId生成

1
2
3
4
5
//生成类似:5b9e306a4df4f8c54a39fb0c
String id = ObjectId.next();

//方法2:从Hutool-4.1.14开始提供
String id2 = IdUtil.objectId();

Snowflake(雪花算法)

1
2
3
4
5
6
7
8
//参数1为终端ID
//参数2为数据中心ID
Snowflake snowflake = IdUtil.getSnowflake(1, 1);
long id = snowflake.nextId();

//简单使用
long id = IdUtil.getSnowflakeNextId();
String id = snowflake.getSnowflakeNextIdStr();

注意 IdUtil.createSnowflake每次调用会创建一个新的Snowflake对象,不同的Snowflake对象创建的ID可能会有重复,因此请自行维护此对象为单例,或者使用IdUtil.getSnowflake使用全局单例对象。

SecureUtil

SecureUtil主要针对常用加密算法构建快捷方式,还有提供一些密钥生成的快捷工具方法。

对称加密

  • SecureUtil.aes
  • SecureUtil.des

摘要算法

  • SecureUtil.md5
  • SecureUtil.sha1
  • SecureUtil.hmac
  • SecureUtil.hmacMd5
  • SecureUtil.hmacSha1

非对称加密

  • SecureUtil.rsa
  • SecureUtil.dsa

uuid

  • SecureUtil.simpleUUID 方法提供无“-”的UUID

密钥生成

  • SecureUtil.generateKey 针对对称加密生成密钥
  • SecureUtil.generateKeyPair 生成密钥对(用于非对称加密)
  • SecureUtil.generateSignature 生成签名(用于非对称加密)