JS生成 UUID的四种方法
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) 。
GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。
GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。
UUID有四个版本:
UUID Version 1:基于时间的UUID
基于时间的UUID通过计算当前时间戳、随机数和机器MAC地址得到。由于在算法中使用了MAC地址,这个版本的UUID可以保证在全球范围的唯一性。但与此同时,使用MAC地址会带来安全性问题,这就是这个版本UUID受到批评的地方。如果应用只是在局域网中使用,也可以使用退化的算法,以IP地址来代替MAC地址--Java的UUID往往是这样实现的(当然也考虑了获取MAC的难度)。但由于时间因素的顺序为时间低位在前,高位在后,不适合做主键,可以组合。
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)算法。
由上面的版本可知,在浏览器里的JS下基本上无法使用版本1,2,3,5,所以只能使用方法四来模拟生成UUID。
算法1
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
算法2
1 2 3 4 5 6 |
|
算法3
1 2 3 4 5 6 |
|
算法4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
这个可以指定长度和基数。比如
1 2 3 4 5 6 |
|
PS:以上模拟的实现方式仅供特定的环境下使用和真实的UUID生成机制不一样,大家有好的实现方式可以讨论。
JS生成 UUID的四种方法相关推荐
- JavaScript生成uuid的四种方法
在开发过程中,有时候需要js生成全局唯一标识符,在java中可以使用uuid,但是JS中没有现成的函数.总结了一下,JS生成唯一标识符的几种方法. 第一种 function guid() {retur ...
- js 生成UUID的几种方法
简介: UUID(Universally Unique IDentifier) 全局唯一标识符. UUID是一种由算法生成的二进制长度为128位的数字标识符.UUID 的格式为"xxxxxx ...
- 前端面试题:使用css生成田字格的四种方法
使用css生成田字格的四种方法 html结构 css基础样式 第一种 flex布局 第二种 绝对定位 第三种 css瀑布流 第四种 float浮动 html结构 <div class=" ...
- js数组去重的四种方法
四种算法来实现这个目的: Array.prototype.unique1 = function () {var n = []; //一个新的临时数组for (var i = 0; i < thi ...
- JS获取随机数的四种方法(转)
原帖:https://www.jb51.net/article/82747.htm JS没有现成的函数,能够直接生成指定范围的随机数. 但是它有个函数:Math.random() 这个函数可以生成 ...
- Js声明数组的四种方法
//第一种 var A=[12,78,78,78,89] console.log(A)//第二种 var B=new Array(); B[0]=12 B[1]=34 B[2]=56 console. ...
- JS类型判断的四种方法以及各自的注意点
基本类型:String.Number.Boolean.Symbol.Undefined.Null 引用类型:Object (引用类型除 Object 外,还包括 Function .Array.Reg ...
- js 判断数据类型的四种方法
1,typeof typeof 返回的数据类型有 undefined boolean (true,false) string symbol number function object 注意 typ ...
- js创建数组的四种方法【2021.11.13】
参考书籍<JavaScript百炼成仙> 1.直接量定义数组: var arr = [1,2,3]; 2.采用构造函数的方法创建数组对象: var a =new Array(); 3.也是 ...
最新文章
- 2013年,移动App设计的13大精髓
- CFileDialog 打开多个目录下的多个文件
- Quick Cocos2dx 调试问题
- 【深度学习】深度学习手写代码汇总(建议收藏,面试用)
- Kanboard简单的可视化任务板,项目管理
- 结对编程:黄金分割游戏
- docker 清理容器的一些命令,彻底或选择清理
- 大一上期c语言实验报告2,大一上期C语言实验报告1熟悉实验环境
- FineUIPro控件库深度解析
- 2019-08-21
- Windows PE/COFF
- swiper 插件里面嵌套可滚动内容
- 回乡偶记|从这个四省交界的苏北大城, 看二三线城市区块链现状
- NX/UG二次开发孔特征查找
- 第三方网站不能调用微信公众平台里的图片了 显示此图片来自微信公众号平台未经允许不可引用...
- 教育部中央电教馆—家庭教育指导师证书
- Cisco RV320未经身份验证的配置导出
- 探索未知领域,是我犯错了么?
- 自媒体人必备神器,200w+自媒体人都在用
- 超级详细树讲解三 —— B树、B+树图解+代码