专栏首页工作笔记精华JAVA生成短8位UUID 转

JAVA生成短8位UUID 转

java

原创,转载需注明。



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

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

这样重复率大大降低。



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

代码贴出来供大家参考。



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

--------------------- 
作者:andy_miao858 
来源:CSDN 
原文:https://blog.csdn.net/andy_miao858/article/details/9530245 
版权声明:本文为博主原创文章,转载请附上博文链接!

python

import uuid
 
array = ["a", "b", "c", "d", "e", "f",
         "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
         "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5",
         "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I",
         "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V",
         "W", "X", "Y", "Z"]
 
 
def get_short_id():
    id = str(uuid.uuid4()).replace("-", '')
    buffer = []
 
    for i in range(0, 8):
        start = i * 4
        end = i * 4 + 4
        val = int(id[start:end], 16)
        buffer.append(array[val b])
    return "".join(buffer)
 
 
for i in range(100):
    print(get_short_id())

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Vue Cli 3 搭建一个可按需引入组件的组件库架子

    babel-plugin-component 就是 Element UI 用来实现组件按需加载的一个 babel 插件。我们把它用到我们的组件库上,就不需要重新...

    stys35
  • 微信企业号(公众号)开发流程汇总

             企业号(公众号)申请需要提前申请,因为有些东西需要备案,审核啥的;

    stys35
  • flink读取kafka数据并写入HDFS 转

    stys35
  • 基于Rust-vmm实现Kubernetes运行时

    周亮宇,腾讯云容器技术专家,负责腾讯云容器服务及EKS弹性容器服务,在云计算领域有着丰富的经验。

    腾讯云原生
  • 具有随机特征的高维学习的普遍性定律

    我们证明了具有随机特征的学习的普遍性定理。 我们的结果表明,在训练和泛化误差方面,具有非线性激活函数的随机特征模型渐近等效于具有匹配协方差矩阵的替代高斯模型。 ...

    用户7724216
  • 可以拿来吊打面试官的 SQL Join (二)

    我在这个系列中,所分享的知识,力求逻辑严谨,实战辅证。但一如所有的文章一样,读者需要自己思考,是否正确无误,是否可以拿来直接作用于生产环境。对于没有理解透彻,就...

    用户1564362
  • 「不求人」我用Python抢到了人生的第一单

    但若想使用Selenium成功调用Chrome浏览器完成相应的操作,我们还需要一个媒介与浏览器对接。小明本次使用的是Chrome浏览器,因此就需要通过Chrom...

    程序员小明
  • 图像旋转

    描述 输入一个n行m列的黑白图像,将它顺时针旋转90度后输出。 输入第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <...

    用户1631856
  • EasyValidate优雅地校验提交数据完整性

    在日常的Android开发中,我们在做登录注册等带有提示性输入校验的时候。常常会写样子写代码:

    砸漏
  • 揭秘LOL背后的IT基础设施丨关键角色“调度”

    我们是Kyle Allan和Carl Quinn,在Riot的基础架构团队工作。欢迎阅读这个系列的第二篇文章,详细介绍我们如何在全球范围内部署和操作后端功能。在...

    Tungsten Fabric

扫码关注云+社区

领取腾讯云代金券