我从文件中了解到两者之间的差异。
uuid1 ():
根据主机ID、序列号和当前时间生成UUID
uuid4 ():
生成一个随机UUID。
因此uuid1使用机器/序列/时间信息来生成UUID。使用它们的优缺点是什么?
我知道uuid1()可能存在隐私问题,因为它基于机器信息。我想知道在选择一个或另一个时是否有更微妙的地方。我现在只使用uuid4(),因为它是一个完全随机的UUID。但是我想知道是否应该使用uuid1来降低碰撞的风险。
基本上,我在寻找人们关于使用其中一种与另一种的最佳实践的建议。谢谢!
Uuid1()保证不会产生任何碰撞(假设您不会同时创建太多碰撞)。如果uuid和计算机之间没有连接是很重要的,我就不会使用它,因为mac地址被用来使它在计算机之间是唯一的。
您可以通过在小于100ns的时间内创建超过214个uuid1来创建副本,但这对于大多数用例来说不是问题。
正如您所说,uuid4()生成一个随机UUID。碰撞的可能性非常非常非常小。小到你不用担心。问题是,糟糕的随机数生成器更有可能发生碰撞。
Bob Aman的回答很好地总结了这个问题。(我建议你阅读完整的答案。)
坦率地说,在单个应用程序空间中
如果没有恶意的参与者,那么
地球上所有的生命都会灭绝
发生在你有一个
碰撞,即使在版本4 UUID上,
即使你产生了很多
每秒uuid。