`
popwang
  • 浏览: 58698 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多
Java的UUID(全球唯一编号)
2006年09月27日 星期三 17:18

GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。 
 
    UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID
import java.util.UUID;
public class Test {
 public static void main(String[] args) {
  UUID uuid = UUID.randomUUID(); 
  System.out.println (uuid);
}
}
编译运行输出:
07ca3dec-b674-41d0-af9e-9c37583b08bb

UUID的Java参考文档请参照:
http://www.cuku.net/api/java/util/UUID.html

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

调查:
有 4 种不同的基本 UUID 类型:基于时间的 UUID、DCE 安全 UUID、基于名称的 UUID 和随机生成的 UUID。这四种类型的UUID产生方法请调查。同时,是否可以控制产生的UUID长度在一定范围内。

 

 

标识符(UUID)是开放软件基金会(OSF)制定的标准,其意图在于分布式软件系统中生成唯一的标识,而这个标识无需统一的协调中心来进行分 配. 任何人都可以创建UUID来标识某样事物,并且有足够的信心来保证所生成的标识是唯一的,也就是说别人不会使用到你所生成的标识符. 关于UUID这个标准使用最普遍的是微软对其的实现-GUID(Globals Unique Identifiers).
UUID是由一个十六位的数字组成,表现出来的形式例如
550E8400-E29B-11D4-A716-446655440000
那么我们怎么来生成这个唯一的标识呢?
为此J2SE5.0新增加了一个类java.util.UUID,借助它可以生成唯一的标识符.请看下面一段代码
public static void main(String[] args) {
  UUID uuid = UUID.randomUUID();
  System.out .println(uuid.toString());
}
执行一下这段代码,结果有如 702b0031-d99c-477b-97fa-6cfd158901d6 . 每次执行的结果都不一样.
UUID跟随机数有什么区别呢?
前面提到了,UUID适合分布式的软件系统中. UUID用于保证每个节点所生成的标识都不会重复(或者说重复的概念极低,至于有多低我也不知道怎么形容),而随机数顶多保证在同一个节点(进程)中能保 证生成的数字唯一,而多个进行同时生成的随机数相同的概率非常高,因此随机数并不适用于分布式系统中.
现实中那些东西用到了UUID?
最常见的就是微软的ActiveX对象,COM对象了.例如在web页面中使用的Flash播放插件就会出现这样的代码 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 而clsid后面这个数字串就是微软开发工具生成的用于Flash播放器这个对象的唯一标识,它的格式完全与我们前面自生成的标识一致.
参考资料
分享到:
评论

相关推荐

    浅谈java获取UUID与UUID的校验

    主要介绍了java获取UUID与UUID的校验,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    PB生成UUID.zip

    PB生成UUID

    UUID生成工具类

    UUID生成工具类

    UUID封装直接调用直接下载用

    手机UUID!

    Math.uuid.js

    Math.uuid.js js 生成 uuid

    jdk与javauuidgenerator生成uuid

    jdk与javauuidgenerator生成uuid

    利用雪花算法生成uuid

    利用雪花算法生成uuid

    UUID C代码实现

    UUID 由RFC4122文档定义,里面有实现,不过需要加上SHA1算法,MD5算法才完整。我整理了SHA1 MD5算法,实现了一个可直接使用的UUID的生成算法。

    UUID随机数字

    利用UUID生成完全不重复的数字 package com.example.uuid; import java.util.UUID; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View....

    如何获取iOS设备的UUID

    UDID自从被苹果公司禁止开发者使用,UUID便成为替代品,一般使用UUID的时候,当程序被卸载重装之后,UUID一般会被改变,无法保证唯一。但使用我代码里的方法,便可以保证唯一,即使程序被卸载重装之后也仍然是卸载前...

    ThinkPad System UUID1.82

    联想ThinkPad System UUID添加工具,直接支持U盘启动盘制作

    javascript生成uuid的js库文件

    javascript生成uuid的js库文件

    uuid-jar包

    为你提供一个可以产生一个不重复的UUID工具

    java生成8位UUID

    java 生成8位UUID,解决UUID2太长的问题,欢迎下载。后续代码,陆续放出

    javaScript动态随即生成UUID

    javascript 随机生成36为的UUID值

    Java 生成 UUID通用唯一标识符.docx

    来看一下 UUID 的格式: 123e4567-e89b-12d3-a456-556642440000 xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx 由四个中划线“-”隔开,第一部分的长度为 8,第二部分和第三部分的长度为 4,第四部分的长度为 12,总长度为...

    uuid-1.6.2.tar.gz

    uuid-1.6.2.tar.gz,用于安装PostgreSQL的uuid-ossp扩展,由于官网链接太烂,特拿出来分享。

    通过PC的CPU id生成唯一性的UUID

    C++代码,VS工程,在windows x86...通过获取PC的CPU id字符串,以这个字符串作为种子,生成唯一性的UUID。这个UUID可以用作PC的唯一性标识,或者身份认证的标识。UUID不同CPU不会重复,但相同CPU下每次的UUID值都一样。

    UUID全局唯一标识符

    UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码...

    短8位uuid 用于兑换码

    短8位uuid 用于兑换码,不重复,,本人用很好用,,分享给大家

Global site tag (gtag.js) - Google Analytics