`
metaphy
  • 浏览: 344542 次
  • 性别: Icon_minigender_1
  • 来自: 大西洋底
社区版块
存档分类
最新评论

关于Java的UUID

 
阅读更多
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
1
4
分享到:
评论
4 楼 Link028 2012-08-31  
在10000000次循环中,均在660秒左右
这效率也太低了嘛,谁还敢用?
你把 uid.toString().replace("-", ""); 去掉
看看,应该会快很多的
3 楼 metaphy 2012-08-30  
自增需要一个地方保存当前值,还要考虑同步等一些问题
2 楼 wingsrao 2012-08-30  
w156445045 写道
我ID 是自动增长的,觉得没必要搞UUID 这么麻烦~

这个你只是暂时没用,但是你肯定会用到的。自增不一定就不一样了。
1 楼 w156445045 2012-08-30  
我ID 是自动增长的,觉得没必要搞UUID 这么麻烦~

相关推荐

    浅谈java获取UUID与UUID的校验

    关于 UUID 的校验,Java 提供了多种方法来实现。我们可以使用正则表达式来匹配 UUID 的格式,例如:^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$。 在上面的示例代码中,我们定义了一个 ...

    java UUID16的生成下载

    总之,UUID16是关于Java中生成全局唯一标识符的一种方式,它涉及到UUID的版本1生成机制,包含时间戳、节点ID和序列号,以确保在分布式环境中生成的标识符的唯一性。通过理解和使用UUID,我们可以有效地在各种场景下...

    Java UUID Generator-UUID 生成器 JUG 是一个纯 Java 的 UUID 生成器

    &lt;groupId&gt;com.fasterxml.uuid&lt;/groupId&gt; &lt;artifactId&gt;java-uuid-generator &lt;packaging&gt;bundle &lt;name&gt;Java UUID Generator &lt;version&gt;3.1.5&lt;/version&gt;

    java生成8位UUID

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

    JAVA UUID 生成.txt

    ### JAVA UUID 生成知识点 #### 一、UUID 概述 - **定义**: UUID (Universally Unique Identifier) 即全局唯一标识符,是一种用于在分布式系统中唯一标识信息的方法。 - **长度**: UUID 的标准形式为 128 位(16 ...

    java生成唯一索引,Long型,区别uuid

    java生成唯一索引,Long型,区别uuid

    JAVA UUID 生成全球唯一ID

    GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复

    jdk与javauuidgenerator生成uuid

    在Java中,UUID提供了标准的方法来生成全局唯一的标识符。UUID主要由三部分组成:时间戳、随机数和节点ID,这确保了其在全球范围内的唯一性。 首先,我们来看JDK自带的`java.util.UUID`类。这个类提供了多种生成...

    fast-uuid用于快速高效地解析和编写UUID的Java库

    在Java中,虽然标准库提供有`java.util.UUID`类来生成和处理UUID,但其性能并非最优,特别是在大规模生成和解析时。为了提高效率,开发者有时会寻求更高效的解决方案,比如`fast-uuid`。 `fast-uuid`是一个专门为...

    Java 中将 UUID 存储为 Base64 字符串

    ### Java 中将 UUID 存储为 Base64 字符串 #### 一、引言 在软件开发领域,尤其是在处理大规模分布式系统时,UUID(通用唯一标识符)因其全局唯一性而广泛应用于各种场景,例如作为数据库记录的主键、会话标识等。...

    返回Long型UUid

    在Java编程中,UUID(Universally Unique Identifier)是一种标准的128位的唯一标识符,通常用于生成不可预测的全局唯一ID。然而,标准的UUID由32个16进制数字组成,形式上类似于“123e4567-e89b-12d3-a456-...

    UUID生成工具类

    UUID生成工具类

    java-uuid-generator-3.1.3.ja

    java-uuid-generator-3.1.3.jar 部分开源源代码用到这里面的类。

    java学习UUID的放弃,切换到ULID

    日常开发中我们会遇到使用字符串ID,最先行到的就是UUID生成我们的随机字符串,但是UUID也是会出现重复的几率的!所以我们引入的新的ULID ULID的特性 与UUID的128位兼容性 每毫秒1.21e + 24个唯一ULID 按字典顺序...

    java-uuid-generator:Java Uuid Generator(JUG)是一个用于在Java上生成所有(3)类型的UUID的库。 请参阅(http

    Java Uuid生成器(JUG) JUG是一组用于处理UUID的Java类:使用任何标准方法生成UUID,有效输出,排序等。 它根据生成UUID(有关更多说明,另请参见) JUG由Tatu Saloranta( )最初于2002年编写,并且经过多年的...

    java 生成32位UUID

    在Java编程中,UUID(Universally Unique Identifier)是一种用于生成全局唯一标识符的标准。一个UUID由32个16进制数字组成,通常分为五段,用短横线分隔,形如`8-4-4-4-12`的36个字符。在32位UUID中,我们实际上是...

    java uuid jug实例(采用开源jug)

    JUG,即Java UUID Generator,是一个开源库,扩展了Java标准库中的UUID功能,提供了更高效、更灵活的UUID生成策略。 在Java中,标准库通过`java.util.UUID`类来生成UUID。这个类提供了多种方法,如`randomUUID()`...

    唯一uuidid生成器

    在Java编程语言中,生成UUID非常简单,可以直接使用`java.util.UUID`类提供的静态方法。例如,`UUID.randomUUID()`会返回一个基于时间的UUID,这是最常用的类型。然而,如果要根据IP地址或其他自定义信息生成UUID,...

    java uuid

    java uuid 产生全球唯一序号,不重复 可以用作数据库的发号器 mojianpo 转载

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

    在Java编程中,生成唯一的ID(Universal Unique Identifier,UUID)是一项常见的需求,特别是在数据库记录、分布式系统中的对象标识等方面。UUID是一种128位的数字,通常以32个字符的16进制形式表示,确保在全球范围...

Global site tag (gtag.js) - Google Analytics