我一直想知道生成唯一 ID 的正确做法是什么?事情是在我的网络应用程序中,我将有一个插件系统,当用户注册一个插件时,我想为其生成一个唯一的序列号。我一直在考虑将所有数字存储在服务器上的数据库或文件中,生成随机数并检查它是否已存在于数据库/文件中,但这似乎不太好。还有其他方法吗?使用 UUID 是首选方法吗?
如果 ID 是面向用户的(看起来确实如此),那么您希望它们难以猜测。使用内置的UUID http://www.javapractices.com/topic/TopicAction.do?Id=56类,它为您生成随机 ID,并可以为您很好地格式化它们。提炼:
UUID idOne = UUID.randomUUID();
UUID idTwo = UUID.randomUUID();
log("UUID One: " + idOne);
log("UUID Two: " + idTwo);
输出示例:
UUID One: 067e6162-3b6f-4ae2-a171-2470b63dff00
UUID Two: 54947df8-0e9e-4471-a2f9-9af509fb5889
提供的链接中还有其他解决方案。我认为它很好地比较了这些方法,因此请选择最适合您需求的一种。
另一种有趣的方法是MongoDB http://www.mongodb.org/display/DOCS/Object+IDs使用,但这可能对您的需求来说太过分了:
BSON ObjectID 是一个 12 字节值
由 4 字节时间戳组成
(自纪元以来的秒数),一个 3 字节
机器 ID、2 字节进程 ID 和
3 字节计数器。请注意,
时间戳和计数器字段必须是
与其他存储不同的是大端存储
BSON
如果它们不是面向用户的,那么您可以将其留给数据库来执行自动递增 id:1、2、3 等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)