欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

兩行Javascript代碼生成UUID的方法

 更新時間:2020年06月16日 15:06:32   作者:lmjben  
這篇文章主要介紹了兩行Javascript代碼生成UUID的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

GUID全稱為全局唯一標(biāo)識符,也稱作 UUID,GUID是一種由算法生成的二進(jìn)制長度為128位的數(shù)字標(biāo)識符。GUID 的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范圍內(nèi)的一個32位十六進(jìn)制數(shù)。GUID 的總數(shù)達(dá)到了2^128(3.4×10^38)個,所以隨機(jī)生成兩個相同GUID的可能性非常小,但并不為0。

發(fā)現(xiàn)一個簡單的方法,可以在不依賴第三方庫的情況下,在 Javascript 應(yīng)用程序中生成 UUID。

function uuid() {
 var temp_url = URL.createObjectURL(new Blob());
 var uuid = temp_url.toString(); // blob:https://xxx.com/b250d159-e1b6-4a87-9002-885d90033be3
 URL.revokeObjectURL(temp_url);
 return uuid.substr(uuid.lastIndexOf("/") + 1);
}

在 Javascript 中可以用的 URL.createObjectURL 方法創(chuàng)建一個惟一的 URL,以表示傳遞給它的對象。為了讓這個 URL 是唯一的, URL.createObjectURL 方法返回的 URL 會帶上一段 36 位長的字符串,和 UUID 的長度一致,通過這個原理,就可以模擬 UUID 了。

下面是這個方法生成的 UUID 的一些例子:

for (var i = 0; i < 10; ++i) {
 console.log(uuid());
}

// 執(zhí)行結(jié)果如下
// f6ca05c0-fad5-46fc-a237-a8e930e7cb49
// 6a88664e-51e1-48c3-a85e-7bf00467e9e6
// e6050f4c-e86d-4081-9376-099bfbef2c30
// bde3da3c-b318-4498-8a03-9a773afa84bd
// ba0fda03-f806-4c2f-b6f5-1e74a299e603
// 62b2edc3-b09f-4bf9-8dbf-c4d599479a29
// e70c0609-22ad-4493-abcc-0e3445291397
// 920255b2-1838-497d-bc33-56550842b378
// 45559c64-971c-4236-9cfc-706048b60e70
// 4bc4bbb9-1e90-432b-99e8-277b40af92cd

注意: URL.createObjectURL 的目的不是生成隨機(jī) UUID。 因此,上述生成 UUID 的方法可能會導(dǎo)致我尚未意識到的副作用。
其他方法

一、生成GUID的方法一

function guid() {
 function S4() {
 return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
 }
 return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}

二、生成GUID的方法二

function guid() {
 return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
  return v.toString(16);
 });
}

三、生成GUID的方法三

function uuid() {
 var s = [];
 var hexDigits = "0123456789abcdef";
 for (var i = 0; i < 36; i++) {
  s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
 }
 s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
 s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
 s[8] = s[13] = s[18] = s[23] = "-";
 
 var uuid = s.join("");
 return uuid;
}

參考鏈接:Standalone UUID generator in Javascript

到此這篇關(guān)于兩行Javascript代碼生成UUID的方法的文章就介紹到這了,更多相關(guān)Javascript生成UUID內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何用注解的方式實(shí)現(xiàn)Mybatis插入數(shù)據(jù)時返回自增的主鍵Id

    如何用注解的方式實(shí)現(xiàn)Mybatis插入數(shù)據(jù)時返回自增的主鍵Id

    這篇文章主要介紹了如何用注解的方式實(shí)現(xiàn)Mybatis插入數(shù)據(jù)時返回自增的主鍵Id,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 淺談JVM之java class文件的密碼本

    淺談JVM之java class文件的密碼本

    一切的一切都是從javac開始的。從那一刻開始,java文件就從我們?nèi)庋劭煞直娴奈谋疚募?,變成了冷冰冰的二進(jìn)制文件。變成了二進(jìn)制文件是不是意味著我們無法再深入的去了解java class文件了呢?答案是否定的。本文將詳細(xì)介紹JVM之java class文件的密碼本。
    2021-06-06
  • Java實(shí)現(xiàn)排隊論的原理

    Java實(shí)現(xiàn)排隊論的原理

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)排隊論的原理,對排隊論感興趣的小伙伴們可以參考一下
    2016-02-02
  • Java Hibernate中的持久化類和實(shí)體類關(guān)系

    Java Hibernate中的持久化類和實(shí)體類關(guān)系

    Hibernate是一種Java對象關(guān)系映射框架,通過持久化類將Java對象映射到數(shù)據(jù)庫表中。持久化類需要實(shí)現(xiàn)無參構(gòu)造器、具有標(biāo)識屬性和使用注解或XML進(jìn)行映射。Hibernate通過Session來管理對象的狀態(tài),包括臨時狀態(tài)、持久化狀態(tài)和游離狀態(tài)
    2023-04-04
  • netty中的IO、NIO、AIO使用詳解

    netty中的IO、NIO、AIO使用詳解

    這篇文章主要介紹了netty中的IO、NIO、AIO使用詳解,本文會說明各種IO的特點(diǎn)、分別解決了什么樣的問題做一個分析闡述,并結(jié)合Java代碼例子來輔助理解,像這些的歷史演進(jìn)和詳細(xì)的底層原理網(wǎng)上很多,所以我們只站在應(yīng)用層,使用者的角度去分析,需要的朋友可以參考下
    2023-12-12
  • Dubbo負(fù)載均衡策略介紹

    Dubbo負(fù)載均衡策略介紹

    負(fù)載均衡改善了跨多個計算資源(例如計算機(jī),計算機(jī)集群,網(wǎng)絡(luò)鏈接,中央處理單元或磁盤驅(qū)動的的工作負(fù)載分布。負(fù)載平衡旨在優(yōu)化資源使用,最大化吞吐量,最小化響應(yīng)時間,并避免任何單個資源的過載
    2022-09-09
  • Java中Easypoi實(shí)現(xiàn)excel多sheet表導(dǎo)入導(dǎo)出功能

    Java中Easypoi實(shí)現(xiàn)excel多sheet表導(dǎo)入導(dǎo)出功能

    這篇文章主要介紹了Java中Easypoi實(shí)現(xiàn)excel多sheet表導(dǎo)入導(dǎo)出功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • java基本教程之join方法詳解 java多線程教程

    java基本教程之join方法詳解 java多線程教程

    本文對java Thread中join()方法進(jìn)行介紹,join()的作用是讓“主線程”等待“子線程”結(jié)束之后才能繼續(xù)運(yùn)行,大家參考使用吧
    2014-01-01
  • 聊聊spring @Transactional 事務(wù)無法使用的可能原因

    聊聊spring @Transactional 事務(wù)無法使用的可能原因

    這篇文章主要介紹了spring @Transactional 事務(wù)無法使用的可能原因,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • SpringBoot查詢PGSQL分表后的數(shù)據(jù)的代碼示例

    SpringBoot查詢PGSQL分表后的數(shù)據(jù)的代碼示例

    數(shù)據(jù)庫用的pgsql,在表數(shù)據(jù)超過100w條的時候執(zhí)行定時任務(wù)進(jìn)行了分表,分表后表名命名為原的表名后面拼接時間,但是我在java業(yè)務(wù)代碼中,我想查詢之前的那條數(shù)據(jù)就查不到了,本文給大家介紹了SpringBoot中如何查詢PGSQL分表后的數(shù)據(jù),需要的朋友可以參考下
    2024-05-05

最新評論