为什么UUID.randomUUID()表示一个128位的值

我们在代码中使用UUID生成唯一标识符:

import java.util.UUID;

/**
 * Created by lay on 18/02/2018.
 */
public class test {

    public static void main(String[] args) {
        System.out.println(UUID.randomUUID());;
    }
}

打印:

04f04c46-d2b2-4699-bc4d-91168cd9e5a4

我们看到了36个字符,和API文档里面描述的128位的值不符。

抛去固定的4个“-”,一共32个字符。

API文档中并未直接说明这一串唯一标识符是16进制,但其描述这个字符串的组成时各个部分其实都是16进制:

例如描述最高有效位:

 0xFFFFFFFF00000000 time_low
 0x00000000FFFF0000 time_mid
 0x000000000000F000 version
 0x0000000000000FFF time_hi

那么既然它是表示16进制的话,我们就需要看看它等于多少位二进制:

2个16进制 = 8位二进制

32个16进制 = 128位二进制

所以UUID表示128位二进制或者32位字符的唯一标识符

UUID由128位组成,那么组合的种类就是有限个,所以对于UUID作为唯一标识符不是永远不会重复,而是重复的概率非常的低。

原文地址:https://www.cnblogs.com/lay2017/p/8452992.html

时间: 2024-10-11 13:22:51

为什么UUID.randomUUID()表示一个128位的值的相关文章

java UUID.randomUUID()自动生成主键作为Id或文件路径

UUID.randomUUID().toString()是javaJDK(1.5以上的版本)提供的一个自动生成主键的方法,它生成的是以为32位的数字和字母组合的字符,中间还参杂着4个 - 符号. 作用:它可以作为我们表的标识列来增加,比序列增长更加方便.当然还可以用来拼接作为路径,或者图片的前缀名等等. 使用原因: 文件命名或者其他使用时间命名对于高并发会存在风险,使用UUID会规避风险, import java.util.UUID: UUID.randomUUID().toString():

CSys 128位CPU及计算机模拟与中英文双语编程环境

本软件分为两大部分.一个是Csys指令集的128位支持中英文指令的虚拟计算机模拟器.一个是基于这种计算机的中英文汇编编译的环境.另外还有些小工具. 欢迎使用本软件. 本软件包括<中文汇编语言编译器>软件.是配套CRISC128型CPU计算机使用的在PC机上的交叉汇编器. 本软件包括一种中英文双语的128位精简指令集CPU计算机的模拟器.可以模拟该CPU和外设的基本功能. 本软件可以模拟的外设包括虚拟显示器.模拟软驱.模拟硬盘.鼠标.键盘.模拟串口.模拟并口.定时器. 下载地址

第16章 调色板管理器_16.4 一个DIB位图库的实现(1)

16.4.1自定义的 DIBSTRUCT结构体 字段 含义 PBYTE *ppRow ①指向位图视觉上最上面的一行像素.(不管是自下而上,还是自上而下) ②放在第一个字段,为的是后面定义宏时可方便访问到 int iSignature =“Dib ”,是这个结构体的标志 HBITMAP hBitmap 存储了由CreateDIBSection返回的位图句柄(注意,实质是DIB,但兼有DDB的特点,可直接BitBlt) BYTE *pBits 指向像素阵列的指针,其指针值在CreateDIBSect

UUID.randomUUID().toString() 的作用

public static String createNewId(){ return UUID.randomUUID().toString() ; } UUID.randomUUID().toString()是javaJDK提供的一个自动生成主键的方法.UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的,是由一个十六位的数字组成,表现出来的 形式.由以下几部分的组合:当前日期和时间(UUID的

UUID.randomUUID()生成唯一识别码

1.UUID 的概念UUID(Universally Unique Identifier):通用唯一识别码,是一种软件建构的标准. UUID 目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定. UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的. 2.UUID的组成UUID由以下几部分组合: (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

任意输入一个4位正整数,调用函数(函数自定义)输出该正整数数的各位数 字组成的最大数。

/*任意输入一个4位正整数,调用函数(函数自定义)输出该正整数数的各位数字组成的最大数.*/#include <stdio.h>int numb(int a){ int i = 0, j = 0,sum = 0, b[4]; b[0] = a%10; b[1] = a/10%10; b[2] = a/100%10; b[3] = a/1000; for (i = 0 ;i < 4; i++) { for(j = 0;j < 3 - i; j++) { if(b[j] > b[

给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数。

1 package digitAddTogither; 2 3 /** 4 * Created by ZKY on 2017-08-15 01:00. 5 * 给出一个非负整数 num,反复的将所有位上的数字相加,直到得到一个一位的整数. 6 * 样例 7 * 给出 num = 38. 8 * 相加的过程如下:3 + 8 = 11, 9 * 1 + 1 = 2. 10 * 因为 2 只剩下一个数字,所以返回 2. 11 */ 12 public class DoMain 13 { 14 /**

hdu 3183 A Magic Lamp(给一个n位的数,从中删去m个数字,使得剩下的数字组成的数最小(顺序不能变),然后输出)

1.题目大意是,给你一个1000位的数,要你删掉m个为,求结果最小数. 思路:在n个位里面删除m个位,也就是找出n-m个位组成最小数 所以在区间 [0, m]里面找最小的数,对应的下标标号i 接着找区间 [i+1,m++]里面的最小数,对于下标为ii 接着找区间 [ii+1,m++]里面的最小数-- 这样就会找n-m个数了.区间这样安排的目的是为了保证取出来的数的顺序. 2代码: #include<cstdio> #include<cstring> #include<cmat