GUID是否100%独一无二?
在多个线程上,它是否仍然保持独一无二?
GUID是否100%独一无二?
在多个线程上,它是否仍然保持独一无二?
为了获得更好的结果,最好的方法是将GUID与时间戳相结合(只是为了确保它保持唯一性)。
Guid.NewGuid().ToString() + DateTime.Now.ToString();
最困难的部分不是生成重复的Guid。
最困难的部分是设计数据库来存储所有已生成的Guid,以检查它是否实际上是重复的。
来自维基百科:
例如,需要生成多少个随机版本4的UUID才能使至少有一个冲突的50%概率为2.71十万亿,如下所示:
这个数字相当于每秒生成10亿个UUID,需要大约85年。包含这么多UUID的文件,每个UUID占16个字节,约为45艾字节,比当前已经存在的最大数据库大得多,后者的数量级是几百个拍字节。
GUID代表全局唯一标识符
简而言之: (名字就是线索)
详细说明: GUID旨在保持唯一性;它们使用基于计算机时钟和计算机本身的随机方法进行计算,如果您在同一毫秒内在同一台机器上创建许多GUID,则可能会匹配,但对于几乎所有正常操作,它们应被视为唯一。
有足够的 GUID 可以分配到每一个假设星系所有假设星球上每一粒沙子。
足够多,以至于如果全世界的计算机每秒生成 1000 个 GUID ,并持续 200 年,可能(可能)会发生碰撞。
考虑到 GUID 的当前本地使用数量(例如每个数据库表的一个序列),它对我们这些有限的生物(以及那些寿命通常不到十年甚至一两年的移动电话等机器)几乎永远不可能成为问题。
... 我们现在可以关闭此线程了吗?