一.什么是UUID?

UUID全称:Universally Unique Identifier,即通用唯一识别码。

UUID是由一组32位数的16进制数字所构成,UUID的标准型式包含32个16进制数字,以连字号分为五段,形式为8-4-4-4-12的32个字符,如:550e8400-e29b-41d4-a716-446655440000。

二.UUID的组成

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

UUID由以下几部分的组合:
当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
时钟序列。
全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。

三.编码规则

UUID(Universally Unique Identifier)全局唯一标识符,定义为一个字符串主键,采用32位数字组成,编码采用16进制,定义了在时间和空间都完全唯一的系统信息。

UUID的标准格式:xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx
A那个位置,代表版本号,由于UUID的标准实现有5个版本,所以只会是1,2,3,4,5
B那个位置,只会是8,9,a,b

UUID在发展过程中,为了适应不同的需要,产生了5个版本:

(1)uuid1: 基于时间戳、机器MAC地址生成。由于使用MAC地址,可以保证全球范围的唯一性。
(2)uuid2: 只基于时间戳,不常用。
(3)uuid3: 基于namespace和一个自定义字符串,不常用。
(4)uuid4: 只基于随机数,最常用,但不推荐,重复几率不太能让人接受。
(5)uuid5: 只基于namespace,不常用。

四.UUID的作用

UUID的是让分布式系统中的所有元素都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。

五、Java 中 UUID 的生成与使用

Java中的默认UUID生成是使用版本4的。uuid4: 只基于随机数,最常用,但不推荐,重复几率不太能让人接受。

获取UUID的三种方式

UUID.randomUUID();  //最常用
UUID.fromString("095c64fe-c5bf-11ea-aec6-a402b9e2b04d");
UUID.nameUUIDFromBytes("身份证号码".getBytes());

randomUUID() 随机获取一个UUID,有极小的概率会重复
fromString() 根据一个符合UUID格式的字符串获取,不常用,我都有了还获取干嘛。
nameUUIDFromBytes() 根据一个字节数组获取,一般要求给定的字节数组不重复

Java中UUID的简单介绍相关推荐

  1. Java中的GC简单介绍

    文章目录 一.GC是什么? 二.为什么要GC? 三.怎么GC? 一.GC是什么? GC英文全称为Garbage Collection,即垃圾回收. Java中的GC就是对内存的GC. Java的内存管 ...

  2. java中的List简单介绍

    List是Java中比较常用的集合类,关于List接口有很多实现类,本文就来简单介绍下其中几个重点的实现ArrayList.LinkedList和Vector之间的关系和区别. List 是一个接口, ...

  3. django中使用celery简单介绍

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 本章节我们重点在于实现,如何存储任务的结果. 我们将任务函数改为: from celery_demo.celery im ...

  4. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  5. php simpledateformat,Java中SimpleDateFormat的用法介绍(代码示例)

    本篇文章给大家带来的内容是关于Java中SimpleDateFormat的用法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.为什么要使用SimpleDateFo ...

  6. java中equals函数所在的类,重写Java中的equals方法介绍

    Java中,只有8种基本类型不是对象,例如:4种整形类型(byte, short, int,long),2种浮点类型(flout, double),boolean, char不是对象,其他的所有类型, ...

  7. JAVA中常用接口的介绍及使用示例 java lang Comparable

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...

  8. JMS(Java消息服务)(Activemq简单介绍)

    是什么? JMS(java消息服务)是规范,它定义了一些规则,一些接口.具体实现由各种做这个产品的厂家或开源组织来实现. 为什么? 在JMS还没有诞生前,每个企业都会有自己的一套内部消息系统,比如项目 ...

  9. Java虚拟机内存模型简单介绍

    一.虚拟机 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的. 不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统 ...

最新文章

  1. 携Science封面、NIPS最佳论文,CMU大神Noam博士毕业,论文已公开
  2. Nginx反向绑定域名方法和详细操作应用实例:Google和Gravatar
  3. mysql半同步复制问题排查
  4. 提高SQL语句的性能
  5. SAP CRM RDS快速部署解决方案
  6. 2019-11-18 稳定的概念
  7. nested exception is java.lang.NoClassDefFoundError: org/springframework/aop/TargetSource
  8. python调用math函数_Python中sqrt函数使用方法
  9. 时间序列研(part12)--习题
  10. Windows系统带你一步一步无脑使用babel
  11. 19春北理工计算机应用基础,19春北理工《计算机应用基础》在线作业(02)【标准答案】.doc...
  12. cvs数据格式 gps_CSV、TXT 和 GPX 文件
  13. DBLink应用速成
  14. [数据可视化] 南丁格尔玫瑰图
  15. android怎么防8门神器,八门神器怎么使用?安卓八门神器教程
  16. 视频号带货优势有哪些?普通人为什么要做视频号:国仁楠哥
  17. IO、文件、NIO【草案三】
  18. python -m详解
  19. 初识ELF格式 ABI,EABI,OABI
  20. Android 高级面试题及答案

热门文章

  1. 国二c语言成语改错,2014年计算机二级C++上机模拟试题及解析(5)
  2. POST请求报 415
  3. SpringBoot集成Skywalking分布式服务调用链路追踪
  4. 【ubuntu18.04挂载硬盘】
  5. 前端复习——js(四)
  6. 页面第一次数据不出来,刷新一次数据才会出来
  7. java assetmanager_Android学习--Assets资源文件读取及AssetManager介绍
  8. flex布局还要使用overflow-x:scroll;的问题
  9. jqgrid本地加载分页_jqGrid 分页
  10. mac Python 拍照录视屏