java生成UUID通用唯一识别码

Posted 茅坤宝骏氹

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java生成UUID通用唯一识别码相关的知识,希望对你有一定的参考价值。

一、UUID概述

UUID含义是通用唯一识别码 (Universally Unique Identifier),这是一个软件建构的标准,也是被开源软件基金会 (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 等等。

UUID的唯一缺陷在于生成的结果串会比较。 

 

二、UUID 组成

    UUID保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
UUID组成部分:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。


在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,
其格式为:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。

而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12);

 

三、java使用UUID

java.util.UUID 类表示一个不变的通用唯一标识符(UUID)。以下是有关UUID的要点:

  • 一个UUID表示一个128位的值。

  • 它是用于创建随机文件名,在Web应用程序的会话ID,事务ID等。

  • 还有UUID四种不同的基本类型:基于时间,DCE安全性,基于名称,并随机生成的UUID。

 

以下是java.util.UUID类的声明:

public final class UUID
   extends Object
      implements Serializable, Comparable<UUID>

 

UUID的使用:

//生成的id 752d231c-e5a3-871c-65d4-142dfa562cb4中间含有横杠,用来生成数据库的主键id是很实用的。
UUID uuid  =  UUID.randomUUID();
String id=uuid.toString();
id=id.replace("-", "");//替换掉中间的那个横杠  

 

方法摘要
 int clockSequence()
          与此 UUID 相关联的时钟序列值。
 int compareTo(UUID val)
          将此 UUID 与指定的 UUID 比较。
 boolean equals(Object obj)
          将此对象与指定对象比较。
static UUID fromString(String name)
          根据 toString() 方法中描述的字符串标准表示形式创建 UUID
 long getLeastSignificantBits()
          返回此 UUID 的 128 位值中的最低有效 64 位。
 long getMostSignificantBits()
          返回此 UUID 的 128 位值中的最高有效 64 位。
 int hashCode()
          返回此 UUID 的哈希码。
static UUID nameUUIDFromBytes(byte[] name)
          根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。
 long node()
          与此 UUID 相关的节点值。
static UUID randomUUID()
          获取类型 4(伪随机生成的)UUID 的静态工厂。
 long timestamp()
          与此 UUID 相关联的时间戳值。
 String toString()
          返回表示此 UUIDString 对象。
 int variant()
          与此 UUID 相关联的变体号。
 int version()
          与此 UUID 相关联的版本号。

 

 





















以上是关于java生成UUID通用唯一识别码的主要内容,如果未能解决你的问题,请参考以下文章

linux C语言如何生成uuid(通用唯一识别码Universally Unique Identifier)?

linux C语言如何生成uuid(通用唯一识别码Universally Unique Identifier)?

Spring底层系列:UUID通用唯一识别码

通用唯一识别码——UUID(Python)

UUID.randomUUID()生成唯一识别码

stout代码分析之五:UUID类