UUID 命名空间从何而来?

2023-12-22

The UUID规范 https://www.rfc-editor.org/rfc/rfc4122.html#section-4.3定义了 4 个预定义的命名空间,将其描述为“可能有趣”——除其他外,这意味着“如果其他人在这个命名空间中生成了 UUID,你可以验证它们”:

  • 6ba7b810-9dad-11d1-80b4-00c04fd430c8 for DNS
  • 6ba7b811-9dad-11d1-80b4-00c04fd430c8 for URL
  • 6ba7b812-9dad-11d1-80b4-00c04fd430c8用于 ISO OID
  • 6ba7b814-9dad-11d1-80b4-00c04fd430c8用于 X.500 DN

这些是从哪里来的?

具体来说;

  • 如果我生成自己的命名空间 UUID,我是否需要特别避免任何事情?
  • 我知道 UUID 空间有多大,但这对冲突有什么影响吗?
  • 为什么他们选择第 4 个八位字节作为一种 UUID“版本号”来增加?
  • 我的问题是否意味着我遗漏了有关 UUID 的一些基本知识?

首先,需要明确的是,整个讨论仅限于版本 3 和 5 UUID。根据我的(轶事)经验,版本 4(随机)UUID 最常用。

4122 https://www.rfc-editor.org/rfc/rfc4122.html#section-4.3的命名空间 UUID 生成算法模糊地开始:

分配一个 UUID 用作“命名空间 ID”

没有其他提及“名称空间ID”分配,我和python http://docs.python.org/library/uuid.html已发现 RFC 4122 中列出的四个空间之外的任何标准化空间。

所以你的第一个问题的答案,

  • 如果我生成自己的命名空间 UUID,我是否需要特别避免任何事情?

您只需避开四个标准名称空间即可。


下一个问题,

  • 我知道 UUID 空间有多大,但这对冲突有什么影响吗?

有两个部分:

  1. 您的命名空间内的 UUID 会发生冲突吗? 4122 的逐字记录:

    从[您的]命名空间中的两个不同名称生成的 UUID 应该不同(概率非常高)。

  2. 您的命名空间 UUID 会与其他命名空间冲突吗?我找不到直接的答案,因为没有“名称空间 ID”分配的标准,但中的参数第4.1.1节 https://www.rfc-editor.org/rfc/rfc4122.html#section-4.1.3似乎相关:

    任何形式的互操作性,与除该形式之外的变体 此处定义的内容无法得到保证,并且不太可能成为问题 实践。


  • 为什么他们选择第 4 个八位字节作为一种 UUID“版本号”来增加?

这有点神秘。幸运的是,我们有 UUID 规范,因此我们可以挖掘它们以获得一些见解。

请注意,(0-索引)第 8 个八位字节以8在所有情况下,所以我们正在处理RFC 4122 变体UUID。唷。

现在检查八位位组 6 的版本:1,我们正在处理版本 1 基于时间 UUIDs.

This answer https://stackoverflow.com/questions/3795554/extract-the-time-from-a-uuid-v1-in-python有一个方便的算法,用于从版本 1 UUID 中提取 python 日期时间。应用该算法会产生一个时间1998 年 2 月 4 日。我还没有找到这个日期的意义。递增第 3 个八位字节会将最小可编码时间间隔 (100ns) 添加到日期中。


  • 我的问题是否意味着我遗漏了有关 UUID 的一些基本知识?

