UUID(唯一識別碼)
UUID含義是通用唯一識別碼 (Universally Unique Identifier),這是一個軟體建構的標準.
UUID 的目的,是讓分散式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人衝突的 UUID。在這樣的情況下,就不需考慮資料庫建立時的名稱重複問題。目前最廣泛應用的 UUID,即是微軟的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的應用,則有 Linux ext2/ext3 檔案系統、GNOME、KDE、Mac OS X 等等。
UUID是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成的API。按照
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;
}