自定义 GUID(全局唯一标识符)
文章目录
- GUID
- JS 实现
- 自定义 GUID
GUID
全局唯一标识符(GUID)是一种通过算法生成的标识符,典型的,是通过生成二进制长度为 128 位的数字标识符来作为 GUID, 这样的 GUID 的总数达到了2^128个( 约为万亿亿亿亿个),基本(理论上)能做到全宇宙唯一了。
128 位二进制,表示为16进制字符串形式,长度位 32,形如: 'f30cd0d5-93ab-8225-aa0a-db5372b8f44f'
,其格式的标准定义为:time-low "-" time-mid "-"time-high-and-version "-"clock-seq-and-reserved clock-seq-low "-" node
。
基本上还算简短,能更好的支持对其进行排序,分类,哈希,存储等。GUID 可以用作资源的名称标识,因为其随机分配且唯一,不需要一个统一的注册管理中心,应用起来非常的方便。
Java 语言,直接提供了生成 GUID 的工具,java.util.UUID
,可以通过 UUID.randomUUID()
方法来获取 GUID 值。详细算法说明,可参考 A Universally Unique IDentifier (UUID) URN Namespace
Java 的 UUID 算法实现具有很高的分配速率,可实现单机器每秒种产生千万个UUID。
JS 实现
JS 本身并没有提供 GUID 的实现,需要自己写,一般情况下,不需要按照标准规范来实现,例如:
function GUID() {function part() {return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);}return part() + part() + '-' + part() + '-' + part() + '-' + part() + '-' + part() + part() + part();
}
自定义 GUID
根据自身的业务需求,GUID 完全可以灵活定义,只要满足两点即可:
- 第一,全局唯一性;
- 第二,适度的可配置能力;
例外,如果将 GUID 作为主键,也可以通过提升进制数(使用 36 进制,而不是 16 进制),来缩短字符串的长度。
下面,则是自定义的 GUID 实现:
function GUID(typeId = 0, locationId = 0){function randPart(){return Math.floor(Math.random()*1000_000+1).toString(36);}function timePart(){return Math.floor(new Date().getTime()/(1000*60)).toString(36); // }function customPart(v){if (typeof v === 'number') return v;if (typeof v === 'string' && v.trim.length > 0 && v.indexOf('-') === -1) return v;return 0;}return customPart(typeId) + "-" + randPart() + "-" + timePart() + "-" + randPart() + "-" + customPart(locationId);
}
自定义 GUID(全局唯一标识符)相关推荐
- 命名规则标识符 unix_关于全局唯一标识符
关于全局唯一标识符 用几个世纪以来独一无二的标签命名你的接口 摘要 本文介绍全局唯一标识符(GUID:Globally Unique IDentifier ),并说明如何从您喜欢的工作站创建一个.它包 ...
- uuid:128位的全局唯一标识符(univeral unique identifier)
转:https://www.cnblogs.com/franknihao/p/7307224.html uuid是128位的全局唯一标识符(univeral unique identifier),通常 ...
- UUID是128位的全局唯一标识符
UUID是128位的全局唯一标识符,通常由32字节的字符串表示. 它通过MAC地址.时间戳.命名空间.随机数.伪随机数来保证生成ID的唯一性.UUID主要有五个算法,也就是五种方法来实现:1.uuid ...
- java开发_UUID(Universally Unique Identifier,全局唯一标识符)和GUID(Globally Unique Identifier,全球唯一标识符)...
GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) . 所以GUID就是UUID. G ...
- “简单证明GUID(全局唯一标识符)并不唯一”
GUID是什么,大家理所当然地应该都知道(百度百科介绍的GUID).在.net framework中,微软为开发者提供了一个GUID结构,这个结构想必很多人在开发中应该已经用过,下面我们再来看一下它的 ...
- UUID全局唯一标识符
UUID 是通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分. UUID 的目的是让分布式系 ...
- sqlserver 中的GUID 全局唯一标识 -摘自网络
--简单实用全局唯一标识 DECLARE @myid uniqueidentifier SET @myid = NEWID() PRINT 'Value of @myid is: '+ CONVERT ...
- Javascript生成全局唯一标识符(GUID,UUID)的方法
方法一 function guid() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var ...
- 关于AndroidID的记录:AndroidID什么时候会改变/AndroidID做唯一标识符是否可行
之前的 Android 是定值,即不同应用获取到的是一个值,除非以下情况: AndroidID会可能发生改变一般来说有以下情况: 1.恢复出厂设置 2.root/恢复root 3.三清 4.刷机 5. ...
最新文章
- secureCRT The remote system refused the connection. .
- 剑指offer:滑动窗口最大值
- 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
- HFSS安装提示failed to check out license during initialization,怎么解决?
- C++阶段01笔记02【数据类型(整型、sizeof关键字、实型(浮点型)、字符型、转义字符、字符串型、布尔类型 bool、数据的输入)】
- java bitset_Java BitSet and()方法与示例
- 【Kafka】Failed to send data to Kafka: Expiring 30 record(s) for xxx 732453 ms has passed since last a
- python数据库介绍_Python数据库:MYSQL讲解介绍
- java连接虚拟机hadoop_本地eclipse java api连接远程虚拟机HBase
- jdk StringBuilder实现
- react native+typescript创建移动端项目-(慕课网喜马拉雅项目笔记)-(二,导航器navigator)
- 百度网盘IDM快速下载
- 一天搞懂机器学习PPT笔记-1
- 飞鱼星测试软件,飞鱼星VE984GW+
- 【律联云知产课堂】商标注册需要什么条件?
- G31主板支持1440*900分辨率
- mysql一条语句是如何被执行的——带你了解mysql语句执行内部顺序
- 计算机打印状态错误,打印机开始打印就显示错误怎么办?
- 安卓日志:拍照、文件读取的问题
- 位于0/nut文件里的'Calculated'边界条件是什么意思?【翻译】
热门文章
- 好用的调色软件 ColorSchemer Studio
- 服装CAD软件测试初学者,如何自学服装cad
- 热视觉2:使用Python和OpenCV从图像中测量温度
- 【ZEGO即构】音视频开发进阶 — 音频要素
- 青龙面板详细搭建教程
- WordPress主题每月销量排行榜2022年1月 | WordPress主题大全
- 你是时侯该在网络上说谎了!
- 查看电脑已经安装了的数据库
- matlab仿真实训要求,南昌大学《MATLAB与控制系统仿真》实验报告
- Adobe 安装失败[安装遇到错误]-information not found in Media_db