当前位置: 首页 > 科技观察

速看!今天我才知道UUID还分五个版本

时间:2023-03-22 00:00:37 科技观察

快速查看!今天才知道UUID分为五个版本相关术语:GloballyUniqueIdentifier(GUID)。根据标准方法生成,不依赖中央机构的注册和分配,UUID是唯一的,这与大多数其他编号方案不同。UUID码重复的概率接近于零,可以忽略不计。UUID由一组32位的十六进制数组成,所以UUID的理论总数为16^32=2^128,约等于3.4x10^38。也就是说,如果每纳秒(ns)产生1万亿个UUID,那么需要100亿年才能用完所有的UUID。UUID的标准形式由32位十六进制数字组成,由连字符分成五段,形式为8-4-4-4-12的32个字符。示例:550e8400-e29b-41d4-a716-446655440000UUID格式:在其规范文本表示中,UUID的16个八位字节表示为32个十六进制(基数16)数字,显示在“-”、“8-4-4”中-4-12"共36个字符(32个字母数字字符和4个连字符)。例如:123e4567-e89b-12d3-a456-426655440000xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxxps:上下比较,a表示十六进制的10,四位M表示UUID版本,高一到三位数字N表示UUID变体。例子中M为1,N为a(10xx),表示这个UUID是一个“variant1”,“version1”的UUID;即基于时间的DCE/RFC4122UUID。UUID版本:对于“变体1”和“变体2”,标准中定义了五个版本,每个版本在特定用例中可能比其他版本更合适。版本由M字符串指示。版本1-UUID由时间和节点ID(通常是MAC地址)生成;版本2-UUID由标识符(通常是组或用户ID)、时间和节点ID生成;版本3、版本5-确定性UUID通过哈希命名空间标识符和名称生成;版本4-UUID是使用随机性或伪随机性生成的。Java中生成UUID:下面介绍一下JavaUUID类中可以用来生成UUID的方法:1.randomUUID():使用加密强度高的伪随机数生成器生成v4伪随机UUID:UUIDuuid=UUID.randomUUID();2.nameUUIDFromBytes():我们可以使用nameuidfrombytes()从字节数组生成UUID:byte[]byteArr={11,23,33};UUIDuuid=UUID.nameUUIDFromBytes(byteArr);此方法生成v3UUID(基于名称)。3.fromString():使用fromString(),我们可以从标准字符串表示创建UUID:UUIDuuid=UUID.fromString("533a4559-e55c-18b3-2456-555563322002");对于任何作为参数传入的String无效,都会抛出IllegalArgumentException。比较两个uuid:JavaUUID实现了Comparable接口,所以我们可以使用compareTo()方法进行比较;我们知道,compareTo()方法返回:1:如果uuid1大于uuid20:如果uuid1=uuid2-1:如果uuid1小于uuid2我们也可以选择使用equals()方法进行比较。简介:在本教程中,我们了解了UUID是什么以及它的格式和版本。我们还介绍了从javaUUID类生成uuid的方法。