• 从UUID想到的


     1.UUID的定义

      通用唯一标识符(UUID)被设计成一个在时间和空间上都独一无二的数字,常被用作唯一性标识。

       UUID是一个由5位十六进制数的字符串表示的128比特数字,其格式为 aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee。 UUID的生成用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字,目的是保证UUID的唯一性。

     2.Java对UUID的支持

      JDK1.5之后增加了对UUID的支持:

       UUID uuid  =  UUID.randomUUID();

       String s = UUID.randomUUID().toString();

      3.MySQL对UUID的支持

      MySQL中也可以生成UUID,如下:

      mysql> select uuid();

       +--------------------------------------+ | uuid()                              

       | +--------------------------------------+ |

      05bde465-d901-11e4-b27d-e005c5f19f8f |

      +--------------------------------------+ 1 row in set (0.14 sec)

     4.UUID的用途

      UUID可以被用作数据库集群中的主键,数据库集群中采用自增长方式来保证唯一性时,可能会出现2个相同的主键。使用UUID来代替自增长几乎是不会有重复的,可以完成类似Oracle中的sequence的功能,生成唯一键。

       单数据库时,比如MySQL,由于有行级锁,自增长方式产生的主键肯定是唯一的,但是集群中就难以保证了。 数据库做了集群,上层就应有负责负载均衡的模块,和web访问需要负载均衡到各服务器一样。

     

      5.serialVersionUID

      serialVersionUID,这也是一个很长的数字串,但是它和UUID可以一点的关系都没有。 serialVersionUID主要用于反序列化中版本的比较,决定着反序列化是否能够成功。  

      关于serialVersionUID有一点是需要注意的,如果工作中频繁的拷贝代码,将serialVersionUID也进行了复制的话,就很有可能导致反序列化的失败。

       

      关于serialVersionUID的其他知识,可以参见:

       http://blog.csdn.net/dancen/article/details/7236575

      http://www.strutshome.com/index.php/archives/641

      http://www.cnblogs.com/guanghuiqq/archive/2012/07/18/2597036.html

      http://www.ibm.com/developerworks/cn/java/j-5things1/

  • 相关阅读:
    #575. 「LibreOJ NOI Round #2」不等关系
    P4494 [HAOI2018]反色游戏
    P6378 [PA2010] Riddle
    子集卷积
    躯壳
    C++11、14、17里的lambda表达式简介
    数据结构与算法复习——7、斐波那契堆和配对堆
    数据结构与算法复习——6、二项队列及其分析
    数据结构与算法复习——5、摊还分析入门
    高等代数(二)预习——4、唯一因式分解定理
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4387007.html
Copyright © 2020-2023  润新知