GUID 100%是唯一的吗?
它会在多个线程中保持唯一吗?
GUID 100%是唯一的吗?
它会在多个线程中保持唯一吗?
当前回答
为了获得更好的结果,最好的方法是将GUID与时间戳附加在一起(只是为了确保它保持唯一)
Guid.NewGuid().ToString() + DateTime.Now.ToString();
其他回答
而每个生成的GUID不是 保证是唯一的,总数 唯一键数(2128或 3.4×1038)是如此之大,相同的数字的概率是 生成两次是非常小的。为 例如,考虑可观察对象 宇宙,其中包含约5×1022 星星;每颗恒星都有可能 6.8×1015通用唯一的guid。
从维基百科。
这是一些关于如何创建GUID(用于。net)以及如何在正确的情况下获得相同的GUID的好文章。
https://ericlippert.com/2012/04/24/guid-guide-part-one/
https://ericlippert.com/2012/04/30/guid-guide-part-two/
https://ericlippert.com/2012/05/07/guid-guide-part-three/
如果你的系统时钟设置正确,没有被环绕,如果你的网卡有自己的MAC(即你没有设置自定义MAC),你的网卡供应商没有回收MAC(他们不应该这样做,但已经知道发生了),如果你的系统的GUID生成功能正确实现,那么你的系统将永远不会生成重复的GUID。
如果地球上每个生成guid的人都遵循这些规则,那么您的guid将是全局唯一的。
在实践中,违反规则的人数很少,他们的guid不太可能“逃脱”。冲突在统计上是不可能发生的。
为了获得更好的结果,最好的方法是将GUID与时间戳附加在一起(只是为了确保它保持唯一)
Guid.NewGuid().ToString() + DateTime.Now.ToString();
是的,GUID应该总是唯一的。它是基于硬件和时间,加上一些额外的位,以确保它是唯一的。我相信理论上有可能得到两个一模一样的,但在现实场景中极不可能。
以下是Raymond Chen关于Guids的一篇很棒的文章:
https://blogs.msdn.com/oldnewthing/archive/2008/06/27/8659071.aspx
GUID 100%是唯一的吗?
不能保证,因为有几种方法可以生成一个。然而,您可以尝试计算创建两个完全相同的GUID的几率,您就会明白:一个GUID有128位,因此,有2128个不同的GUID——比已知宇宙中的恒星要多得多。阅读维基百科的文章了解更多细节。