首页 电商知识 uuid是什么意思(uuid是什么意思linux)

uuid是什么意思(uuid是什么意思linux)

导读通用唯一标识符是一个128位数字,用于标识计算机系统中的信息。 它也被称为全局唯一标识符。 UUID的标准表示形式通常由十六进制数字组成e5d520d8-d06e-4bc2-

通用唯一标识符(UUID)是一个128位数字,用于标识计算机系统中的信息。 它也被称为全局唯一标识符(GUID)。 UUID的标准表示形式通常由十六进制数字组成:

e5d520d8-d06e-4bc2-9bb9-a28e47014884

总共可以看到32个字符,中间有四个连字符。 为了不辜负他们的名字,UUID应该是唯一的。 实际上,通常情况并非如此-它们的唯一性取决于生成它们的方法或算法。 但是,虽然有可能,但是复制UUID的可能性足够接近零,可以忽略不计。

有多种计算UUID的方法。 我将解释差异是什么,并提供一些实现的见解。

版本一

第一个版本的UUID是使用计算机的MAC地址和生成时间生成的通用唯一标识符。

这是否意味着一个UUID版本是完全唯一的? 好吧,他们差不多。 确保唯一性的计算机(或节点)每秒限制为1630亿,但这并不是开发人员经常遇到的问题。

此版本还有其他问题要担心。 几乎可以保证的唯一性是以匿名为代价的。 由于此版本需要考虑时间和唯一的MAC地址,因此可以确定计算机的地址和时间。

版本二

我将简短地讨论第二版。 实际上,第二版UUID与第一版相似,并且由于RFC 4122并未提供太多详细信息而很少实现。 实际上,您根本不会使用它们。 它们也称为DCE安全性UUID。

版本三

在第三版中,使用加密哈希和应用程序提供的文本字符串来生成UUID。 在此版本中,使用MD5哈希。 基本上,UUID是根据名称生成的。 现在,我们可以使用名称和名称空间来创建一系列UUID。 MD5哈希算法是一种广泛使用的哈希函数,可产生128位哈希值。

最初,MD5被设计为用作加密哈希函数,但现在似乎存在漏洞问题。 找到两条散列为相同值的不同消息太容易了。 因此,它不是您要在应用程序中使用的版本。

版本四

伪随机数生成器,也称为确定性随机位生成器,是一种用于生成数字序列的算法,该数字序列的属性近似于随机数序列的属性。 —维基百科

此版本使用伪随机数生成器生成UUID。 使用非常简单。 字符串的每一位都是完全\”随机\”生成的。 UUID仍然有可能被复制,但由于可能的组合数量很多,所以它很小。 确切的可能性数约为2 12⁸。

到今天为止,第四版已采用大多数编程语言实现。 它非常易于使用。 我将用Java举例:

UUID uuid = UUID.randomUUID();

版本五

版本3和版本5之间的唯一区别是使用了不同的哈希算法。 第五版使用SHA-1而不是MD5。 从技术上讲,它是一种出色的哈希算法,但它也可能遇到与第三版相同的问题。 我不建议使用它。

尽管几乎每个版本都有其长处,但它们也有明显的弱点,可能会损害您的应用程序设计。

第四版是完全随机的,基本上是不可预测的,这是我建议现在使用的版本。

如果您不想在多个数据库实例上发生冲突,或者您不想让ID可预测或提供有关系统的信息,请考虑使用UUID。

结论

UUID的最大好处是,它实际上是唯一的(与保证唯一性相反),对于日常使用来说仍然是完全可以接受的。

这是UUID的主要缺点:

· 例如,无需使用每次在数据库中插入记录时都会增加的索引,而是需要生成UUID。 这可能需要更长的时间。 它没有说明创建的顺序。 如果您需要订购,请考虑不使用UUID对标识符以外的其他东西进行排序。

· 与他们一起工作可能有些奇怪。 UUID也没有说任何有关其所属实体的信息。 这会使调试变得更加困难,尤其是在测试中。

· 该值相当长,可能会影响性能。 但是,如今这些空间更便宜了。

但这也有一些重要的好处:

· UUID的主要优点是它是唯一的。 例如,用户几乎不可能将其猜测为URL参数(公开讨论,因为这可能是安全问题)。 它们在应用程序中是唯一的。

· 它与环境无关。 您可以在任何地方(甚至离线)生成它,而无需依赖数据库来生成标识符。 如果您有多个包含一个数据段(碎片)的数据库,则UUID在所有数据库中都是唯一的,而不仅仅是您现在所在的那个。 这使得在数据库之间移动数据更加安全。

关于作者: 笨笨熊

热门文章