java生成短8位uuid

短8位UUID思想其實借鑑微博短域名的生成方式,可是其重複機率太高,並且每次生成4個,須要隨即選取一個。java

本算法利用62個可打印字符,經過隨機生成32位UUID,因爲UUID都爲十六進制,因此將UUID分紅8組,每4個爲一組,而後經過模62操做,結果做爲索引取出字符,算法

這樣重複率大大下降。app


經測試,在生成一千萬個數據也沒有出現重複,徹底知足大部分需求。
dom

代碼貼出來供你們參考。
測試


[java]  view plain copy
  1. public static String[] chars = new String[] { "a""b""c""d""e""f",  
  2.             "g""h""i""j""k""l""m""n""o""p""q""r""s",  
  3.             "t""u""v""w""x""y""z""0""1""2""3""4""5",  
  4.             "6""7""8""9""A""B""C""D""E""F""G""H""I",  
  5.             "J""K""L""M""N""O""P""Q""R""S""T""U""V",  
  6.             "W""X""Y""Z" };  
  7.   
  8.   
  9. public static String generateShortUuid() {  
  10.     StringBuffer shortBuffer = new StringBuffer();  
  11.     String uuid = UUID.randomUUID().toString().replace("-""");  
  12.     for (int i = 0; i < 8; i++) {  
  13.         String str = uuid.substring(i * 4, i * 4 + 4);  
  14.         int x = Integer.parseInt(str, 16);  
  15.         shortBuffer.append(chars[x % 0x3E]);  
  16.     }  
  17.     return shortBuffer.toString();  
  18.   
  19. }  
相關文章
相關標籤/搜索