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

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

歡迎使用CSDN-markdown編輯器

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

文章來源: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
国产亚洲欧洲黄色| 欧美性猛xxx| 久久久久久香蕉网| 欧洲中文字幕国产精品| 日韩中文字幕在线免费观看| 欧美极品少妇xxxxⅹ免费视频| 91亚洲精品久久久久久久久久久久| 国产精品黄页免费高清在线观看| 日本亚洲欧洲色| 亚洲人成电影网站| 国产精品亚发布| 精品亚洲一区二区三区四区五区| 日韩av有码在线| 日韩激情第一页| 日本欧美一级片| 亚洲国产精彩中文乱码av在线播放| 亚洲欧美另类中文字幕| 久久久精品一区| 国产精品视频内| 夜夜嗨av一区二区三区免费区| 亚洲人成电影网站色www| 国内精品一区二区三区| 日本韩国在线不卡| 91在线中文字幕| 亚洲精品国产综合区久久久久久久| 成人激情视频免费在线| 日韩免费观看高清| 日韩精品视频免费在线观看| 精品欧美国产一区二区三区| 日韩欧美a级成人黄色| 亚洲电影免费观看高清完整版在线| 国产精品久久久久久久美男| 国产精品99久久久久久久久久久久| 国产91在线播放九色快色| 88国产精品欧美一区二区三区| 黑人与娇小精品av专区| 成人黄色免费在线观看| 国产精品极品美女粉嫩高清在线| 日韩精品中文字| 777午夜精品福利在线观看| 亚洲国产欧美自拍| 亚洲欧美国内爽妇网| 91精品久久久久久久久| 欧美裸体xxxxx| 精品少妇一区二区30p| 91干在线观看| www.亚洲人.com| 91香蕉嫩草影院入口| 亚洲香蕉av在线一区二区三区| 国产综合香蕉五月婷在线| 国产欧美日韩专区发布| 亚洲美女自拍视频| 久久成人av网站| 成人做爽爽免费视频| 欧美视频在线观看 亚洲欧| 久久久精品一区二区三区| 日韩精品高清在线| 欧美日韩国产一区二区三区| 91精品综合视频| 91中文在线视频| 久久久久久久激情视频| 亚洲国产成人精品电影| 亚洲免费小视频| 精品成人在线视频| 高清一区二区三区日本久| 国产欧美日韩亚洲精品| 91精品视频大全| 亚洲午夜精品视频| 在线看片第一页欧美| 精品国产区一区二区三区在线观看| 久久精品视频99| 欧美极品美女视频网站在线观看免费| 精品无人区乱码1区2区3区在线| 68精品久久久久久欧美| 国产91精品久久久久久久| 欧美精品九九久久| 中文字幕欧美国内| 久久影视免费观看| 中文字幕亚洲欧美日韩高清| 欧美一区二区三区免费视| 青青草原成人在线视频| 韩日欧美一区二区| 欧美激情一区二区三区高清视频| 国产精品国语对白| 亚洲精品中文字幕女同| 久久国产精彩视频| 欧美成人免费va影院高清| 欧美中文字幕精品| 国产精品扒开腿爽爽爽视频| 国产午夜精品美女视频明星a级| 一本一本久久a久久精品牛牛影视| 亚洲aa在线观看| 国产精品爽黄69| 激情亚洲一区二区三区四区| 国产精品91久久久久久| 亚洲成人激情在线| 亚洲精品91美女久久久久久久| 亚洲男人天堂网| 欧美激情一区二区久久久| 在线丨暗呦小u女国产精品| 国产精品扒开腿做爽爽爽视频| 成人av番号网| 精品国产精品三级精品av网址| 亚洲精品午夜精品| 日韩av在线免费看| 亚洲自拍欧美另类| 久久久久成人精品| 国产日韩欧美夫妻视频在线观看| 亚洲欧洲一区二区三区久久| 国产欧美精品一区二区三区-老狼| 91久久精品国产91久久性色| 成人精品久久久| 欧美国产日韩一区二区三区| 色综合影院在线| 久久伊人91精品综合网站| 欧美老女人bb| 久久精品成人欧美大片古装| 国产精品久久久久久搜索| 精品久久香蕉国产线看观看gif| 中文字幕在线观看亚洲| 69久久夜色精品国产7777| 国产精品成av人在线视午夜片| 欧美激情精品久久久久久黑人| 国产精品久久久999| 国产精品99久久久久久久久| 亚洲精品成人免费| 欧美性高潮床叫视频| 欧洲一区二区视频| 亚洲精品成a人在线观看| 日韩av资源在线播放| 国产精品国产三级国产aⅴ9色| 久久久亚洲欧洲日产国码aⅴ| 精品久久香蕉国产线看观看亚洲| 成人黄色免费在线观看| 国产精品一区二区在线| 久久久久久久久久久免费| 日韩av中文字幕在线免费观看| 日韩精品免费综合视频在线播放| 国产人妖伪娘一区91| 国产精品扒开腿做爽爽爽男男| 国产丝袜高跟一区| 亚洲电影中文字幕| 久久免费视频网| 中文字幕日韩高清| 日韩中文字幕网站| 成人激情视频在线| 亚洲成色www8888| 日韩欧美中文字幕在线播放| 最近2019年中文视频免费在线观看| 狠狠色香婷婷久久亚洲精品| 日韩av免费一区| 国产精品成久久久久三级| 国产欧美日韩高清| 日韩美女视频免费在线观看| 亚洲成人激情小说| 亚洲福利视频网站| 黑人巨大精品欧美一区免费视频| 久久精品成人欧美大片古装| 精品福利一区二区| 国外成人在线直播| 精品国产乱码久久久久久天美| 国产91精品久久久久久久| 91久久国产婷婷一区二区| 亚洲综合色av|