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("-", "");//替换掉中间的那个横杠  

 

方法摘要
 intclockSequence()
          与此 UUID 相关联的时钟序列值。
 intcompareTo(UUID val)
          将此 UUID 与指定的 UUID 比较。
 booleanequals(Object obj)
          将此对象与指定对象比较。
static UUIDfromString(String name)
          根据 toString() 方法中描述的字符串标准表示形式创建 UUID
 longgetLeastSignificantBits()
          返回此 UUID 的 128 位值中的最低有效 64 位。
 longgetMostSignificantBits()
          返回此 UUID 的 128 位值中的最高有效 64 位。
 inthashCode()
          返回此 UUID 的哈希码。
static UUIDnameUUIDFromBytes(byte[] name)
          根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。
 longnode()
          与此 UUID 相关的节点值。
static UUIDrandomUUID()
          获取类型 4(伪随机生成的)UUID 的静态工厂。
 longtimestamp()
          与此 UUID 相关联的时间戳值。
 StringtoString()
          返回表示此 UUIDString 对象。
 intvariant()
          与此 UUID 相关联的变体号。
 intversion()
          与此 UUID 相关联的版本号。

 

 

Java生成唯一UUID的方法通常是指使用Universally Unique Identifier(通用唯一识别码),这是一种32个十六进制数字的字符串,通过特殊算法计算得出,目的是保证在时间和空间上的唯一性。Java生成UUID的一个常见方式是使用`java.util.UUID`类,它提供了一系列静态方法来生成UUID。以下是两种常见的方法: 1. 使用`randomUUID()`方法生成随机UUID: ```java import java.util.UUID; public class GenerateUUID { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.println("生成的随机UUID是: " + uuid.toString()); } } ``` 这个方法会生成一个随机的UUID,它包含了随机生成的128位数字。 2. 使用`nameUUIDFromBytes(byte[] name)`方法生成基于命名空间的UUID: ```java import java.util.Arrays; import java.util.UUID; public class GenerateUUID { public static void main(String[] args) { // 示例:以某个字符串为命名空间生成UUID String name = "example.com"; byte[] nameBytes = name.getBytes(); UUID uuid = UUID.nameUUIDFromBytes(nameBytes); System.out.println("基于命名空间生成UUID是: " + uuid.toString()); } } ``` 这个方法可以生成一个基于输入命名空间的UUID,它将这个命名空间的信息转换成一个特定格式的字节数组,然后通过算法计算生成UUID。 这两种生成UUID的方式都可以保证在不同的时间和空间中产生的值具有很高的唯一性,但仍然有极小的概率发生碰撞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值