[{"data":1,"prerenderedAt":436},["ShallowReactive",2],{"blog-post-zh-what-is-uuid-and-how-to-generate":3},{"id":4,"title":5,"author":6,"body":7,"description":421,"draft":422,"extension":423,"lang":424,"meta":425,"navigation":331,"path":426,"pubDate":427,"relatedTool":428,"seo":429,"stem":430,"tags":431,"__hash__":435},"blog\u002Fblog\u002Fzh-what-is-uuid-and-how-to-generate.mdx","什么是 UUID 以及如何在线生成","ujiffy team",{"type":8,"value":9,"toc":409},"minimark",[10,19,24,39,42,53,57,60,146,151,158,162,168,172,175,179,182,188,194,200,206,212,216,219,241,248,252,255,281,284,287,388,391,394,397,405],[11,12,13,14,18],"p",{},"如果你做过任何数据库、API 或分布式系统相关的开发，你几乎肯定遇到过 UUID。它们长这样：",[15,16,17],"code",{},"550e8400-e29b-41d4-a716-446655440000","。看起来随机，格式却异常固定，而且无处不在。但它们究竟是什么？为什么有用？又该用哪个版本？我们来一一拆解。",[20,21,23],"h2",{"id":22},"什么是-uuid","什么是 UUID？",[11,25,26,30,31,34,35,38],{},[27,28,29],"strong",{},"UUID"," 全称 ",[27,32,33],{},"Universally Unique Identifier（通用唯一标识符）","，是一种 128 位的标签，用于在计算机系统中唯一标识信息。格式始终相同：32 个十六进制字符，用连字符分为五组，格式为 ",[15,36,37],{},"8-4-4-4-12","。",[11,40,41],{},"\"通用唯一\"是它最核心的价值。UUID 的设计保证：任意两个独立生成的 UUID 几乎肯定是不同的——即使在不同机器上同时生成，也无需任何中心协调。这使得 UUID 在分布式系统中极为有用，因为你不需要依赖一个中心节点来分配 ID。",[11,43,44,45,52],{},"UUID 由 ",[46,47,51],"a",{"href":48,"rel":49},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc4122",[50],"nofollow","RFC 4122"," 标准化，几乎所有主流编程语言和数据库系统都原生支持。",[20,54,56],{"id":55},"uuid-各版本详解","UUID 各版本详解",[11,58,59],{},"UUID 有多个版本，生成方式各不相同，适用场景也有所区别。最常用的三个版本是 v1、v4 和 v5。",[61,62,63,85],"table",{},[64,65,66],"thead",{},[67,68,69,73,76,79,82],"tr",{},[70,71,72],"th",{},"版本",[70,74,75],{},"生成方式",[70,77,78],{},"唯一性来源",[70,80,81],{},"可预测？",[70,83,84],{},"典型使用场景",[86,87,88,108,127],"tbody",{},[67,89,90,96,99,102,105],{},[91,92,93],"td",{},[27,94,95],{},"v1",[91,97,98],{},"时间戳 + MAC 地址",[91,100,101],{},"时间 + 硬件",[91,103,104],{},"部分可预测",[91,106,107],{},"事件日志、审计追踪",[67,109,110,115,118,121,124],{},[91,111,112],{},[27,113,114],{},"v4",[91,116,117],{},"随机",[91,119,120],{},"纯随机",[91,122,123],{},"否",[91,125,126],{},"通用场景、数据库主键",[67,128,129,134,137,140,143],{},[91,130,131],{},[27,132,133],{},"v5",[91,135,136],{},"命名空间 + 名称（SHA-1）",[91,138,139],{},"确定性",[91,141,142],{},"是（相同输入→相同 UUID）",[91,144,145],{},"为已知资源生成一致的 ID",[147,148,150],"h3",{"id":149},"uuid-v1-基于时间戳","UUID v1 —— 基于时间戳",[11,152,153,154,157],{},"v1 UUID 编码了当前时间戳和生成机器的 MAC 地址。它具备时间顺序性，便于排序。但缺点是",[27,155,156],{},"会泄露信息","——通过分析 v1 UUID，可以大致推断出它是何时、在哪里生成的。对于隐私敏感的场景，这是个需要注意的问题。",[147,159,161],{"id":160},"uuid-v4-随机生成","UUID v4 —— 随机生成",[11,163,164,165],{},"v4 是目前使用最广泛的版本。它由 122 位随机数据生成（另外 6 位用于编码版本和变体）。没有时间戳，没有机器信息，只有随机数据。两个 v4 UUID 发生碰撞的概率低到实际上可以忽略不计。",[27,166,167],{},"如果不确定用哪个，就用 v4。",[147,169,171],{"id":170},"uuid-v5-基于名称sha-1","UUID v5 —— 基于名称（SHA-1）",[11,173,174],{},"v5 通过对命名空间 UUID 和名称字符串进行 SHA-1 哈希来生成 UUID。相同的命名空间 + 名称始终产生相同的 UUID。当你需要为某个已知资源生成一致的、可复现的标识符时，这非常有用——例如，始终为同一个 URL 或邮箱地址生成同一个 UUID。注意：v3 做同样的事，但使用 MD5（现在较少推荐）。",[20,176,178],{"id":177},"uuid-的常见使用场景","UUID 的常见使用场景",[11,180,181],{},"UUID 用途非常广泛，以下是开发者最常使用它的场景：",[11,183,184,187],{},[27,185,186],{},"数据库主键","\n许多应用使用 UUID 而非自增整数作为主键。优点在于：多台服务器或客户端可以独立创建记录而不产生 ID 冲突，同时也不会通过 ID 暴露数据库中的记录数量。",[11,189,190,193],{},[27,191,192],{},"文件命名与存储","\n将用户上传的文件存入对象存储（S3、R2 等）时，使用 UUID 作为文件名可以避免冲突，同时不向存储层暴露原始文件名。",[11,195,196,199],{},[27,197,198],{},"Session ID 与令牌","\nUUID 是很好的 Session 标识符——足够长以至于无法被猜测，又足够简洁以便使用。大多数 Web 框架开箱即用地生成基于 UUID 的 Session 令牌。",[11,201,202,205],{},[27,203,204],{},"分布式事件追踪","\n在事件驱动或微服务架构中，UUID 被用作关联 ID，在日志和监控系统中追踪一个请求跨多个服务的完整链路。",[11,207,208,211],{},[27,209,210],{},"客户端 ID 生成","\n在离线优先或移动端应用中，记录可以在设备本地以 UUID 为主键创建，再同步到服务器。无需为了获取 ID 而额外往返服务器。",[20,213,215],{"id":214},"v4-vs-v1-vs-v5-该用哪个","v4 vs v1 vs v5 —— 该用哪个？",[11,217,218],{},"大多数场景的简短答案：",[220,221,222,229,235],"ul",{},[223,224,225,228],"li",{},[27,226,227],{},"用 v4","：如果你只需要一个唯一的、不透明的 ID，且不需要它可复现。",[223,230,231,234],{},[27,232,233],{},"用 v1","：如果你需要按时间排序的 ID，且不在意隐私问题。",[223,236,237,240],{},[27,238,239],{},"用 v5","：如果你需要从已知的名称或资源中推导出一个一致的 ID。",[11,242,243,244,247],{},"对于新项目，",[27,245,246],{},"v4 是安全的默认选择","，除非你有特定原因需要选择其他版本。",[20,249,251],{"id":250},"如何在线生成-uuid","如何在线生成 UUID",[11,253,254],{},"如果你需要一个用于测试、开发或配置的 UUID，不需要写任何代码。ujiffy 的免费 UUID 生成器让你可以：",[220,256,257,264,271,274],{},[223,258,259,260,263],{},"一次生成",[27,261,262],{},"一个或多个"," UUID",[223,265,266,267,270],{},"选择 ",[27,268,269],{},"v1、v4 或 v5"," 版本",[223,272,273],{},"即时复制到剪贴板",[223,275,276,277,280],{},"所有操作都在",[27,278,279],{},"浏览器本地","运行——不经过服务器",[11,282,283],{},"无需注册，无频率限制，无追踪。",[11,285,286],{},"如果你需要在代码中生成 UUID，以下是快速示例：",[288,289,294],"pre",{"className":290,"code":291,"language":292,"meta":293,"style":293},"language-js shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F JavaScript (浏览器或 Node 14.17+)\ncrypto.randomUUID() \u002F\u002F 生成 v4 UUID\n\n\u002F\u002F Python\nimport uuid\nstr(uuid.uuid4())\n\n\u002F\u002F Go\nimport \"github.com\u002Fgoogle\u002Fuuid\"\nuuid.New().String()\n","js","",[15,295,296,305,326,333,339,349,355,360,366,382],{"__ignoreMap":293},[297,298,301],"span",{"class":299,"line":300},"line",1,[297,302,304],{"class":303},"sHwdD","\u002F\u002F JavaScript (浏览器或 Node 14.17+)\n",[297,306,308,312,316,320,323],{"class":299,"line":307},2,[297,309,311],{"class":310},"sTEyZ","crypto",[297,313,315],{"class":314},"sMK4o",".",[297,317,319],{"class":318},"s2Zo4","randomUUID",[297,321,322],{"class":310},"() ",[297,324,325],{"class":303},"\u002F\u002F 生成 v4 UUID\n",[297,327,329],{"class":299,"line":328},3,[297,330,332],{"emptyLinePlaceholder":331},true,"\n",[297,334,336],{"class":299,"line":335},4,[297,337,338],{"class":303},"\u002F\u002F Python\n",[297,340,342,346],{"class":299,"line":341},5,[297,343,345],{"class":344},"s7zQu","import",[297,347,348],{"class":310}," uuid\n",[297,350,352],{"class":299,"line":351},6,[297,353,354],{"class":310},"str(uuid.uuid4())\n",[297,356,358],{"class":299,"line":357},7,[297,359,332],{"emptyLinePlaceholder":331},[297,361,363],{"class":299,"line":362},8,[297,364,365],{"class":303},"\u002F\u002F Go\n",[297,367,369,372,375,379],{"class":299,"line":368},9,[297,370,371],{"class":310},"import ",[297,373,374],{"class":314},"\"",[297,376,378],{"class":377},"sfazB","github.com\u002Fgoogle\u002Fuuid",[297,380,381],{"class":314},"\"\n",[297,383,385],{"class":299,"line":384},10,[297,386,387],{"class":310},"uuid.New().String()\n",[11,389,390],{},"但如果你现在就需要一个 UUID，用生成器会更快。",[20,392,393],{"id":393},"小结",[11,395,396],{},"UUID 是软件开发中简单而强大的基础组件。它优雅地解决了\"如何在不协调的情况下生成唯一 ID\"这个问题。对于大多数应用，v4 已经足够。如果你在构建需要时间排序的日志或已知资源的确定性 ID，v1 或 v5 也各有其适用之处。",[11,398,399],{},[46,400,402],{"href":401},"\u002Fzh\u002Ftools\u002Fuuid-generator",[27,403,404],{},"立即使用 ujiffy UUID 生成器 →",[406,407,408],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":293,"searchDepth":307,"depth":307,"links":410},[411,412,417,418,419,420],{"id":22,"depth":307,"text":23},{"id":55,"depth":307,"text":56,"children":413},[414,415,416],{"id":149,"depth":328,"text":150},{"id":160,"depth":328,"text":161},{"id":170,"depth":328,"text":171},{"id":177,"depth":307,"text":178},{"id":214,"depth":307,"text":215},{"id":250,"depth":307,"text":251},{"id":393,"depth":307,"text":393},"了解 UUID 是什么、v1\u002Fv4\u002Fv5 的区别，以及如何免费在浏览器中即时生成无冲突的唯一 ID。",false,"mdx","zh",{},"\u002Fblog\u002Fzh-what-is-uuid-and-how-to-generate","2025-05-15","uuid-generator",{"title":5,"description":421},"blog\u002Fzh-what-is-uuid-and-how-to-generate",[29,432,433,434],"唯一标识符","开发者工具","UUID生成器","vRry5NsedOwVXBBlrikSFAq1pz5ZA30u8An3YlilpIk",1778831413193]