在java中,我们有UUID(通用唯一标识符)来生成唯一ID。 我使用它来获取唯一标识符。
所以,我得到一个唯一的标识符:35ffa200-aaa5-40ec-ab6f-20bb36632f86(5个用连字符分隔的组)。
我不需要这么长的标识符。我的标识符必须是短值,比如代码必须只有3组。如何获得如此小的唯一标识符。 UUID课程有任何限制吗?我害怕对UUID使用字符串限制。这是一种正确的方式
或者有没有办法生成这么小的唯一标识符?
谢谢。
答案 0 :(得分:3)
如果你使用一个唯一的ID用于私人目的,或许像当前时间这样简单的东西就足够了吗?那只是8个字节。或者,如果毫秒级粒度不能为您完成,您可以将流程中的某种计数器(您的应用程序是否已分发?)与当前时间相结合。例如,您可以将您的ID作为流程开始时间计数器的后缀。
UUID算法旨在通过将网络地址与时间戳结合使用,在全球范围内保持全球唯一性。
答案 1 :(得分:1)
UUID代表Universally Unique IDentifier。典型UUID的大多数位专用于在时间和互联网的“空间”中使标识符普遍唯一的问题。事实上,有许多不同的UUID格式以不同的方式解决了这个问题,但它们都依赖于UU特性的大量位(~128)。 UUID上的Wikipedia page提供了更多详细信息,并提供了相关标准和规范的链接。
您好像在问是否可以使用UUID的子字符串。答案是,如果你这样做,你可能会得到一个没有足够强的唯一性保证的标识符。
如果您想为私人目的生成标识符,它们可能不需要是普遍唯一的。您的标识符的唯一性要求(和其他特征)将取决于您打算使用它们的用途,并且在没有告诉我们它们是什么的情况下,很难建议适当的解决方案。但这里有一些例子:
还需要对标识符生成/使用的可能速率进行总结,并考虑当您的id生成器用完时会发生什么。 (环绕是否可以接受?你能否回收并重新发出不再使用的id?你选择的id表示是否允许你扩展/扩展id空间?)
答案 2 :(得分:1)
如果您的应用程序正在连接到数据库,那么您可以使用数据库表主键或序列来生成唯一ID。