当前位置:  开发笔记 > 编程语言 > 正文

在Java中生成全局唯一标识符

如何解决《在Java中生成全局唯一标识符》经验,为你挑选了1个好方法。

简介:我正在开发一个持久的Java Web应用程序,我需要确保我持有的所有资源都具有全局唯一标识符以防止重复.

精美印刷品:

    我没有使用RDBMS,所以我没有任何花哨的序列生成器(例如Oracle提供的那个)

    我希望它快速,最好全部在内存中 - 我宁愿不必打开一个文件并增加一些值

    它需要是线程安全的(我预计一次只有一个JVM需要生成ID)

    需要在JVM的实例化之间保持一致.如果服务器关闭并启动,ID生成器不应该重新生成它在先前实例化中生成的相同ID(或者至少机会必须真正,非常小 - 我预计会有数百万个预先存储的资源)

    我已经看到了EJB唯一ID模式文章中的示例.它们不适用于我(我宁愿不仅仅依赖于System.currentTimeMillis(),因为我们将每毫秒保持多个资源).

    我看过这个问题中提出的答案.我对它们的关注是,随着时间的推移,我将获得重复ID的可能性是多少?我对使用java.util.UUID作为UUID的建议很感兴趣,但同样,重复的可能性要小得无限.

    我正在使用JDK6

Shawn Miller.. 31

很确定UUID"足够好".有340,282,366,920,938,463,463,374,607,431,770,000,000 UUID可用.

http://www.wilybeagle.com/guid_store/guid_explain.htm

"为了正确看待这些数字,每年被陨石击中的风险估计是170亿的一次机会,这意味着概率约为0.00000000006(6×10-11),相当于创造一些数字的可能性一年中有数万亿UUID并且有一个副本.换句话说,只有在接下来的100年中每秒产生10亿UUID之后,创建一个副本的概率大约为50%.一次重复的概率将是如果地球上的每个人拥有6亿UUID,那么大约50%"

http://en.wikipedia.org/wiki/Universally_Unique_Identifier



1> Shawn Miller..:

很确定UUID"足够好".有340,282,366,920,938,463,463,374,607,431,770,000,000 UUID可用.

http://www.wilybeagle.com/guid_store/guid_explain.htm

"为了正确看待这些数字,每年被陨石击中的风险估计是170亿的一次机会,这意味着概率约为0.00000000006(6×10-11),相当于创造一些数字的可能性一年中有数万亿UUID并且有一个副本.换句话说,只有在接下来的100年中每秒产生10亿UUID之后,创建一个副本的概率大约为50%.一次重复的概率将是如果地球上的每个人拥有6亿UUID,那么大约50%"

http://en.wikipedia.org/wiki/Universally_Unique_Identifier


当你晚上担心重复的UUID时,一定要留意那个陨石......;)
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有