程序员人生 网站导航

Java中生成的UUID全局唯一标识符

栏目:综合技术时间:2016-05-10 08:55:02

GUID是1个128位长的数字,1般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、1个随即数来生成GUID。从理论上讲,如果1台机器每秒产生10000000个GUID,则可以保证(几率意义上)3240年不重复。UUID是1.5中新增的1个类,在java.util下,用它可以产生1个号称全球唯1的ID。

UUID含义是通用唯1辨认码 (Universally Unique Identifier),这 是1个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织在散布式计算环境 (Distributed Computing Environment, DCE) 领域的1部分。UUID 的目的,是让散布式系统中的所有元素,都能有唯1的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此1来,每一个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需斟酌数据库建立时的名称重复问题。目前最广泛利用的 UUID,即是微软的 Microsofts Globally Unique Identifiers (GUIDs),而其他重要的利用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。

UUID的唯1缺点在于生成的结果串会比较长。

以下是代码:

package cn.hncu.Telbook.utils; import java.util.UUID; public class GETuuid { //取得全球唯1性的id public static String getId(){ String id=UUID.randomUUID().toString();//生成的id942cd30b⑴6c8⑷49e⑻dc5-028f38495bb5中间含有横杠,用来生成数据库的主键id是很实用的。 id=id.replace("-", "");//替换掉中间的那个斜杠 return id; } }


测试代码:


package cn.hncu.Telbook.Test; import org.junit.Test; import cn.hncu.Telbook.utils.GETuuid; public class Test1 { @Test public void Test(){ int n=3; while(n-->0){ String id =GETuuid.getId(); System.out.println(id); /* * 942cd30b⑴6c8⑷49e⑻dc5-028f38495bb5 535c010d⑹3d1⑷86e⑼12e-af274dcebe42 8827dcfa-e4a5⑷0e8⑻b5f-cca60eae70e8 */ }} }


输出结果:


942cd30b⑴6c8⑷49e⑻dc5-028f38495bb5 535c010d⑹3d1⑷86e⑼12e-af274dcebe42 8827dcfa-e4a5⑷0e8⑻b5f-cca60eae70e8
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