©著作权归作者所有:来自51CTO博客作者leizhimin的原创作品,如需转载,请注明出处,否则将追究法律责任<br>https://blog.51cto.com/lavasoft/347354<br>Java的UUID生成工具并发测试<br>一、认识UUID<br>UUID<br>维基百科,自由的百科全书<br>通用唯一识别码 (Universally Unique Identifier, UUID) 是一个软件建构的标准,亦为自由软件基金会 (Open Software Foundation, OSF) 的组织在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部份。<br>UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 文件系统、LUKS 加密分区区、GNOME、KDE、Mac OS X 等等。另外我们也可以在 e2fsprogs 包中的 UUID 库找到实现。<br>[编辑] 定义<br>一组 UUID,系由一串 16 字节(亦称 16 字节,或128 位)的16进位数字所构成,是故UUID理论上的总数为216 x 8=2128,约等于3.4 x 1038。也就是说若每奈秒产生1兆个UUID,要花100亿年才会将所有UUID用完。<br>UUID的标准类型包含32个16进位数字,以连字号分为五段,形式为8-4-4-4-12的32个字符。示例;<br>550e8400-e29b-41d4-a716-446655440000<br>UUID亦可刻意重复以表示同类。例如说微软的COM中,所有组件皆必须实现出IUnknown接口,方法是产生一个代表IUnknown的UUID。无论是程序试图访问组件中的IUnknown接口,或是实现IUnknown接口的组件,只要IUnknown一被使用,皆会被参考至同一个ID:00000000-0000-0000-C00