精华内容
下载资源
问答
  • 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位),其余的将丢失.

    展开全文
  • Java 自带的UUID 重复问题

    万次阅读 多人点赞 2016-09-08 15:55:30
    在网上搜了一下,大多数人多是uuid 重复概率很小基本,但是uuid在我这里还是重复了,在甲方公司做开发,数据库表数据大概是200多万条, 有定时任务,每天都会执行定时任务,进行数据插入,每天基本上也是5.6万条吧...

    在网上搜了一下,大多数人多是uuid 重复的概率很小基本,但是uuid在我这里还是重复了,在甲方公司做开发,数据库表数据大概是200多万条,

    有定时任务,每天都会执行定时任务,进行数据插入,每天基本上也是5.6万条吧, 用到的主键id 就是用的uuid , 连续隔了一天出现了两次主键重复冲突异常,

    查找了一下原因, 因为客户这边的机子都是集群的,有两台机子再跑定时任务,逻辑上会加上redis锁,这样只能一台机器跑业务,但是问题就出在这里,

    下次执行定时任务的时候不知道是哪台机器,反正我现在是没有搞清楚原因,我解决办法就是直接加上时间戳拼成主键ID

    ,这样就不会重复了,不知道你们是否也遇到了这个问题

    展开全文
  • 或者截取其中某几位(3位或者4位等等),再加上几位不会重复的数字或者字母,组成一个6位重复概率极低极低的数呢? 求大神实现代码和思路!! 十分感谢!! public class testRandom { public static ...
  • 对于 [[NSUUID UUID] UUIDString] 产生的字符串有可能重复吗?概率是多少?code代码时是否需要考虑? 探索 根据 NSUUID的苹果官方说明 阐述: UUIDs (Universally Unique Identifiers), 也被称作 GUIDs (Globally ...

    文章目录

    概述

    对于 [[NSUUID UUID] UUIDString] 产生的字符串有可能重复吗?概率是多少?code代码时是否需要考虑?

    探索

    根据 NSUUID的苹果官方说明 阐述:

    UUIDs (Universally Unique Identifiers), 也被称作 GUIDs (Globally Unique Identifiers) 或者 IIDs (Interface Identifiers), 是128位值. NSUUID创建的uuid符合RFC 4122 version 4,使用随机字节创建。

    可见UUID的分为5个版本,version 1 ,version 2 , version 3-5 ,version 4 ,那么看下NSUUID的version 4的重复概率是多少?

    • version 4 的重复概率

    对于version 4, 文章中的 The Random UUID probability of duplicates 计算了这个概率,由于version 4 在总共128位中,2位表示rfc 4122(“leach salz”)uuid,4位表示版本(0100表示“随机生成”),因此随机生成的uuid有122个随机位。

    计算概率是0.00000000006(6×10−11),相当在大约100年的时间内每秒生成10亿个uuid之后,创建一个副本的概率才会达到50%

    所以重复的概率可以视为 0


    参考文章:
    1.https://stackoverflow.com/questions/1155008/how-unique-is-uuid/6963990#6963990
    2.Random_UUID_probability_of_duplicates
    3.https://developer.apple.com/documentation/foundation/nsuuid
    4.https://nshipster.com/uuid-udid-unique-identifier/

    展开全文
  • UUID

    2019-03-28 21:15:16
    通用唯一识别码(英语:Universally Unique Identifier,UUID),是...重复UUID概率接近零,可以忽略不计。若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。 它有多个版本,我们主要使用"版本1":UUID 是...

    通用唯一识别码(英语:Universally Unique Identifier,UUID),是用于计算机体系中以识别信息数目的一个128位标识符。根据标准方法生成,不依赖中央机构的注册和分配,UUID具有唯一性,这与其他大多数编号方案不同。重复UUID码概率接近零,可以忽略不计。若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。

    它有多个版本,我们主要使用"版本1":UUID 是根据时间和节点 ID(通常是MAC地址)生成。目前主要的使用场景包括:

    Quick start(python)

    # uuid本质上由16个字节组成(128bit),即32个hex字符(每个hex 4bit);这里我们统一去掉中横线, 并转换为小写
    import uuid
    
    uuid.uuid1().get_hex()  -> '87d15fa6ed6e11e8843d4a0002d90800'
    

    各端封装

    lang	usage
    python	
    from mmsdk.models import mmuuid
    
    mmuuid.new_uuid()
    

    nodejs https://www.npmjs.com/package/uuid

    go

    iOS

    [NTUtilities getRandomUUID]
    

    android

    com.taou.maimai.common.log2.Utils.uuid()
    ```
    
    ### refs
    https://en.wikipedia.org/wiki/Universally_unique_identifier
    
    https://docs.python.org/2/library/uuid.html#uuid.uuid1
    
    展开全文
  • UUID和MD5散列重复的几率

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

    2007-12-27 08:39:40
    从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID import java.util.UUID; public c....
  • UUID简记

    2018-02-27 11:23:00
    一、概述 wiki上的解释: Auniversally unique identifier(UUID) is ...128位的UUID也并非没有重复的可能,理论证明这个重复概率很小近乎为零以至于可以忽略。 UUID规范的表示格式通常用32个16进制字符表示(...
  • 短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。 本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组...
  • JAVA UUID简介

    2014-08-21 10:28:19
    从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID package com.mytest
  • Java UUID

    2014-08-25 17:25:36
    从理论上讲,如果一台机器每秒产生10000000个UUID,则可以保证(概率意义上)3240年不重复。  JDK1.5中新增的一个类UUID,在java.util下,用它可以产生一个号称全球唯一的ID。 import java.util.UUID;  ...
  • 短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,...
  • 短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,...
  • Windows/Linux下C++对于UUID的跨平台封装

    千次阅读 2018-12-19 16:29:28
    Universally Unique Identifier,UUID,通用唯一识别码。是用于计算机体系中以识别信息数目的一个128位标识符...重复UUID概率接近零,可以忽略不计。 UUID是128位,16个字节,可以用32个HEX进制的数字表示。标准的...
  • 短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,...
  • JAVA UUID

    2016-06-11 21:48:07
    从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID package com.mytest
  • UUIDUtil获取八位UUID

    千次阅读 2019-04-30 14:03:23
    短8位UUID思想源于微博短域名的生成方式,但是原版的重复概率过高,而且每次生成4个,需要随机选取一个。 本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分为8组,每4个为一组...
  • UUID小记

    2014-04-22 22:53:34
    从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。  UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID。 import java.util.UUID;  public
  • Java之——生成短8位UUID

    万次阅读 2016-04-12 18:54:44
    短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。 本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组...
  • java uuid

    千次阅读 2013-04-14 10:51:07
    从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID package com.mytest;
  • 利用java生成uuid

    千次阅读 2020-08-07 20:17:51
    它的组成比较复杂,是基于当前时间(纳秒级时间)、计数器、硬件标识(通常是MAC地址)以及随机数等组合来生成的,一般情况下,不会生成重复UUID重复几率非常小,据概率估计,若每秒产生10亿笔UUID,100年后只...
  • Java中UUID的使用

    2020-01-24 18:38:49
    虽然在特定的范围内重复的可能性极小,但并不意味着UUID一定不会重复重复概率和避免重复的范围与UUID的类型(使用的算法)有关: 1. UUID Version1: 基于时间的UUID。通过计算当前时间戳、随机...
  • UUID - 通用唯一识别码

    千次阅读 2019-02-28 20:45:58
    UUID - 通用唯一识别码 通用唯一识别码(英语:Universally Unique Identifier,UUID),是用于计算机体系中以识别信息数目的一个 128 位...重复 UUID概率接近零,可以忽略不计。 其目的,是让分布式系统中的所有...
  • Java 生成 UUID

    2017-08-29 10:13:12
    从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。 阅读目录 1.UUID 简介2.UUID 组成3.项目实战 回到顶部 1.UUID 简介  UUID含义是通用唯一识别码 (Un
  • JAVA UUID 生成

    2016-11-25 16:26:00
    从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。  UUID是1.5中新增的一个类,在java.util下,用它可以产生一个号称全球唯一的ID。  生成UUID的网站:...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 203
精华内容 81
关键字:

uuid重复概率