文章目录

  • 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(全局唯一标识符)相关推荐

  1. 命名规则标识符 unix_关于全局唯一标识符

    关于全局唯一标识符 用几个世纪以来独一无二的标签命名你的接口 摘要 本文介绍全局唯一标识符(GUID:Globally Unique IDentifier ),并说明如何从您喜欢的工作站创建一个.它包 ...

  2. uuid:128位的全局唯一标识符(univeral unique identifier)

    转:https://www.cnblogs.com/franknihao/p/7307224.html uuid是128位的全局唯一标识符(univeral unique identifier),通常 ...

  3. UUID是128位的全局唯一标识符

    UUID是128位的全局唯一标识符,通常由32字节的字符串表示. 它通过MAC地址.时间戳.命名空间.随机数.伪随机数来保证生成ID的唯一性.UUID主要有五个算法,也就是五种方法来实现:1.uuid ...

  4. java开发_UUID(Universally Unique Identifier,全局唯一标识符)和GUID(Globally Unique Identifier,全球唯一标识符)...

    GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) . 所以GUID就是UUID. G ...

  5. “简单证明GUID(全局唯一标识符)并不唯一”

    GUID是什么,大家理所当然地应该都知道(百度百科介绍的GUID).在.net framework中,微软为开发者提供了一个GUID结构,这个结构想必很多人在开发中应该已经用过,下面我们再来看一下它的 ...

  6. UUID全局唯一标识符

    UUID 是通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分. UUID 的目的是让分布式系 ...

  7. sqlserver 中的GUID 全局唯一标识 -摘自网络

    --简单实用全局唯一标识 DECLARE @myid uniqueidentifier SET @myid = NEWID() PRINT 'Value of @myid is: '+ CONVERT ...

  8. Javascript生成全局唯一标识符(GUID,UUID)的方法

    方法一 function guid() {return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var ...

  9. 关于AndroidID的记录:AndroidID什么时候会改变/AndroidID做唯一标识符是否可行

    之前的 Android 是定值,即不同应用获取到的是一个值,除非以下情况: AndroidID会可能发生改变一般来说有以下情况: 1.恢复出厂设置 2.root/恢复root 3.三清 4.刷机 5. ...

最新文章

  1. secureCRT The remote system refused the connection. .
  2. 剑指offer:滑动窗口最大值
  3. 虚拟内存(VirtualAlloc),堆(HeapAlloc/malloc/new)和Memory Mapped File
  4. HFSS安装提示failed to check out license during initialization,怎么解决?
  5. C++阶段01笔记02【数据类型(整型、sizeof关键字、实型(浮点型)、字符型、转义字符、字符串型、布尔类型 bool、数据的输入)】
  6. java bitset_Java BitSet and()方法与示例
  7. 【Kafka】Failed to send data to Kafka: Expiring 30 record(s) for xxx 732453 ms has passed since last a
  8. python数据库介绍_Python数据库:MYSQL讲解介绍
  9. java连接虚拟机hadoop_本地eclipse java api连接远程虚拟机HBase
  10. jdk StringBuilder实现
  11. react native+typescript创建移动端项目-(慕课网喜马拉雅项目笔记)-(二,导航器navigator)
  12. 百度网盘IDM快速下载
  13. 一天搞懂机器学习PPT笔记-1
  14. 飞鱼星测试软件,飞鱼星VE984GW+
  15. 【律联云知产课堂】商标注册需要什么条件?
  16. G31主板支持1440*900分辨率
  17. mysql一条语句是如何被执行的——带你了解mysql语句执行内部顺序
  18. 计算机打印状态错误,打印机开始打印就显示错误怎么办?
  19. 安卓日志:拍照、文件读取的问题
  20. 位于0/nut文件里的'Calculated'边界条件是什么意思?【翻译】

热门文章

  1. 好用的调色软件 ColorSchemer Studio
  2. 服装CAD软件测试初学者,如何自学服装cad
  3. 热视觉2:使用Python和OpenCV从图像中测量温度
  4. 【ZEGO即构】音视频开发进阶 — 音频要素
  5. 青龙面板详细搭建教程
  6. WordPress主题每月销量排行榜2022年1月 | WordPress主题大全
  7. 你是时侯该在网络上说谎了!
  8. 查看电脑已经安装了的数据库
  9. matlab仿真实训要求,南昌大学《MATLAB与控制系统仿真》实验报告
  10. Adobe 安装失败[安装遇到错误]-information not found in Media_db