全局唯一标识符(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标准的实现。
算法1
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; }
算法2
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); }); }
算法3
function guid() { function S4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); } return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4()); }
算法4
function uuid(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { // Compact form for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix]; } else { // rfc4122, version 4 form var r; // rfc4122 requires these characters uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; // Fill in random data. At i==19 set the high bits of clock sequence as // per rfc4122, sec. 4.1.5 for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random()*16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); }
这个可以指定长度和基数。比如
// 8 character ID (base=2) uuid(8, 2) // "01001010" // 8 character ID (base=10) uuid(8, 10) // "47473046" // 8 character ID (base=16) uuid(8, 16) // "098F4D35"
相关:
http://www.broofa.com/2008/09/javascript-uuid-function/
http://note19.com/2007/05/27/javascript-guid-generator/
http://www.ietf.org/rfc/rfc4122.txt
http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/873856#873856
相关推荐
以上就是JavaScript生成Guid序列号的几种方法。在选择方法时,应考虑项目的需求,如是否需要高性能、高安全性或者跨平台兼容性。在JavaScript环境中,Guid常用于创建唯一的ID,如数据库记录、会话标识或临时文件名。...
### JavaScript生成GUID的多种算法详解 #### 一、概述 全局唯一标识符(Global Unique Identifier,简称GUID)或称为通用唯一标识符(Universally Unique Identifier,简称UUID),是一种由算法生成的二进制长度为...
生成GUID的方法有很多种,通常包括编程语言内置的库函数或第三方工具。以下是一些常见编程语言生成GUID的实例: 1. **C#**: 在C#中,可以使用`System.Guid`类的静态方法`NewGuid()`来生成新的GUID: ```csharp ...
在JavaScript中生成GUID(全局唯一标识符)是前端开发者偶尔会遇到的需求,尤其是在需要与后端数据保持一致或者创建唯一标识的时候。虽然JavaScript本身并不直接支持GUID生成,但可以通过一些算法来模拟实现。以下是...
通常平台会提供生成GUID的API。生成算法很有意思,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。GUID的唯一缺陷在于生成的结果串会比较大。 GUID的格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ...
6. **性能优化**:为了满足高性能应用的需求,`guid` 库可能会采用高效的算法来生成 GUID,同时在验证时避免不必要的计算,提高代码执行效率。 在 `guid-master` 这个压缩包中,我们通常会找到 `guid` 库的源代码、...
在.NET环境下,我们可以使用`System.Guid`类来生成Guid。生成新的Guid实例最简单的方法是使用`NewGuid()`静态方法。例如: ```csharp Guid guid = Guid.NewGuid(); ``` 2. Java: 在Java中,没有内置的Guid类,但...
GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f 范围内的一个32位十六进制数。在理想情况下,任何计算机和计算机集群都...
Js Snowflake算法,也称为雪花算法,是一种分布式系统中用于生成全局唯一ID的算法。该算法由Twitter开源,其生成的ID由64位的二进制数字组成,分为以下几个部分: 1. **时间戳**(41位):从指定的起始时间(例如...
在分布式ID生成的项目中,"src"目录下可能包含了实现各种ID生成算法的Java代码,而"WebContent"则可能包含展示或测试这些ID生成服务的前端页面。 总的来说,全局唯一ID生成是分布式系统设计中的核心问题之一,涉及...
这类程序通常提供额外的功能,如增强浏览体验、优化性能或提供特定工具,如这个Guid Generator,它就是一个工具型扩展,帮助用户生成GUID。 **压缩包子文件的文件名称列表详解:** "Guid_Generator.crx"是这个插件...
第三种方法同样是生成GUID,但采用了循环和条件判断的方式,逐个生成每个部分的16进制数字,并在特定位置插入破折号。 第四种方法提供了一个更灵活的随机字符串生成器,它允许生成包含数字和字母的字符串。此方法...
针对这一问题,文章中提出了使用JavaScript生成随机GUID(全局唯一标识符)作为新窗口名的解决思路。GUID是一种采用特定算法生成的唯一标识符,通过在window.open的第二个参数中引入这种随机生成的标识符,可以确保...
- **Guid算法**: 为了确保用户标识的独特性和持久性,推荐使用Guid算法生成用户的唯一ID。这种方法可以避免由于Cookie被清除而导致的用户身份丢失问题。 ##### 2.2 流量来源分析 - **流量来源分类**: 用户流量可以...
3. **Version 3 UUID**:基于命名空间和MD5散列算法生成。给定一个命名空间和一个名字,每次输入相同的参数都会生成相同的UUID,但不同参数会生成不同的UUID,这种方式确保了可预测性。 4. **Version 4 UUID**:...