Java 生成的 UUID 出现了重复?! 什么鬼??

2017-05-22 13:13:17 +08:00
 yuhuan66666

不是号称 比被陨石砸中都的概率还小么。。。。。

怎么当一年的主键就重复了好几个呢。。。。

各位大大 都用啥当主键的?

难不成真要 各个字段连成一条+UUID 生成的字符串,再算成 SHA512 当主键吗???

太复杂了吧。。。。

21579 次点击
所在节点    Java
27 条回复
knightdf
2017-05-22 13:28:48 +08:00
没人说不重复啊。。。
lonenol
2017-05-22 13:30:33 +08:00
各种算法一大堆,随便 Goolebaidubing 一下
congeec
2017-05-22 13:34:18 +08:00
出现重复的就二次 hash 呗
oh
2017-05-22 13:34:33 +08:00
好想知道楼主的业务一年业务量是多少,出现了好几条重复
watzds
2017-05-22 13:36:48 +08:00
也可能代码有 bug
wu1990
2017-05-22 13:38:14 +08:00
数据量多大
zjsxwc
2017-05-22 13:38:33 +08:00
只能相对地说不会重复,具体还是要看使用环境:
https://zhihu.com/question/34876910/answer/88924223
honeycomb
2017-05-22 13:38:49 +08:00
你是生成了哪种 UUID ?
类型 1 还是类型 4 ?

类型 4 是全随机的,要考虑随机数生成器的用法有没有问题。
类型 1 和时间有关,每秒钟有 1630 亿个可用。
nanpuyue
2017-05-22 13:39:04 +08:00
楼主你出门可要小心天上的陨石了~
denghongcai
2017-05-22 13:41:12 +08:00
tomczhen
2017-05-22 13:48:27 +08:00
uuid 也分好几种的,而且多线程并行生成不用一些方法的话也有生成相同 uuid 的可能。
bozong
2017-05-22 13:56:35 +08:00
Tb 级别数据量?
ytmsdy
2017-05-22 14:01:22 +08:00
快去买彩票!
yuhuan66666
2017-05-22 14:10:11 +08:00
@honeycomb #8 用的最简单的 UUID.randomUUID()生成的
icedx
2017-05-22 14:11:39 +08:00
和时间戳绑定一下就好了
xmh51
2017-05-22 14:22:35 +08:00
多线程 下 使用?
jason19659
2017-05-22 14:35:12 +08:00
找个按照时间戳生成的工具类
angelface
2017-05-22 14:41:41 +08:00
@yuhuan66666 Type 4 类的是随机数,是有可能重复的。可以换一个 Time-Based 的工具包。
magicdawn
2017-05-22 14:43:38 +08:00
ooTwToo
2017-05-22 14:53:55 +08:00
试试 twitter 的 snowflake

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/362935

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX