Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 什么是“分散唯一性算法”?_Algorithm_Computer Science - Fatal编程技术网

Algorithm 什么是“分散唯一性算法”?

Algorithm 什么是“分散唯一性算法”?,algorithm,computer-science,Algorithm,Computer Science,COM中创建GUID CoCreateGUID的函数使用了分散的唯一性算法,但我的问题是,它是什么 有人能解释一下吗?这是一种生成ID的方法,该ID在某种程度上保证是唯一的,而无需通过需要网络连接且可能难以组织的中央ID提供商进行任何协调。基本上有两种方法,都没有提供绝对的保证: 为本地计算机(通常为其MAC地址)使用合理唯一的ID,并添加本地唯一ID,例如时间戳+进程号+自动递增计数器。 使用一个好的随机数生成器和一个好的种子来生成ID,并使其足够长,以使冲突不太可能发生。 一种生成ID的方法

COM中创建GUID CoCreateGUID的函数使用了分散的唯一性算法,但我的问题是,它是什么


有人能解释一下吗?

这是一种生成ID的方法,该ID在某种程度上保证是唯一的,而无需通过需要网络连接且可能难以组织的中央ID提供商进行任何协调。基本上有两种方法,都没有提供绝对的保证:

为本地计算机(通常为其MAC地址)使用合理唯一的ID,并添加本地唯一ID,例如时间戳+进程号+自动递增计数器。 使用一个好的随机数生成器和一个好的种子来生成ID,并使其足够长,以使冲突不太可能发生。
一种生成ID的方法,该ID在某种程度上保证是唯一的,而不依赖于通过需要网络连接且难以组织的中央ID提供者进行的任何协调。基本上有两种方法,都没有提供绝对的保证:

为本地计算机(通常为其MAC地址)使用合理唯一的ID,并添加本地唯一ID,例如时间戳+进程号+自动递增计数器。 使用一个好的随机数生成器和一个好的种子来生成ID,并使其足够长,以使冲突不太可能发生。
我已经搜索了我当地的图书馆和档案,但找不到具体算法的参考。但通常这种类型的算法用于生成只能出现一次的128位GUID值。使用标准随机数生成算法不会生成真正的随机性。因此,在这种情况下,他们采用了几个值,包括:

计算机网络地址 计算机时钟时间值 用于适应夏令时以及用户手动更改系统时钟的值。 通过使用这样一个功能,程序员可以确保GUID的值是唯一的,而不需要一个跟踪并生成所有用户GUID值的集中式服务器


您可以阅读有关随机数生成的更多信息

我已经搜索了本地的图书馆和档案,但找不到特定算法的参考。但通常这种类型的算法用于生成只能出现一次的128位GUID值。使用标准随机数生成算法不会生成真正的随机性。因此,在这种情况下,他们采用了几个值,包括:

计算机网络地址 计算机时钟时间值 用于适应夏令时以及用户手动更改系统时钟的值。 通过使用这样一个功能,程序员可以确保GUID的值是唯一的,而不需要一个跟踪并生成所有用户GUID值的集中式服务器


您可以阅读更多关于随机数生成的内容

+1,我只想补充一点,这是必需的,这样每个开发人员都可以在本地为其类和接口生成ID,并且他得到的值不会与其他开发人员生成的值相冲突。+1,我只想补充一点,这是必需的,这样每个开发人员都可以在本地为他的类和接口生成ID,并且他得到的值不会与其他开发人员生成的值发生冲突。