首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成long类型的UUID

问生成long类型的UUID
EN

Stack Overflow用户
提问于 2010-12-25 16:17:46
回答 3查看 20.2K关注 0票数 6

请给我示例代码来生成long类型的UUID在java中,而不使用时间戳。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-25 18:53:27

真实的UUID是128位。长整型是64位。

这不仅仅是卖弄学问。UUID是通用唯一IDentifier的缩写。

established UUID schemes的“通用唯一性”基于:

  • 编码MAC地址和时间戳,
  • 编码DNS名和时间戳的散列,或使用122位随机数的
  • ...它足够大,碰撞的概率非常非常小。

对于64位,没有足够的位来实现“通用唯一性”。例如,生日悖论意味着,如果我们有许多计算机生成随机的64位数字,潜在可检测到的碰撞的概率将足够大,足以引起人们的关注。

现在,如果您只需要一个UID (而不是UUID),那么只要您采取措施防止序列重复,任何64位序列生成器都可以完成这项工作。(如果序列重复,则ID在时间上不是唯一的;即,随着时间的推移,给定的ID可能表示不同的实体。)

票数 21
EN

Stack Overflow用户

发布于 2010-12-25 16:20:07

你有没有看过java.util.UUID

票数 7
EN

Stack Overflow用户

发布于 2010-12-25 17:07:57

如果您只想要一个简单唯一的长整型,那么可以使用AtomicLong.incrementAndGet()。这不使用时间戳,但每次启动时都会重置为0,并且在JVM中不是唯一的。

不使用时间戳的要求是什么?UUID使用时间戳。(除其他事项外)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4529727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档