crazycloudcc@blog:~/tools/uuid — zsh — 80×24
--:--:--···
crazycloudcc@blog:~/tools/uuid$ pwd
/home/crazycloudcc/blog/tools/uuid
> cd ./tools/uuid

~/tools / uuid

UUID v4 生成

批量生成 UUID v4(crypto.getRandomValues)。

本地计算 · 无账号

这是什么

UUID 用来给数据库行、请求或客户端实体分配几乎不冲突的标识。本页批量生成 UUID v4,随机性来自 crypto.getRandomValues,适合本地开发时快速取测试 ID。生成不经过服务器。每次点击都是新的随机抽样,页面不会把结果写入 cookie 或本地长期存储。

原理

RFC 4122 的 UUID 是 128 bit。v4 变体把版本半字节写成 4,并把 variant 位写成 RFC 规定的模式,其余位来自密码学安全随机数。文本形式为 8-4-4-4-12 的十六进制,中间用连字符。碰撞空间极大,但仍应在数据库层保留唯一约束。v4 不编码时间顺序;若需要可排序 ID,应考虑 ULID 或 UUID v7,那些不在本页范围。阅读一个 UUID 时,先看第 13 个字符是否为 4,能快速判断它是不是声称的 v4;再检查 variant 半字节是否落在规定集合。这比「看起来像一串乱码」更有排错价值。

什么时候用

写种子数据、手工构造 JSON 示例、或在没有后端的原型里需要占位主键时最省事。生产环境的 ID 策略仍应遵循业务规范,不要假设「前端生成就一定全局唯一且永不出错」。在讲解分布式系统或本地演示数据时,用本页一次生成多个互异 ID,比手打更容易避免复制粘贴成同一主键。

示例

  • v4 形态
    输入:生成 1 个
    输出:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx(版本位为 4)
  • 批量互异
    输入:生成 5 个
    输出:每行一个 UUID,彼此不同

常见错误

  • 不要把 UUID 当保密令牌:它可能出现在日志与 URL 里。
  • 复制时避免带上隐藏空格或重复行。
  • 把 v4 当排序键会导致插入局部性差;需要时间序请换方案。

常见问题

会不会撞车?
正常使用下概率可忽略;关键系统仍应在存储层做唯一约束。
支持 v1 / v7 吗?
本页专注 v4。时间有序 ID 请用相应库或服务端生成。
生成记录会保存吗?
不会上传。离开页面即消失,除非你自己复制走。

C++ 里用随机数拼 v4(示意)

#include <random>
#include <cstdio>
// 示意:用 random_device 填 16 字节后写入版本/变体位,再按 8-4-4-4-12 打印
// 生产请用成熟库;可在 /playground 打印几个样例与本页对照形态

重点检查第 13 个字符是否为 4,以及 variant 位是否合法。本页可当可视化对照。

在 Playground 打开 · 数据只在本地处理:随机数在浏览器内生成。刷新页面后列表清空,本站不会保留你点过「生成」的历史记录,也不会把 UUID 写入分析事件、服务器日志或剪贴板同步服务。

branch: mainposts: 12encoding: utf-8