[原]uuid简要介绍

UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。

  在应用中,经常用到uuid,以及uuid1、uuid4等等玩意儿,那它们到底什么呢?

  UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定(说白了就是它能保证无论在某时某地某台机器上它都能生成一个唯一字符串。)。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。目前最广泛应用的 UUID,即是微软的 Microsoft‘s Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。

  所以uuid是在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。

  UUID是16字节128位长的数字,通常以36字节的字符串表示,示例如下:

    c09f7392-8cd0-11e5-8559-000c2964e92b   # 字母是16进制表示,大小写无关。

  GUID(Globally Unique Identifier)是UUID的别名;但在实际应用中,GUID通常是指微软实现的UUID。

  UUID只是一种识别码规范,它根据不同的算法有不同的计算结果,每种算法都有特定范围的应用场景。

  UUID 1:基于时间的UUID

   基于时间的UUID通过计算当前时间戳、随机数和机器MAC地址得到。由于在算法中使用了MAC地址,这个版本的UUID可以保证在全球范围的唯一性。但与此同时,使用MAC地址会带来安全性问题,这就是这个版本UUID受到批评的地方。如果应用只是在局域网中使用,也可以使用退化的算法,以IP地址来代替MAC地址--Java的UUID往往是这样实现的(当然也考虑了获取MAC的难度)。


    
DCE(Distributed Computing Environment)安全的UUID和基于时间的UUID算法相同,但会把时间戳的前4位置换为POSIX的UID或GID。这个版本的UUID在实际中较少用到。


    
基于名字的UUID通过计算名字和名字空间的MD5散列值得到。这个版本的UUID保证了:相同名字空间中不同名字生成的UUID的唯一性;不同名字空间中的UUID的唯一性;相同名字空间中相同名字的UUID重复生成是相同的。


   
根据随机数,或者伪随机数生成UUID。这种UUID产生重复的概率是可以计算出来的。


   
和版本3的UUID算法类似,只是散列值计算使用SHA1(Secure Hash Algorithm 1)算法。

注:Python中没有uuid2的实现。

  uuid1和uuid2是最适合在分布式环境中使用的,uuid3和uuid5可以在小范围内使用,uuid4因为采用随机,所以保不齐会产生重复的两个随机数,在严格要求唯一性的应用中最好不用,不过因为它实现最简单,所以可以在其他你觉得合适的应用中使用。

  由于uuid3、5具有名字维度上的唯一性,所以在保证名字维度上唯一的场景下,优先考虑uuid3、5.

时间: 2024-11-19 21:39:39

[原]uuid简要介绍的相关文章

Android运行时ART简要介绍和学习计划

Android在4.4就已推出新运行时ART,准备替代用了有些时日的Dalvik.不过当时尚属测试版,主角仍是Dalvik. 直到今年的Google I/O大会,ART才正式取代Dalvik.这个消息在科技界引起不小轰动,也吸引不少技术人员对它的"技术分析".可惜这些"技术分析"不过是引用了官方的数据和图表而已.这一系列文章将对ART进行真正的技术分析.老规矩,分析前先进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyang

Gif格式简要介绍

Gif格式简要介绍 Gif格式标准主要有87a和89a两个版本. Gif由一个个的block组成,按照我的理解可以将Gif图数据分为两个部分,一个部分为头部,包含了Header(Gif的识别),Logical Screen Descriptor(描述Gif图展示的逻辑屏幕的参数),Global Color Table(全局的调色板,这个为可选).之后就是数据主体部分,可以是图像的数据以及各种扩展块. 介绍分为两个部分,一个部分是Gif中比较通用的一些数据组织形式介绍,一个部分是Gif图的数据块的

0-Android编译系统简要介绍和学习计划

Android编译系统简要介绍和学习计划 来源:http://blog.csdn.net/luoshengyang/article/details/18466779 导语: 在Android源码环境中,我们开发好一个模块后,再写一个Android.mk文件,就可通过m/mm/mmm/make等命令进行编译.此外,通过make命令还可制作各种系统镜像文件,例如system.img.boot.img和recovery.img等.这一切都得益于Android编译系统,它为我们处理了各种依赖关系,以及提

FinalActivity的简要介绍与使用

之前的两篇文章介绍了AFinal框架下的图片加载与网络通信的部分,这篇文章主要简单介绍FinalActivity的使用. 首先,FinalActivity是基于IOC机制,通过依赖注入的方式完成控件的id绑定与事件绑定,从而实现代码量的精简.下面是FinalActivity的最简单的使用 public class MainActivity extends FinalActivity { @ViewInject(id = R.id.btn, click = "click") Button

SEAndroid安全机制简要介绍和学习计划

与iOS相比,Android最被人诟病的是其流畅性和安全性.然而,从4.0开始,Android不遗余力地改善其流畅性.特别是在即将发布的L版本中,用ART替换了Dalvik,相信会越来越流畅.至于安全性,Android也没有遗忘.从4.3开始,Android引入了一套基于SELinux的安全机制,称为SEAndroid,来加强系统安全性.接下来我们就对SEAndroid进行简要介绍和制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! 在介绍SE

html5 拖拽的简要介绍

1,首先,你要告诉计算机那个元素可以拖动,或者是一张图,或者是一个盒子,在标签里面加上 draggable="true"  2,然后,监听该元素被拖动的函数 ondragstart="drag(event)" 3,drag 里面告诉计算机是那个元素被拖动的 ev.dataTransfer.setData("Text",ev.target.id); 4,接下来将拖动的元素放到哪个盒子,(或者是经过那个盒子,经过某个盒子的时候触法 ondragove

0-Broadcast机制原理简要介绍

Broadcast机制简要介绍 来源: http://blog.csdn.net/luoshengyang/article/details/6730748 导语 广播机制在Android系统中,也不算是什么创新的东西.如果读者了解J2EE或者COM,就会知道,在J2EE中,提供了消息驱动Bean(Message-Driven Bean),用来实现应用程序各个组件之间的消息传递:而在COM中,提供了连接点(Connection Point)的概念,也是用来在应用程序各个组间间进行消息传递.无论是J

Nginx学习笔记01Nginx简要介绍与目录说明

1.1. Nginx简要介绍 (1)Nginx是Web服务器. Apache.IIS:经典的通用Web服务器. Lighttpd.Nginx:轻量级Web服务器. Tomcat.Jetty:面向Java的Web服务器. (2)Nginx的优点. Nginx最吸引人的优点在于以下三个方面: (a)支持高并发. 单机10万并发. (b)低内存消耗.10000个非活跃连接仅消耗2.5MB内存. (c)热部署.24x7不间断服务. (3)Nginx的架构特点. (a)多进程架构:1个Master进程+N

Chromium网页渲染机制简要介绍和学习计划

作为一个浏览器,快速地将网页渲染出来是最重要的工作.Chromium为了做到这一点,费尽了心机,做了大量优化工作.这些优化工作是卓有成效的,代表了当今最先进的网页渲染技术.值得一提的是,这些渲染技术不仅适用于网页渲染,也可以应用在原生系统的UI渲染上.例如,在Android系统上,我们就可以看到两者在渲染技术上的相似之处.本文接下来就对Chromium的网页渲染机制进行简要介绍,并且制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! Chrom