// 初始化
static AtomicInteger mySeq;
/**
* 返回 【前缀】 + 【9位时间长整型的36进制数,左补0】 + "-" + 5位序列号
*
* @param prefix
* @return
*/
public static String nextID(String prefix) {
if (mySeq == null) {
// 首次运行时的初始化
String timeSeq = new SimpleDateFormat("HHmmss", Locale.getDefault()).format(new Date()).substring(1);
mySeq = new AtomicInteger(Integer.parseInt(timeSeq));
}
// id前缀大写,补满2位
if (prefix == null) {
prefix = "??";
}
prefix = prefix.toUpperCase() + "__";
prefix = prefix.substring(0, 2);
// 9位时间长整型的36进制数,左补0
String ts = lpadZero(Long.toString(System.currentTimeMillis(), Character.MAX_RADIX), 9);
String id = prefix + ts + "-" + mySeq.getAndIncrement();
return id;
}
分享到:
相关推荐
3 12位的计数顺序号(12位的计数顺序号支持每个节点每毫秒产生4096个ID序号) 最高位是符号位,始终为0。 优点:高性能,低延迟;独立的应用;按时间有序。 缺点:需要独立的开发和部署。 原理 java 实现代码 1 ...
该策略会根据雪花算法生成主键ID,主键类型为Long或String(具体到MySQL数据库就是BIGINT和VARCHAR),该策略使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法) ...
js代码-寻找链表的头节点,每个节点,有 id 和 nextId 两个属性,nextId 表示指向节点 id。现在请实现一个办法寻找该链表的头节点。 PS. 考虑一下链表环状,以及节点不在链表内等异常情况,出现异常时,打印异常...
java代码-寻找链表的头节点,每个节点,有 id 和 nextId 两个属性,nextId 表示指向节点 Id。现在请实现一个办法寻找该链表的头节点。 PS. 考虑一下链表环状,以及节点不在链表内等异常情况,出现异常时,打印异常...
寻找链表的头节点,每个节点,有 id 和 nextId 两个属性,nextId 表示指向节点 id。现在请实现一个办法寻找该链表的头节点。 PS. 考虑一下链表环状,以及节点不在链表内等异常情况,出现异常时,打印异常消息即可。
寻找链表的头节点,每个节点,有 id 和 nextId 两个属性,nextId 表示指向节点 id。现在请实现一个办法寻找该链表的头节点。 PS. 考虑一下链表环状,以及节点不在链表内等异常情况,出现异常时,打印异常消息即可。
Oracle自增长主键自动生成类 public static int nextID String table { if table null return 1; table table toLowerCase ; String strKey table; if sequences containsKey strKey { ...
js代码-第一题:寻找链表的头节点,每个节点,有 id 和 nextId 两个属性,nextId 表示指向节点 id。
java代码-FindFirstNode 寻找链表的头节点,每个节点,有 id 和 nextId 两个属性,nextId 表示指向节点 Id。现在请实现一个办法寻找该链表的头节点。