首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 使用 UUID 生成全域唯一識別碼 (GUID) 實戰

     編輯:Java 相關知識

GUID 簡介

GUID (Globally Unique Identifier) 為 128 位整數,通常以 16 進制字串表示(如 550e8400-e29b-41d4-a716-446655440000)。演算法結合網卡 MAC、時間戳、隨機數,理論上極難重複。

Java 內建實現:java.util.UUID

JDK 1.5 引入 java.util.UUID,提供基於隨機數的 randomUUID() 方法,符合 RFC 4122 第 4 版型(隨機型)。

完整代碼範例

package com.cn.str;

import java.util.UUID;

public class CreateGUID {
    public static final String generateGUID() {
        UUID uuid = UUID.randomUUID();
        return uuid.toString(); // 標準 36 字元格式:8-4-4-4-12
    }

    public static void main(String[] args) {
        System.out.println(generateGUID());
        // 輸出範例:a1b2c3d4-e5f6-7890-abcd-ef1234567890
    }
}

進階用法

獲取不含連字號的 32 位字串

String guid = UUID.randomUUID().toString().replace("-", "");

基於名稱空間的 UUID (UUID v3/v5)

JDK 內建不支援,需使用第三方庫(如 uuid-creator)或自行實現 MD5/SHA-1 雜湊。

效能考量

  • randomUUID() 內部使用 SecureRandom,高併發下可能成為瓶頸。
  • 高吞吐場景可考慮 ThreadLocalRandom 結合時間戳自行組裝,或使用 Snowflake 演算法。

常見應用場景

  • 資料庫主鍵(分庫分表無衝突)
  • 分散式系統追蹤 ID
  • 臨時檔案命名、Session ID、訂單號

注意事項

  1. UUID 非遞增,作為資料庫主鍵可能導致 B+ 樹分裂,影響寫入效能;可考慮有序 UUID (UUID v7) 或 Snowflake ID。
  2. 僅依賴 randomUUID() 在極高併發下理論上仍有極微機率碰撞,極度敏感場景可加入機器識別碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved