什么是 UUID?

UUID(通用唯一标识符)是一个 128 位的标识符,保证在所有空间和时间上都是唯一的。UUID 表示为 32 个十六进制数字,以 8-4-4-4-12 的格式分成五组,用连字符分隔。

快速了解

全称通用唯一标识符
创建时间1980 年代(2005 年在 RFC 4122 中标准化)
规范文档官方规范

工作原理

UUID 使用结合各种唯一性来源(如时间戳、随机数和硬件地址)的算法生成。有几个版本:版本 1 使用时间戳和 MAC 地址,版本 4 使用随机数(最常用),版本 5 使用命名空间和名称进行 SHA-1 哈希。生成重复 UUID 的概率极低,在实际应用中被认为是不可能的。UUID 广泛用于需要唯一标识符但无需中央协调的分布式系统中。

主要特点

  • 128 位长度,提供 2^128 种可能的值
  • 标准化格式:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  • 多个版本适用于不同用例(v1、v4、v5 等)
  • 可以在没有中央权威的情况下生成
  • 碰撞概率在实际应用中可以忽略不计
  • 不区分大小写(大写和小写等效)

常见用途

  1. 分布式系统中的数据库主键
  2. Web 应用中的会话标识符
  3. 文件和资源命名
  4. 微服务中的事务 ID
  5. 设备标识

示例

loading...
Loading code...

常见问题

UUID 和 GUID 有什么区别?

UUID(通用唯一标识符)和 GUID(全局唯一标识符)本质上是同一个东西 - 都是具有相同格式的 128 位标识符。GUID 是 Microsoft 在 Windows 和 .NET 中使用的术语,而 UUID 是在大多数其他上下文和官方 RFC 规范中使用的术语。它们完全兼容且可互换。

应该使用哪个 UUID 版本?

UUID v4(随机)是最常用的,由于其简单性和强唯一性,推荐用于一般用途。UUID v7(时间排序)非常适合数据库主键,因为它保持时间顺序并提高索引性能。UUID v1(时间戳 + MAC 地址)会暴露机器信息,所以现在不太常用。UUID v5 用于从命名空间和名称确定性生成。

UUID 碰撞真的会发生吗?

虽然理论上可能,但 UUID v4 碰撞实际上是不可能的。有 122 个随机位,你需要生成约 2.71 百亿亿个 UUID 才有 50% 的碰撞概率。换个角度看,每秒生成 10 亿个 UUID 需要约 85 年才能达到这个概率。在所有实际用途中,UUID 可以被认为是唯一的。

如何在不同编程语言中生成 UUID?

在 JavaScript 中:crypto.randomUUID() 或使用「uuid」npm 包。在 Python 中:import uuid; uuid.uuid4()。在 Java 中:UUID.randomUUID()。在 PHP 中:使用 Ramsey\Uuid\Uuid 或简单需求用 uniqid()。在 C# 中:Guid.NewGuid()。在 Go 中:使用 google/uuid 包。大多数现代语言都有内置或标准库支持 UUID 生成。

数据库主键应该使用 UUID 还是自增 ID?

两者都有权衡。UUID 更适合分布式系统(无需协调)、数据合并和安全性(ID 不可猜测)。自增 ID 空间效率更高、人类可读,且在 B 树索引中性能更好。UUID v7 通过时间排序提供了中间方案,具有更好的索引性能。对于分布式系统考虑使用 UUID,对于单数据库应用程序使用自增 ID。

相关工具

相关术语

GUID

GUID(全局唯一标识符)是微软对 UUID 标准的实现,是一个 128 位的标识符,用于在计算机系统中唯一标识信息。GUID 和 UUID 本质上是同一事物,只是名称不同。

NanoID

NanoID 是一个用于 JavaScript 的小巧、安全、URL 友好的唯一字符串 ID 生成器。它生成比 UUID 更短的紧凑标识符,同时保持类似的碰撞抵抗能力。

AI Code Review

AI Code Review 是一种将人工智能(特别是大型语言模型,如 GPT-4, Claude 3.5 Sonnet)集成到软件开发生命周期(SDLC)中的自动化代码审查技术。当开发者提交代码变更(如 GitHub Pull Request 或 GitLab Merge Request)时,AI Agent 会作为一名虚拟的高级工程师,自动读取变更的 Diff 差异,结合项目的上下文、编码规范和最佳实践,快速指出代码中存在的逻辑漏洞、安全隐患、性能瓶颈以及风格问题,并直接在代码行上发表评论甚至生成修复代码。

Jailbreak (越狱)

Jailbreak (越狱) 在人工智能领域指的是一种高级对抗性提示(Adversarial Prompting)技术。攻击者通过精心设计的、通常极具创造性的语言输入,绕过基础大语言模型(如 GPT-4, Claude, Llama)内置的安全护栏(Guardrails)和人类偏好对齐(Alignment)。一旦越狱成功,模型将无视其被训练时定下的道德和安全准则,生成被严令禁止的内容,如编写恶意软件、制造炸弹的配方、或是发表仇恨言论。

相关文章