Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
关于 UUID 您需要了解的一切_创想鸟

关于 UUID 您需要了解的一切

关于 uuid 您需要了解的一切

通用唯一标识符 (uuid) 是计算机系统中用于唯一标识信息的 128 位标签。 uuid 被设计为在空间和时间上都是唯一的,允许它们在没有中央权威的情况下独立生成,从而最大限度地减少重复的风险。

uuid 有多种用途,包括:

识别数据库中的记录。标记分布式系统中的对象。在唯一性至关重要的应用程序中充当主键。

现实世界的用例

数据库:关系数据库中使用uuid作为主键,保证记录的唯一标识。微服务:通过为请求和资源提供唯一标识符来促进服务通信。物联网设备:唯一识别网络中的设备,确保可以聚合多个来源的数据而不会发生冲突。

使用uuid的优点和缺点

优点:

全局唯一性:uuid 极不可能发生冲突,这使得它们适合多个节点独立生成标识符的分布式系统。不需要中央权威:它们可以在没有协调的情况下生成,这简化了分布式环境中的操作。可扩展性:它们在需要跨多个服务器或服务进行扩展的系统中运行良好。

缺点:

存储大小:与传统整数 id(通常为 32 位)相比,uuid 消耗更多空间(128 位),这可能会导致存储成本增加。性能问题:由于 uuid 的随机性和大小,索引 uuid 会降低数据库性能,导致查询时间比顺序 id 慢。用户不友好:uuid 在用户界面中呈现时不容易记住或用户友好。

标准

uuid 的标准表示由 32 个十六进制字符组成,分为五组,用连字符分隔,遵循格式 8-4-4-4-12,总共 36 个字符(32 个字母数字加 4 个连字符) .

uuid 格式可以可视化如下:

xxxxxxxx-xxxx-mxxx-nxxx-xxxxxxxxxxxx

地点:

m表示uuid版本。n 表示变体,这有助于解释 uuid 的布局。

uuid 的组成部分

timelow:4 个字节(8 个十六进制字符),表示时间戳的低字段。timemid:2 个字节(4 个十六进制字符),表示时间戳的中间字段。timehighandversion:2 个字节(4 个十六进制字符),包含版本号和时间戳的高位字段。clocksequence:2 个字节(4 个十六进制字符),用于帮助避免冲突,特别是在快速连续生成多个 uuid 或调整系统时钟时。节点:6个字节(12个十六进制字符),通常表示生成节点的mac地址。

uuid 的类型

版本 1:基于时间的 uuid,使用当前时间戳和生成节点的 mac 地址的组合。此版本确保跨空间和时间的唯一性。

版本 2:与版本 1 类似,但包含本地​​域标识符;然而,由于其局限性,它不太常用。

版本 3:使用命名空间标识符和名称的 md5 哈希生成的基于名称的 uuid。

版本 4:随机生成的 uuid,提供高度随机性和唯一性,仅保留少量位用于版本控制。

版本 5:与版本 3 类似,但使用 sha-1 进行哈希处理,使其比版本 3 更安全。

变体

uuid 中的变体字段决定其布局和解释。最常见的变体包括:

变体 0:保留用于 ncs 向后兼容性。变体 1:大多数 uuid 使用的标准布局。变体 2:用于 dce 安全 uuid,不太常见。变体 3:保留供将来定义。

例子

对于 版本 4,uuid 可能如下所示:

550e8400-e29b-41d4-a716-446655440000

这里:

41d4 表示这是版本 4。a7 代表变体,在本例中为常见的“leach-salz”变体。

uuid 是如何计算的

版本 1(基于时间):

时间戳通常是自 1582 年 10 月 15 日(公历改革日期)以来 100 纳秒间隔的数量。节点是生成uuid的机器的mac地址。时钟序列有助于确保时钟时间发生变化时的唯一性(例如,由于系统重新启动)。

版本 3 和版本 5(基于名称):

命名空间(如 dns 域)与名称(如文件路径或 url)组合并进行哈希处理。然后将哈希值(版本 3 的 md5,版本 5 的 sha-1)构造为 uuid 格式,确保正确设置版本和变体字段。

版本 4(基于随机):

为 uuid 的 122 位生成随机数或伪随机数。版本和变体字段进行相应设置,确保符合 uuid 标准。

uuidv4 计算示例

第 1 步:生成 128 个随机位

假设我们生成以下 128 位随机值:

11001100110101101101010101111010101110110110111001011101010110110101111011010011011110100100101111001011

第 2 步:应用 uuidv4 版本和变体

版本:将第 12-15 位(第 4 个字符)替换为 0100(对于 uuid 版本 4)。
原来:1100 变成 0100 → 更新了这个位置的值。

变体:将第 9 个字节的第 6-7 位替换为 10(对于 rfc 4122 变体)。
原来:11 变成 10 → 更新了该位置的值。

第3步:格式化为十六进制

将 128 位二进制转换为 5 个十六进制组:

