gpt4 book ai didi

java - 如何在 Java 中获取 32 位唯一编号?

转载 作者:行者123 更新时间:2023-11-30 06:36:46 25 4
gpt4 key购买 nike

我需要在 Java 中生成唯一的 32 位数字。我需要将数字作为 Java int 返回,这是接口(interface)所要求的。你能就此分享一些想法吗?

该数字将用作 MySQL PK,多个线程可以同时生成自己的唯一 ID。 (抱歉决定不使用MySQL增量id)

我试过 UUID 类,但它生成的数据似乎比我能使用的多。

我找到了这个但不确定它是否有效:

    // seems no way to get int
UUID id = UUID.randomUUID();
System.out.println(id);

// not working either?
java.rmi.server.UID uid = new java.rmi.server.UID();
System.out.println(uid.toString());

// the one i am using
SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
prng.setSeed(System.currentTimeMillis());
int ret = prng.nextInt();
System.out.println(ret);

最佳答案

您想要多“独特”?简而言之,什么是碰撞域?如果您要处理数以千计的 key ,那么 Random.nextInt()相对于您尝试使用版本 4 UUID(UUID v4 生成 128 个随机位)所做的完全符合您的要求。

如果您需要一些碰撞可能性较小的东西,那么您需要一个全局递增的整数,但这里需要特别注意,例如在 JVM 启动之间保持状态。为此,您应该查看 AtomicIntegers .

关于java - 如何在 Java 中获取 32 位唯一编号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4405661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com