生成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其他的东西)