java UUID

本文介绍了UUID全局唯一标识符的概念、特点及其在数据库主键生成中的应用。通过Java代码实例展示了如何生成和处理UUID,包括获取UUID、删除分隔符以及用于数据库主键的生成。

  UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。
  标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx (8-4-4-4-12)。
实例:
1、获取UUID

import java.util.*;
public class  UUIDTest
{
    public static void main(String[] args) 
    {
        UUID uuid = UUID.randomUUID();
        System.out.println(uuid);
    }
}

结果:64e81107-06ed-47fd-bdb1-cd19b653709a

2、删除“-”

import java.util.*;
public class  UUIDTest
{
    public static void main(String[] args) 
    {
        UUID uuid = UUID.randomUUID();
        String str = uuid.toString();
        String uid = str.replaceAll("-","");
        System.out.println(uid);
    }
}

结果:e606cd8b79824f5787009c502e1714cf

3、用来生成数据库的主键id

由于UUID的特性,是一个产生数据库主键id的好方法,可以结合上述程序,使用for循环生成多个UUID。

### UUID 介绍 UUID(Universally Unique Identifier)即全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,由一个十六位的数字组成,表现出来的形式由当前日期和时间、时钟序列、全局唯一的 IEEE 机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得)等部分组合而成。其唯一缺陷在于生成的结果串会比较长,生成的字符串长度为 36 [^2]。 ### 使用方法 #### 生成随机 UUIDJava 中,可以使用 `java.util.UUID` 类的 `randomUUID()` 方法来生成随机的 UUID,示例代码如下: ```java import java.util.UUID; public class UUIDExample { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.println(uuid); } } ``` 通过 `randomUUID()` 方法生成的 UUID 版本默认为 4 [^1]。 #### 基于时间生成 UUID 示例代码如下: ```java import java.util.UUID; public class TimeBasedUUIDExample { public static void main(String[] args) { // 这里示例代码有误,实际不能直接 new UUID(),正确生成基于时间的 UUID 较复杂 // 以下仅为示例结构 // UUID uuid = new UUID(); // System.out.println(uuid); // System.out.println(uuid.time); } } ``` 实际生成基于时间的 UUID 可参考相关资料:[http://wiki.apache.org/cassandra/TimeBaseUUIDNotes](http://wiki.apache.org/cassandra/TimeBaseUUIDNotes) 、[http://wiki.apache.org/cassandra/FAQ#working_with_timeuuid_in_java](http://wiki.apache.org/cassandra/FAQ#working_with_timeuuid_in_java) 、[http://johannburkard.de/software/uuid/](http://johannburkard.de/software/uuid/) [^4]。 ### 相关特性 - **唯一性**:在同一时空中的所有机器上生成的 UUID 都是唯一的。 - **随机性**:使用 `randomUUID()` 方法生成的 UUID 具有随机性,其第一个部分与时间有关,如果在生成一个 UUID 之后,过几秒又生成一个 UUID,则第一个部分不同,其余相同。 - **版本**:UUID 有不同的版本,通过 `randomUUID()` 方法生成的 UUID 版本默认为 4 [^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值