我见过 GUID Collisons 讨论,但只是想知道如果两个客户端访问完全同时生成GUID的同一网页(可能是微秒),是否可能存在GUID冲突?

有帮助吗?

解决方案

这在理论上是可行的,但极不可能。

其他提示

没有。如果发生这种情况,请赶紧购买彩票!

在单个服务器上,不,这是不可能的。版本4 Guids由伪随机54位值组成(除此之外),据我所知,它们在重复之前循环遍历所有值。

如果在多个服务器上创建,则可能会发生guid冲突,尽管这种情况极不可能发生。

请参阅 RFC 4122 ,特别是第4.1.5节。现代Windows使用v4 UUID,我相信。

来自维基百科,免费的百科全书

全球唯一标识符或GUID(发音为&ˈ guːɪ d /或/ˈ gwɪ d /)是一种特殊类型的标识符,用于软件应用程序中命令提供在任何上下文中唯一的引用号(因此,“全局”),例如,在为软件应用程序中的某种类型的访问点定义内部引用时,或者用于创建数据库中的唯一键。 虽然不保证每个生成的GUID都是唯一的,但是唯一键的总数(2128或3.4× 1038)是如此之大,以至于两次生成相同数字的概率非常小 。例如,考虑可观察的宇宙,其中包含大约5× 1022颗恒星;然后,每个星星都可以拥有6.8× 1015个通用唯一的GUID。

如果您生成了大量的GUID,那么由于 生日悖论 。理论上GUID碰撞应该是极不可能的(天真的直觉),但实际上它不时发生。

当然,以编程方式处理这些冲突是浪费时间,但你仍然应该以一种方式编写代码,如果它发生,那么你的代码应该大声失败,而不是安静地检测不到。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top