UUID或者UNID或者UID,是一个统一唯一标识,可以用来标记文档、数据或其它需要唯一标识的东西。Java 5.0内置UUID的实现,见java.util.UUID. 下面代码是找到的2种实现方式,随手测了一下,两者时间效率居然出奇的相似,在10000000次循环中,均在660秒左右。
import java.math.BigInteger;
import java.util.Random;
import java.util.UUID;
public class UUIDTest {
private static UUID uid = null;
private static final Random RANDOM = new Random();
public static String getUUID() {
uid = UUID.randomUUID();
String idstr = uid.toString().replace("-", "");
return idstr.toUpperCase();
}
public static String generateGUID(){
return new BigInteger(165, RANDOM).toString(36).toUpperCase();
}
/**
* @param args
*/
public static void main(String[] args) {
int cycles = 100000000;
long start = System.currentTimeMillis();
for (int i = 0; i < cycles; i++) {
//System.out.println(getUUID());
getUUID();
}
long end = System.currentTimeMillis();
String msg = "Time(ms) of getUUID() " + cycles + " times: " ;
System.out.println (msg + (end - start));
long start1 = System.currentTimeMillis();
for (int i = 0; i < cycles; i++) {
//System.out.println(generateGUID());
generateGUID();
}
long end1 = System.currentTimeMillis();
msg = "Time(ms) of generateGUID() " + cycles + " times: " ;
System.out.println (msg + (end1 - start1));
}
}
2者所生成ID字串如下:
引用
FB0F88715B564691A85F28DBFDD57D90
E50999DA27624D7E81B89C47DF02DA92
E601B3C99AC4490E97EA0174860EEFDF
839DF94E497E45D09D5D7F34C531511F
54459B4DACF94097962A1C6017A35882
6A6CAF5667F74C24A28141CD287C44BE
7DF3E7F386934C4E9842E980E9E4C652
3370A0549E3C4C5EA3A5EFC53E5DC9B6
563F56BA980F43D3A07DF58B9F95F2EC
0968563C99E046B9944DFDD36CDDF5E2
GV9VQMTJC4NDFV5IB7N5IDWABQWF8M4M
LD0U9UKFPGG9LKKYHEWJSJ40OC57JHIQ
J9KTPM0Y9676256UNQTO7HFQG0G0CBDK
H0B4IVYNO99N918YIJ12PKA4T0R6P394
CTYE9DTF9IBUXXOR1SYCJYCRXD9H6KO9
2ZQ1CH3MGP5M3AOTFH1VJ3ZQ8M0CH2I5
MDGHQLHQ34A0Q9JNJ7S6WFAN8YV0M652
HVC2R84PT2ZKABL2FSSR84K9N5IG98WP
MGZ3NZJ5RS51KCL12KHLGURXCHZK8YNK
129RZPH0UPQO8SMCZZJFTY37G47T19KL
时间测试结果:
引用
Time(ms) of getUUID() 100000000 times: 669516
Time(ms) of generateGUID() 100000000 times: 663656
分享到:
相关推荐
关于 UUID 的校验,Java 提供了多种方法来实现。我们可以使用正则表达式来匹配 UUID 的格式,例如:^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$。 在上面的示例代码中,我们定义了一个 ...
总之,UUID16是关于Java中生成全局唯一标识符的一种方式,它涉及到UUID的版本1生成机制,包含时间戳、节点ID和序列号,以确保在分布式环境中生成的标识符的唯一性。通过理解和使用UUID,我们可以有效地在各种场景下...
<groupId>com.fasterxml.uuid</groupId> <artifactId>java-uuid-generator <packaging>bundle <name>Java UUID Generator <version>3.1.5</version>
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复
java 生成8位UUID,解决UUID2太长的问题,欢迎下载。后续代码,陆续放出
### JAVA UUID 生成知识点 #### 一、UUID 概述 - **定义**: UUID (Universally Unique Identifier) 即全局唯一标识符,是一种用于在分布式系统中唯一标识信息的方法。 - **长度**: UUID 的标准形式为 128 位(16 ...
java生成唯一索引,Long型,区别uuid
在Java中,UUID提供了标准的方法来生成全局唯一的标识符。UUID主要由三部分组成:时间戳、随机数和节点ID,这确保了其在全球范围内的唯一性。 首先,我们来看JDK自带的`java.util.UUID`类。这个类提供了多种生成...
在Java中,虽然标准库提供有`java.util.UUID`类来生成和处理UUID,但其性能并非最优,特别是在大规模生成和解析时。为了提高效率,开发者有时会寻求更高效的解决方案,比如`fast-uuid`。 `fast-uuid`是一个专门为...
### Java 中将 UUID 存储为 Base64 字符串 #### 一、引言 在软件开发领域,尤其是在处理大规模分布式系统时,UUID(通用唯一标识符)因其全局唯一性而广泛应用于各种场景,例如作为数据库记录的主键、会话标识等。...
在Java编程中,UUID(Universally Unique Identifier)是一种标准的128位的唯一标识符,通常用于生成不可预测的全局唯一ID。然而,标准的UUID由32个16进制数字组成,形式上类似于“123e4567-e89b-12d3-a456-...
UUID生成工具类
java-uuid-generator-3.1.3.jar 部分开源源代码用到这里面的类。
日常开发中我们会遇到使用字符串ID,最先行到的就是UUID生成我们的随机字符串,但是UUID也是会出现重复的几率的!所以我们引入的新的ULID ULID的特性 与UUID的128位兼容性 每毫秒1.21e + 24个唯一ULID 按字典顺序...
Java Uuid生成器(JUG) JUG是一组用于处理UUID的Java类:使用任何标准方法生成UUID,有效输出,排序等。 它根据生成UUID(有关更多说明,另请参见) JUG由Tatu Saloranta( )最初于2002年编写,并且经过多年的...
在Java编程中,UUID(Universally Unique Identifier)是一种用于生成全局唯一标识符的标准。一个UUID由32个16进制数字组成,通常分为五段,用短横线分隔,形如`8-4-4-4-12`的36个字符。在32位UUID中,我们实际上是...
JUG,即Java UUID Generator,是一个开源库,扩展了Java标准库中的UUID功能,提供了更高效、更灵活的UUID生成策略。 在Java中,标准库通过`java.util.UUID`类来生成UUID。这个类提供了多种方法,如`randomUUID()`...
在Java编程语言中,生成UUID非常简单,可以直接使用`java.util.UUID`类提供的静态方法。例如,`UUID.randomUUID()`会返回一个基于时间的UUID,这是最常用的类型。然而,如果要根据IP地址或其他自定义信息生成UUID,...
java uuid 产生全球唯一序号,不重复 可以用作数据库的发号器 mojianpo 转载
在Java编程中,生成唯一的ID(Universal Unique Identifier,UUID)是一项常见的需求,特别是在数据库记录、分布式系统中的对象标识等方面。UUID是一种128位的数字,通常以32个字符的16进制形式表示,确保在全球范围...