發表文章

目前顯示的是 十月, 2013的文章

Understanding UUID

圖片
通用唯一識別碼 (Universally Unique IDentifier, UUID) 或是全域唯一識別碼 (Globally Unique IDentifier, GUID) 是一個 128 bits 的整數,並保證其在時間與空間的分佈都是獨一無二的。UUID 由開放軟體基金會 (OSF) 標準化後用在他們的 DCE 系統上,後來在微軟的 COM 系統上發揚光大。除此之外在許多地方也都可以看到 UUID 的身影,如 Linux 上的分割表/區塊裝置就是以 UUID 來標示,或是 RSS 的  標籤也可以使用 UUID,實際上 UUID 是標準的 URN 表示法之一,你可以在任何需要標示單一物件的地方使用 UUID。 UUID 的文字形式為一個 8-4-4-4-12 的十六進位表示,共有 16 個 bytes,有人說使用 UUID 不方便人類辨識,但了解 UUID 的組成後你還是可以從這個表示法看出一些端倪來。本文參考的是 IETF 版本的 RFC 4122。 UUID 共有四個版本,第 13 個字元的位置就是表示版本號。第一種是以時間和網路卡號組成,時間是以一百奈秒為單位,網路卡號理論上是不會重複的,再加上 clock_seq 這個每次開機重設一次的亂數欄位,就算時間回朔了也不會重複,代號是 1。第二種和第四種是以命名空間加上一個 hash 組成的,分別可以使用MD5 或是 SHA1 演算法,算出來後就填到空位中,代號是 3 跟 5。第三種是全亂數組成,代號是 4。 因此我們可以在不同的情境選用不同的 UUID,也可以從 UUID 看出版本跟時間等資訊,如4ef17586-f187-11df-8xxx-xxxxxxxxxxxx 看到第三個區塊是 11df 就可以知道是最近產生的以時間卡號為基礎的 UUID,時間 1dff1874ef17586 解出來就是 2010-11-16 13:42:09.173031.0 UTC。而 7c0fdbe4-1b09-4278-9fc9-5f0c6a1f2ae2 就是純亂數的 UUID,沒有任何意義。

from:http://kanru.info/blog/archives/2010/11/16/uuid-el/Ref:http://en.wikipedia.org/wiki/Universally_unique_ident…