题
考虑到我发表的有关 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;
}
}
不隶属于 StackOverflow