java生成UUID通用唯一識別碼


一、UUID概述

UUID含義是通用唯一識別碼 (Universally Unique Identifier),這是一個軟件建構的標准,也是被開源軟件基金會 (Open Software Foundation, OSF) 的組織在分布式計算環境 (Distributed Computing Environment, DCE) 領域的一部份。

UUID 的目的,是讓分布式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人沖突的 UUID。在這樣的情況下,就不需考慮數據庫建立時的名稱重復問題。

目前最廣泛應用的 UUID,即是微軟的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的應用,則有 Linux ext2/ext3 檔案系統、LUKS 加密分割區、GNOME、KDE、Mac OS X 等等。

UUID的唯一缺陷在於生成的結果串會比較。 

 

二、UUID 組成

    UUID保證對在同一時空中的所有機器都是唯一的。通常平台會提供生成的API。按照開放軟件基金會(OSF)制定的標准計算,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。
UUID組成部分:
(1)當前日期和時間,UUID的第一個部分與時間有關,如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同。
(2)時鍾序列。
(3)全局唯一的IEEE機器識別號,如果有網卡,從網卡MAC地址獲得,沒有網卡以其他方式獲得。


在ColdFusion中可以用CreateUUID()函數很簡單地生成UUID,
其格式為:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每個 x 是 0-9 或 a-f 范圍內的一個十六進制的數字。

而標准的UUID格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12);

 

三、java使用UUID

java.util.UUID 類表示一個不變的通用唯一標識符(UUID)。以下是有關UUID的要點:

  • 一個UUID表示一個128位的值。

  • 它是用於創建隨機文件名,在Web應用程序的會話ID,事務ID等。

  • 還有UUID四種不同的基本類型:基於時間,DCE安全性,基於名稱,並隨機生成的UUID。

 

以下是java.util.UUID類的聲明:

public final class UUID
   extends Object
      implements Serializable, Comparable<UUID>

 

UUID的使用:

//生成的id 752d231c-e5a3-871c-65d4-142dfa562cb4中間含有橫杠,用來生成數據庫的主鍵id是很實用的。
UUID uuid  =  UUID.randomUUID();
String id=uuid.toString();
id=id.replace("-", "");//替換掉中間的那個橫杠  

 

方法摘要
 int clockSequence()
          與此 UUID 相關聯的時鍾序列值。
 int compareTo(UUID val)
          將此 UUID 與指定的 UUID 比較。
 boolean equals(Object obj)
          將此對象與指定對象比較。
static UUID fromString(String name)
          根據 toString() 方法中描述的字符串標准表示形式創建 UUID
 long getLeastSignificantBits()
          返回此 UUID 的 128 位值中的最低有效 64 位。
 long getMostSignificantBits()
          返回此 UUID 的 128 位值中的最高有效 64 位。
 int hashCode()
          返回此 UUID 的哈希碼。
static UUID nameUUIDFromBytes(byte[] name)
          根據指定的字節數組獲取類型 3(基於名稱的)UUID 的靜態工廠。
 long node()
          與此 UUID 相關的節點值。
static UUID randomUUID()
          獲取類型 4(偽隨機生成的)UUID 的靜態工廠。
 long timestamp()
          與此 UUID 相關聯的時間戳值。
 String toString()
          返回表示此 UUIDString 對象。
 int variant()
          與此 UUID 相關聯的變體號。
 int version()
          與此 UUID 相關聯的版本號。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM