UUID(Universal Unique Identifier)是这几单词的简写罢了,我们就译它全球唯一标识这个名称。它真的永远能唯一标识吗?它是如何生成的呢?生成的工具有哪些呢?是由何而来呢?下面我来谈一下我的认识。
能永远唯一标识吗?对于这个问题。我们还是先来认识一下UUID,UUID其实就是一个字符串,它是一个有且仅有128位的字符串,也就是16个字节了,如uuid(c37c9ab7-9fc5-4ecb-9e9f-71ae06156f74)。它的表现形式(就是说写法)上有几种。表示的字符是0~f。共有32个这样的字符,那么32的16次方可供使用,所以肯定不能永远的唯一,随着发展肯定会有更好表示了。
生成的工具有哪些呢?就Visual studio 这个集成开发环境,它带了两个生成UUID的工具,一个是界面形式的,一个是CONSOLE形式的。可以VS安装目录下的BIN文件夹下找到这两个工具,GUIDGEN.exe这个带有界面形式的工具,它可以根据你的要求生成指定格式的UUID。还有一个UUIDGEN.exe这个是CONSOLE形式的生成工具,它可以直接输出UUID到一个文件中去。看看帮助都会用。这里不详述。
如何生成的呢?很多是根据计算机上的网卡地址(不同计算机上的网卡地址是唯一的),再根据生成的时间来产生的(这就本机上生成的GUID不会重复)。网卡地址占用48位,而时间标戳占用60位。或许有的生成UUID的计算机没有网卡,那就会用另一套算法来生成了。就上面介绍的这两个工具来说它们的生成都会调用COM库中的CoCreateGuid这个函数,这个函数最终又调用UuidCreate函数来生这个UUID标识串。
UUID最初是由OSF(开放软件基金会提出来的)当时也出于DCE的需求而定义。它是用来标识一个唯一的被调用者。
有关UUID的知识。
http://www.cppblog.com/alantop/archive/2007/07/09/27726.html这里也有介绍。