没有。关于 UUID 命名空间的讨论很少,因为随机 UUID 非常简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UUID 命名空间从何而来? 的相关文章

  • Windows 应用程序事实上的标准键盘快捷键列表?

    假设我正在为 Windows 开发一个新的桌面应用程序 是否有我可以查阅的所有 Windows 应用程序都应支持的键盘快捷键列表 来自 Microsoft 或第三方 注意 当我在这里说 所有 Windows 应用程序 时 我的真正意思是 特
  • 如何成功使用RDAP协议代替whois

    我对新的 RDAP 协议有点困惑 也不知道何时进一步追求它有意义 在我看来 每个人都同意它是 whois 的继承者 但他们的数据库似乎是空的 在 ubuntu 上我尝试了 rdapper nicinfo 甚至他们的 RESTful API
  • 生成所有多集大小为 n 的分区的算法

    我一直在试图找出一种方法来生成多重集的所有不同的大小为 n 的分区 但到目前为止却空手而归 首先让我展示一下我想要实现的目标 假设我们有一个输入向量uint32 t std vector
  • 两个程序对象运行时比较的方法

    我正在进行一种特定类型的代码测试 该测试相当麻烦并且可以自动化 但我不确定最佳实践 在描述问题之前 我想澄清一下 我正在寻找合适的术语和概念 以便我可以阅读有关如何实现它的更多信息 当然 欢迎就最佳实践提出建议 但我的目标很具体 这种方法叫
  • 负整数的基数排序

    我正在尝试对整数 包括负整数 实现基数排序 对于非负整数 我计划为数字0 9创建一个10个队列的队列 并实现LSD算法 但我对负整数有点困惑 我现在的想法是继续为它们创建另一个包含 10 个队列的队列 并分别对它们进行排序 然后在最后 我将
  • 什么是拉姆达?

    有人可以很好地描述什么是 Lambda 吗 我们为它们设置了一个标签 它们涉及 C 问题的秘密 但我还没有找到一个很好的定义和解释来解释它们是什么 闭包 lambda 和匿名函数不一定是同一件事 匿名函数是任何没有 或者至少不需要 自己名称
  • 面向对象编程语言中的引用默认情况下是否应该不可为空? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在矩阵/位图中查找质量簇

    这是此处发布的问题的延续 在 2D 位图上查找质心 https stackoverflow com questions 408358 finding the center of mass on a 2d bitmap正如给出的例子 它讨论了
  • 从关系数据库中“区分”对象

    我们的 win32 应用程序根据 MySQL 关系数据库中多个表中的数据组装对象 对于这样的对象 多个修订版本存储在数据库中 当存储某些内容的多个修订版本时 迟早您会问自己这样的问题 您是否可以想象两个修订版本之间的差异 所以我的问题是 比
  • 用矩阵变换 3D 向量的方法

    我一直在阅读一些关于用矩阵转换 Vector3 的文章 并且正在努力深入研究数学并自己编码 而不是使用现有代码 无论出于何种原因 我的学校课程从未包含矩阵 所以我正在填补我的知识空白 值得庆幸的是 我认为我只需要一些简单的东西 背景是我正在
  • sqlalchemy 中的随机 ID(pylon)

    我正在使用 pylons 和 sqlalchemy 我想知道如何将一些随机 id 作为primary key 最好的方法是使用随机生成的 UUID import uuid id uuid uuid4 uuid 数据类型在某些数据库中本机可用
  • 如何发布/销售/推广半商业/开源项目? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我已经开发了一个 PHP 框架 总共花了大约 3 周的时间 但它已经准备好发布了 如果我选择这样做的话 在目前的经济形势下 我不能仅仅接受
  • 广度优先搜索:检查访问状态的时机

    在有向图的广度优先搜索中 可能循环 当一个节点出队时 其所有尚未访问的子节点都会入队 并且该过程将继续 直到队列为空 有一次 我以相反的方式实现它 将节点的所有子节点排队 并在节点出队时检查访问状态 如果正在出队的节点之前已被访问过 则该节
  • 独特的 Linux 文件名,可按时间排序

    以前我用的是uuidgen http man7 org linux man pages man1 uuidgen 1 html创建唯一的文件名 然后我需要通过 bash 脚本按日期 时间迭代该文件名 从那时起 我发现简单地通过 ls l 循
  • 我使用仅大小写不同于其类型的变量名是不道德的吗?

    例如 采用这段代码 var person new Person 或者对于 Python 爱好者来说 person Person 我经常被告知这有多糟糕 但还没有看到这两行代码不道德的例子 对我来说 人就是一个人 试图给它起另一个名字是浪费时
  • Laravel - 覆盖模型 ID

    我正在开发电子书管理系统 我使用 UUID 而不是自动递增整数主键 它工作得很好 protected static function boot parent boot static creating function model model
  • 是否可以证明序列是否是随机的?

    考虑以下输入 1 1 2 3 5 8 这不是随机的 2 4 8 16 32 这都不是 4 1 2 11 5 9 这个看起来像随机序列 我想问是否有这样的算法来证明输入是否是随机的 不 没有这样的证明 如果你有完全随机的数字 则每个长度为 n
  • 线性模式匹配算法?

    我有一个由 0 和 1 组成的线性列表 我需要匹配多个简单模式并找到第一个出现的情况 例如 我可能需要找到0001101101 01010100100 OR 10100100010长度为 800 万的列表内 我只需要找到第一次出现的情况 然
  • 如果数据库可访问,加盐和散列有什么意义?

    我刚刚学习了散列的概念 嘿 不要忘记盐 并使用盐来确保密码安全 散列它是一种单向加密 实际上不是加密而是散列 因此无法对其进行逆向工程 加盐是在散列之前在密码上添加随机创建的值的前缀或附加值 因为散列 只是散列 的问题是 一些天才提供了字典
  • android device.getUuids 返回 null

    我正在尝试使用低功耗蓝牙 BLE 通过 Android 应用程序连接到 Arduino Uno 我正在 Android Studio 上进行开发 使用 Samsung Galaxy S4 和 Android 版本 5 0 1 进行测试我点击

