java uuid生成算法_Java生成UUID
什么是UUID?
UUID是Universally Unique Identifier的縮寫,它是在一定的范圍內(nèi)(從特定的名字空間到全球)唯一的機(jī)器生成的標(biāo)識(shí)符。UUID具有以下涵義:
經(jīng)由一定的算法機(jī)器生成
為了保證UUID的唯一性,規(guī)范定義了包括網(wǎng)卡MAC地址、時(shí)間戳、名字空間(Namespace)、隨機(jī)或偽隨機(jī)數(shù)、時(shí)序等元素,以及從這些元素生成UUID的算法。UUID的復(fù)雜特性在保證了其唯一性的同時(shí),意味著只能由計(jì)算機(jī)生成。
非人工指定,非人工識(shí)別
UUID是不能人工指定的,除非你冒著UUID重復(fù)的風(fēng)險(xiǎn)。UUID的復(fù)雜性決定了“一般人“不能直接從一個(gè)UUID知道哪個(gè)對象和它關(guān)聯(lián)。
在特定的范圍內(nèi)重復(fù)的可能性極小
UUID的生成規(guī)范定義的算法主要目的就是要保證其唯一性。但這個(gè)唯一性是有限的,只在特定的范圍內(nèi)才能得到保證,這和UUID的類型有關(guān)(參見UUID的版本)。
UUID是16字節(jié)128位長的數(shù)字,通常以36字節(jié)的字符串表示,示例如下:
3F2504E0-4F89-11D3-9A0C-0305E82C3301
其中的字母是16進(jìn)制表示,大小寫無關(guān)。
GUID(Globally Unique Identifier)是UUID的別名;但在實(shí)際應(yīng)用中,GUID通常是指微軟實(shí)現(xiàn)的UUID。
UUID的版本
UUID具有多個(gè)版本,每個(gè)版本的算法不同,應(yīng)用范圍也不同。
首先是一個(gè)特例--Nil UUID--通常我們不會(huì)用到它,它是由全為0的數(shù)字組成,如下:
00000000-0000-0000-0000-000000000000
Java源碼:
packagetools.uuid;importjava.util.UUID;public classMyUUID {public staticString getUUID() {
UUID uuid=UUID.randomUUID();
String str=uuid.toString();
System.out.println("原始UUID: " +str);//去掉"-"符號
String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);
System.out.println("去掉\"-\"符號: " +temp);returntemp;
}//獲得指定數(shù)量的UUID
public static String[] getUUID(intnumber) {if (number < 1) {return null;
}
String[] uuids= newString[number];for (int i = 0; i < number; i++) {
uuids[i]=getUUID();
}returnuuids;
}public static voidmain(String[] args) {
System.out.println("---- 獲取單個(gè)UUID ----");
String uuid=getUUID();
System.out.println("---- 獲取多個(gè)UUID ----");
String[] uuids= getUUID(5);for (int i = 0; i < uuids.length; i++) {
System.out.println("uuids[" + i + "]=====" +uuids[i]);
}
}
}
運(yùn)行結(jié)果:
---- 獲取單個(gè)UUID ----原始UUID: f4958b2a-bdc8-4ea5-bed8-1246381c116a
去掉"-"符號: f4958b2abdc84ea5bed81246381c116a---- 獲取多個(gè)UUID ----原始UUID: f1791418-6eb5-4538-bd2b-9f6547d8a967
去掉"-"符號: f17914186eb54538bd2b9f6547d8a967
原始UUID: e3b6451e-6073-4c11-9f35-b24b49b8fdab
去掉"-"符號: e3b6451e60734c119f35b24b49b8fdab
原始UUID: 9d53efac-d85e-486c-8bef-3009bb0654b0
去掉"-"符號: 9d53efacd85e486c8bef3009bb0654b0
原始UUID: 3c911454-034e-4b17-8daa-dd616b502744
去掉"-"符號: 3c911454034e4b178daadd616b502744
原始UUID: 9a634db6-b68b-4fa5-8389-b3ee35fc5992
去掉"-"符號: 9a634db6b68b4fa58389b3ee35fc5992
uuids[0]=====f17914186eb54538bd2b9f6547d8a967
uuids[1]=====e3b6451e60734c119f35b24b49b8fdab
uuids[2]=====9d53efacd85e486c8bef3009bb0654b0
uuids[3]=====3c911454034e4b178daadd616b502744
uuids[4]=====9a634db6b68b4fa58389b3ee35fc5992
總結(jié)
以上是生活随笔為你收集整理的java uuid生成算法_Java生成UUID的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux显示中文乱码
- 下一篇: hdu 1874(Dijkstra +