通用唯一识别码 (Universally Unique Identifier, UUID) 是一个软件建构的标准,亦为自由软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。
UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 文件系统、LUKS 加密分区区、GNOME、KDE、Mac OS X 等等。另外我们也可以在 e2fsprogs 包中的 UUID 库找到实现。
[编辑]定义
一组 UUID,系由一串 16 位组(亦称 16 字节,或 128 位)的16进位数字所构成,是故UUID理论上的总数为216 x 8=2128,约等于3.4 x 1038。也就是说若每奈秒产生1兆个UUID,要花100亿年才会将所有UUID用完。
UUID的标准型式包含32个16进位数字,以连字号分为五段,形式为8-4-4-4-12的32个字符。示例;
550e8400-e29b-41d4-a716-446655440000
UUID亦可刻意重复以表示同类。例如说微软的COM中,所有组件皆必须实现出IUnknown接 口,方法是产生一个代表IUnknown的UUID。无论是程序试图访问组件中的IUnknown接口,或是实现IUnknown接口的组件,只要 IUnknown一被使用,皆会被参考至同一个ID:00000000-0000-0000-C000-000000000046。
[编辑]随机UUID的重复机率
随机产生的UUID(例如说由java.util.UUID类产生的)的128个位中,有122个位是随机产生,4个位在此版本('Randomly generated UUID')被使用,还有2个在其变体('Leach-Salz')中被使用。利用生日悖论,可计算出两笔UUID拥有相同值的机率约为
以下是以x=2122计算出n笔UUID后产生碰撞的机率:
68,719,476,736 = 236 0.0000000000000004 (4 x 10-16)
2,199,023,255,552 = 241 0.0000000000004 (4 x 10-13)
70,368,744,177,664 = 246 0.0000000004 (4 x 10-10)
与被陨石击中的机率比较的话,已知一个人每年被陨石击中的机率估计为170亿分之1[1],也就是说机率大约是0.00000000006 (6 x 10-11),等同于在一年自带立数十兆笔UUID并发生一次重复。换句话说,每秒产生10亿笔UUID,100年后只产生一次重复的机率是50%。如果地球上每个人都各有6亿笔UUID,发生一次重复的机率是50%。
产生重复UUID并造成错误的情况非常低,是故大可不必考虑此问题。
机率也与乱数产生器的品质有关。若要避免重复机率提高,必须要使用奠基于密码学上的假乱数产生器来生成值才行。
分享到:
相关推荐
java 提供通用唯一识别码(universally unique identifier)(UUID)实现 java 提供通用唯一识别码(universally unique identifier)(UUID)实现 java 提供通用唯一识别码(universally unique identifier)(UUID...
UUID(Universally Unique Identifier),即通用唯一标识符,是一种128位的数字标识符,旨在跨空间和时间保证其唯一性。UUID最初应用于Apollo网络计算系统,并在后续的应用中被Open Software Foundation(OSF)的...
UUID(Universally Unique Identifier),即通用唯一识别码,是一种在分布式系统中创建唯一标识符的标准。该标准由开源软件基金会(Open Software Foundation, OSF)在分布式计算环境(Distributed Computing ...
UUID(Universally Unique Identifier,通用唯一识别码)是软件建构的标准,也是被开源软件基金会(Open Software Foundation, OSF)的组织在分布式计算环境(Distributed Computing Environment, DCE)领域的一部分...
UUID,全称Universally Unique Identifier,是通用唯一识别码的缩写,是一种在不考虑时间空间等外在因素的情况下,能够在全球范围内生成不重复的标识符的技术。在Java中,UUID类提供了生成UUID的能力,这对于分布式...
通用唯一识别码(Universally Unique Identifier,UUID)是一种在分布式计算环境中用来标识信息的编码方式。UUID 是由128位数字组成的标识符,通常用16进制表示,长度为32个字符。它的设计使得在全球范围内,任何...
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码...
UUID,即通用唯一标识符(Universally Unique Identifier),是一种用于生成全球唯一标识的标准化机制,其目的是确保在分布式系统环境中创建的每个实体都有一个不可重复的标识。在Java中,UUID由java.util包下的UUID...
UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, 命名空间, 随机数, 伪随机数来保证生成ID的唯一性, 有着固定的大小( 128 ...
UUID(Universally Unique Identifier)是一种全球唯一的标识符,它是由128位数字组成的。在Android中,我们可以使用Java的`java.util.UUID`类来生成UUID。这个类提供了`randomUUID()`方法,它会生成一个基于当前...
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不...
UUID,全称Universally Unique Identifier,是一种用于标识信息的字符串,具有全球唯一性。在C语言环境下生成UUID,主要是为了在分布式系统或者网络环境中为数据对象分配一个全局唯一的标识符。UUID由128位数字组成...
Java 获取 UUID 是一个非常常见的操作,UUID(Universally Unique Identifier,全球唯一标识符)是一种软件建筑中用于标识信息的标识符。UUID 的主要用途是为了在分布式系统中生成唯一的标识符,以便于标识一些信息...
UUID(Universally Unique Identifier)和GUID(Globally Unique Identifier)是计算机编程中用于标识信息的128位数字。UUID和GUID实际上是一回事,它们遵循相同的规范,只是在不同的上下文中使用不同的名称。UUID...
UUID,全称 Universally Unique Identifier,译为通用唯一标识符。它是一种用于标识信息的128位长的数字串,通常以十六进制形式表示。UUID 由五部分组成:时域、时钟序列、节点 ID、 顺序号和 Variant。其中,时域...
一个128位UUID通常按照特定的结构组织,由三部分组成:全局唯一标识符(Global Universally Unique Identifier,GUUI)、公司标识符(Company Identifier,CID)和唯一序列号(Sequential Number)。GUUI部分遵循ISO...
UUID,全称Universally Unique Identifier,即通用唯一识别码,是由一组128位数字组成的数字序列,通常被表示为32个十六进制数,分为5组,用连字符分隔,形式如:`8b1a9953-cf4c-45da-8e57-fb8d77662680`。...
UUID,全称Universally Unique Identifier,是全局唯一标识符的缩写,是一种软件构造标准,用于在分布式系统中唯一标识信息。UUID的主要目的是解决网络系统中的唯一性问题,确保在网络中的任何地方都不会出现重复的...