与随机字符串相比,UUID 或 GUID 的用途是什么?
What is the purpose of a UUID or GUID, compared to a random string?
由于它们包含破折号且仅包含十六进制字符,随机字符串(包括特殊字符)不会有更多可能的组合吗?
我知道它们成为标准是一个优势,但您也可以决定使用 N 个字符的随机字符串和某些列入白名单的字符,以防止系统出现不同的格式。
你基本上回答了你自己的问题。当面临 "roll your own" 或使用那里的困境时 - 选择第一个应该是仔细考虑的结果。但是要回答你的问题,任何生成良好的 128 位序列几乎都可以保证是唯一的,因此主要好处来自可用于使用 UUID 的工具以及它们在全球范围内被认可为一个体面的非序列标识符。
还有,有空的话,看看这个:
Is a GUID unique 100% of the time?
UUID 是 128 位整数,虽然保留了一些位,但出于所有实际目的,UUIDv4 的 122 位随机位与 128 位完全随机位一样好。其他 UUID 类型故意 不是 随机的,因为有时这不是你想要的,并且那些保留位防止不同类型发生冲突,因为有时你不关心使用哪种类型。
普通的十六进制形式只是一种人性化的表示形式,代价是占用了两倍多space。你不应该将它用于人类看不到的东西;只需存储二进制形式并根据需要进行转换。
由于它们包含破折号且仅包含十六进制字符,随机字符串(包括特殊字符)不会有更多可能的组合吗?
我知道它们成为标准是一个优势,但您也可以决定使用 N 个字符的随机字符串和某些列入白名单的字符,以防止系统出现不同的格式。
你基本上回答了你自己的问题。当面临 "roll your own" 或使用那里的困境时 - 选择第一个应该是仔细考虑的结果。但是要回答你的问题,任何生成良好的 128 位序列几乎都可以保证是唯一的,因此主要好处来自可用于使用 UUID 的工具以及它们在全球范围内被认可为一个体面的非序列标识符。
还有,有空的话,看看这个: Is a GUID unique 100% of the time?
UUID 是 128 位整数,虽然保留了一些位,但出于所有实际目的,UUIDv4 的 122 位随机位与 128 位完全随机位一样好。其他 UUID 类型故意 不是 随机的,因为有时这不是你想要的,并且那些保留位防止不同类型发生冲突,因为有时你不关心使用哪种类型。
普通的十六进制形式只是一种人性化的表示形式,代价是占用了两倍多space。你不应该将它用于人类看不到的东西;只需存储二进制形式并根据需要进行转换。