`

唯一ID号生成技术-UUID

JDK 
阅读更多

最近有个项目要求服务器上生成唯一的ID号,首先就想到了UUID,它能够保证唯一性。

 

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

JDK1.5 
如果使用的JDK1.5的话,那么生成UUID变成了一件简单的事,以为JDK实现了UUID: 
java.util.UUID,直接调用即可. 
UUID uuid  =  UUID.randomUUID(); 
String s = UUID.randomUUID().toString();//用来生成数据库的主键id非常不错。。   

UUID是由一个十六位的数字组成,表现出来的形式例如 
550E8400-E29B-11D4-A716-446655440000   

//下面就是实现为数据库获取一个唯一的主键id的代码 
public class UUIDGenerator { 
    public UUIDGenerator() { 
    } 
    /** 
     * 获得一个UUID 
     * @return String UUID 
     */ 
    public static String getUUID(){ 
        String s = UUID.randomUUID().toString(); 
        //去掉“-”符号 
        return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24); 
    } 
    /** 
     * 获得指定数目的UUID 
     * @param number int 需要获得的UUID数量 
     * @return String[] UUID数组 
     */ 
    public static String[] getUUID(int number){ 
        if(number < 1){ 
            return null; 
        } 
        String[] ss = new String[number]; 
        for(int i=0;i<number;i++){ 
            ss[i] = getUUID(); 
        } 
        return ss; 
    } 
    public static void main(String[] args){ 
        String[] ss = getUUID(10); 
        for(int i=0;i<ss.length;i++){ 
            System.out.println(ss[i]); 
        } 
    } 
}  

 

分享到:
评论

相关推荐

    前端项目-node-uuid.zip

    它是一种在分布式系统中生成全局唯一ID的标准方式。根据RFC4122,UUID分为五个版本,其中v1基于时间戳和MAC地址,v4则完全随机生成。`node-uuid`库支持的正是这两种常见的UUID生成策略。 二、node-uuid库详解 1. ...

    Laravel开发-laravel-model-uuid

    - **生成UUID**:在创建新模型时,`HasUuid` trait会自动为模型生成一个UUID。 4. **数据库设置** 需要在数据库表中创建一个UUID字段,例如`uuid`,类型通常设置为`CHAR(36)`或`BINARY(16)`,根据存储方式选择。 ...

    get-uuid.tar.gz

    虽然`os`模块也可以通过`uuid1()`, `uuid3()`, `uuid4()`, `uuid5()`这些函数来生成UUID,但更常见的是直接使用`uuid`模块,它提供了更多的功能和便利。 标题"get-uuid.tar.gz"暗示了这是一个关于获取UUID的资源包...

    开源项目-frankenbeanies-uuid4.zip

    UUID4是UUID标准中的一个变种,它使用随机数生成器来创建128位的唯一ID,通常在分布式系统、数据库记录标识或对象持久化等场景中非常有用。 在这个项目中,我们主要关注的是UUID4的实现。UUID4通常由16字节的随机...

    java生成唯一id(uuid)(不依赖jdk5,自己实现的)

    时间戳是自特定时刻以来的毫秒数,节点ID用于标识生成UUID的设备,序列号用于在同一毫秒内生成多个UUID,变种和版本则提供了UUID的类型信息。 在Java中,我们可以通过以下步骤实现一个简单的UUID生成器: 1. **...

    java生成8位UUID

    java 生成8位UUID,解决UUID2太长的问题,欢迎下载。后续代码,陆续放出

    Laravel开发-eloquent-uuid

    传统的自增ID在某些情况下可能暴露敏感信息,例如当用户看到连续的ID号时,他们可以推断出数据库中的记录数量。而UUID则提供了一种更安全、更隐私友好的方式,因为它们是随机生成的,很难被预测或关联到特定的数据...

    Laravel开发-eloquent-uuid-for-key

    综上所述,"Laravel开发-eloquent-uuid-for-key"涵盖了将Eloquent模型的主键从默认的自增ID替换为UUID的全过程,包括安装扩展包、配置模型、数据库迁移、查询和关联操作以及序列化处理。这样做的好处在于,我们可以...

    Data-UUID-0.14.tar.gz_Data::uuid_uuid

    `Data::UUID`提供了丰富的功能,如生成UUID、将UUID转换为字符串或二进制格式等。以下是一些基本用法示例: ```perl use Data::UUID; my $ug = Data::UUID-&gt;new; my $uuid_str = $ug-&gt;create_str(); # 生成字符串...

    uuid 生成器 UUID_GEN.exe

    2. 时间戳(Time-Most-Significant-Bits):占32位,位于第二部分,例如`e89b12d3`,它记录了生成UUID的时间,但不是人类可读的时间格式。 3. 时钟序列(Clock Sequence):占14位,位于第三部分,例如`a456`,用于...

    uuid-1.6.2.tar.gz

    在PostgreSQL数据库中,uuid-ossp扩展提供了生成UUID的功能,这对于分布式系统、跨数据库同步或需要全局唯一ID的场景非常有用。 标题中的"uuid-1.6.2.tar.gz"是一个压缩包文件,它是uuid-ossp扩展的特定版本。这个...

    UUID全局唯一标识符

    由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,...

    Java 生成 UUID通用唯一标识符.docx

    此外,UUID类还提供了其他构造方法,如使用long型的最高位和最低位生成UUID,或者通过字符串解析创建UUID对象。 UUID在Java应用中的常见用途包括: - 生成独一无二的文件名,避免文件重名问题。 - 在Web应用程序中...

    java生成UUID通用唯一识别码.docx

    时间戳基于生成UUID的系统时间,确保在时间上的唯一性;节点ID通常基于硬件地址,增加了空间上的唯一性;时钟序列和变长用于防止在极短时间内生成重复的UUID;版本号则表示UUID的生成算法。 在实际应用中,UUID可以...

    UUID.rar_UUID C_uuid_uuid 加密_uuid.c_wince UUID

    - 在C语言中,实现UUID通常需要调用特定的库函数,例如在Windows系统中,可以使用`UuidCreate` API来生成UUID。 - `uuid.c`可能包含一个C语言的实现,它可能包含了UUID的生成、解析和比较等操作的函数定义。 - ...

    JavaUUIDGenerator.zip

    通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与 时间有关,如果...

    详解php中生成标准uuid(guid)的方法

    如果环境中的PHP版本不支持`com_create_guid`函数,该PHP函数示例就使用了`uniqid`函数,`uniqid`能够生成基于当前时间微秒数的唯一ID,但因为不保证足够唯一,所以会结合`md5`哈希函数来提高唯一性。接着通过字符串...

    Bluetooth 16-bit UUID Numbers Document

    其中,时域和时钟序列用于标识 UUID 的生成时间和顺序,节点 ID 用于标识生成 UUID 的设备,顺序号用于标识 UUID 在设备中的顺序,Variant 用于标识 UUID 的类型。 UUID 在蓝牙技术中的应用 在蓝牙技术中,UUID ...

Global site tag (gtag.js) - Google Analytics