当前位置: 首页 > 面试题库 >

JDK使用哪个名称空间生成名称为UUIDFromBytes的UUID?

邢昊焜
2023-03-14
问题内容

Sun / Oracle
JDK在java.util包中公开了一个用于创建类型3(基于名称)的UUID的函数:java.util.UUID.nameUUIDFromBytes(byte
[] name)。

我需要能够使用nameUUIDFromBytes在Java中生成类型3 UUID,并在创建另一种语言的类型3
UUID时达到相同的UUID,假设我提供与源相同的字节。

根据javadocs,此函数创建符合RFC 4122的类型3 UUID。但是,根据RFC
4122规范,必须在某些名称空间内创建类型3
UUID。大多数其他语言允许您在创建3型UUID时指定名称空间(例如Ruby中的UUIDTools
gem)。

所以我的问题是:当我调用nameUUIDFromBytes时,JDK使用哪个命名空间UUID?


问题答案:

查看此错误报告

特别是靠近底部的评论:

也许此时的行动是修复javadoc,说明“ nameUUIDFromBytes(byte []
namespaceAndName)”“应该传入一个包含名称空间UUID字节和名称字节(按此顺序)的串联的字节数组”假设该方法只是MD5的byte
[]并按照IETF文档设置字段。

我不知道我是否相信它能正常工作,但与其他实现产生的相同UUID相比,使用UUID规范中的预定义名称规范进行测试应该很容易。



 类似资料:
  • 在OpenFOAM中,存在一个函数,其名称为exp,表示数学中的幂操作。同时,C++本身也可以进行这个计算,并且函数名称也为exp。这会导致调用的时候,编译器并不知道应该调用OpenFOAM的exp还是C++本身的exp。一种方法是将其中一个exp函数进行改名,比如将OpenFOAM中的exp改成expFoam。但还有更简单的方式。 名称空间专门用于解决上面的问题,它可作为附加信息来区分不同库中相

  • 目前,我们有一个使用代码欺骗2.0.16构建的大型接受套件。我们想升级到代码欺骗2.2.5。然而,在安装了Codec0019 2.2.5(via phar)之后,我们根本无法运行我们的测试套件。 我们收到的错误是(底部的其他详细信息): 无法找到并加载[Codeception\Exception\ConfigurationException]模块WebHelper 显然,新版本的加载更改会影响我们

  • 问题内容: 我在命名空间和语句上遇到了一些麻烦。 我有三个文件:,和。 我正在尝试使用相对路径进行此操作,因此已将其放在所有类中: 在我的圈子课程中,我有以下内容: 如果使用这些语句,我不会出错。如果我尝试以下语句,则会得到: 致命错误:在第8行的/Users/shawn/Documents/work/sites/workspace/shape/Circle.php中找不到类’Shape \ Sh

  • 我只是用MVVM轻型工具包编写一些培训窗口项目。当MVVM Light引用添加到项目中时,下面的资源被自动添加到app.xml中 不幸的是,它不起作用,即由于以下错误,无法构建/编译项目: 我找到了几种针对此问题的常见解决方案(例如:更改解决方案平台、清理、重建、重新启动Visual Studio等),但它们并没有改变什么。创建一个新项目也没有帮助。 有没有其他办法让它起作用?我使用Visual

  • 问题内容: 想知道是否有人在使用新功能通过PHP 5.3对类进行命名空间时是否遇到了此问题。 我正在使用单独的类来生成动态类调用,以在应用程序中定义用户类型。基本上,类定义器采用类型的整数表示形式并解释它们,返回一个包含要用作该用户模型的类名的字符串。 我在全局范围内定义了具有该名称的用户类型的对象模型,但是在Editor名称空间中,该用户的编辑器具有另一个名称相同的对象。由于某些原因,PHP不允

  • 我已经阅读了man页面,但我不明白name和namespace是用来做什么的。 对于版本3和版本5的UUID,必须给出额外的命令行参数命名空间和名称。命名空间要么是字符串表示中的UUID,要么是内部预定义命名空间UUID的标识符(目前已知的是“ns: DNS”、“ns: URL”、“ns: OID”和“ns: X500”)。名称是任意长度的字符串。 命名空间: 命名空间可以是字符串表示形式的UUI