实例:使用hutool工具包:雪花算法,随机生成4位数
import cn.hutool.core.lang.Snowflake; import cn.hutool.core.util.IdUtil; import lombok.extern.slf4j.Slf4j; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @Slf4j public class GenerateNoUtil { private final static Snowflake TRADE_SNOW_FLAKE = IdUtil.getSnowflake(1, 1); public static String generateTradeNo() { StringBuilder tradeNo = new StringBuilder(); Date date = new Date(); //注意format的格式要与日期String的格式相匹配 DateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); try { tradeNo.append(sdf.format(date)); String flakeId = String.valueOf(TRADE_SNOW_FLAKE.nextId()); tradeNo.append(flakeId.substring(flakeId.length() - 4)); } catch (Exception e) { log.error("error",e); } return tradeNo.toString(); } }
ps: tradeNo.append(flakeId.substring(flakeId.length() - 4)),截取了后四位,如果循环1000次,没有问题,循环10000次,就有重复;截取的长度应该和你要的N位数匹配。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)