使用Java自带uuid生成主键,出现违反主键的问题
// 代码如下,偶发性的,是否试下面的截取逻辑还有问题. public static String getUUID() { UUID uuid = UUID.randomUUID(); String str = uuid.toString(); // 去掉"-"符号 return str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24); }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(10)
把-替换成其他字符,-直接去掉可能出现重复
使用replaceAll去除-就不会出现了
楼主这个代码逻辑应该是没问题的,去掉中线用substring无不可。按通常的uuid生成规则0-8位是时间戳,后面则是当前主机mac地址,再作哈希运算,重复的机会非常低。但短时间内生成还是有重复可能性。
全世界 主流的uuid生成有五种,第一二种比较多,而java的uuid生成应该是1,2种。如果只是单纯第一种有一定重复的机会
如果你还重复就用随机吧~
单机情况下除非你时钟回拨了
去除"-"为什么不用replace....
UUID重复没见过,不行试试雪花算法
单机情况下是不可能出现的,多机情况下,有可能出现
建议题主去除短横线使用字符串函数replaceAll("-", "")
一般情况UUID是不会重复的,UUID为机器唯一识别码和随机时间组成,多机情况是绝对不会重复的,单机部署多个相同的项目在调整了时间的情况下可能有极小的概率重复。
换个角度想想,是否自己的代码中有重试动作,导致相同对象重复在保存,而引起主键重复问题。