考虑到我发表的有关 Microsoft.NET 框架上的顺序 guid 性能的帖子(请参阅 Sequential Guid 相对于标准 Guid 有哪些性能改进?)是否有人对 Windows DLL 中实现的相同算法有正确、可靠、快速且运行良好的 Java 实现?

致敬 马西莫

有帮助吗?

解决方案

请参阅这篇文章: http://www.informit.com/物品/ article.aspx?p值= 25862&SEQNUM = 7 (链接到第7页)。

它包含作者称之为“梳形”的GUID什么算法;我复制他的下面的代码(SQL):

SET @aGuid = CAST(CAST(NEWID() AS BINARY(10)) 
+ CAST(GETDATE() AS BINARY(6)) AS UNIQUEIDENTIFIER)

平凡的将其转换为Java或您需要的语言。最明显的基本原则是使之日起的GUID的一个组成部分。整篇文章是一个很好看的,像他那样的各种方法的性能的一个很好的分析。

其他提示

对于连续的UUID,你正在寻找一个版本1的UUID。 Java的UUID生成器项目似乎运作得很好,是很容易使用:

Generators.timeBasedGenerator().generate().toString()

此页面链接到几个版本1中的Java(顺序)UUID实现: http://johannburkard.de/blog/programming/java/Java -UUID发电机-compared.html

我使用它来产生用于我的DTO的充当用于瞬时集合代理键的UUID(通用唯一ID)。不知道这是否是同样的事情,但它可以为你指明正确的方向。

import java.util.UUID;
...
    private String uuid=null;
...
    protected String getUuid() {
        synchronized (this) {
          if (null ==uuid) {
            uuid = UUID.randomUUID().toString();
          }
          return uuid;
        }
      }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top