日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java uuid 随机数_Java随机数和UUID

發布時間:2024/8/1 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java uuid 随机数_Java随机数和UUID 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java隨機數和UUID#

Java隨機數

在Java項目中通常是通過Math.random方法和Random類來獲得隨機數,前者通過生成一個Random類的實例來實現。

此類產生的是一組偽隨機數流,通過使用 48 位的種子,利用線性同余公式產生。在Java中,隨機數的產生取決于種子,隨機數和種子之間的關系遵從以下兩個規則:

種子不同,產生不同的隨機數。

種子相同,即使實例不同也產生相同的隨機數。

兩種方式設置種子:

Random r= new Random(long seed);

或者 Random r= new Random();r.setSeed(1);即種子為1。

對一組隨機數,只需要記住產生的種子即可。

比如代碼:

public class Client {

public static void main(String[] args) {

Random r = new Random(1);

for (int i = 0; i < 4; i++) {

System.out.println( r.nextInt(100));//0→100

}

}

}

不管運行幾次,產生的隨機數序列一定都是:

85,88,47,13

Random類的默認種子(無參構造)是System.nanoTime()的返回值。注意這個值是距離某一個固定時間點的納秒數,不同的操作系統和硬件有不同的固定時間點,也就是說不同的操作系統其納秒值是不同的,而同一個操作系統不同時間納秒值也會不同,隨機數自然也就不同了。(順便說下,System.nanoTime不能用于計算日期,那是因為“參考”的時間點是不確定的,納秒值甚至可能是負值,這點與System. currentTimeMillis不同。)

Java UUID

UUID(Universally Unique Identifier)全局唯一標識符,是指在一臺機器上生成的數字,它保證對在同一時空中的所有機器都是唯一的。UUID是長度為16-byte(128-bit)的ID,用16進制表示,一般以形如f81d4fae-7dec-11d0-a765-00a0c91e6bf6。算法的核心思想是結合機器的網卡、當地時間、一個隨機數來生成UUID。從理論上講,如果一臺機器每秒產生10000000個UUID,則可以保證(概率意義上)3240年不重復。

無須中心認證,自動生成,支持一臺機器每秒生成10M次(100納秒級,其隱含原因是指能夠區分的最小時間單位為100ns,將時間作為因子時,連續生成兩個UUID的時間至少要間隔100ns)。方便存取、分配、排序、查找。

代碼示例:

import java.util.UUID;

public class UTest {

public static void main(String[] args) {

UUID uuid = UUID.randomUUID();

System.out.println(uuid);//產生的uuid以-隔開

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);

System.out.println(temp);

}

}

UUID Version 1:基于時間的UUID

基于時間的UUID通過計算當前時間戳、隨機數和機器MAC地址得到。由于在算法中使用了MAC地址,這個版本的UUID可以保證在全球范圍的唯一性。但與此同時,使用MAC地址會帶來安全性問題,這就是這個版本UUID受到批評的地方。如果應用只是在局域網中使用,也可以使用退化的算法,以IP地址來代替MAC地址--Java的UUID往往是這樣實現的(當然也考慮了獲取MAC的難度)。但由于時間因素的順序為時間低位在前,高位在后,不適合做主鍵,可以COMB。

UUID Version 3:基于名字的UUID(MD5)

基于名字的UUID通過計算名字和名字空間的MD5散列值得到。這個版本的UUID保證了:相同名字空間中不同名字生成的UUID的唯一性;不同名字空間中的UUID的唯一性;相同名字空間中相同名字的UUID重復生成是相同的。

UUID Version 4:隨機UUID

根據隨機數,或者偽隨機數生成UUID。這種UUID產生重復的概率是可以計算出來的,但隨機的東西就像是買彩票:你指望它發財是不可能的,但狗屎運通常會在不經意中到來。

UUID Version 5:基于名字的UUID(SHA1)

和版本3的UUID算法類似,只是散列值計算使用SHA1(Secure Hash Algorithm 1)算法。

總結

以上是生活随笔為你收集整理的java uuid 随机数_Java随机数和UUID的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。