uuidjava
㈠ 怎樣用java生成GUID與UUID
兩種方式生成guid與uuid
需要commlog庫
/**
*@authorAdministrator
*
*
*Window-Preferences-Java-CodeStyle-CodeTemplates
*/
importjava.net.InetAddress;
importjava.net.UnknownHostException;
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
importjava.security.SecureRandom;
importjava.util.Random;
{
protectedfinalorg.apache.commons.logging.Loglogger=org.apache.commons.logging.LogFactory
.getLog(getClass());
publicStringvalueBeforeMD5="";
publicStringvalueAfterMD5="";
privatestaticRandommyRand;
;
privatestaticStrings_id;
privatestaticfinalintPAD_BELOW=0x10;
privatestaticfinalintTWO_BYTES=0xFF;
/*
*.
*.Youmight
*
*itwitha"timesincefirstloaded"seedtorecethistime.
*.
*/
static{
mySecureRand=newSecureRandom();
longsecureInitializer=mySecureRand.nextLong();
myRand=newRandom(secureInitializer);
try{
s_id=InetAddress.getLocalHost().toString();
}catch(UnknownHostExceptione){
e.printStackTrace();
}
}
/*
*Defaultconstructor.,
*,highperformance.
*/
publicRandomGUID(){
getRandomGUID(false);
}
/*
*Constructorwithsecurityoption.Settingsecuretrue
*
*strong.
*.
*/
publicRandomGUID(booleansecure){
getRandomGUID(secure);
}
/*
*MethodtogeneratetherandomGUID
*/
privatevoidgetRandomGUID(booleansecure){
MessageDigestmd5=null;
StringBuffersbValueBeforeMD5=newStringBuffer(128);
try{
md5=MessageDigest.getInstance("MD5");
}catch(NoSuchAlgorithmExceptione){
logger.error("Error:"+e);
}
try{
longtime=System.currentTimeMillis();
longrand=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();
StringBuffersb=newStringBuffer(32);
for(intj=0;j<array.length;++j){
intb=array[j]&TWO_BYTES;
if(b<PAD_BELOW)
sb.append('0');
sb.append(Integer.toHexString(b));
}
valueAfterMD5=sb.toString();
}catch(Exceptione){
logger.error("Error:"+e);
}
}
/*
*
*(,etc.)
*Example:C2FEEEAC-CFCD-11D1-8B05-00600806D9B6
*/
publicStringtoString(){
Stringraw=valueAfterMD5.toUpperCase();
StringBuffersb=newStringBuffer(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));
returnsb.toString();
}
//
publicstaticvoidmain(Stringargs[]){
for(inti=0;i<100;i++){
RandomGUIDmyGUID=newRandomGUID();
System.out.println("SeedingString="+myGUID.valueBeforeMD5);
System.out.println("rawGUID="+myGUID.valueAfterMD5);
System.out.println("RandomGUID="+myGUID.toString());
}
}
}
同樣
UUIDuuid=UUID.randomUUID();
System.out.println("{"+uuid.toString()+"}");
UUID是指在一台機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平台會提供生成UUID的API。UUID按照開放軟體基金會(OSF)制定的標准計算,用到了乙太網卡地址、納秒級時間、晶元ID碼和許多可能的數字。由以下幾部分的組合:當前日期和時間(UUID的第一個部分與時間有關,如果你在生成一個UUID之後,過幾秒又生成一個UUID,則第一個部分不同,其餘相同),時鍾序列,全局唯一的IEEE機器識別號(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),UUID的唯一缺陷在於生成的結果串會比較長。關於UUID這個標准使用最普遍的是微軟的GUID(GlobalsUniqueIdentifiers)。
㈡ Java UUID是否區分大小寫
首先說一下原理,我所知道由Java生成的UUID是通過java.Util.UUID的靜態方法randomUUID()來生成的。而UUID一般用於資料庫的主鍵填充。
然後回答你的問題,如果你直接使用UUID類的這個方法生成UUID的話,默認是小寫英文字元和數字的組合(更准確地說是16進制數)。如果你想區分大小寫,那麼有兩種方法:
1、在生成UUID後做大寫處理,再存入資料庫。當然,你在查詢資料庫的數據時,涉及到主鍵時也要注意相應條件的改變;
2、先存入資料庫,然後在查詢條件中進行處理。一般的關系資料庫都會有字元大小寫相關的函數。
結論:默認生成的UUID是小寫的,可以通過其他方式將其改成大寫。因為資料庫對大小寫是區分的,所以相當於對UUID也是區分大小寫的。
㈢ 什麼是UUID,Java中怎麼產生UUID
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是指在一台機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。通常平台會提供生成的API。
//如果使用的JDK1.5的話,那麼生成UUID變成了一件簡單的事,以為JDK實現了UUID:
java.util.UUID,直接調用即可.
UUIDuuid=UUID.randomUUID();
Strings=UUID.randomUUID().toString();//用來生成資料庫的主鍵id非常不錯。。
//UUID是由一個十六位的數字組成,表現出來的形式例如
//550E8400-E29B-11D4-A716-446655440000
㈣ java 後端怎麼生成uuid
Stringuuid=UUID.randomUUID().toString().replaceAll("-","");
㈤ java自帶的uuid生成器生成的uuid靠譜嗎
這是靠譜的。
因為java自帶的UUID類,它是通過結合機器的網卡、時間、一個隨即數來生成ID的。如果一台機器每秒產生10000000個ID,可以保證(概率意義上)3240年不重復。
㈥ java uuid 和guid 的區別
UUID是一個由4個連字型大小(-)將32個位元組長的字元串分隔後生成的字元串,總共36個位元組長。比如:550e8400-e29b-41d4-a716-446655440000
http://gohands.blogbus.com/logs/147479174.html
GUID 是微軟對UUID這個標準的實現。UUID是由開放軟體基金會(OSF)定義的。UUID還有其它各種實現,不止GUID一種。比如我們這里在Java中用到的。
㈦ java中的uuid是干什麼的,如何執行一個方法每次都返回一個不重復的字元串或者數字
隨即生成字元串UUID.randomUUID().toString().replace("-", "");
隨即生成0~n之間的數字:Math.random()*n;
生成的都是不重復的字元串或者數字,一般UUID.randomUUID().toString()用作表的主鍵。
㈧ java 生成UUID重復
用UUID本身就有問題把,UUID保證的同一時刻每台電腦生成的字元串不重復,不保證同一時刻相同電腦生成的不相同吧?
為什麼不對附件求sha-1 把 附件的sha-1作為文件名啊,這樣就是重復了也是相同的文件才重復啊。
㈨ java中實體類用uuid做主鍵時怎麼設計
// 如果使用的JDK1.5的話,那麼生成UUID變成了一件簡單的事,以為JDK實現了UUID:
java.util.UUID,直接調用即可.
UUID uuid = UUID.randomUUID();
String s = UUID.randomUUID().toString();//用來生成資料庫的主鍵id非常不錯。。
//UUID是由一個十六位的數字組成,表現出來的形式例如
//550E8400-E29B-11D4-A716-446655440000
㈩ 什麼是UUID,Java中怎麼產生UUID
UUID 是 通用唯一識別碼(Universally Unique Identifier)的縮寫,是一種軟體建構的標准,亦為開放軟體基金會組織在分布式計算環境領域的一部分。其目的,是讓分布式系統中的所有元素,都能有唯一的辨識信息,而不需要通過中央控制端來做辨識信息的指定。
生成UUID的方法:
public static String getUUID32(){ String uuid = UUID.randomUUID().toString().replace("-", "").toLowerCase(); return uuid;// return UUID.randomUUID().toString().replace("-", "").toLowerCase();}
註:因為一般資料庫主鍵為String類型,所以接收類型為String,生成的uuid數據包含-,所以要去掉-,故UUID.randomUUID().toString().replace("-", "").toLowerCase()。
(10)uuidjava擴展閱讀:
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-xxxx-xxxxxxxxxxxx (8-4-4-4-12),可以從cflib 下載CreateGUID() UDF進行轉換。