32位组:11001100110101101101010101111010 → ccda55ba16位组:1011101101101110 → b76e16 位组:0100010101000101 → 4545(版本 4 为 0100)16 位组:1010110111110010 → adf2(其中 10 为变体)48位组:11010011011110100100101111001011 → d39d25cb

第 4 步:合并组

最终的 uuid 如下所示:
ccda55ba-b76e-4545-adf2-d39d25cb

以上就是关于 UUID 您需要了解的一切的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1491948.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
使用 Nodejs 构建实时仪表板
上一篇 2025年12月19日 14:24:15
Vuejs 中计算属性的基础知识:组合 API
下一篇 2025年12月19日 14:24:36

相关推荐

  • win11复制大文件时速度突然掉到0怎么办_win11大文件复制速度突然掉0解决方法

    传输速度降为0可尝试Robocopy命令、修复磁盘错误、更新驱动、关闭占用程序或格式化为NTFS。首先使用Robocopy无缓冲复制避免卡顿;其次通过chkdsk扫描修复文件系统错误;接着在设备管理器中更新USB与存储控制器驱动;然后通过任务管理器关闭高磁盘占用的后台进程;最后若目标盘为FAT32/…

    2026年9月21日
    100
  • Online Config VS Code

    Online Config VS CodeOnline Config VS CodeOnline Config VS CodeOnline Config VS Code

    run vs view Install Code Server Update Code Server Database:It is recommended to create a Docker container for the database. Code Language: JavaScript…

    2026年9月21日 • 用户投稿
    000
  • Java Collections.sort与Collections.reverse的使用区别

    Collections.sort用于排序,基于元素值比较,结果有序,默认升序,可自定义规则;2. Collections.reverse仅反转列表顺序,不比较元素,时间复杂度O(n);3. 两者功能不同,不可替代,按需选择使用。 Java 中 Collections.sort 和 Collectio…

    2026年9月21日
    100
  • 一键PHP环境怎么解决网页空白问题_空白页故障诊断

    答案是开启错误提示并检查文件路径与代码逻辑。先启用PHP错误显示,确认配置正确;再核对网站根目录和入口文件是否存在;接着排查代码致命错误及输出缓冲问题,确保无BOM头且session前无输出。 遇到一键PHP环境安装后出现网页空白或空白页问题,通常不是环境完全失效,而是某些关键环节出了错。这类问题在…

    2026年9月21日
    000
  • MediBangPaint中AI生成图片如何导出?快速保存图像的详细方法

    答案:导出AI生成图片应优先选择PNG格式以保留细节和色彩。通过“文件”菜单中的“导出(单层)”功能,可将图像保存为PNG或JPG等格式,其中PNG为无损压缩,适合高质量输出;若需透明背景或后续编辑,更应选用PNG。清晰度不足常因原始分辨率低、过度放大或JPG压缩过度所致,建议导出时设置高质量(80…

    2026年9月21日
    200
  • 百度搜索app如何启用搜索关键词过滤_百度搜索app关键词过滤的设置技巧

    可通过减号语法排除关键词,如“健身教程 -广告”;用双引号实现精确匹配,如”瑜伽初学者教程”;结合site:指令限定范围,如Python入门教程 site:zhihu.com,提升搜索精准度。 如果您在使用百度搜索App时,希望减少不相关或不想要的搜索结果,可以通过设置关键词…

    2026年9月21日
    800
  • Bun 1.3 正式发布

    2025年10月10日,高性能 javascript 运行时 bun 发布了 1.3 版本。这是 bun 项目迄今为止最重大的版本更新,标志着 bun 从单纯的运行时工具演变为一个功能完备的全栈 javascript 开发平台。 从运行时到全栈平台的跨越 Bun 1.3 的核心突破在于将前端开发能力…

    2026年9月21日
    000
  • Java中多态的基本实现方法

    多态允许同一接口调用不同实现,通过继承与方法重写实现。1. 子类重写父类方法,如Animal的makeSound被Dog和Cat重写;2. 父类引用指向子类对象,运行时动态绑定,如Animal myPet = new Dog()调用Woof;3. 方法参数使用父类类型,提升代码复用,如playWit…

    2026年9月21日
    000
  • win10夜灯模式是灰色的打不开怎么办_win10夜灯模式无法启用解决方法

    首先重新安装显卡驱动,其次通过注册表修改修复功能状态,最后执行系统文件检查与修复,可解决夜灯模式开关灰色无法启用的问题。 如果您在尝试开启Windows 10的夜灯模式时,发现其开关呈现灰色且无法点击激活,这通常意味着系统底层服务或驱动程序存在问题,导致该功能被禁用。以下是几种有效的解决方法。 本文…

    2026年9月21日
    100
  • VSCode怎么设置字间距_VSCode编辑器字体调整教程

    调整VSCode的字间距,主要通过修改编辑器的设置来实现,可以让代码更易读,提升编码体验。核心在于修改 settings.json 文件。 在VSCode中设置字间距,其实是个挺个性化的需求。有的人喜欢紧凑一点,觉得省空间,有的人喜欢宽松一点,觉得眼睛舒服。VSCode提供了灵活的配置,可以满足不同…

    2026年9月21日
    100
  • MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构

    MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构MySQL字段注释快速补全方法_Sublime脚本自动生成标准文档结构

    要快速补全mysql字段注释,可通过sublime text编写python脚本实现自动化;1. 脚本获取表名,可手动输入或从当前sql文件解析;2. 通过subprocess调用mysql命令行获取show full columns信息;3. 解析输出内容,提取字段名和现有注释;4. 生成alte…

    2026年9月21日 • 用户投稿
    100
  • 抖音流量什么意思哪里看?抖音的流量是什么意思

    抖音作为其中的一员,吸引了大量用户。抖音流量也成为众多用户关注的焦点。抖音流量究竟是什么?如何获取抖音流量?本文将为您揭秘抖音流量的奥秘。 一、抖音流量的定义 抖音流量,指的是用户在抖音平台上观看、点赞、评论、转发等行为所产生的一种数据。简单来说,就是用户在抖音上的活跃度。抖音流量越高,说明用户对内…

    2026年9月21日
    500
  • 使用Workerman构建高性能的游戏排行榜服务

    使用Workerman构建高性能的游戏排行榜服务 在当今的游戏世界中,游戏排行榜服务是非常重要的功能之一。游戏排行榜不仅能够给玩家提供一个公平竞争的平台,还能够增加游戏的可玩性和互动性。然而,构建一个高性能的游戏排行榜服务并非易事。本文将介绍如何使用Workerman这个高性能PHP框架来构建一个游…

    2026年9月21日
    000
  • iPhone13pro系列如何开启自动微距

    要使用iPhone 13 Pro系列的自动微距功能,首先需确保设备系统已升级至最新版本。系统更新通常包含功能优化与性能提升,有助于更稳定地支持自动微距拍摄。 开启该功能非常简单,无需手动设置。当你打开相机应用并靠近拍摄对象时,设备会智能识别距离,并自动切换至微距模式。此时,屏幕上将显示一朵小花图标,…

    2026年9月21日
    000
  • 更偏向移动端?Steam新版商店页引国外玩家批评

    今日,v社正式上线全新版本的steam商店界面,标志着此前长期测试的新设计终于全面启用。新版首页在视觉上更加开阔、简洁,将原先位于左侧的游戏分类菜单与顶部的蓝色导航栏整合为统一的顶部导航条,支持用户直接浏览竞速、潜行等具体游戏类型,并结合用户偏好实现个性化内容推荐。整体布局更贴近移动端操作逻辑,页面…

    2026年9月21日
    000
  • safari浏览器如何设置链接在新窗口而不是新标签页打开_safari浏览器链接新窗口打开设置

    通过快捷键或第三方扩展可实现Safari中链接在新窗口打开:1. 按住Command键点击链接可临时在新窗口打开;2. 使用AppleScript脚本通过“自动操作”创建快速操作以新建Safari窗口;3. 网站自身代码如window.open()会强制新窗口打开;4. 安装可信扩展如“Link i…

    2026年9月21日
    000
  • win11玩游戏时输入法候选框总是在屏幕中间怎么办_win11游戏输入法候选框位置修复方法

    首先关闭全屏应用时的输入法显示,进入设置→时间和语言→输入→高级键盘设置,开启“使用桌面语言栏”并勾选“在使用全屏应用时自动隐藏语言栏”;其次启用兼容性模式,在输入法设置中打开“使用以前版本的微软拼音输入法”;若问题仍存在,可手动拖动候选框至边缘位置;最后可通过注册表编辑器,在HKEY_CURREN…

    2026年9月21日
    100
  • PHP三元运算符HTML输出_PHP三元运算符HTML内容输出

    PHP三元运算符用于在HTML中简洁输出条件内容,基本语法为“条件 ? 值1 : 值2”;2. 常用于动态显示文本、属性或样式,如根据$active输出“启用”或“禁用”;3. 可嵌入HTML标签设置class、disabled等属性,示例中根据登录状态显示不同按钮。 PHP三元运算符用于在HTML…

    2026年9月21日
    200
  • Hibernate Search嵌入式对象索引策略与常见问题解决

    本文探讨了在使用Hibernate Search对关联或嵌入式对象进行索引时遇到的常见问题,特别是@IndexedEmbedded与includePaths属性的结合使用。通过分析HSEARCH000216错误,揭示了嵌入式对象属性需要显式@Field注解才能被主实体索引的机制,并提供了具体的代码示…

    2026年9月21日
    100
  • Ubuntu安装Python3.6并切换到3.6版本「建议收藏」

    大家好,很高兴再次与你们见面,我是你们的好朋友全栈君。 文章目录 前言==补充==1 了解系统中已安装的Python版本2 安装Python 3.63 从Python 2.7切换到Python 3.64 中间遇到的问题4.1 问题一4.2 问题二总结参考文献 前言本文记录我在Ubuntu 16.04…

    2026年9月21日
    000

发表回复

登录后才能评论
关注微信