maven 依赖包
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.6</version>
</dependency>
工具类代码:
public class SnowflakeUtil {
private static final Snowflake SNOW_FLAKE = IdUtil.getSnowflake(getWorkId(), getDataCenterId());
private SnowflakeUtil() {}
public static synchronized long snowflakeId() {
return SNOW_FLAKE.nextId();
}
public static synchronized long snowflakeId(long workerId, long dataCenterId) {
Snowflake snowflake = IdUtil.getSnowflake(workerId, dataCenterId);
return snowflake.nextId();
}
private static Long getWorkId() {
try {
String hostAddress = InetAddress.getLocalHost().getHostAddress();
int[] ints = StringUtils.toCodePoints(hostAddress);
int sums = 0;
for (int b : ints) {
sums += b;
}
return (long) (sums % 32);
} catch (UnknownHostException e) {
log.error("UnknownHostException error.", e);
return RandomUtils.nextLong(0, 31);
}
}
protected static long getDataCenterId() {
long id = 0L;
try {
InetAddress ip = InetAddress.getLocalHost();
NetworkInterface network = NetworkInterface.getByInetAddress(ip);
if (network == null) {
id = 1L;
} else {
byte[] mac = network.getHardwareAddress();
if (null != mac) {
id = ((0x000000FF & (long) mac[mac.length - 2]) |
(0x0000FF00 & (((long) mac[mac.length - 1]) << 8))) >> 6;
id = id % (31 + 1);
}
}
} catch (Exception e) {
return RandomUtils.nextLong(0, 31);
}
return id;
}
}
参考资料
https://blog.csdn.net/qq_46504841/article/details/131457007
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2023-11-03 intellij idea拉取最新的依赖包
2017-11-03 mybatis什么时候需要声明jdbcType?