亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

歡迎使用CSDN-markdown編輯器

2019-11-10 19:08:51
字體:
來源:轉載
供稿:網友

文章來源:http://www.cnblogs.com/jdonson/archive/2009/07/22/1528466.html

GUID是一個128位長的數字,一般用16進制表示。算法的核心思想是結合機器的網卡、當地時間、一個隨即數來生成GUID。從理論上講,如果一臺機器每秒產生10000000個GUID,則可以保證(概率意義上)3240年不重復。

UUID是1.5中新增的一個類,在java.util下,用它可以產生一個號稱全球唯一的ID

package com.mytest;import java.util.UUID;public class UTest { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.PRintln(uuid); }}

UUID(Universally Unique Identifier)全局唯一標識符,是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。按照開放軟件基金會(OSF)制定的標準計算,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字。由以下幾部分的組合:當前日期和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之后,過幾秒又生成一個UUID,則第一個部分不同,其余相同),時鐘序列,全局唯一的IEEE機器識別號(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),UUID的唯一缺陷在于生成的結果串會比較長。

在Java中生成UUID主要有以下幾種方式:

JDK1.5

如果使用的JDK1.5的話,那么生成UUID變成了一件簡單的事,因為JDK實現了UUID: java.util.UUID,直接調用即UUID uuid = UUID.randomUUID(); String s = UUID.randomUUID().toString();//用來生成數據庫的主鍵id非常不錯。。 UID是由一個十六位的數字組成,表現出來的形式例如:**

550E8400-E29B-11D4-A716-446655440000

//下面就是實現為數據庫獲取一個唯一的主鍵id的代碼

