如果我使用Long uuid = UUID.randomUUID().getMostSignificantBits(),发生碰撞的可能性有多大.它切断了最低有效位,所以有可能发生碰撞,对吗?

推荐答案

根据the documentation,静电方法UUID.randomUUID()生成类型4UUID.

这意味着6位用于某些类型信息,其余122位随机分配.

六个非随机位分布在UUID的最高有效一半中有四个,最低有效一半中有两个.因此,UUID中最重要的一半包含60位随机性,这意味着您平均需要生成2^30个UUID才能获得冲突(相比之下,完整UUID需要生成2^61个UUID).

所以我想说你是相当安全的.然而,请注意,正如Carl Seleborg提到的那样,对于其他类型的UUID来说,这绝对不是真的.

顺便说一句,使用UUID的最低有效部分(或者只使用SecureRandom生成随机的长整型)会稍微好一些.

Java相关问答推荐

Java -使用空比较或instanceof?

Javascript在边界中心调整ImageView大小

填写文本字段后锁定PDF

Exe4j创建的应用程序无法再固定在任务栏Windows 11上

如何创建一个2d自上而下的移动系统,其中移动,同时持有两个关键是可能的处理?

如何在Java中从XML中获取特定的 node ,然后将其删除?

第二次按下按钮后,我需要将按钮恢复到其原始状态,以便它可以再次工作

Javadoc在方法摘要中省略方法

MimeMessage emlMessage=new MimeMessage(Session,emlInputStream);抛出InvocationTargetException

我的Spring Boot测试显示&IlLegalStateException:无法加载某事的ApplicationContext.

如何在JavaFX中制作鼠标透明stage

在不使用instanceof或强制转换的情况下从父类变量调用子类方法

我的代码是线程安全的吗?[Java、CAS、转账]

[jdk21][Foreign Function&;Memory API]MemoryLayout::varHandle通过可变数组进行 struct 化的问题

如何在Selenium上继续使用最新的WebDriver版本

ResponseEntity.控制器截断响应的JSON部分

Spring Mapstruct如何获取Lazy初始化实体字段的信息?

using case default on switch语句返回;预览特征切换中的模式匹配仅在源级别20及以上的情况下可用;

如何使用命令行为Java应用程序生成烟雾测试用例

如何转换Vector<;对象>;转换为int?