随机推荐

  • jq:根据键是否以指定字符串结尾过滤输入

    我收到了这个混乱的 JSON 数据 我需要提取类型列表 token accessor auth token 909d6a81 config default lease ttl 0 max lease ttl 0 description to
  • Firebase:在 Kotlin/Java 中使用枚举字段的干净方法?

    我在 firebase 上的数据使用许多具有字符串类型的字段 但实际上是枚举值 我在验证规则中检查 要将数据下载到我的 Android 应用程序中 遵循指南 https firebase google com docs database a
  • 存储库模式最佳实践

    因此 我在应用程序中实现存储库模式 并在我对该模式的理解中遇到了两个 问题 查询 我读过有关在使用存储库时不应使用 IQueryable 的回复 但是 很明显您希望每次调用方法时都不会返回完整的对象列表 是否应该实施 如果我有一个名为 Li
  • 公开 jQuery 插件属性

    给定以下 JQuery 插件 是否可以将变量 elements 公开给插件外部的 javascript 如果是这样 这是如何完成的 对于此插件外部的 javascript 访问 元素 的语法是什么 function fn myPlugin
  • 无法使用 Rugged 克隆存储库

    使用 openSUSE 和 Ubuntu 并安装了依赖项 我无法克隆远程存储库Rugged Repository clone at方法并获取错误信息 Rugged NetworkError 此传输未实现 对不起 代码 credentials
  • 长按时忽略mapView:didSelect Annotation View

    我正在为这个问题苦苦挣扎 我有一个地图视图 在一个小区域中有很多图钉 当我长按地图时 我想忽略地图视图对注释的选择 无论我是否长按注释视图 似乎注释是在触摸时被选择的 而不是在注释视图内部进行触摸 这很烦人 我在地图视图中添加了一个长按手势
  • 如何将 seewave 频谱图转换为 wav 文件

    我想操纵一个seewave音频频谱图 然后将其转换回 wav文件 一个简单的例子 library tuneR library seewave data tico generate spectrogram with phase informa
  • 在android studio中设置google play扩展文件库

    我正在尝试在我的 android 项目中使用 apk 扩展文件 我已经读过这篇文章http developer android com google play expansion files html http developer andr
  • `git rebase master` 和 `git rebase --onto master` 之间有什么区别?

    就像标题所说 有什么区别git rebase master and git rebase onto master 我运行了这两个命令 希望看到完全相同的结果 但之后得到了两个截然不同的提交历史记录 这有什么大不了的 它们有何不同 不接受这个
  • 更改悬停链接上引导导航栏的颜色?

    我想知道当您将鼠标悬停在导航栏中的链接上时如何更改链接的颜色 因为目前它们的颜色很难看 感谢您的任何建议 HTML div class container div class navbar div class navbar inner ul
  • 在不合并 Google Play 服务的情况下使用 webview 进行 oAuth Google 的替代方案

    我们有在 Android 操作系统上运行的自定义设备 但没有整合 Google Play 服务 我们使用 Webview Oauth 2 0 身份验证进行 Google 登录 根据文档 它已被弃用 我读到有一种方法https develop
  • 有没有办法在 WPF 控件库中使用 StaticResource 并能够在设计时查看?

    我有一个 WPF 控件库 正在添加到 Windows 窗体应用程序中 我们希望允许控件可本地化 但是我不确定如何在不重复代码的情况下完全实现这一点 这就是我现在正在做的事情 https stackoverflow com questions
  • 与 memcpy 连接

    我正在尝试使用 memcpy 将两个字符串添加在一起 第一个 memcpy 确实包含我需要的数据 然而 第二个并没有添加 知道为什么吗 if strlen g gt db cmd lt MAX DB CMDS memcpy g gt db
  • Google 如何检测来自 WebView 的请求?

    谷歌宣布他们 将不再允许在称为 网络视图 的嵌入式浏览器中向 Google 发出 OAuth 请求 https developers googleblog com 2016 08 modernizing oauth interactions
  • 如何对 .cshtml 文件进行 lint 处理?

    使用 ESLint 可以轻松检查 js 文件 使用 html 或 script tag 之类的插件 在 html 文件中的标签内检查 JavaScript 代码也很简单 但是 当涉及 cshtml 文件内的脚本标记时 我陷入困境 有谁知道如
  • Shell 脚本:使用 xargs 执行 shell 函数的并行实例

    我试图在 shell 脚本中使用 xargs 来运行我在同一脚本中定义的函数的并行实例 该函数对页面的获取进行计时 因此重要的是页面实际上是在并行进程中同时获取的 而不是在后台进程中 如果我对此的理解是错误的并且两者之间的差异可以忽略不计
  • 在哪些领域使用 F# 比 C# 更合适? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在过去的几年里 F 已经发展成为 Microsoft 完全支持的语言之一 采用了 OCaml ML 和 Haskell 中孕育的许多想法 在过去
  • Bash:等待超时

    在 Bash 脚本中 我想做类似的事情 app1 pidApp1 app2 pidApp2 1 timeout 60 wait pidApp1 pidApp2 kill 9 pidApp1 pidApp2 即 在后台启动两个应用程序 并给它
  • Delphi 中 IntraWeb 的替代品? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 IntraWeb for Delphi 有其他替代品吗 如果我想用Delphi编写一个简单但有意义的网络服务器 当我也在做 Delphi
  • UUID 命名空间从何而来?

    The UUID规范 https www rfc editor org rfc rfc4122 html section 4 3定义了 4 个预定义的命名空间 将其描述为 可能有趣 除其他外 这意味着 如果其他人在这个命名空间中生成了 UU