最近有个项目要求服务器上生成唯一的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]);
}
}
}
分享到:
相关推荐
它是一种在分布式系统中生成全局唯一ID的标准方式。根据RFC4122,UUID分为五个版本,其中v1基于时间戳和MAC地址,v4则完全随机生成。`node-uuid`库支持的正是这两种常见的UUID生成策略。 二、node-uuid库详解 1. ...
- **生成UUID**:在创建新模型时,`HasUuid` trait会自动为模型生成一个UUID。 4. **数据库设置** 需要在数据库表中创建一个UUID字段,例如`uuid`,类型通常设置为`CHAR(36)`或`BINARY(16)`,根据存储方式选择。 ...
虽然`os`模块也可以通过`uuid1()`, `uuid3()`, `uuid4()`, `uuid5()`这些函数来生成UUID,但更常见的是直接使用`uuid`模块,它提供了更多的功能和便利。 标题"get-uuid.tar.gz"暗示了这是一个关于获取UUID的资源包...
UUID4是UUID标准中的一个变种,它使用随机数生成器来创建128位的唯一ID,通常在分布式系统、数据库记录标识或对象持久化等场景中非常有用。 在这个项目中,我们主要关注的是UUID4的实现。UUID4通常由16字节的随机...
时间戳是自特定时刻以来的毫秒数,节点ID用于标识生成UUID的设备,序列号用于在同一毫秒内生成多个UUID,变种和版本则提供了UUID的类型信息。 在Java中,我们可以通过以下步骤实现一个简单的UUID生成器: 1. **...
java 生成8位UUID,解决UUID2太长的问题,欢迎下载。后续代码,陆续放出
传统的自增ID在某些情况下可能暴露敏感信息,例如当用户看到连续的ID号时,他们可以推断出数据库中的记录数量。而UUID则提供了一种更安全、更隐私友好的方式,因为它们是随机生成的,很难被预测或关联到特定的数据...
综上所述,"Laravel开发-eloquent-uuid-for-key"涵盖了将Eloquent模型的主键从默认的自增ID替换为UUID的全过程,包括安装扩展包、配置模型、数据库迁移、查询和关联操作以及序列化处理。这样做的好处在于,我们可以...
`Data::UUID`提供了丰富的功能,如生成UUID、将UUID转换为字符串或二进制格式等。以下是一些基本用法示例: ```perl use Data::UUID; my $ug = Data::UUID->new; my $uuid_str = $ug->create_str(); # 生成字符串...
2. 时间戳(Time-Most-Significant-Bits):占32位,位于第二部分,例如`e89b12d3`,它记录了生成UUID的时间,但不是人类可读的时间格式。 3. 时钟序列(Clock Sequence):占14位,位于第三部分,例如`a456`,用于...
在PostgreSQL数据库中,uuid-ossp扩展提供了生成UUID的功能,这对于分布式系统、跨数据库同步或需要全局唯一ID的场景非常有用。 标题中的"uuid-1.6.2.tar.gz"是一个压缩包文件,它是uuid-ossp扩展的特定版本。这个...
由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,...
此外,UUID类还提供了其他构造方法,如使用long型的最高位和最低位生成UUID,或者通过字符串解析创建UUID对象。 UUID在Java应用中的常见用途包括: - 生成独一无二的文件名,避免文件重名问题。 - 在Web应用程序中...
时间戳基于生成UUID的系统时间,确保在时间上的唯一性;节点ID通常基于硬件地址,增加了空间上的唯一性;时钟序列和变长用于防止在极短时间内生成重复的UUID;版本号则表示UUID的生成算法。 在实际应用中,UUID可以...
- 在C语言中,实现UUID通常需要调用特定的库函数,例如在Windows系统中,可以使用`UuidCreate` API来生成UUID。 - `uuid.c`可能包含一个C语言的实现,它可能包含了UUID的生成、解析和比较等操作的函数定义。 - ...
通常平台会提供生成UUID的API。UUID按照开放软件基金会 (OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与 时间有关,如果...
如果环境中的PHP版本不支持`com_create_guid`函数,该PHP函数示例就使用了`uniqid`函数,`uniqid`能够生成基于当前时间微秒数的唯一ID,但因为不保证足够唯一,所以会结合`md5`哈希函数来提高唯一性。接着通过字符串...
其中,时域和时钟序列用于标识 UUID 的生成时间和顺序,节点 ID 用于标识生成 UUID 的设备,顺序号用于标识 UUID 在设备中的顺序,Variant 用于标识 UUID 的类型。 UUID 在蓝牙技术中的应用 在蓝牙技术中,UUID ...