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