从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/

上一篇:UVa 11134 Fabled Rooks (贪心+问题分解)


下一篇:雨痕 的《Python学习笔记》--附脑图(转)