c#基础知识合集08 随机数 DateTime
2026/5/23 4:08:12
雪花算法工具类
代码如下:
packageorg.jeecg.common.util;importcn.hutool.core.lang.Snowflake;importcn.hutool.core.net.NetUtil;importcn.hutool.core.util.IdUtil;importorg.apache.commons.lang3.StringUtils;/** * @Description:雪花算法生成分布式id,需要引入hutooljar包 * @Author: jeecg-boot * @Date: 2025-09-03 * @Version: V1.0 */publicclassSnowflakeUtil{// 终端IDprivatestaticfinalLongWORKER_ID=resolveWorkerId();// 数据中心IDprivatestaticfinalLongDATA_CENTER_ID=resolveDataCenterId();// 单例 Snowflake 实例(线程安全)privatestaticfinalSnowflakeSNOWFLAKE=newSnowflake(WORKER_ID,DATA_CENTER_ID,true);/** * 获取雪花ID */publicstaticsynchronizedStringgetSnowflake(){returnSNOWFLAKE.nextIdStr();//return IdUtil.getSnowflake(WORKER_ID,DATA_CENTER_ID).nextIdStr();}/** * 根据 Pod Name(HOSTNAME) 生成 WorkerId(保证同 Node 下 Pod 不同) */privatestaticLongresolveWorkerId(){Longid=null;try{// 使用 IP 地址计算Stringip=NetUtil.getLocalhostStr();returnLong.parseLong(ip.split("\\.")[3])&0x1F;}catch(Exceptione){id=0L;}returnid;}/** * 根据 Node IP 生成 DataCenterId(保证同一物理机一样) */privatestaticLongresolveDataCenterId(){Longid=null;try{// 使用 IP 地址计算Stringip=NetUtil.getLocalhostStr();id=(long)(ip.hashCode()&0x1F);}catch(Exceptione){id=0L;}returnid;}//测试publicstaticvoidmain(String[]args){Stringuuid=getSnowflake();System.out.println(uuid);}}