`

UUID的简介,通用唯一识别码 (Universally Unique Identifier, UUID)

    博客分类:
  • java
 
阅读更多
通用唯一识别码 (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生成UUID通用唯一识别码.docx

    UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) ...

    UUID SPEC (Universally Unique IDentifier (UUID) URN Namespace)

    Industry SPEC about how to calculate UUID and format.

    Python UUID模块介绍及基本使用.docx

    UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写 目的,是让分布式系统中的所有元素,都能有唯一的辨识信息 不需要通过中央控制端来做辨识信息的指定 场景: 不需考虑数据库创建时的名称...

    UUID全局唯一标识符

    UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码...

    UUID完全解析.txt

    UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) ...

    获取设备唯一标识符UUID

    读取设备的UUID(Universally Unique Identifier)并通过KeyChain记录。

    Python通用唯一标识符uuid模块使用案例

     UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, 命名空间, 随机数, 伪随机数来保证生成ID的唯一性, 有着固定的大小( 128 ...

    [示例][PHP]生成UUIDs的PHP库.zip

    UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不...

    Android单片机与蓝牙模块通信实例代码

     蓝牙3.0及以下版本编程需要使用UUID,UUID是通用唯一识别码(Universally Unique Identifier),这是一个软件构建的标准,也是被开源基金会组织应用在分布式计算环境领域的一部分。在蓝牙3.0及下一版本中,UUID被...

    libuuid-2.23.2-43.el7.x86_64.rpm

    UUID含义是通用唯一识别码(Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, ...

    使用PowerShell .Net获取电脑中的UUID

    UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, ...

    php生成局部唯一识别码LUID的代码

    UUID(Universally Unique Identifier),GUID都是希望在整个时空范围内能产生唯一识别码,这在分布式计算环境下是必要的. 然而,如果仅仅是想在一个受限定的局部环境下,想生成一个”局部唯一识别码”,使用UUID就是杀鸡用...

    Javascript生成全局唯一标识符(GUID,UUID)的方法

    全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。 GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx...

    ThinkPad Hardware Maintenance Diskette 1.76&1.75(HMD)

    作为蓝快配件的thinkpad主板是没有写入UUID(The Universally Unique Identifier,通用唯一识别信息)与机器型号的,这样我们就不能使用System update进行自动升级,许多软件也无法安装;HDM就是蓝快工作人员用来写入...

    python生成并处理uuid的实现方式

    UUID(Universally Unique Identifier)是通用唯一识别码,在许多领域用作标识,比如我们常用的数据库也可以用它来作为主键,原理上它是可以对任何东西进行唯一的编码的。 作为新手一看到类似varchar(40)这样的主键...

    Python用UUID库生成唯一ID的方法示例

    它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID —— Universally Unique IDentifier,Python 中叫 UUID。 它通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生成ID的唯一性。 UUID主要有五个...

    IBM ThinkPad Hardware Maintenant Diskette(HMD) ver1.74

    蓝快备件自然是质量没话说,不过如果不巧主板是蓝快备件,就有一点小小的麻烦:大家也都知道,作为蓝快配件的主板是没有写入UUID(The Universally Unique Identifier,通用唯一识别信息)与机器型号的,这样我们就不...

    lenovo ibm hdm 1.69-1.76 iso

    蓝快备件自然是质量没话说,不过如果不巧主板是蓝快备件,就有一点小小的麻烦:大家也都知道,作为蓝快配件的主板是没有写入UUID(The Universally Unique Identifier,通用唯一识别信息)与机器型号的,这样我们就不...

    quuid.rar_class A

    The QUuid class stores a Universally Unique Identifier (UUID) for Linux.

Global site tag (gtag.js) - Google Analytics