java - Java中如何生成固定长度的唯一标识符?

标签 java uniqueidentifier

我正在尝试生成固定长度的唯一标识符,例如 Megaupload 为上传的文件生成的 ID。

例如:

  • ALGYTAB5
  • BCLD23A6

在此示例中,使用 A-Z 和 0-9,固定长度为 8,不同的组合总数为 2,821,109,907,456。

如果生成的 ID 之一已被占用怎么办。这些 ID 将存储在数据库中,不应多次使用。

我如何在 Java 中实现它?

谢谢。

最佳答案

嗯...您可以通过以下方式模仿较小的 GUID。将字符串的前 4 个字节作为编码的当前时间 - 在 Unix 之后经过的秒数。最后 4 个只是随机组合。在这种情况下,两个 ID 重合的唯一方法是它们是在同一秒构建的。由于其他 4 个随机字符,这种情况的可能性非常低。

伪代码:

get current time (4 byte integer
id[0] = 1st byte of current time (encoded to be a digit or a letter)
id[1] = 2nd
id[2] = 3rd
id[3] = 4th
id[4] = random character
id[5] = random character
id[6] = random character
id[7] = random character

关于java - Java中如何生成固定长度的唯一标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584484/

相关文章:

mysql - 如何在不检查数据库中是否存在的情况下生成 8 个字符的唯一字符串

c#.NET USB 设备持久标识符

java - 使用 Jetty 9 作为 Java 9 模块给出 ClassNotFoundException

testing - 如何识别 cucumber 上带有数字 ID 的场景和步骤?

uniqueidentifier - 如何确保访问者是唯一的

iphone - 我想要检测 iPhone 设备的唯一标识符字符串(就像 UDID)?

java - Android 返回键问题

java - 在最新的 OpenGL 中旋转

java - 如何使用 partitioningBy,然后使用 Java Streams 分别对结果列表进行排序

java - 需要BigDecimal输出的解决方案