一:引入糊涂工具包 <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));