public static long gen() {
return ((System.currentTimeMillis() - 1609459200000L) << 23)
| (RANDOM.nextInt() & 0x7FFFFFL);
}
这个是用 Java 写的,给非 Java 的大佬们解释一下。
System.currentTimeMillis()
这个方法返回当前相比 1970 年 1 月 1 日 0 点 UTC 时间过了多少秒。RANDOM.nextInt()
返回一个随机的 32 位的有符号整数。相比正版的,这个少了 datacenterid,workid,也没有序列号,低 23 位完全就是个随机数。这套算法应用与 MySQL 的主键生成,而且应用可能是多活部署的,能打吗?