WEB开发网
开发学院软件开发Java Java的UUID生成工具并发测试 阅读

Java的UUID生成工具并发测试

 2010-08-20 00:00:00 来源:WEB开发网   
核心提示: [编辑] 随机UUID的重复机率 随机产生的UUID(例如说由java.util.UUID类产生的)的128个位中,有122个位是随机产生,Java的UUID生成工具并发测试(2),4个位在此版本('Randomly generated UUID')被使用,还有2个在其变体(&#

[编辑] 随机UUID的重复机率

随机产生的UUID(例如说由java.util.UUID类产生的)的128个位中,有122个位是随机产生,4个位在此版本('Randomly generated UUID')被使用,还有2个在其变体('Leach-Salz')中被使用。利用生日悖论,可计算出两笔UUID拥有相同值的机率约为

以下是以x=2122计算出n笔UUID后产生碰撞的机率:

n 机率    
68,719,476,736 = 236 0.0000000000000004 (4 x 10-16)    
2,199,023,255,552 = 241 0.0000000000004 (4 x 10-13)    
70,368,744,177,664 = 246 0.0000000004 (4 x 10-10)    

与被陨石击中的机率比较的话,已知一个人每年被陨石击中的机率估计为170亿分之1[1],也就是说机率大约是0.00000000006 (6 x 10-11),等同于在一年内置立数十兆笔UUID并发生一次重复。换句话说,每秒产生10亿笔UUID,100年后只产生一次重复的机率是50%。如果地球上每个人都各有6亿笔UUID,发生一次重复的机率是50%。

产生重复UUID并造成错误的情况非常低,是故大可不必考虑此问题。

机率也与乱数产生器的品质有关。若要避免重复机率提高,必须要使用奠基于密码学上的假乱数产生器来生成值才行。

http://zh.wikipedia.org/zh-cn/UUID

二、Java5的UUID

在Java5以后,UUID的生成成了小菜一碟的小事,直接生成即可。对此需要了解:

有 4 种不同的基本 UUID 类型:基于时间的 UUID、DCE 安全 UUID、基于名称的 UUID 和随机生成的 UUID。 这些类型的 version 值分别为 1、2、3 和 4。具体什么含义,看看JDK文档即可。

上一页  1 2 3 4  下一页

Tags:Java UUID 生成

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接