为什么java中生成32位随机ID永远不会重复。
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在
同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址
、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部
分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同)
,时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),
UUID的唯一缺陷在于生成的结果串会比较长。
什么是UUID,Java中怎么产生UUID
UUID: 通用唯一识别码 (Universally Unique Identifier),是根据时间,机器码,网络地址生成的全球唯一数。
引入 java.util.UUID,直接调用以下即可得到一个32为的随机数,即UUID.
UUID uuid = UUID.randomUUID();
什么是UUID,Java中怎么产生UUID?
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
生成UUID的方法:
public static String getUUID32(){ String uuid = UUID.randomUUID().toString().replace(“-“, “”).toLowerCase(); return uuid;// return UUID.randomUUID().toString().replace(“-“, “”).toLowerCase();}
注:因为一般数据库主键为String类型,所以接收类型为String,生成的uuid数据包含-,所以要去掉-,故UUID.randomUUID().toString().replace(“-“, “”).toLowerCase()。
扩展资料:
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在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),可以从cflib 下载CreateGUID() UDF进行转换。
参考资料:百度百科-UUID
java uuid 和guid 的区别
UUID是一个由4个连字号(-)将32个字节长的字符串分隔后生成的字符串,总共36个字节长。比如:550e8400-e29b-41d4-a716-446655440000
GUID 是微软对UUID这个标准的实现。UUID是由开放软件基金会(OSF)定义的。UUID还有其它各种实现,不止GUID一种。比如我们这里在Java中用到的。
java一个util类方法,为什么生成的uuid会占用到大部分程序处理时间
//得到指定数量的UUID,以数组的形式返回
public static String[] getUUID(int num){
if( num = 0)
return null;
String[] uuidArr = new String[num];
for (int i = 0; i uuidArr.length; i++) {
uuidArr[i] = getUUID32();
}
return uuidArr;
}
//得到32位的uuid
public static String getUUID32(){
return UUID.randomUUID().toString().replace(“-“, “”).toLowerCase();
}
主要是生成的过程中有个循环,这个时间长点