1. 程式人生 > >UUID(唯一識別碼)

UUID(唯一識別碼)

UUID含義是通用唯一識別碼 (Universally Unique Identifier),這是一個軟體建構的標準.

       UUID 的目的,是讓分散式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人衝突的 UUID。在這樣的情況下,就不需考慮資料庫建立時的名稱重複問題。目前最廣泛應用的 UUID,即是微軟的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的應用,則有 Linux ext2/ext3 檔案系統、GNOME、KDE、Mac OS X 等等。

UUID是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成的API。按照

開放軟體基金會(OSF)制定的標準計算,用到了乙太網卡地址、納秒級時間、晶片ID碼和許多可能的數字

UUID由以下幾部分的組合:

(1)當前日期和時間,UUID的第一個部分與時間有關,如果你在生成一個UUID之後,過幾秒又生成一個UUID,則第一個部分不同,其餘相同。

(2)時鐘序列。

(3)全域性唯一的IEEE機器識別號,如果有網絡卡,從網絡卡MAC地址獲得,沒有網絡卡以其他方式獲得。

UUID的唯一缺陷在於生成的結果串會比較長。關於UUID這個標準使用最普遍的是微軟的GUID(Globals Unique Identifiers)。使用UUID的好處在分散式的軟體系統中,能保證每個節點所生成的標識都不會重複,並且隨著WEB服務等整合技術的發展,UUID的優勢將更加明顯。

GUID是一個128位長的數字,一般用16進製表示。演算法的核心思想是結合機器的網絡卡、當地時間、一個隨即數來生成GUID。從理論上講,如果一臺機器每秒產生10000000個GUID,則可以保證(概率意義上)3240年不重複。

UUID是jdk1.5中新增的一個類,在java.util下,用它可以產生一個號稱全球唯一的ID. UUID是由一個十六位的數字組成,表現出來的形式例如 
550E8400-E29B-11D4-A716-446655440000  

下面是java程式碼生成uuid的例子(這個就比時間戳或者是隨機數更加專業和靠譜了)

import java.util.UUID;

  public static String getUUID() {   
        UUID uuid =UUID.randomUUID();   
        String str = uuid.toString();  
        // 去掉"-"符號   
        String temp = str.substring(0, 8) +str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) +str.substring(24);   
        returnstr+","+temp;   
    }