Java 唯一ID生成器「建议收藏」

Java 唯一ID生成器「建议收藏」前言:   前段时间,写了一个ID生成,发在群里,结果遭到别人嘲笑,心有不甘,于是思来想去,决定在重新写一个ID生成器。此方法生成的ID理论上也是会有重复,但是这个概率太低太低,低到可以忽略不计。原理:使用当前时间戳+指定长度的随机数,并随机打乱字符串。可以生成指定长度的纯数字的ID。具体实现代码:/***普通Id生成器,用时间戳生成+2位随机数生成,*此方法

大家好,又见面了,我是你们的朋友全栈君。

前言:

     前段时间,写了一个ID 生成器,发在群里,结果遭到别人嘲笑,心有不甘,于是思来想去,决定在重新写一个ID生成器。此方法生成的ID理论上也是会有重复,但是这个概率太低太低,低到可以忽略不计。

原理:

使用当前时间戳+指定长度的随机数,并随机打乱字符串。可以生成指定长度的纯数字的ID。

具体实现代码:

/**  * 普通Id生成器,用时间戳生成+指定位随机数生成,  * 此方法用于单机应用并且并发量不高的情况之下  *  * @return  */ public static String getId() {
    //获取当前时间戳
    String str = String.valueOf(System.currentTimeMillis());
    List list = new ArrayList();
    //将时间戳放入到List    for (Character s : str.toCharArray()) {
        list.add(s.toString());
    }
    //随机打乱
    Collections.shuffle(list);
    //拼接字符串,并添加2(自定义)位随机数
    return String.join("", list) + randomNumber(2);
}


/**  * 生成指定长度的一个数字字符串  *  * @param num  * @return  */ public static String randomNumber(int num) {
    if (num < 1) {
        num = 1;
    }
    Random random = new Random();
    StringBuilder str = new StringBuilder();
    for (int i = 0; i < num; i++) {
        str.append(random.nextInt(10));
    }
    return str.toString();
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148971.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月16日 下午1:16
下一篇 2022年6月16日 下午1:36


相关推荐

  • vue项目中,定义并使用 全局变量,全局函数

    vue项目中,定义并使用 全局变量,全局函数一 定义变量 并全局使用原理 1 单独新建一个全局变量模块文件 模块中定义一些变量初始状态 用 exportdefaul 暴露出去 2 在 main js 中引入 并通过 Vue prototype 挂载到 vue 实例上面 供其他模块文件使用 3 或者直接引入到需要的模块文件中使用 项目目录步骤 1 新建 global variable

    2026年1月27日
    3
  • Java神操作之SpringBoot基础上添加Kotlin混合开发

    Java神操作之SpringBoot基础上添加Kotlin混合开发第一步在原有基础上引入依赖 dependency groupId org jetbrains kotlin groupId artifactId kotlin stdlib jre8 artifactId dependency

    2026年3月18日
    4
  • 初识缓存以及ehcache初体验「建议收藏」

    初识缓存以及ehcache初体验

    2022年1月19日
    51
  • LGPL中文版

    LGPL中文版两水平线内为原出处 txt 文件完整版 该篇翻译文章原出处为 http gnu freehostingg com lgpl GNU 较宽松公共许可证 简体中文翻译版 nbsp 声明 这是一份 GNU 较宽松公共许可证非正式的中文翻译 它不是自由软体基金会所发布 并且不能适用于使用 GNULGPL 的软体 只有 GNULGPL 英文原文的版本才行 然而 我们希望这份翻译能帮助中文的使用者

    2026年3月16日
    1
  • 最简单的 MyBatis Plus 的多表联接、分页查询实现方法

    最简单的 MyBatis Plus 的多表联接、分页查询实现方法一、前言最近在加强ITAEM团队的一个app项目,人员配备:安卓+前端+后台后台DAO层借鉴了华工其他软件开发团队,使用了新颖强大的MyBatisPlus框架,里边有一个类似百度贴吧的发帖子的功能:而如果设计表,应为帖子表t_postidtitle标题content内容xxuser_id用户外键用户表t_userid…

    2022年5月31日
    37
  • 高并发抢购思路

    高并发抢购思路电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因?一、大规模并发带来的挑战在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整…

    2022年5月6日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号