最近一个项目里面涉及业务流水唯一ID(要求数字字符串)的生成,原来采用的方式是时间戳+两位随机码,后来发现数据中也会有重复的数据,现在暂用的方法是匹配两次的编码是否相同,相同的话追加一个自增长的数字,代码如下(已省略业务编码部分):
private static String beforeBh;
private static String beforeNum;
public static String codeGenerate() {
Date now = new Date();
String behind = now.getTime()+"";
if(beforeBh==null) {
beforeBh = behind;
} else if(beforeBh.equals(behind)) {
behind = behind +beforeNum;
beforeNum++;
} else {
beforeBh = behind;
beforeNum = 0;
}
return behind;
}
可以先不考虑编码长度,不过长度越短越好,希望各位大神给指点指点或者提出更好的方法
---------------问题补充---------------
@jiqingluoye:UUID转成的数字长度会在17~20之间浮动,不是稳定的
最好提供下10位长度的思路
这是私人问题,希望各位喷友给出给力方案后再来喷,谢谢(11个月前)