【问题标题】:method to generating random UUID using Java [duplicate]使用Java生成随机UUID的方法[重复]
【发布时间】:2021-04-16 20:15:28
【问题描述】:

我的任务是生成一个唯一的字符串,我想到的第一个想法是使用 Java 的 UUID 生成器具有额外的改进。所以我生成随机字符串的方式 看起来像这样

public static String generateRandomString() {
    return "TEST" + 
            DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSSSSS")
                    .format(LocalDateTime.now()) + UUID.randomUUID()
            .toString().replace("-", "");
}

这种生成随机字符串的方法是否足以实现唯一性? 请注意,我需要在接下来的 20 年中每天生成 10 000 000 个。还, 这段代码将在不同的 JVM 上运行,并且可能在不同的服务器上运行。

【问题讨论】:

  • 为什么不单独使用UUID.randomUUID()
  • 获取/保存有关字符串大约何时生成的信息。
  • 顺便说一句,所有日期/时间格式都提供与使用 System.currentTimeMillis() 相同的唯一性

标签: java uuid


【解决方案1】:

UUID.randomUUID() 生成一个 4 类 UUID。

根据Wikipedia

因此,在 103 万亿个版本 4 UUID 中找到重复的概率是十亿分之一。

更多info.

【讨论】:

    【解决方案2】:

    只要做数学题:

    10000000*365*20 =                             73000000000
    2^128           = 340282366920938463463374607431768211456
    

    我会说你可以在比较这些数字后使用它。

    编辑:我刚刚看到了一些其他答案,一定要检查 UUID.randomUUID() 是使用完整的 128 位还是仅使用一些。

    【讨论】:

    猜你喜欢
    • 2021-06-24
    • 2012-10-31
    • 2013-01-10
    • 1970-01-01
    • 2018-09-14
    • 2013-12-31
    • 2013-04-06
    相关资源
    最近更新 更多