繁体   English   中英

生成long类型的UUID

[英]generate UUID of long type

请给我示例代码,以便在不使用时间戳的情况下在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其他的东西)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM