实例:使用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;
/**
* 流水号
*
* @since 2020-01-06
*/
@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位数匹配。