UUID 及其实现 1
数据格式
UUID 是 Universally Unique IDentifier 的缩写,本质上是一个 128-bit (16-byte) 长的标识符,可以用32个16进制数表示,并且通常以如下形式展示:
1 | // 每组字符长度分别是 8-4-4-4-12 |
上面 M
和 N
出的数字分别表示了这个 UUID 使用的 version 和 variant;具体下面展开。
HEX 字符存在大小写,按照 RFC 4122 要求,UUID 输出时 'a'-'f'
应为小写;但是在作为输入时大小写不敏感。
因为 UUID 的生成不需要中心管理节点 (central authority),是天然分布式;也正因如此,没有一个验证 UUID 是否有效的方法,最多只能验证是否满足数据格式要求。
0x0 Variant
上面 N
处的 HEX 的 3-bit MSB 指明了 UUID 使用的 variant。
Variant 决定了当前 UUID 其他的 bits 如何 interpret。这里的 bits 也包含 M
处指示 version 的那部分。
语义上讲,variant 更适合被叫做 type