• 第十一章《Java实战常用类》第5节:UUID类


    有时候程序员需要用一个的字符串来给数据当作唯一标识。例如,很多大型电商系统每分钟就有可能产生上万条交易数据,如果每条数据都需要和其他数据区分开,程序员就要给每条数据设定一个属于它自己的唯一编号,就像每个人都有一个属于自己的唯一的身份证号码一样。

    在高速产生数据的情况下,确保每条数据编号的唯一性并不是一件容易的事情。经过人们大量研究发现:如果能够把网卡的MAC地址、时间戳、名称空间、随机数或伪随机数、时序等因素都加入到字符串当中,再经过一系列合理的位运算操作,就能生成一个几乎不重复的字符串。根据个指导思想,研究者们提出了UUID的概念。UUID是“Universally Unique Identifier”的缩写,意为“全局唯一标识符”。为了适应不同的应用场景,研究者们又提出了5种UUID的生成算法,这些算法都比较复杂,为了能够让开发者能够快速的生成UUID,Java语言提供了一个专门生成UUID的类,这个类的名字就叫UUID,它位于java.util包下。

    生成UUID的方法有很多,但实际开发过程中人们一般都用randomUUID()静态方法来生成UUID,下面的【例11_18】展示了生成UUID的过程。

    【例11_18 生成UUID】

    Exam11_18.java

    1. import java.util.UUID;
    2. public class Exam11_18 {
    3.     public static void main(String[] args) {
    4.         for (int i=0;i<10;i++){
    5.             UUID uuid = UUID.randomUUID();//生成UUID
    6.             System.out.println(uuid);
    7.         }
    8.     }
    9. }

    【例11_18】用循环的形式生成了10个UUID类对象,并且把这些对象全部输出到控制台上。【例11_18】的运行结果如图11-16所示。

    图11-16【例11_18】运行结果

    必须强调:UUID几乎没有重复的可能性,因此读者的运行结果与图11-16也不会相同。通过图11-16可以看到:每个UUID都是由5组十六进制数组成的,第一组的长度是8,中间3组长度是4,最后一组长度为12。每一组数字都由“-”隔开,数字和“-”总共为36位。如果希望把UUID类对象转换成字符串,只需要调用UUID对象的toString()方法即可。

    使用UUID的场景很多,例如给服务器上传文件时,人们所上传的文件难免有同名的情况发生,这会导致后上传的文件把先上传的文件覆盖掉。在这种情况下,程序员可以把用户文件的名称中再加上一个UUID字符串,这样就能很好的保证文件名的唯一性。由于UUID的长度过长,有时会导致存储数据时会出现一些问题,这种情况下可以对生成的UUID做适当的加工,例如可以适当的裁剪掉一部分字符串等。总之,只要能满足业务需求就可以,没必要一定使用那个最原始的UUID。

    除阅读文章外,各位小伙伴还可以点击这里观看我在本站的视频课程学习Java!

  • 相关阅读:
    软考中级软件设计师--4.数据库知识
    【TCP】延时应答 与 捎带应答
    redis 哨兵,高可用的执行者
    TCP 三次握手和四次挥手
    【无标题】
    gitee-快速设置
    【设计模式深度剖析】【4】【结构型】【组合模式】| 以文件系统为例加深理解
    玉米社:SEM竞价推广投放之提升转化操作办法
    D-Wave公开演示大规模相干量子退火
    Adobe Audition CS6 下载与安装教程
  • 原文地址:https://blog.csdn.net/shalimu/article/details/128082721