精华内容
下载资源
问答
  • UUID.fromString(…)方法中,你有这个:public static UUID fromString(String name) {String[] components = name.split("-");if (components.length != 5)throw new IllegalArgumentException("Invalid UUID ...

    在UUID.fromString(…)方法中,你有这个:

    public static UUID fromString(String name) {

    String[] components = name.split("-");

    if (components.length != 5)

    throw new IllegalArgumentException("Invalid UUID string: "+name);

    for (int i=0; i<5; i++)

    components[i] = "0x"+components[i];

    long mostSigBits = Long.decode(components[0]).longValue();

    mostSigBits <<= 16;

    mostSigBits |= Long.decode(components[1]).longValue();

    mostSigBits <<= 16;

    mostSigBits |= Long.decode(components[2]).longValue();

    long leastSigBits = Long.decode(components[3]).longValue();

    leastSigBits <<= 48;

    leastSigBits |= Long.decode(components[4]).longValue();

    return new UUID(mostSigBits, leastSigBits);

    }

    它首先将UUID的各个部分分成组件,然后它将创建两个long.在这里,您通过添加前导字符仅更改了UUID的第一个组件,您的UUID字符串例如是“12345894ff97a-039b-47fe-8a72-950b7766d50c”.所以第一个组件是“12345894ff97a”,它会做什么

    long mostSigBits = Long.decode(components[0]).longValue();

    那么你将得到“320256540146042”,实际的HEX表示是“12345894ff97a”,然后你有一个位操作,将长16位移到左边:

    mostSigBits <<= 16;

    这将导致“2541588541301456896”实际的HEX表示为“2345894ff97a0000”(我们移动了16位所以4个十六进制字符)并且你开始看到发生了什么,看到长格式只有64位,所以当移位时有些是输了,这里第一个字符“1”丢失了.在释放空间之后,它将添加第二个组件:

    mostSigBits |= Long.decode(components[1]).longValue();

    这将导致“2541588541301457819”,其实际HEX表示为“2345894ff97a039b”,然后它将再次将长16位向左移位:

    mostSigBits <<= 16;

    这将导致“-8552342864911466496”,其实际HEX表示为“894ff97a039b0000”,此处您的前导字符全部丢失,因为长64位大小.

    我不需要解释方法的其余部分(最后,大多数位置是“894ff97a039b47fe”,而最小位置是“8a72950b7766d50c”),您已经可以理解,在调用UUID.fromString时,添加到UUID的任何前导字符都将丢失( ..)因为只考虑最后8个十六进制字符(32位),其余的将丢失.

    展开全文
  • UUID和MD5散列重复几率

    千次阅读 2011-08-18 10:25:30
    关于UUID重复几率: 每秒产生10亿笔UUID,100年后只产生一次重复的机率是50%。如果地球上每个人都各有6亿笔UUID,发生一次重复的机率是50%     MD5重复几率:  一般福利彩票的中头奖的机会,约一百万份之...

    关于UUID重复几率:

    每秒产生10亿笔UUID,100年后只产生一次重复的机率是50%。如果地球上每个人都各有6亿笔UUID,发生一次重复的机率是50%

     

     

    MD5重复几率: 
    一般福利彩票的中头奖的机会,约一百万份之一,即1/10e6。而MD5重复几率相当1/10e22个一百万份之一。也就是说:相当于某人买了一亿亿亿次福彩,每次都中头奖的概率。

     

    参考:

    uuid:http://zh.wikipedia.org/wiki/UUID#.E9.9A.A8.E6.A9.9FUUID.E7.9A.84.E9.87.8D.E8.A4.87.E6.A9.9F.E7.8E.87

    md5: http://www.wangchao.net.cn/bbsdetail_74506.html

     

    -- end --

     

     

     

     

     

    展开全文
  • 关于UUID重复

    2022-01-04 15:30:50
    有的人说一定不会重复,也有的人说很小几率重复,其实都有可能,取决于代码中使用的是哪种UUID生成方式,或者说,使用的是哪种UUID算法。 UUID Version 1:基于时间的UUID 基于时间的UUID通过计算当前时间戳、...

    UUID会重复吗

    有的人说一定不会重复,也有的人说很小几率会重复,其实都有可能,取决于代码中使用的是哪种UUID生成方式,或者说,使用的是哪种UUID算法。

    • UUID Version 1:基于时间的UUID
      基于时间的UUID通过计算当前时间戳、随机数和机器MAC地址得到。由于在算法中使用了MAC地址,这个版本的UUID可以保证在全球范围的唯一性。但与此同时,使用MAC地址会带来安全性问题,这就是这个版本UUID受到批评的地方。如果应用只是在局域网中使用,也可以使用退化的算法,以IP地址来代替MAC地址(不考虑手动更改MAC地址的情况)。
    • UUID Version 2:DCE安全的UUID
      DCE(Distributed Computing Environment)安全的UUID和基于时间的UUID算法相同,但会把时间戳的前4位置换为POSIX的UID或GID。这个版本的UUID在实际中较少用到。
    • UUID Version 3:基于名字的UUID(MD5)
      基于名字的UUID通过计算名字和名字空间的MD5散列值得到。这个版本的UUID保证了:相同命名空间中不同名字生成的UUID的唯一性;不同命名空间的UUID的唯一性;相同名字空间中相同名字的UUID重复生成是相同的。
    • UUID Version 4:随机UUID
      根据随机数,或者伪随机数生成UUID。这种UUID产生重复的概率是可以计算出来的,但随机的东西就像是买彩票:你指望它发财是不可能的,但狗屎运通常会在不经意中到来
    • UUID Version 5:基于名字的UUID(SHA1)
      和版本3的UUID算法类似,只是散列值计算使用SHA1(Secure Hash Algorithm 1)算法。

    应该用哪种

    从UUID的不同版本中可以看出

    • Version 1.2 适合应用于分布式计算环境下,具有高度唯一性
    • Version 3.5 适合于一定范围内名字唯一,且有需要生成重复UUID的场景下
    • Version 4 最为简单和方便,适合数据量不是特别大的场景下,Java默认的uuid工具便是此种
      在这里插入图片描述

    狗屎运总在不经意中到来

    老生常谈,目前所有的随机数发生器都是伪随机数,JVM的随机数找到低也是采集于操作系统中一个特殊的设备:熵池。在linux系统中这个设备位于/dev/random(他是一个阻塞性的),当熵池噪声不够的时候随机数生成能力会下降。然后呢,就看运气了,我在之前的一个项目的开发过程中遇到过一次uuid重复,以后就再也没出现过。
    综合来看,一般情况下使用Ver.4的算法是没什么太大的问题的,如果追求高并发或者大数据量处理可以使用Ver.1,毕竟再趋近于0的概率也是会有一个1存在。

    节选自知乎文章https://www.zhihu.com/question/34876910

    展开全文
  • 交易的异常显示是入库异常,有了重复的交易;我大概印象里有那张表,8...关于UUID重复几率:每秒产生10亿笔UUID,100年后只产生一次重复的机率是50%。 我们知道UUID是很难重复的,但是其中8位就不一定了,各位共勉 ...

    交易的异常显示是入库异常,有了重复的交易;我大概印象里有那张表,8位的长度,难道是超过1亿的数据量了?

    不得而知,翻看了代码,隐约觉得有问题:代码如下

    uuid.substring(0,8)

    关于UUID重复几率:每秒产生10亿笔UUID,100年后只产生一次重复的机率是50%。

    我们知道UUID是很难重复的,但是其中8位就不一定了,各位共勉

    展开全文
  • 对于 [[NSUUID UUID] UUIDString] 产生的字符串有可能重复吗?概率是多少?code代码时是否需要考虑? 探索 根据 NSUUID的苹果官方说明 阐述: UUIDs (Universally Unique Identifiers), 也被称作 GUIDs (Globally ...
  • 有时传递参数会用到随机数,但是就算32位也会有重复的概率,所以自己列举3种方法,以便以后方便使用。欢迎大家互相讨论学习! 1. 随机数可设定位数 public class RandomHelper 2 { 3 /// <summary> 4 ///...
  • UUID

    2019-10-02 09:36:50
    uuid是个ID,我们知道ID是不能重复的。在个人作品的小范围内可以保证ID不重复,但是一件全球化产品的ID值怎么保证不重复呢?uuid(universally unique )全球通用唯一ID,就为解决这一问题因运而生。 uuid是谁搞明白...
  • UUID 全称是 Universally unique identifier,它是一种识别符,使用任意的计算机都可以生成,不需要一个中央数据库进行管理,即可以保证几乎没有重复几率。而 UUID 的值域之大,据说给世界上每一粒沙子分配一个 ...
  • 重复概率居然还是约等于0.368(再次重申,这里的0.368是保留3位小数后的结果,实际情况经过测试发现还是存在细微的偏差,但是保留3位小数的结果相等),好吧,那我们对于上面的在同一毫秒时间内生成重复标识符的概率...
  • UUID/GUID介绍、生成规则及生成代码

    千次阅读 2020-10-12 23:57:36
    2.4 版本4 - 基于随机数的UUID 2.4.1 优点 实现简单 2.4.2 缺点 重复几率可计算 2.4.3 生成规则 生成16byte随机值填充UUID。重复机率与随机数产生器的质量有关。若要避免重复率提高,必须要使用基于密码学上的假...
  • 关于UUID

    2019-08-16 21:17:02
    UUIDUUID是Universally Unique Identifier的缩写,它是在一定的范围内(从特定的名字空间到全球)唯一的机器生成的标识符。 UUID是16字节128位长的数字,通常以36字节的字符串表示,其中的字母是16进制表示,大小...
  • UUID是由一组32位数的16进制数字所构成...UUID重复几率非常非常低,是故大可不必考虑重复冲突的问题。 像Java和Python都有专门库函数生成UUID,PHP也有第三方库可以用来生成UUID。 安装我们使用composer来安装uuid库...
  • 如果你在网上快速的做一个关于 UUID 和 MySQL 的搜索,你会得到相当多的结果。以下是一些例子:存储 UUID 和 生成列在 MySQL 中存储 UUID 的值说明 InnoDB 中的主键模型及其对磁盘使用的影响主键选型之战 UUID vs. ...
  • uuiD

    多人点赞 2018-06-13 21:37:13
    uuid就是唯一识别码。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。...他的重复几率几乎为0;如果遇到重复的那就证明你太幸运了。public cl...
  • 目前很多所谓PHP生成UUID的方法都以随机数最为其算法的基础,这虽然在实践中很难出现重复几率,但在理论上显然是行不通的。这里用MongoDb的ObjectId作为例子,个人觉得这种生成方法是可以引入到PHP中的。ObjectId...
  • 连续的 UUID 值之间有许多重复字段 第一个字段 “time-low” 每 429 秒滚动一次 MySQL UUID 函数产生 1 版本的值 这是一个使用 “uuidgen” (Unix 工具)生成基于时间的值的示例: yves@laptop:~$ for i ...
  • PHP配置UUID模块

    千次阅读 2017-09-24 13:02:48
    PHP配置UUID模块
  • 利用java生成uuid

    千次阅读 2020-08-07 20:17:51
    它的组成比较复杂,是基于当前时间(纳秒级时间)、计数器、硬件标识(通常是MAC地址)以及随机数等组合来生成的,一般情况下,不会生成重复的UUID重复几率非常小,据概率估计,若每秒产生10亿笔UUID,100年后只...
  • 使用基于时间的 UUID 值时,需要注意以下几点: 可以从前三个字段确定生成值的大概时间 连续的 UUID 值之间有许多重复字段 第一个字段 "time-low" 每 429 秒滚动一次 MySQL UUID 函数产生 1 版本的值 这是一个使用 ...
  • 估计某人被陨石击中的年风险是170亿的一次机会,这意味着该概率约为0.00000000006(6×10−11),相当于产生数十万亿个UUID几率一年内重复一次。 换句话说,只有在接下来的100年中每秒生成10亿个UUID之后,才创建...
  • 在一次公开课上,听别人讲过全局分布式uuid的设计,听过twitter的snowflake的设计。也听过,如果使用单独的计数器服务,不可能每次都保存当前计数器到文本,自己想到应该可以每隔一些数,例如1万次,10万次,反正64...
  • python是如何生成uuid

    2021-11-10 16:28:58
    UUID(Universally Unique Identifier)是通用唯一识别码,在许多领域用作标识,比如我们常用的数据库也可以用它来作为主键,原理上它是可以对任何东西进行唯一的编码的。 1、uuid1()基于时间戳  由MAC地址、...
  • nodejs 使用uuid

    千次阅读 2017-05-08 09:54:42
    安装 npm install uuid --save 使用 引入var uuid = require('uuid'); v1uuid.v1() v4uuid.v4() 通常我们使用基于时间戳 v1() 生成的UID,随机生成 v4() 还是有一定几率重复的。
  • 【Python】uuid生成唯一ID

    千次阅读 2018-09-19 10:58:55
    uuid是128位的全局唯一标识符(univeral unique identifier),通常用一个32位的字符串的形式来表现。有时也称guid(global unique identifier)。python中自带了uuid模块来进行uuid的生成和管理工作。(python 2.7和...
  • 在数据量大的时候,我们常常需要一些唯一识别ID号,而在jdk1.5版Util包下的UUID是javaJDK提供的一个自动生成主键的方法。UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对...
  • HashCode有多大可能重复

    万次阅读 2015-07-16 18:49:05
    hashcode重复的可能性
  • UUID (GUID) 理解

    2021-05-08 17:56:00
    UUID,Universally Unique Identifier的缩写,UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息。GUID,是Globally Unique Identifier的缩写,跟UUID是同一个东西,只是...
  • 上一篇从身份证号是如何生成,来认识了中心机构下生成唯一标识的方法,这一篇来看看面对庞大的计算机世界,无中心机构时,那又如何生成唯一标识呢?认识UUID接下来从一个广为人知...
  • 随机UUID的简单使用

    2020-07-10 08:33:07
    什么是UUID UUID 是 通用唯一识别码(Universally ...在这样的情况下,就不需考虑数据库创建时的名称重复问题。 UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID,从理论上讲,如果一台机器

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,050
精华内容 420
关键字:

uuid重复几率