一个辛勤的工作日,我注意到我用通常的 .NET 方法生成的GUID在第三个块的开头Guid.NewGuid()
具有相同的数字:4
efeafa5f-fe21-4ab4-ba82-b9eefd5fa225
480b64d0-6762-4afe-8496-ac7cf3292898
397579c2-a4f4-4611-9fda-16e9c1e52d6a
...
大约一秒钟左右,屏幕上出现了十个。在第五个 GUID 之后,我一直关注这种模式。最后,最后一个里面有相同的四个位,我决定我是一个幸运的人。我回到家,觉得整个世界都为我这样一个非凡的人敞开了大门。下周我找到了一份新工作,打扫了我的房间并给我父母打了电话。
但今天我再次面临同样的模式。千倍。而且我再也感觉不到天选者了。
我用谷歌搜索了它,现在我知道了UUID和一种规范格式,其中 4 个保留位version
用于variant
.
这是一个要试验的片段:
static void Main(string[] args)
{
while (true)
{
var g = Guid.NewGuid();
Console.WriteLine(BitConverter.ToString(g.ToByteArray()));
Console.WriteLine(g.ToString());
Console.ReadLine();
}
}
但仍有一件事我不明白(除了如何继续生活)。为什么我们需要这些保留位?我看到了它会带来怎样的危害——暴露内部实现细节,更多的冲突(仍然没有什么可担心的,但总有一天......),更多的自杀——但我没有看到任何好处。你能帮我找到吗?