随笔 - 64, 文章 - 11, 评论 - 12, 引用 - 0
数据加载中……

UUID 初识

              
   
         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这里也有介绍。

posted on 2007-11-10 10:45 Robertxiao 阅读(1801) 评论(2)  编辑 收藏 引用 所属分类: RPC/COM/ATL散谈

评论

# re: UUID 初识  回复  更多评论   

表示的字符是0~f。共有32个这样的字符,那么32的16次方可供使用


16个字节,表示的字符是0~f,一个直接2位16进制,共有32个这样的字符
应该是16的32次方
2008-07-18 12:00 | qzq

# re: UUID 初识  回复  更多评论   

(2^4)^32= 2^(4*32)=2^128

因为是128bit,所以是2的128次方个值。
2008-07-18 12:02 | qzq

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理