UUID(Universal Unique Identifier)是這幾單詞的簡(jiǎn)寫罷了,我們就譯它全球唯一標(biāo)識(shí)這個(gè)名稱。它真的永遠(yuǎn)能唯一標(biāo)識(shí)嗎?它是如何生成的呢?生成的工具有哪些呢?是由何而來呢?下面我來談一下我的認(rèn)識(shí)。
能永遠(yuǎn)唯一標(biāo)識(shí)嗎?對(duì)于這個(gè)問題。我們還是先來認(rèn)識(shí)一下UUID,UUID其實(shí)就是一個(gè)字符串,它是一個(gè)有且僅有128位的字符串,也就是16個(gè)字節(jié)了,如uuid(c37c9ab7-9fc5-4ecb-9e9f-71ae06156f74)。它的表現(xiàn)形式(就是說寫法)上有幾種。表示的字符是0~f。共有32個(gè)這樣的字符,那么32的16次方可供使用,所以肯定不能永遠(yuǎn)的唯一,隨著發(fā)展肯定會(huì)有更好表示了。
生成的工具有哪些呢?就Visual studio 這個(gè)集成開發(fā)環(huán)境,它帶了兩個(gè)生成UUID的工具,一個(gè)是界面形式的,一個(gè)是CONSOLE形式的。可以VS安裝目錄下的BIN文件夾下找到這兩個(gè)工具,GUIDGEN.exe這個(gè)帶有界面形式的工具,它可以根據(jù)你的要求生成指定格式的UUID。還有一個(gè)UUIDGEN.exe這個(gè)是CONSOLE形式的生成工具,它可以直接輸出UUID到一個(gè)文件中去。看看幫助都會(huì)用。這里不詳述。
如何生成的呢?很多是根據(jù)計(jì)算機(jī)上的網(wǎng)卡地址(不同計(jì)算機(jī)上的網(wǎng)卡地址是唯一的),再根據(jù)生成的時(shí)間來產(chǎn)生的(這就本機(jī)上生成的GUID不會(huì)重復(fù))。網(wǎng)卡地址占用48位,而時(shí)間標(biāo)戳占用60位。或許有的生成UUID的計(jì)算機(jī)沒有網(wǎng)卡,那就會(huì)用另一套算法來生成了。就上面介紹的這兩個(gè)工具來說它們的生成都會(huì)調(diào)用COM庫中的CoCreateGuid這個(gè)函數(shù),這個(gè)函數(shù)最終又調(diào)用UuidCreate函數(shù)來生這個(gè)UUID標(biāo)識(shí)串。
UUID最初是由OSF(開放軟件基金會(huì)提出來的)當(dāng)時(shí)也出于DCE的需求而定義。它是用來標(biāo)識(shí)一個(gè)唯一的被調(diào)用者。
有關(guān)UUID的知識(shí)。
http://m.shnenglu.com/alantop/archive/2007/07/09/27726.html這里也有介紹。