一些在 Java 中创建 GUID 的最佳方法是什么?

2010-06-06 01:12:27
问题评论:

@finneycanhelp-是的我认为我们需要更多简单的东西如下 Stackoverflow 上也。我知道极大地受益于它们。问题是人们获得"flamed"了很多的发布是搜索引擎友好的简单问题已经知道答案并思考的问题是过于简单的人员。我该做什么只是忘了,当我看到人们不喜欢的简单问题时,支持该问题添加批注。在此情况下,它棒极了的问题关闭了,但是因为搜索"GUID Java"的人将找到它,然后可以看到这两个问题的答案。

stackoverflow.com/questions/325443/generate-uuid-in-java的问题进行了详细讨论 GUID 冲突,然后只如何相当于一个 GUID 是在 Java 技术堆栈,这是什么 (我认为) 是更关注这个问题。

回答:

去看看UUID 类与 Java 5 或更高版本捆绑。

例如︰

如果包含一个示例一样 Kaleb Brasee,您很好的回答会更好一些。

java.util.UUID.randomUUID();

@angel 绝不会说"永远不会"相关事宜与有限数量的位。

虽然上述 brainacs dissertations 编写的质量或内容的问题,或为 GUID 的概念扩展阅读几个链接,此答案会让 4 字 3 期,并打开和关闭括号。Bravo Kaleb。

@angel 是,它是UUID.randomUUID方法返回重复,理论上可以,但这是根本不是一个现实的问题Oracle/OpenJDK 实现使用加密型强随机数字生成器。给定的和给定的天文范围由许多位 UUID,可以在您的应用程序中生成许多数以百万计的这种值,仍然很好地睡眠。使用其他款式之一进一步减少冲突甚至更接近为零,由于使用"空间和时间",[1] 的 MAC 地址或名称,以及 [2] 当前日期时间,作为约束的可能性。

@RenniePet Eh,如果您在此需要保持警惕,并且你已经使用 Id 的列表的访问权时创建一个新您刚生成新密钥中while直到你不在列表内的其中一个︰ p

它取决于您想什么样的UUID

  • 标准的 Java UUID类生成版本 4 (随机) 的 Uuid。它还可以处理其他的款式,尽管它无法生成它们。(在这种情况下,"处理"意味着构造UUID实例从long byte[]String表示形式,并支持相关的访问器。

  • 旨在支持"所有 3 '官方' 的类型定义的RFC 4122UUID"...尽管 RFC 实际上定义了 4 种类型,并提及 5 键入Java UUID 生成器 (炉)实现。

有关 UUID 类型和款式,维基百科,没有很好的摘要和极度详细信息是在RFC 4122和其它技术指标。

不完全正确的它还可以生成基于名称的 (版本 3) Uuid 与UUID.nameUUIDFromBytes(byte[] name)

我代表已更正。我依靠说的 javadoc 说明"(基于名称)检索类型 3 到静态工厂 UUID 基于指定的字节数组。"

其他答案都是正确的尤其是这台Stephen C.

到达外部 Java

JVM调用生成 Uuid 之外,也可以找到您的 Java 应用程序︰

  • 命令行实用程序与几乎所有操作系统捆绑在一起。
    例如, uuidgen在 Mac OS X,BSD 和 Linux 中找到。
  • 数据库服务器
    例如, uuid-ossp扩展名通常与捆绑Postgres.
  • Web 服务.
内容来源于Stack Overflow Create a GUID in Java
请输入您的翻译

Create a GUID in Java

确认取消