GUID(Globally Unique Identifier,全域唯一識別碼)是一個 128 位元的數值,通常以 32 位十六進位字串形式呈現(含連字號分隔)。其生成演算法結合了機器網卡 MAC 位址、當前時間戳記以及隨機數,理論上單機每秒產生一千萬個 GUID 也能在 3,240 年內不重複。Java 從 JDK 1.5 起在 java.util 套件提供了 UUID 類,讓開發者能輕鬆生成標準符合 RFC 4122 規範的唯一識別碼。
java.util.UUID 類的關鍵靜態方法:
randomUUID():基於隨機數生成 Type 4(亂數型)UUID,最常用nameUUIDFromBytes(byte[] name):基於名稱空間與名稱生成 Type 3/5(MD5/SHA-1 雜湊)UUIDfromString(String uuid):將標準格式字串解析為 UUID 物件package com.cn.str;
import java.util.UUID;
/**
* GUID 生成工具類
* @author Administrator
*/
public class CreateGUID {
/**
* 生成標準格式 GUID 字串
* @return 36 字元長度的 UUID 字串(含 4 個連字號)
*/
public static final String GenerateGUID() {
UUID uuid = UUID.randomUUID();
return uuid.toString();
}
public static void main(String[] args) {
// 測試輸出範例:550e8400-e29b-41d4-a716-446655440000
System.out.println(GenerateGUID());
}
}
標準 UUID 字串長度為 36 字元,結構如下:
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
│ │ │ │ │
│ │ │ │ └─ 節點識別碼(48 位元,通常為 MAC 位址或隨機數)
│ │ │ └─ 時鐘序列(14 位元)
│ │ └─ 版本號(4 位元):4 表示隨機生成
│ └─ 時間戳記中間 16 位元
└─ 時間戳記低 32 位元
版本號(第 13 位字元)常見值:
randomUUID() 使用)UUID.randomUUID() 內部使用 SecureRandom,高併發下可能成為瓶頸。若對效能極度敏感,可考慮:
Java 內建的 UUID.randomUUID() 是生成 GUID 最簡單、標準且足夠絕大多數場景的方案。理解其格式結構與版本差異,有助於在特定業務場景(如需排序、需可逆解析)選擇更合適的 ID 生成策略。