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.shnenglu.com/alantop/archive/2007/07/09/27726.html這里也有介紹。