public class UUIDGenerator { public UUIDGenerator() { } /** * 獲得一個UUID * @return String UUID */ public static String getUUID(){ String s = UUID.randomUUID().toString(); //去掉“-”符號 return s.substring(0,8)+s.substring(9,13)+s.substring(14,18)+s.substring(19,23)+s.substring(24); } /** * 獲得指定數目的UUID * @param number int 需要獲得的UUID數量 * @return String[] UUID數組 */ public static String[] getUUID(int number){ if(number < 1){ return null; } String[] ss = new String[number]; for(int i=0;i<number;i++){ ss[i] = getUUID(); } return ss; } public static void main(String[] args){ String[] ss = getUUID(10); for(int i=0;i<ss.length;i++){ System.out.println(ss[i]); } } } 兩種方式生成guid 與uuid

需要comm log 庫

/** * @author Administrator * * TODO To change the template for this generated type comment Go to * Window - Preferences - Java - Code Style - Code Templates */import java.NET.InetAddress;import java.Net.UnknownHostException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Random;public class RandomGUID extends Object { protected final org.apache.commons.logging.Log logger = org.apache.commons.logging.LogFactory .getLog(getClass()); public String valueBeforemd5 = ""; public String valueAfterMD5 = ""; private static Random myRand; private static SecureRandom mySecureRand; private static String s_id; private static final int PAD_BELOW = 0x10; private static final int TWO_BYTES = 0xFF; /* * Static block to take care of one time secureRandom seed. * It takes a few seconds to initialize SecureRandom. You might * want to consider removing this static block or replacing * it with a "time since first loaded" seed to reduce this time. * This block will run only once per JVM instance. */ static { mySecureRand = new SecureRandom(); long secureInitializer = mySecureRand.nextLong(); myRand = new Random(secureInitializer); try { s_id = InetAddress.getLocalHost().toString(); } catch (UnknownHostException e) { e.printStackTrace(); } } /* * Default constructor. With no specification of security option, * this constructor defaults to lower security, high performance. */ public RandomGUID() { getRandomGUID(false); } /* * Constructor with security option. Setting secure true * enables each random number generated to be cryptographically * strong. Secure false defaults to the standard Random function seeded * with a single cryptographically strong random number. */ public RandomGUID(boolean secure) { getRandomGUID(secure); } /* * Method to generate the random GUID */ private void getRandomGUID(boolean secure) { MessageDigest md5 = null; StringBuffer sbValueBeforeMD5 = new StringBuffer(128); try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { logger.error("Error: " + e); } try { long time = System.currentTimeMillis(); long rand = 0; if (secure) { rand = mySecureRand.nextLong(); } else { rand = myRand.nextLong(); } sbValueBeforeMD5.append(s_id); sbValueBeforeMD5.append(":"); sbValueBeforeMD5.append(Long.toString(time)); sbValueBeforeMD5.append(":"); sbValueBeforeMD5.append(Long.toString(rand)); valueBeforeMD5 = sbValueBeforeMD5.toString(); md5.update(valueBeforeMD5.getBytes()); byte[] array = md5.digest(); StringBuffer sb = new StringBuffer(32); for (int j = 0; j < array.length; ++j) { int b = array[j] & TWO_BYTES; if (b < PAD_BELOW) sb.append('0'); sb.append(Integer.toHexString(b)); } valueAfterMD5 = sb.toString(); } catch (Exception e) { logger.error("Error:" + e); } } /* * Convert to the standard format for GUID * (Useful for SQL Server UniqueIdentifiers, etc.) * Example: C2FEEEAC-CFCD-11D1-8B05-00600806D9B6 */ public String toString() { String raw = valueAfterMD5.toUpperCase(); StringBuffer sb = new StringBuffer(64); sb.append(raw.substring(0, 8)); sb.append("-"); sb.append(raw.substring(8, 12)); sb.append("-"); sb.append(raw.substring(12, 16)); sb.append("-"); sb.append(raw.substring(16, 20)); sb.append("-"); sb.append(raw.substring(20)); return sb.toString(); } // Demonstraton and self test of class public static void main(String args[]) { for (int i=0; i< 100; i++) { RandomGUID myGUID = new RandomGUID(); System.out.println("Seeding String=" + myGUID.valueBeforeMD5); System.out.println("rawGUID=" + myGUID.valueAfterMD5); System.out.println("RandomGUID=" + myGUID.toString()); } }}

同樣

UUID uuid = UUID.randomUUID();System.out.println("{"+uuid.toString()+"}");

關于UUID這個標準使用最普遍的是微軟的GUID(Globals Unique Identifiers)。

UUID含義是通用唯一識別碼 (Universally Unique Identifier),這 是一個軟件建構的標準,也是被開源軟件基金會 (Open Software Foundation, OSF) 的組織在分布式計算環境 (Distributed Computing Environment, DCE) 領域的一部份。UUID 的目的,是讓分布式系統中的所有元素,都能有唯一的辨識資訊,而不需要透過中央控制端來做辨識資訊的指定。如此一來,每個人都可以建立不與其它人沖突的 UUID。在這樣的情況下,就不需考慮數據庫建立時的名稱重復問題。目前最廣泛應用的 UUID,即是微軟的 Microsoft’s Globally Unique Identifiers (GUIDs),而其他重要的應用,則有 linux ext2/ext3 檔案系統、LUKS 加密分割區、GNOME、KDE、Mac OS X 等等。

以下是具體生成UUID的例子:

view plaincopy to clipboardprint?package test; import java.util.UUID; public class UUIDGenerator { public UUIDGenerator() { } public static String getUUID() { UUID uuid = UUID.randomUUID(); String str = uuid.toString(); // 去掉"-"符號 String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24); return str+","+temp; } //獲得指定數量的UUID public static String[] getUUID(int number) { if (number < 1) { return null; } String[] ss = new String[number]; for (int i = 0; i < number; i++) { ss[i] = getUUID(); } return ss; } public static void main(String[] args) { String[] ss = getUUID(10); for (int i = 0; i < ss.length; i++) { System.out.println("ss["+i+"]====="+ss[i]); } } } package test;import java.util.UUID;public class UUIDGenerator { public UUIDGenerator() { } public static String getUUID() { UUID uuid = UUID.randomUUID(); String str = uuid.toString(); // 去掉"-"符號 String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24); return str+","+temp; } //獲得指定數量的UUID public static String[] getUUID(int number) { if (number < 1) { return null; } String[] ss = new String[number]; for (int i = 0; i < number; i++) { ss[i] = getUUID(); } return ss; } public static void main(String[] args) { String[] ss = getUUID(10); for (int i = 0; i < ss.length; i++) { System.out.println("ss["+i+"]====="+ss[i]); } }}

結果:

view plaincopy to clipboardprint?ss[0]=====4cdbc040-657a-4847-b266-7e31d9e2c3d9,4cdbc040657a4847b2667e31d9e2c3d9 ss[1]=====72297c88-4260-4c05-9b05-d28bfb11d10b,72297c8842604c059b05d28bfb11d10b ss[2]=====6d513b6a-69bd-4f79-b94c-d65fc841ea95,6d513b6a69bd4f79b94cd65fc841ea95 ss[3]=====d897a7d3-87a3-4e38-9e0b-71013a6dbe4c,d897a7d387a34e389e0b71013a6dbe4c ss[4]=====5709f0ba-31e3-42bd-a28d-03485b257c94,5709f0ba31e342bda28d03485b257c94 ss[5]=====530fbb8c-eec9-48d1-ae1b-5f792daf09f3,530fbb8ceec948d1ae1b5f792daf09f3 ss[6]=====4bf07297-65b2-45ca-b905-6fc6f2f39158,4bf0729765b245cab9056fc6f2f39158 ss[7]=====6e5a0e85-b4a0-485f-be54-a758115317e1,6e5a0e85b4a0485fbe54a758115317e1 ss[8]=====245accec-3c12-4642-967f-e476cef558c4,245accec3c124642967fe476cef558c4 ss[9]=====ddd4b5a9-fecd-446c-bd78-63b70bb500a1,ddd4b5a9fecd446cbd7863b70bb500a1 ss[0]=====4cdbc040-657a-4847-b266-7e31d9e2c3d9,4cdbc040657a4847b2667e31d9e2c3d9ss[1]=====72297c88-4260-4c05-9b05-d28bfb11d10b,72297c8842604c059b05d28bfb11d10bss[2]=====6d513b6a-69bd-4f79-b94c-d65fc841ea95,6d513b6a69bd4f79b94cd65fc841ea95ss[3]=====d897a7d3-87a3-4e38-9e0b-71013a6dbe4c,d897a7d387a34e389e0b71013a6dbe4css[4]=====5709f0ba-31e3-42bd-a28d-03485b257c94,5709f0ba31e342bda28d03485b257c94ss[5]=====530fbb8c-eec9-48d1-ae1b-5f792daf09f3,530fbb8ceec948d1ae1b5f792daf09f3ss[6]=====4bf07297-65b2-45ca-b905-6fc6f2f39158,4bf0729765b245cab9056fc6f2f39158ss[7]=====6e5a0e85-b4a0-485f-be54-a758115317e1,6e5a0e85b4a0485fbe54a758115317e1ss[8]=====245accec-3c12-4642-967f-e476cef558c4,245accec3c124642967fe476cef558c4ss[9]=====ddd4b5a9-fecd-446c-bd78-63b70bb500a1,ddd4b5a9fecd446cbd7863b70bb500a1

  可以看出,UUID 是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平臺會提供生成的API。按照開放軟件基金會(OSF)制定的標準計算,用到了以太網卡地址、納秒級時間、芯片ID碼和許多可能的數字

  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-xxxxxx-xxxxxxxxxx (8-4-4-4-12),可以從cflib 下載CreateGUID() UDF進行轉換。

  使用UUID的好處在分布式的軟件系統中(比如:DCE/RPC, COM+,CORBA)就能體現出來,它能保證每個節點所生成的標識都不會重復,并且隨著WEB服務等整合技術的發展,UUID的優勢將更加明顯。根據使用的特定機制,UUID不僅需要保證是彼此不相同的,或者最少也是與公元3400年之前其他任何生成的通用惟一標識符有非常大的區別。

  通用惟一標識符還可以用來指向大多數的可能的物體。微軟和其他一些軟件公司都傾向使用全球惟一標識符(GUID),這也是通用惟一標識符的一種類型,可用來指向組建對象模塊對象和其他的軟件組件。第一個通用惟一標識符是在網羅計算機系統(NCS)中創建,并且隨后成為開放軟件基金會(OSF)的分布式計算環境(DCE)的組件。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频一区二区三区四| 青青久久aⅴ北条麻妃| 亚洲男人av在线| 日韩女优人人人人射在线视频| 欧美日韩一区二区在线| 国产精品美女免费| 奇门遁甲1982国语版免费观看高清| 亚洲国产日韩欧美综合久久| 国产日韩欧美在线| 国产成人精品电影| 日韩视频免费观看| 日韩在线中文字| 一本久久综合亚洲鲁鲁| 久久久久久高潮国产精品视| 欧美国产精品va在线观看| 色悠悠久久久久| 91精品久久久久久久久中文字幕| 美日韩丰满少妇在线观看| 亚洲国产精彩中文乱码av在线播放| 日韩欧美在线中文字幕| 欧美日韩亚洲国产一区| 97视频免费在线看| 91国产一区在线| 美女扒开尿口让男人操亚洲视频网站| 欧美日韩国产中字| 国产在线观看91精品一区| 在线视频日本亚洲性| 欧美理论电影在线播放| 最近2019年中文视频免费在线观看| 韩国福利视频一区| 91成品人片a无限观看| 国产精品久久久| 爽爽爽爽爽爽爽成人免费观看| 91精品国产成人www| 91亚洲国产成人精品性色| 人妖精品videosex性欧美| 揄拍成人国产精品视频| 一个人看的www欧美| 国产精品电影网| 亚洲国产成人精品电影| 国产精品久久久久免费a∨大胸| 亚洲精品小视频| 久久免费视频这里只有精品| 久国内精品在线| 国产日韩在线精品av| 亚洲精品www久久久久久广东| 国产成人一区二区三区小说| 国精产品一区一区三区有限在线| 欧美亚洲日本黄色| 亚洲午夜av久久乱码| 亚洲国产精品资源| 91在线精品视频| 国产精品日韩欧美大师| 欧美精品精品精品精品免费| 亚洲天堂第二页| 亚洲国产一区二区三区在线观看| 精品久久久91| 国产欧美一区二区三区久久| 精品视频在线播放| 国产精品欧美激情在线播放| 国产精品日韩专区| 免费97视频在线精品国自产拍| 日韩一区av在线| 国产精品人人做人人爽| 欧美成人精品三级在线观看| 国产精品jizz在线观看麻豆| 三级精品视频久久久久| 亚洲天堂视频在线观看| 亚洲欧美在线x视频| 亚洲夜晚福利在线观看| 伊人伊成久久人综合网小说| 欧美亚洲国产视频小说| 亚洲自拍偷拍第一页| 欧美激情精品久久久久久| 成人免费视频网址| 亚洲最大福利网| 亚洲精品国产精品自产a区红杏吧| 欧美性猛交xxxx偷拍洗澡| 全亚洲最色的网站在线观看| 欧美一区二粉嫩精品国产一线天| 国产日韩在线看片| 日韩有码在线观看| 久久全国免费视频| 久久色免费在线视频| 亚洲在线观看视频网站| 亚洲精品福利视频| 欧亚精品中文字幕| 成人a在线观看| 欧美另类xxx| 久久国产精彩视频| 亚洲免费伊人电影在线观看av| 欧美自拍视频在线| 在线观看精品国产视频| 亚洲国产精品一区二区三区| 精品久久久国产精品999| 国产www精品| 欧美成人精品不卡视频在线观看| 日韩欧美亚洲一二三区| 亚洲成av人片在线观看香蕉| 国产精品国产自产拍高清av水多| 国产视频999| 日韩中文字幕网址| 久久人91精品久久久久久不卡| 8x海外华人永久免费日韩内陆视频| 亚洲风情亚aⅴ在线发布| 国产精品久久久久久久久男| 亚洲女在线观看| 国产精品成人一区二区| 欧美亚洲在线观看| 亚洲一区二区免费在线| 亚洲一区二区免费| 欧美大肥婆大肥bbbbb| 久久最新资源网| 久久久噜噜噜久久久| 日韩电影在线观看永久视频免费网站| 成人亚洲综合色就1024| 欧美大片欧美激情性色a∨久久| 国外色69视频在线观看| 国产精品偷伦免费视频观看的| 97视频在线播放| 亚洲午夜精品久久久久久久久久久久| 中文字幕日韩欧美在线| 亚洲免费人成在线视频观看| 国产91露脸中文字幕在线| 黑人巨大精品欧美一区免费视频| 国产精品久久久久久久久久东京| 欧美黄色成人网| 欧美日本亚洲视频| 97色在线观看免费视频| 高清欧美一区二区三区| 亚洲精品美女在线观看| 精品国产精品自拍| 日韩中文在线中文网三级| 欧美壮男野外gaytube| 久久久久久久久久国产精品| 在线观看国产欧美| 91精品国产91久久久久福利| 国产成人综合av| 亚洲视频在线免费看| 高清欧美性猛交xxxx黑人猛交| 国产区精品视频| 中文字幕欧美精品在线| 欧美日韩不卡合集视频| 国产精品高清免费在线观看| 成人中心免费视频| 国产精品美女在线观看| 亚洲国产精品美女| 亚洲国产精品视频在线观看| 国产精品96久久久久久| 国产欧美日韩丝袜精品一区| 亚洲人成网站777色婷婷| 欧美日韩中文在线| 欧美成人激情视频免费观看| 中文字幕日韩精品在线| 影音先锋欧美精品| 国产欧美精品一区二区| 亚洲精品国产品国语在线| 日韩中文视频免费在线观看| 97精品在线视频| 成人亲热视频网站| 国模视频一区二区三区| 午夜精品在线视频| 96sao精品视频在线观看| 国产亚洲精品美女久久久久|