生成long类型的UUID
请给我示例代码,以便在不使用时间戳的情况下在java中生成long
类型的UUID
。
谢谢
真正的UUID是128位。 长是64位。
这不仅仅是迂腐。 UUID代表Universal Unique IDentifier。
已建立的UUID计划的“普遍唯一性”基于:
- 编码MAC地址和时间戳,
- 编码DNS名称和时间戳的哈希,或
- 使用122位随机数…这足够大,以至于碰撞的概率非常小。
对于64位,根本没有足够的位用于“通用唯一性”。 例如,生日悖论意味着如果我们有许多计算机生成随机的64位数字,那么潜在可检测到的碰撞的概率就足以引起关注。
现在,如果您只想要一个UID(而不是UUID),那么任何64位序列生成器都可以完成这项工作,只要您采取措施防止重复序列。 (如果序列重复,则ID在时间上不是唯一的;即,随着时间的推移,给定的ID可能表示不同的实体。)
你看过java.util.UUID吗?
如果你只想要一个简单的唯一长度,你可以使用AtomicLong.incrementAndGet()。 这不使用时间戳,但每次启动时都会重置为0,并且在JVM中不是唯一的。
不使用时间戳的要求是什么? UUID使用时间戳。 (amoungst其他的东西)