博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java生成短8位uuid
阅读量:7119 次
发布时间:2019-06-28

本文共 938 字,大约阅读时间需要 3 分钟。

hot3.png

短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随即选取一个。

本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,然后通过模62操作,结果作为索引取出字符,

这样重复率大大降低。

经测试,在生成一千万个数据也没有出现重复,完全满足大部分需求。

代码贴出来供大家参考。

[java] 
  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. }  

转载于:https://my.oschina.net/u/2436679/blog/645576

你可能感兴趣的文章
log4j整理
查看>>
Oracle Tuning ( instance 级别 ) 01
查看>>
HTML 5 画布
查看>>
# 20155224 实验四 Android程序设计
查看>>
ARP 协议 理解
查看>>
Allow windows service to "Interact with desktop"
查看>>
InitGoogleLogging坑爹
查看>>
SQL 查询间隔时间大于60s的所有数据
查看>>
*ecshop 限制文章帮助文章显示条数
查看>>
使用phpStudyy运行tipask
查看>>
c# 常用函数
查看>>
网络TCp数据的传输设计(黏包处理)
查看>>
C++ Custom Control控件 向父窗体发送对应的消息
查看>>
二十四 多重继承
查看>>
jmeter压力性能测试-多台机器并发请求
查看>>
选择编程字体
查看>>
小程序日常工作总结
查看>>
mySql学习笔记:比sql server书写要简单
查看>>
ajax封装
查看>>
例题9-6 UVa11400 Lighting System Design(DP)
查看>>