UUID-><,16 bytes,>admin管理员组文章数量:1567542
-><most significant long,8 bytes,><least significant long,8 bytes,>
most significant long-><,8 bytes,>
-><time_low,4 bytes,><time_mid,2 bytes,><version,4 bits,第49-52位><time_hi,12 bits,>
time_low->
time_mid->
version-><0001,,Time-based UUID(1)>|<0010,,DCE security UUID(2)>|<0011,,Name-based UUID(3)>|<0100,,Randomly generated UUID(4)>
time_hi->
UUID中的时间戳表示1582年10月15号午夜即晚上12点(UTC时间)到现在的100纳秒数。
0x(time_hi + time_mid + time_low)
只针对Time-based UUID(1)有效
least significant long-><,8 bytes,>
-><variant,1-3 bits,第1-3位><clock_seq,14 bits,第3-16位><node,6 bytes,共48位>
variant -> <0(0),1 bit,>|<2(10),2 bits,>|<6(110),3 bits,>|<7(111),3 bits,>
clock_seq->只针对Time-based UUID(1)有效
node->只针对Time-based UUID(1)有效
variant:
0(0)、2(10)、6(110)、7(111)
0: 预留(Reserved for NCS backward compatibility)
2: Leach-Salz变体,又叫IETF变体(The IETF aka Leach-Salz variant)
6: 预留(Reserved, Microsoft backward compatibility)
7: 预留(Reserved for future definition.)
Leach-Salz
版本号:
Time-based UUID(1)、DCE security UUID(2)、Name-based UUID(3)、Randomly generated UUID(4)
参考java.util.UUID#nameUUIDFromBytes的实现
给定一个字符串
计算MD5值
设置version为3(0011,most significant long中的第49-52位)
设置variant为2(10,least significant long中的第1-2位)
参考java.util.UUID#randomUUID的实现
通过SecureRandom随机生成一个16字节组,这16字节组看成是前面8字节组和后面8字节组组成。前面8字节组为most significant long,后面8字节组为least significant long
设置version为4(0100,most significant long中的第49-52位)
设置variant为2(10,least significant long中的第1-2位)
本文标签: UUID
版权声明:本文标题:UUID 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1725722935a1038600.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论