gpt4 book ai didi

java - 为用户创建一个在多次重启后保持不变的唯一编号的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-29 10:18:42 25 4
gpt4 key购买 nike

我正在构建一个应用程序(在 Java 中),我想为自己提供一些性能测量。我正在计时多个长时间运行的进程,并且我有一个用于接收指标的 Web 服务器,但是我想为特定用户创建一个唯一的数字(我的程序不需要已登录)在计算机上。

因此,如果 Joe 登录到计算机 A 并运行我的应用程序,它会给他一个唯一编号,例如 1234。然后如果 Jane 登录到同一台计算机,它将使用不同的编号,例如 4321。但是如果 Joe 登录到计算机 B,它会完全创建一个单独的数字,比如 5678。另外(只是为了澄清)如果乔重新登录到计算机 A,它仍然会产生数字 1234。

另外,为了让它更具挑战性,如果同一台计算机在不同的网络上,那么我最好想要一个不同的 ID。

这些数字是任意的,并且会比这更长。到目前为止,我的代码生成 8akb7d3n7lp1i1jo6apfhegp593kja5hg38b6o1a5godm38g97omm7bmc3jekc6apopgjhf9g 作为我的 UID 来自:

try {
byte[] mac = NetworkInterface.getByInetAddress(InetAddress.getLocalHost()).getHardwareAddress();
String names = new BigInteger(mac).toString(16) + InetAddress.getLocalHost().getHostAddress() + get("user.name") + get("os.version") + get("java.vendor");
BigInteger uid = new BigInteger(names.getBytes());
thisUsersUid = uid.toString(26);
} catch (SocketException ex) {
Logger.getLogger(TimingLogger.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnknownHostException ex) {
Logger.getLogger(TimingLogger.class.getName()).log(Level.SEVERE, null, ex);
}

我不希望这些信息容易阅读(因为您可能会想到 names="-f4b86eb8ee1192.168.0.20lee10.6.8Apple Inc.")所以我将添加一个哈希函数对此。

所以我的问题是,在所有这些宣传之后:这是一个好的方法吗?有没有比这更好的图书馆?还是我想要的太多了?

提前致谢(即使是那些说:为什么?)

最佳答案

你可以使用 UUIDs .

在 Java 中:UUID id = UUID.randomUUID();

关于java - 为用户创建一个在多次重启后保持不变的唯一编号的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068187/

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