一:引入糊涂工具包
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-captcha</artifactId>
<version>5.8.0</version>
</dependency>
二:SnowFloake.class
/**
* 作者:Longki
* 时间:2023/9/5
* 功能:SnowFlake使用
*/
@Component
public class SnowFlake {
//分布式唯一标识码-认定是哪一台机器
private static long workerId = 0;
private static long datacenterId = 0;
private Snowflake snowflake = IdUtil.createSnowflake(workerId,datacenterId);
//获取ip地址最后一段-作为唯一标识
private long getIp4(){
try {
String str = NetUtil.getLocalhostStr();
int len = str.length();
String lastStr = str.substring(len - 1,len);
return Long.valueOf(lastStr);
}catch (Exception e){
return 0;
}
}
//执行一次获取唯一标识机器码(0-31)
@PostConstruct
public void init(){
try{
workerId = getIp4();
}catch (Exception e){}
}
//同步锁-线程排队
public synchronized long snowFlakeId(){
return snowflake.nextId();
}
//反向解析序列号时间戳-当前订单下单时间
public long getSnowFlakeTime(long snowFlakeId){
return snowflake.getGenerateDateTime(snowFlakeId);
}
}
三:调用
SnowFlake snowFlake = new SnowFlake();
long snowFlakeId = snowFlake.snowFlakeId();
log.error("序列号:"+snowFlakeId);
log.error("解析:"+snowFlake.getSnowFlakeTime(snowFlakeId));
文章介绍了如何在项目中引入Hutool库中的Captcha模块,并详细展示了SnowFlake类的使用,包括获取分布式唯一标识、IP地址标识、线程安全的ID生成以及时间戳解析。
689





