什么是UUID?

UUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符。UUID具有以下涵义:

经由一定的算法机器生成

为了保证UUID的唯一性,规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。UUID的复杂特性在保证了其唯一性的同时,意味着只能由计算机生成。

非人工指定,非人工识别

UUID是不能人工指定的,除非你冒着UUID重复的风险。UUID的复杂性决定了“一般人“不能直接从一个UUID知道哪个对象和它关联。

在特定的范围内重复的可能性极小

UUID的生成规范定义的算法主要目的就是要保证其唯一性。但这个唯一性是有限的,只在特定的范围内才能得到保证,这和UUID的类型有关(参见UUID的版本)。

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

3F2504E0-4F89-11D3-9A0C-0305E82C3301

其中的字母是16进制表示,大小写无关。

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

UUID的版本

UUID具有多个版本,每个版本的算法不同,应用范围也不同。

首先是一个特例--Nil UUID--通常我们不会用到它,它是由全为0的数字组成,如下:

00000000-0000-0000-0000-000000000000

Java源码:

packagetools.uuid;importjava.util.UUID;public classMyUUID {public staticString getUUID() {

UUID uuid=UUID.randomUUID();

String str=uuid.toString();

System.out.println("原始UUID: " +str);//去掉"-"符号

String temp = str.substring(0, 8) + str.substring(9, 13) + str.substring(14, 18) + str.substring(19, 23) + str.substring(24);

System.out.println("去掉\"-\"符号: " +temp);returntemp;

}//获得指定数量的UUID

public static String[] getUUID(intnumber) {if (number < 1) {return null;

}

String[] uuids= newString[number];for (int i = 0; i < number; i++) {

uuids[i]=getUUID();

}returnuuids;

}public static voidmain(String[] args) {

System.out.println("---- 获取单个UUID ----");

String uuid=getUUID();

System.out.println("---- 获取多个UUID ----");

String[] uuids= getUUID(5);for (int i = 0; i < uuids.length; i++) {

System.out.println("uuids[" + i + "]=====" +uuids[i]);

}

}

}

运行结果:

---- 获取单个UUID ----原始UUID: f4958b2a-bdc8-4ea5-bed8-1246381c116a

去掉"-"符号: f4958b2abdc84ea5bed81246381c116a---- 获取多个UUID ----原始UUID: f1791418-6eb5-4538-bd2b-9f6547d8a967

去掉"-"符号: f17914186eb54538bd2b9f6547d8a967

原始UUID: e3b6451e-6073-4c11-9f35-b24b49b8fdab

去掉"-"符号: e3b6451e60734c119f35b24b49b8fdab

原始UUID: 9d53efac-d85e-486c-8bef-3009bb0654b0

去掉"-"符号: 9d53efacd85e486c8bef3009bb0654b0

原始UUID: 3c911454-034e-4b17-8daa-dd616b502744

去掉"-"符号: 3c911454034e4b178daadd616b502744

原始UUID: 9a634db6-b68b-4fa5-8389-b3ee35fc5992

去掉"-"符号: 9a634db6b68b4fa58389b3ee35fc5992

uuids[0]=====f17914186eb54538bd2b9f6547d8a967

uuids[1]=====e3b6451e60734c119f35b24b49b8fdab

uuids[2]=====9d53efacd85e486c8bef3009bb0654b0

uuids[3]=====3c911454034e4b178daadd616b502744

uuids[4]=====9a634db6b68b4fa58389b3ee35fc5992

