Data :: UUID的文档声明
UUID长度为128位,保证与所有UUID不同 其他UUID / GUID生成到公元3400年。
APR :: UUID的文档将生成的标识符描述为random。
这是否意味着APR :: UUID创建的GUID不能保证是唯一的?
答案 0 :(得分:3)
关于UUID
s和GUID
s的维基百科文章在这里具有指导意义。
UUID是随机的,但是从如此大的分布中得出,碰撞的概率微乎其微,在这种情况下微不足道意味着在生成两个相同的UUID之前,你可能会被成千上万的小行星击中。
GUID主要是随机的,但也会为您的系统添加一些确定性但唯一的数据,例如网络硬件的MAC地址和当前时间,以便在另一个系统上创建的GUID之间的冲突更不可能。
答案 1 :(得分:0)
我意识到这是一个古老的问题,但当我偶然发现这个问题时,我想我会分享一些观察。
如daxim所述,APR :: UUID使用libuuid。然而,在至少一些实现中,libuuid不生成随机(v4)UUID,而是生成v1 UUID(基于MAC地址和时间戳)。这些确实是唯一的(只要您的MAC地址确实是唯一的),但它们会韭菜信息(您的MAC地址和生成UUID的时间),并且至少可以预测。
如果UUID生成代码符合规范,您可以通过查看3组的第一个数字来确定生成哪个版本的UUID。 v1 UUID不是随机的,而是可预测的。 v4 UUID是随机的,并且(据说)是不可预测的。