GUID(Globally Unique IDentifier) 也称作 UUID(Universally Unique IDentifier).
特点:
GUID/UUID是通过特定算法产生的一个二进制长度为128位的数字,
在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同,
在公元3400年以前产生的UUID/GUID与任何其他产生过的UUIDs/GUIDs都不相同。
在需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。
GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。
用途:
标识特定的组件、程序、文件、数据、用户等,并可以在网络中使用。
格式:
UUID 字符串格式可以由下面的EBNF语言来描述:
UUID = <time_low> "-" <time_mid> "-"
<time_high_and_version> "-"
<clock_seq_and_reserved>
<clock_seq_low> "-" <node>
time_low = 4*<hexOctet>
time_mid = 2*<hexOctet>
time_high_and_version = 2*<hexOctet>
clock_seq_and_reserved = <hexOctet>
clock_seq_low = <hexOctet>
node = 6*<hexOctet>
hexOctet = <hexDigit> <hexDigit>
hexDigit =
"0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
| "a" | "b" | "c" | "d" | "e" | "f"
| "A" | "B" | "C" | "D" | "E" | "F"
例如:f81d4fae-7dec-11d0-a765-00a0c91e6bf6
算法:
GUID的算法并不唯一,可以由多种方法来生成。
GUID生成器除了标识不同的时间,还要唯一地标识不同的地点,这可以使用网卡的48位的IEEE 802地址。
GUID的128位可以分为16个字节,前8个字节是时间和版本号,中间2个字节是UUID变体和时钟序数,后6个字节标识地点。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time_low |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time_mid | time_hi_and_version |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|clk_seq_hi_res | clk_seq_low | node (0-1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| node (2-5) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
UUID变体位于第9个字节的前3位,有4种定义:
Msb0 Msb1 Msb2 Description
0 - - Reserved, NCS backward compatibility.
1 0 - The variant specified in this document.
1 1 0 Reserved, Microsoft Corporation backward
compatibility
1 1 1 Reserved for future definition.
版本号位于第7个字节的前4位:
Msb0 Msb1 Msb2 Msb3 Version Description
0 0 0 1 1 The time-based version
specified in this
document.
0 0 1 0 2 Reserved for DCE
Security version, with
embedded POSIX UIDs.
0 0 1 1 3 The name-based version
specified in this
document
0 1 0 0 4 The randomly or pseudo-
randomly generated
version specified in
this document
时间的标识(Timestamp)
UUID version 1, UTC时间从 00:00:00.00, 15 October 1582开始以100纳秒的计数.
没有UTC时间时,也可以使用当地时间,只要在系统中保持一贯就行,这并不推荐,
当地时间与UTC时间只是一个时差的问题。
UTC - Coordinated Universal Time
UUID version 3, 由名字空间产生一个60位数.
UUID version 4, 随机地或伪随机地产生一个60位数.
时钟序数 Clock sequence
UUID version 1, 时钟序数用来避免钟表被调慢后产生重复。比如网卡移到别的机器上,或者断电等。
如果先前的时钟序数已知,加1即可,否则随机产生,更换随机数种子以减小重复的可能性。
UUID version 3, 由名字空间产生一个14位数.
地点的标识(node)
UUID version 1, 采用主机的IEEE 地址,系统有多个IEEE 802地址时,任取一个;
没有IEEE地址时,使随机数或伪随机数并保证与网卡上地址不同(见 section 4).
UUID version 3, 由名字空间产生一个48位数.
UUID version 4, 随机地或伪随机地产生一个48位数.
参考文献:
http://www.ics.uci.edu/~ejw/authoring/uuid-guid/draft-leach-uuids-guids-01.txt
分享到:
相关推荐
在这种情况下,"Guid转换为Oracle存储格式"是指将C#中的Guid(全局唯一标识符)转换成Oracle数据库能够识别并存储的格式。 Guid是.NET Framework中的一个内置类型,用于生成全局唯一的128位整数,通常以字符串形式...
生成GUID,生成不带-,不带{}的GUID,开发的非常帮助小工具!
Guid(Globally Unique Identifier)是一种在分布式网络环境中用于唯一标识对象的128位数字。它是微软.NET框架中广泛使用的标识符,特别是在数据库、编程和网络通信中。Guid生成器是一个工具,能够帮助用户快速生成...
GUID,全称Globally Unique Identifier,是一种在分布式系统中用于唯一标识对象的128位数字。在Windows操作系统和许多.NET框架相关的技术中,GUID被广泛使用。它确保了在全世界范围内,无论何时何地生成,每一个GUID...
数据库主键生成GUID 在数据库设计中,选择合适的主键类型是非常重要的。GUID(Global Unique Identifier,全局唯一标识符)是一种常用的主键类型,它可以提供唯一的标识符,用于标识数据库中的每一条记录。 GUID的...
### VB生成GUID的相关知识点 #### 一、GUID简介 GUID(Globally Unique Identifier),即全局唯一标识符,是一种在时间和空间上具有唯一性的标识符。GUID常用于跨平台、跨语言的应用程序中,用来确保生成的数据...
在前端开发中,全局唯一标识符(Global Unique Identifier,简称GUID)是一种广泛应用的标识符,特别是在分布式系统和数据库中,用于确保每个实体的标识都是独一无二的。`guid` 是一个针对这种需求而设计的开源库,...
在C#中,GUID(全局唯一标识符,Globally Unique Identifier)是一种用于生成独特128位数字的机制,它在数据库、对象标识、分布式系统等领域有着广泛的应用。在"**C#174生成GUID程序 源代码**"中,我们可以学习到...
Guid(Globally Unique Identifier)是一种在信息技术领域广泛使用的唯一标识符,特别是在软件开发、数据库设计和网络协议中。Guid生成器是用于便捷地创建Guid的工具,避免开发者手动编写代码来生成这些独特的序列号...
### C++生成GUID详解 #### 一、简介 在软件开发过程中,经常需要为不同的对象或数据赋予一个全局唯一的标识符(Global Unique Identifier,简称GUID)。GUID被广泛应用于多种技术领域,例如COM组件、数据库记录...
GUID,全称Globally Unique Identifier(全局唯一标识符)或Universally Unique Identifier(通用唯一标识符),在IT行业中扮演着至关重要的角色。它是一种在分布式系统中保证数据唯一性的方法,广泛应用于数据库...
在IT行业中,全局唯一标识符(GUID,Globally Unique Identifier)是一种广泛应用的标识符,尤其是在分布式系统和数据库中。GUID是由微软公司引入的一种128位的整数,其设计目的是确保全球范围内的唯一性。这个...
标题中的“Guid的使用方法”指的是在编程中如何利用Guid(全局唯一标识符)这一数据类型,而描述中提到的学习经历表明将详细讨论Guid的基本概念、生成方式以及其在C# .NET Framework中的应用。 Guid,全称为...
在Java编程语言中,生成全局唯一标识符(GUID,Globally Unique Identifier)通常涉及到使用UUID(Universally Unique Identifier)类。UUID是一个128位的数字,它以一种几乎可以确保全球范围内的唯一性的算法生成。...
在IT领域,Guid(Globally Unique Identifier)是一种广泛用于创建唯一标识符的机制,尤其在分布式系统和数据库中。Guid是由.NET Framework提供的System.Guid类来生成和处理的,它确保了在全球范围内每个Guid都是...
易语言GUID批量生成器源码,GUID批量生成器,生成新的GUID,验证,生成GUID并加入列表,后续处理,CoCreateGuid
全局唯一标识符(GUID,Globally Unique Identifier)是一种在信息技术领域中广泛使用的标识符,特别是在软件开发、数据库设计和网络编程中。GUID是由128位数字组成的,通常以32位十六进制的形式表示,例如:`{...
在IT行业中,GUID(Globally Unique Identifier)是一种广泛使用的唯一标识符,它确保了在全球范围内的唯一性,通常由32个十六进制数字组成,分为五段,并用短横线分隔。在PB 11.5中生成GUID,主要涉及到PB对OLE...
MySQL中的GUID(Globally Unique Identifier)主键生成方式是一种确保数据库中每一条记录具有唯一标识的方法,尤其在分布式系统中十分常见。本示例主要介绍如何通过Hibernate框架配置,来实现MySQL数据库中GUID主键...
在JavaScript中,生成全局唯一标识符(GUID,Globally Unique Identifier)是一种常见的需求,特别是在需要唯一ID的情况下,比如数据库记录、DOM元素标识等。GUID是一个128位的数字,通常以32个十六进制数的形式表示...