Data::UUID 的文档指出
UUID 的长度为 128 位,并且保证与 3400 CE 之前生成的所有其他 UUID/GUID 不同。
APR::UUID 的文档将生成的标识符描述为random。
这是否意味着 APR::UUID 创建的 GUID 不能保证是唯一的?
Data::UUID 的文档指出
UUID 的长度为 128 位,并且保证与 3400 CE 之前生成的所有其他 UUID/GUID 不同。
APR::UUID 的文档将生成的标识符描述为random。
这是否意味着 APR::UUID 创建的 GUID 不能保证是唯一的?
我意识到这是一个老问题,但是当我偶然发现这个问题时,我想我会分享一些观察结果。
正如 daxim 所说,APR::UUID 使用 libuuid。然而,至少在某些实现中,libuuid 不会生成随机 (v4) UUID,而是生成 v1 UUID(基于 MAC 地址和时间戳)。这些确实是唯一的(只要您的 MAC 地址确实是唯一的),但它们会收集信息(您的 MAC 地址和生成 UUID 的时间)并且可能至少在某种程度上是可预测的。
如果 UUID 生成代码符合规范,您可以通过查看 3 组的第一个数字来找出生成的 UUID 版本。v1 UUID 不是随机的,而是可预测的。v4 UUID 是随机的并且(据说)是不可预测的。