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

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

歡迎使用CSDN-markdown編輯器

2019-11-10 17:00:25
字體:
來源:轉載
供稿:網友

文章來源: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
91精品国产综合久久男男| 亚洲欧美激情一区| 91视频8mav| 欧美一级在线亚洲天堂| 欧美噜噜久久久xxx| 97高清免费视频| 久久精品国产清自在天天线| 日韩久久精品电影| 国产97在线|日韩| 欧美高跟鞋交xxxxxhd| 97色在线视频观看| 97成人精品区在线播放| 俺去亚洲欧洲欧美日韩| 欧美成人精品三级在线观看| 国产欧美精品一区二区| 欧美韩国理论所午夜片917电影| 成人网在线观看| 亚洲在线免费视频| 九九热精品视频国产| 日韩精品中文字幕视频在线| 国产精品偷伦免费视频观看的| 亚洲欧美制服中文字幕| 亚洲国产一区二区三区在线观看| 亚洲人成在线观看网站高清| 久久久久久国产三级电影| 精品国产视频在线| 亚洲加勒比久久88色综合| 欧美成人黑人xx视频免费观看| 精品自拍视频在线观看| 一区二区三区国产视频| 精品中文字幕视频| 国产精品久久综合av爱欲tv| 久久影视电视剧免费网站| 精品视频在线导航| 中文日韩在线观看| 精品中文字幕在线观看| 亚洲在线第一页| 亚洲天堂第一页| 97超碰蝌蚪网人人做人人爽| 亚洲情综合五月天| 91精品国产综合久久男男| 在线播放国产一区中文字幕剧情欧美| 日韩中文字幕av| 成人www视频在线观看| 久久这里只有精品99| 久久人人爽人人| 久久久女人电视剧免费播放下载| 欧美日韩国产在线播放| 国产精品一区二区三区成人| 亚洲iv一区二区三区| …久久精品99久久香蕉国产| 国产情人节一区| 亚洲美女福利视频网站| 亚洲精品国产电影| 国产一区二区三区在线观看网站| 国产精品久久99久久| 91欧美视频网站| 亚洲一级黄色av| 91精品久久久久久久久青青| 国产精品影片在线观看| 91免费国产网站| 久久久999精品| 久久久精品2019中文字幕神马| 97精品国产91久久久久久| 不用播放器成人网| 最近2019中文字幕第三页视频| 色偷偷噜噜噜亚洲男人的天堂| 亚洲精品丝袜日韩| 欧美一级免费看| 国产视频精品免费播放| 日韩欧美在线网址| 久久久女女女女999久久| 成人精品aaaa网站| 91国在线精品国内播放| 欧美视频国产精品| 国产91精品久久久久| 欧美日韩在线视频一区二区| 久久五月天综合| 亚洲精品电影网在线观看| 欧美国产日韩一区二区| 久久综合电影一区| 97久久精品在线| 55夜色66夜色国产精品视频| 国内精品久久久久伊人av| 国内精品久久久久影院 日本资源| 91精品视频在线免费观看| 久久久久久久久久久久av| 欧美一区视频在线| 国产一区深夜福利| 国产成人中文字幕| 久久成人人人人精品欧| 国产亚洲福利一区| 色青青草原桃花久久综合| 一区二区三欧美| 国产精品久久久久久久久粉嫩av| 色多多国产成人永久免费网站| 亚洲日本欧美中文幕| 成人性生交大片免费看视频直播| 成人h视频在线| 狠狠色狠狠色综合日日五| 欧美激情视频三区| 中文字幕国产亚洲| 日本精品一区二区三区在线播放视频| 在线观看精品国产视频| 欧美大片在线免费观看| 欧美肥婆姓交大片| 欧洲午夜精品久久久| 欧美亚洲国产成人精品| 亚洲精品黄网在线观看| 国产丝袜高跟一区| 久久久女人电视剧免费播放下载| 91视频国产高清| 久久综合亚洲社区| 亚洲午夜av久久乱码| 欧美一级片在线播放| 久久久久久国产精品三级玉女聊斋| 欧美亚州一区二区三区| 国产日韩欧美成人| 成人日韩av在线| 91理论片午午论夜理片久久| 午夜精品国产精品大乳美女| 亚洲aa中文字幕| 国产主播在线一区| 亚洲欧美日韩精品久久奇米色影视| 欧美在线xxx| 国产精品久久久久久久久久久久久| 亚洲一区二区免费在线| 亚洲品质视频自拍网| 色综合老司机第九色激情| 久久成人精品视频| 一区二区三区无码高清视频| 中文字幕精品—区二区| 久久av红桃一区二区小说| 亚洲女人天堂视频| 久久99国产精品自在自在app| 91精品成人久久| 91国内在线视频| 欧美怡春院一区二区三区| 久久久久日韩精品久久久男男| 日韩在线小视频| 国模视频一区二区| 欧美日韩激情美女| 久久91精品国产91久久久| 国产精品99导航| 91精品久久久久久久久久久久久| 亚洲区在线播放| 日韩视频亚洲视频| 亚洲欧洲日产国产网站| 成人亚洲综合色就1024| 欧美电影院免费观看| 国产国语刺激对白av不卡| 国产精国产精品| 91九色国产视频| 97精品国产97久久久久久免费| 国产97在线视频| 91在线国产电影| 欧美黄网免费在线观看| 亚洲午夜未满十八勿入免费观看全集| 国产精品久久久久7777婷婷| 成人免费观看a| 亚洲人a成www在线影院| 国产在线观看91精品一区| 国产成人拍精品视频午夜网站| 在线精品播放av|