java Web应用程序中的唯一序列号

Mat*_*zyk 2 java uuid guid uniqueidentifier java-ee

我一直想知道生成独特ID的正确做法是什么?事情是在我的网络应用程序中我将有一个插件系统,当用户注册一个插件我想为它生成一个唯一的序列ID.我一直在考虑将所有数字存储在数据库或服务器上的文件中,生成随机数并检查它是否已存在于数据库/文件中,但这似乎不太好.还有其他方法吗?使用UUID是首选方式吗?

mar*_*cog 7

如果id是面向用户的,它们似乎是,那么你希望它们难以猜测.使用内置的UUID类,它为您生成随机ID,并可以很好地为您格式化它们.提取:

UUID idOne = UUID.randomUUID();
UUID idTwo = UUID.randomUUID();
log("UUID One: " + idOne);
log("UUID Two: " + idTwo);
Run Code Online (Sandbox Code Playgroud)

示例输出:

UUID One: 067e6162-3b6f-4ae2-a171-2470b63dff00 
UUID Two: 54947df8-0e9e-4471-a2f9-9af509fb5889
Run Code Online (Sandbox Code Playgroud)

提供的链接中还有其他解决方案.我认为它很好地比较了这些方法,因此请选择最适合您需求的方法.

另一个有趣的方法是MongoDB使用的方法,但这可能对你的需求有些过分:

BSON ObjectID是一个12字节的值,由4字节时间戳(自纪元以来的秒数),3字节机器ID,2字节进程ID和3字节计数器组成.请注意,与BSON的其余部分不同,时间戳和计数器字段必须以big endian存储

如果他们不是面向用户,那么你可以将它留给数据库来做一个自动递增的id:1,2,3等.