• 自动生成ID遇到的一些问题


     

    关于自动生成ID报告

    当前采用策略

    使用UUID.randomUUID()生成一个32位的ID

    存在问题:32位太长,

    目标:尽量简化到20位,或者10

     

    初步解决方案有(根据自己的理解,按照优先级进行排列)

    1:根据UUID生成的32位中,截取10位,最简单的方式是取得UUID生成的前10位。可行性:UUID生成的32位,是根据一定信息生成的一个不重复的随机ID(不重复是因为重复的概率极小).每位由数字字母组成,所有枚举出来是36的10次方,在万亿以上,如果我们的app个数在万左右,那么重复的概率应该在亿分之1左右。

     

    2:根据数据量,先预估肯定在1千万(这个可以变,根据实际情况预估). 系统提前生成1千万个不同的ID,每次新建时,取出一个生成好的(是之前没取过的,可以顺序取)。可行性:绝对不会重复,缺点:每次新建时需要从数据库中取。

     

    3:根据位数,如10位,自己编写函数,生成一个随即的数,最简单的是生成一个10的随机数字(当然可以加入时间以及别的信息)。可行性:如果由数字字母(区分大小写)枚举出来在百万亿以上。如果app在万级,重复率也是百亿分之一。缺点:需要自己写算法,以及耗时。

     

    4:MySQL数据库自曾方式;优点:不重复,数据库排序快,缺点,太规律,容易暴露自己的信息(比如用户注册一个,就可以知道我们系统里的注册量了)。

     

    改进方案

    自动生成6位id

    采用算法"短链接" 

    说明:

    短链接算法是先将url进行MD5加密后生成的32位字符串,然后在对这32位处理,得出4个6位的字符串(这4个中每个都可最为短链接)。

    程序中采用了uuid自动生成32位唯一字符串。然后对这32为进行处理,在得出的4个短链接字符串中,选取第一个,作为id

     

    微博短链接的生成算法(Java 版本):http://blog.csdn.net/wgw335363240/article/details/6568794

     

  • 相关阅读:
    js-添加删除记录-修改
    js-添加删除记录-添加
    js-添加删除记录-删除
    dom增删改
    事件的冒泡
    div随鼠标在浏览器的窗口任意移动
    多选框全选练习
    python-day3
    python-day2
    python-day1
  • 原文地址:https://www.cnblogs.com/bent/p/2803472.html
Copyright © 2020-2023  润新知