gpt4 book ai didi

java - uuid5 实现中命名空间是必需的吗?

转载 作者:行者123 更新时间:2023-11-30 01:42:37 31 4
gpt4 key购买 nike

我正在尝试使用 java 测试 uuid5 的各种实现,并使用 python 作为引用实现,因为它是由 corelibs 提供的。然而,看起来 python 的 uuid5 需要一个命名空间 uuid 作为第一个参数传递。 “无”是行不通的。然而,Java 的 com.fasterxml.uuid.Generators nameBasedGenerator 将接受“null”命名空间。哪个是对的? uuid5 生成是否有“全局”或“默认”命名空间的概念。

最佳答案

Is there a concept of a "global" or "default" namespace for uuid5 generation.

UUID RFC 中没有这样的概念。命名空间代表命名系统,您正在使用的名称将从该命名系统中提取。没有通用的命名系统,因此谈论“全局”命名空间是没有意义的。然而,有一些标准的命名空间 UUID。它们记录在RFC 4122 Appendix C

Python's uuid5 requires a namespace uuid passed as the first parameter. None will not work. However, Java's com.fasterxml.uuid.Generators nameBasedGenerator will accept a null for namespace

com.fasterxml.uuid.Generators API 不是标准的 Java API。 UUID 的标准 Java API 是 java.util.UUID但它不支持 type 5 UUID 生成。

Which is correct?

我查看了com.fasterxml.uuid.Generators的代码。如果 null提供了命名空间,它会跳过将命名空间 UUID 与名称连接的步骤。这不符合 RFC 4122 Section 4.3 中规定的类型 3/5 算法。 ,所以从技术上来说这是不正确的。

但是,这种与 RFC 的偏差不应破坏任何内容。它生成 UUID 冲突的速度不会高于您通常预期的 3/5 类型 UUID。我倾向于称其为无害(尽管非标准)扩展。

所以...

Is namespace mandatory in a uuid5 implementation?

RFC 没有声明命名空间是强制性的,也没有声明如果未提供命名空间该怎么办。一般而言,UUID 生成 API,尤其是此 API 的行为超出了当前编写的 RFC 的范围

关于java - uuid5 实现中命名空间是必需的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59431874/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com