生成结果

0 个 UUID

点击"生成 UUID"按钮开始生成

UUID 版本说明

UUID v1

基于时间戳和MAC地址生成,包含时间信息,可能泄露MAC地址。

UUID v3

基于命名空间和名称使用MD5散列生成,相同输入产生相同UUID。

UUID v4

完全随机生成,最常用的版本,提供良好的唯一性保证。

UUID v5

基于命名空间和名称使用SHA-1散列生成,相同输入产生相同UUID。

关于 UUID

UUID (Universally Unique Identifier,通用唯一标识符) 是一种标准化的标识符格式,用于在分布式系统中唯一标识信息。UUID 由 32 个十六进制数字组成,以连字符分隔为五组:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

UUID 版本详解

UUID v1 - 基于时间戳

UUID v3 - 基于名称的MD5散列

UUID v4 - 随机生成

UUID v5 - 基于名称的SHA-1散列

常见使用场景

  1. 数据库主键: 替代自增ID,避免分布式环境下的冲突
  2. API请求追踪: 为每个请求分配唯一标识符
  3. 文件命名: 确保文件名的唯一性
  4. 会话标识: Web应用中的会话ID
  5. 消息队列: 消息的唯一标识符
  6. 微服务: 服务间调用的请求ID

UUID 格式说明

标准UUID格式:xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

编程语言中的UUID

JavaScript

// 生成UUID v4
function generateUUID() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        var r = Math.random() * 16 | 0;
        var v = c == 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
    });
}

Python

import uuid

# UUID v4 (随机)
uuid4 = uuid.uuid4()

# UUID v1 (时间戳)
uuid1 = uuid.uuid1()

# UUID v3 (MD5)
namespace = uuid.NAMESPACE_DNS
uuid3 = uuid.uuid3(namespace, 'example.com')

# UUID v5 (SHA-1)
uuid5 = uuid.uuid5(namespace, 'example.com')

Java

import java.util.UUID;

// 生成随机UUID
UUID uuid = UUID.randomUUID();

// 从字符串创建UUID
UUID fromString = UUID.fromString("550e8400-e29b-41d4-a716-446655440000");

最佳实践

  1. 选择合适的版本:

    • 一般情况下使用 UUID v4
    • 需要时间排序时使用 UUID v1
    • 需要确定性生成时使用 UUID v3/v5
  2. 存储优化:

    • 数据库中可以存储为BINARY(16)节省空间
    • 建立索引时考虑UUID的随机性对性能的影响
  3. 安全考虑:

    • UUID v1 可能泄露MAC地址
    • 不要依赖UUID的不可预测性作为安全措施
  4. 性能考虑:

    • UUID作为主键可能影响数据库性能
    • 考虑使用有序UUID或其他策略