请给我示例代码,以便在不使用时间戳的情况下在java中生成UUID
long
类型。
谢谢
答案 0 :(得分:20)
真正的UUID是128位。长是64位。
这不仅仅是迂腐。 UUID代表通用唯一标识符。
established UUID schemes的“通用唯一性”基于:
对于64位,根本没有足够的位用于“通用唯一性”。例如,生日悖论意味着如果我们有许多计算机生成随机的64位数字,那么潜在可检测到的碰撞的概率就足以引起关注。
现在,如果您只想要一个UID(而不是UUID),那么任何64位序列生成器都可以完成这项工作,只要您采取措施防止重复序列。 (如果序列重复,则ID在时间上不是唯一的;即,随着时间的推移,给定的ID可能表示不同的实体。)
答案 1 :(得分:7)
你看过java.util.UUID吗?
答案 2 :(得分:2)
如果您只想要一个简单的唯一长度,您可以使用AtomicLong.incrementAndGet()。这不使用时间戳,但每次启动时都会重置为0,并且在JVM中不是唯一的。
不使用时间戳的要求是什么? UUID使用时间戳。 (amoungst其他的东西)