java uuid生成算法_Java生成UUID相关推荐

  1. java中的随机生成算法_Java生成随机时间的简单随机算法

    根据起始时间生成随机事件,代码如下: public static Date randomDate(Date beginDate,Date endDate ){ if(beginDate.getTime ...

  2. java uuid去掉横线_java去掉UUID的小横线的算法

    几行代码,很简单,直接贴了,处女分享:public static String genUUID(){ UUID uuid = UUID.randomUUID(); String s = uuid.to ...

  3. java 获得唯一 数字_java生成唯一数字

    java生成唯一数字 用UUID类生成唯一标识的时候,会生成一个十六进制的整数,但是不能作为数据库long型字段的唯一标识,用下面的办法可以实现数据库long型标识的生成: public class ...

  4. java利用TOTP算法动态生成一次性密码

    一.HOTP   HOTP 算法,全称是"An HMAC-Based One-Time Password Algorithm",是一种基于事件计数的一次性密码生成算法,详细的算法介 ...

  5. java服务器生成随机数_java生成随机数

    java生成随机数 java有三种常用的方式生成随机数: 一.使用Random类 二.使用Math.random方法 三.使用System.currentTimeMillis方法 Random类是最常 ...

  6. java实现随机数生成算法_Java 语言实现的随机数生成算法

    广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,疯狂软件年终钜惠,报名java就业班,免费赠送基础班,名额有限,本月火热报名中,欢迎有志之士电话或者QQ咨询. [导 ...

  7. java 求交集 算法_Java计算交集,差集,并集的方法示例

    Java计算交集,差集,并集的方法示例 发布时间:2020-10-07 10:37:46 来源:脚本之家 阅读:106 作者:benbenkui 本文实例讲述了Java计算交集,差集,并集的方法.分享 ...

  8. java密码学原型算法_java密码学原型算法实现——双线性对.pdf

    java密码学原型算法实现--双线性对 Java 密码学原型算法实现--双线性对 1.背景介绍 如何使用jPBC 库进行双线性群初始化,包括: (1)质数阶双线性群(Prime-Order Bilin ...

  9. java中字典算法_Java字典生成算法讲解

    在实际应用中,大家使用的密码可以说多种多样,但是无论有多少,其组成不遑是有可打印字符组成的,我们可以认为 class CreateDic{ private int BitNum; private St ...

  10. java 微信jssdk签名_JAVA生成微信JSSDK接口签名

    签名生成规则如下: 参与签名的字段包括有效的 jsapi_ticket(获取方式详见微信 JSSDK 文档), noncestr (随机字符串,由开发者随机生成),timestamp (由开发者生成的 ...

最新文章

  1. Ubuntu 64bit 安装 ulipad4.1
  2. linux主机load average的概念计算过程注意事项
  3. Caffe编译代码的时候报各种未定义未声明
  4. linux网络编程之网络应用设计模式、分层模型、通信过程
  5. eclipse 快捷键及插件
  6. CentOS6.6上编译安装httpd2.4
  7. 如何实现公平的效绩考核?
  8. Scala笔记2——IDE配置、函数式编程核心概念
  9. LLVM语言参考手册之标识符、类型与常量
  10. Effective C++ -----条款50:了解new 和delete 的合理替换时机
  11. linux下包管理器
  12. Axure RP大数据可视化大屏BI原型模板组件库源文件
  13. mysql导出单表数据_MySQL之导出整个及单个表数据的操作
  14. 机器学习基础--各种学习方式(18)--核方法和多核学习
  15. Team Foundation Server 2013 with Update 3 Install LOG
  16. 仓库温度湿度控制措施_一般仓库的温湿度控制范围是多少合适?
  17. elasticsearch 聚合搜索
  18. html清除iframe的缓存,如何清除iFrame的缓存?
  19. python计算身份证最后一位数字代表什么_一个计算身份证号码校验位的Python小程序...
  20. Mikrotik ROS软路由配置PCC负载均衡实现双宽带叠加

热门文章

  1. c语言实现运输问题表上作业法,运输问题表上作业法
  2. ssh 方式git clone 代码仓库
  3. hrbust/哈理工oj 1809 再就业【状压dp】
  4. 电脑登录斗鱼显示无法连接服务器,斗鱼电脑版登录不了怎么办
  5. 迅捷pdf虚拟打印机怎么安装使用
  6. 西门子STEP7用软件来启动PLC的快捷方法
  7. c语言程序设计职工信息管理系统,C语言程序设计-职工信息管理系统.doc
  8. 统计通话次数和时间的软件_通话时间统计手机下载-通话时间统计手机版下载v2.3-西西软件下载...
  9. 终极算法 机器学习和人工智能如何重塑世界
  10. 直接通过手机抓取GPS的qxdm日志