zoukankan      html  css  js  c++  java
  • java生成UUID通用唯一识别码

    一、UUID概述

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

    UUID 的目的,是让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。如此一来,每个人都可以建立不与其它人冲突的 UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。

    目前最广泛应用的 UUID,即是微软的 Microsoft's Globally Unique Identifiers (GUIDs),而其他重要的应用,则有 Linux ext2/ext3 档案系统、LUKS 加密分割区、GNOME、KDE、Mac OS X 等等。

    UUID的唯一缺陷在于生成的结果串会比较。 

    二、UUID 组成

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


    在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,
    其格式为:xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。

    而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12);

    三、java使用UUID

    java.util.UUID 类表示一个不变的通用唯一标识符(UUID)。以下是有关UUID的要点:

    • 一个UUID表示一个128位的值。

    • 它是用于创建随机文件名,在Web应用程序的会话ID,事务ID等。

    • 还有UUID四种不同的基本类型:基于时间,DCE安全性,基于名称,并随机生成的UUID。

    以下是java.util.UUID类的声明:

    public final class UUID
       extends Object
          implements Serializable, Comparable<UUID>

    UUID的使用:

    //生成的id 752d231c-e5a3-871c-65d4-142dfa562cb4中间含有横杠,用来生成数据库的主键id是很实用的。
    UUID uuid  =  UUID.randomUUID();
    String id=uuid.toString();
    id=id.replace("-", "");//替换掉中间的那个横杠  
    方法摘要
     int clockSequence()
              与此 UUID 相关联的时钟序列值。
     int compareTo(UUID val)
              将此 UUID 与指定的 UUID 比较。
     boolean equals(Object obj)
              将此对象与指定对象比较。
    static UUID fromString(String name)
              根据 toString() 方法中描述的字符串标准表示形式创建 UUID
     long getLeastSignificantBits()
              返回此 UUID 的 128 位值中的最低有效 64 位。
     long getMostSignificantBits()
              返回此 UUID 的 128 位值中的最高有效 64 位。
     int hashCode()
              返回此 UUID 的哈希码。
    static UUID nameUUIDFromBytes(byte[] name)
              根据指定的字节数组获取类型 3(基于名称的)UUID 的静态工厂。
     long node()
              与此 UUID 相关的节点值。
    static UUID randomUUID()
              获取类型 4(伪随机生成的)UUID 的静态工厂。
     long timestamp()
              与此 UUID 相关联的时间戳值。
     String toString()
              返回表示此 UUIDString 对象。
     int variant()
              与此 UUID 相关联的变体号。
     int version()
              与此 UUID 相关联的版本号。

     

  • 相关阅读:
    推荐系统 蒋凡译 第一章 引言 读书笔记
    神经网络与深度学习 邱锡鹏 第5章 卷积神经网络 读书笔记
    神经网络与深度学习 邱锡鹏 第4章 前馈神经网络 读书笔记
    神经网络与深度学习 邱锡鹏 第3章 线性模型 读书笔记
    神经网络与深度学习 邱锡鹏 第2章 机器学习概述 读书笔记
    神经网络与深度学习 邱锡鹏 第1章 绪论 作业
    神经网络与深度学习 邱锡鹏 第1章 绪论 读书笔记
    算法笔记 上机训练实战指南 第13章 专题扩展 学习笔记
    算法笔记 第13章 专题扩展 学习笔记
    算法笔记 上机训练实战指南 第11章 提高篇(5)--动态规划专题 学习笔记
  • 原文地址:https://www.cnblogs.com/maokun/p/6718148.html
Copyright © 2011-2022 走看看