java生成自定义长度的唯一随机字符串

news2024/10/7 20:34:50

思路

基于唯一数字,再随机指向ASCII码的大小写字母的编码值实现随机,唯一数字可以由redis自增或者雪花id等生成。

实现代码

/**
     * @description: 生成10个字符的唯一随机字符串,由数字大小写字母组成
     * @date 15:58 2023/10/13
     * @param increment 唯一数字
     * @param len 唯一随机字符长度
     **/
    private static String generateUkStr(long increment, int len) {
        char[] incrementArr = String.format("%0" + len + "d", increment).toCharArray();
        Pair<Integer, Integer> pairA = Pair.of(17, 33);
        Pair<Integer, Integer> pairB = Pair.of(49, 65);
        StringBuilder result = new StringBuilder(len);
        char s;
        for (char c : incrementArr) {
            int randomNum = ThreadLocalRandom.current().nextInt(0, 3);
            if (randomNum == 0) {
                s = c;
            } else if (randomNum == 1) {
                s = (char) (c + ThreadLocalRandom.current().nextInt(pairA.getKey(), pairA.getValue() + 1));
            } else {
                s = (char) (c + ThreadLocalRandom.current().nextInt(pairB.getKey(), pairB.getValue() + 1));
            }
            result.append(s);
        }
        return result.toString();
    }

测试

  • 基于自增数字生成100万个
public static void main(String[] args) {
        //测试生成100万个唯一随机字符,长度为10
        Set<String> set = new HashSet<>();
        //唯一数字长度为8
        for (long i = 11111111; i < 12111111; i++) {
            String result = generateUkStr(i, 10);
            System.out.println(result);
            if (set.contains(result)) {
                throw new IllegalCallerException("已存在");
            }
            set.add(result);
        }
        System.out.println(String.format("总数量%d", set.size()));
    }
  • 结果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1090598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ - git 命令行

为什么要有 git 你很可能遇到过这种情况&#xff0c;在写项目的时候&#xff0c;要我不符合 leader 的要求&#xff0c;因而修改了很多个版本&#xff0c;但是修改到最后一版的时候&#xff0c;leader 有觉得当前这版还没有之前 某一版好&#xff0c;现在又要求你在 之前的那一…

Fbank及MFCC学习

Fbank&#xff1a;FilterBank&#xff1a;人耳对声音频谱的响应是非线性的&#xff0c;Fbank就是一种前端处理算法&#xff0c;以类似于人耳的方式对音频进行处理&#xff0c;可以提高语音识别的性能。获得语音信号的fbank特征的一般步骤是&#xff1a;预加重、分帧、加窗、短时…

【嵌入式开发学习01】Arduino安装esp32-cam以及CameraWebServer实例的实现

目录 1. 硬件2. 软件2.1 arduino下载安装2.2 arduino配置esp32-cam开发板文件2.3 下载相应版本的esp32 3. ESP32-CAM实例&#xff1a;CameraWebServer3.1 选择开发板3.2 选择示例代码进行验证3.3 烧录进行实测 1. 硬件 没买下载主板的可使用usb转串口模块进行烧录&#xff0c;接…

LeetCode【73】矩阵置零

题目&#xff1a; 思路&#xff1a; 1、从题目看&#xff0c;在遍历数组的同时&#xff0c;如果遍历到0&#xff0c;回溯i&#xff0c;j&#xff0c;将其对应的行列变为0。不能变更后面的&#xff0c;后面遍历整个数组都将变成0. 2、需要额外的空间存储要变0的标记位&#xf…

高通推出骁龙X系列进军PC平台

今日&#xff0c;高通在官方博客发布了由高级副总裁兼首席营销官莫珂东&#xff08;Don McGuire&#xff09;署名的一篇文章&#xff0c;正式揭晓了一款全新的芯片系列&#xff1a;骁龙X系列。该款芯片专为下一代PC体验打造。高通表示&#xff0c;2024年将会是PC行业的一个拐点…

OJ项目——统一数据格式返回,我是如何处理的?

目录 前言 OJ项目中是如何处理的 1、准备一个类&#xff0c;作为统一的数据返回格式 2、准备一个类&#xff0c;实现ResponseBodyAdvice接口 3、我们如何写返回值更好 4、进一步优化返回值 小结 前言 关于SpringBoot的同一功能处理&#xff0c;本博主在这篇博客已经有介…

Linux 系统中提供CPU性能分析工具整理

Linux 系统中提供CPU性能分析工具整理 汇总 查看CPU信息 在linux操作系统中&#xff0c;CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中&#xff0c;我们可以通过 cat /proc/cpuinfo 查看一下&#xff1a; cat /proc/cpuinfo显示如下&#xff1a; rootthe…

docker创建elasticsearch、elasticsearch-head部署及简单操作

elasticsearch部署 1 拉取elasticsearch镜像 docker pull elasticsearch:7.7.0 2 创建文件映射路径 mkdir /mydata/elasticsearch/data mkdir /mydata/elasticsearch/plugins mkdir /mydata/elasticsearch/config 3 文件夹授权 chmod 777 /mydata/elastic…

详解cv2.addWeighted函数【使用 OpenCV 添加(混合)两个图像-Python版本】

文章目录 简介函数原型代码示例参考资料 简介 有的时候我们需要将两张图片在alpha通道进行混合&#xff0c;比如深度学习数据集增强方式MixUp。OpenCV的addWeighted提供了相关操作&#xff0c;瓷片博客将详细介绍这个函数&#xff0c;并给出代码示例。&#x1f680;&#x1f6…

有外媒称,Linux 发行版Ubuntu 23.10也将正式支持树莓派 5

据了解&#xff0c;在树莓派 4 单板计算机推出 4年后&#xff0c;树莓派 5也在上月末正式发布&#xff0c;并且两者对比之后可以发现&#xff0c;树莓派 5主要提升性能是添加了对 PCIe 2.0的支持。 Multiable万达宝医疗ERP(www.multiable.com.cn/solutions_yl)具备严格的保质期…

搭建vue后台管理系统框架

第一步&#xff1a;创建vue项目vue create 项目名称&#xff0c;并安装element-ui Vue CLI v3.1.3 ? Please pick a preset: Manually select features ? Check the features needed for your project: Babel, Router, CSS Pre-processors, Linter 1、是否使用history模式的…

【Express】静态资源

通过 Express 内置的 express.static 可以方便地托管静态文件&#xff0c;例如图片、CSS、JavaScript 文件等。 将静态资源文件所在的目录作为参数传递给 express.static 中间件就可以提供静态资源文件的访问了。 // 配置静态资源 app.use(express.static(public)); app.use(…

条件表达式

1.语法&#xff1a; 如果写范围&#xff0c;case不用写字段名 内容&#xff1a;case 字段名 when 值/或者值的范围 then 转化成的值 as 列名 end 语义&#xff1a;选择转换后新起一列 as不写默认text 2.其他用法&#xff1a; 2.1.计次 count&#xff08;...&#xff09;…

Master PDF Editor v5.9.70便携版

软件介绍 Master PDF Editor中文版是一款小巧的多功能PDF编辑器,可以轻松查看,创建,修改,批注,签名,扫描,OCR和打印PDF文档.高级注释工具,可以添加任意便笺指示对象突出显示,添加下划线和删除,而无需更改源PDF文件. 软件截图 更新日志 code-industry.net/what-is-new-in-mas…

【原创】在Linux上安装Zabbix客户端

检查Linux版本 cat /etc/issue得到结果 Ubuntu 18.04.2 LTS \n \l 下载软件 到 Zabbix官网&#xff08;https://www.zabbix.com/&#xff09; 依次点击 Download>Zabbix Packages>Choose your platform>ZABBIX VERSION>6.4>OS DISTRIBUTION>Ubuntu>OS …

[科研琐事] 安装服务器到机柜的二三事

1. 机柜参数 宽度&#xff1a;一般机器都是符合的&#xff1b; 深度&#xff1a;对应服务器最长的那个边&#xff1b; 厚度&#xff08;高度&#xff09;&#xff1a;1/2/3/4U&#xff0c;就是机柜上写的刻度数字&#xff0c;1U1.75英寸。 1U4.45cm 2U4.45cm * 2 3U4.45cm * …

关于LEFT JOIN的一次理解

先看一段例子&#xff1a; SELECTproduct_half_spu.id AS halfSpuId,product_half_spu.half_spu_code,product_half_spu.half_spu_name,COUNT( product_sku.id ) AS skuCount,product_half_spu.create_on,product_half_spu.create_by,product_half_spu.upload_pic_date,produc…

业务安全五重价值:防攻击、保稳定、助增收、促合规、提升满意度

目录 防范各类威胁攻击 保障业务的连续性和稳定性 保障业务的合规性 提升企业营收和发展 提升企业满意度和品牌知名度 2023年暑假被“票贩子”和“黄牛”攻陷。他们利用各种手段抢先预约名额&#xff0c;然后加价出售给游客&#xff0c;导致了门票供不应求的局面&#xff…

CNN-generated images are surprisingly easy to spot... for now

CNN-generated images are surprisingly easy to spot… for now----《目前CNN生成的图像非常容易被发现》 背景&#xff1a; 研究者们发现&#xff0c;仅仅对一种由CNN模型生成的图像进行训练的分类器&#xff0c;也可以检测许多其他模型生成的结果。由此提出这样的观点&#…

thinkphp5.1 获取缓存cache(‘cache_name‘)特别慢,php 7.0 unserialize 特别慢

thinkphp5.1 获取缓存cache(‘cache_name’)特别慢&#xff0c;php 7.0 unserialize 特别慢 场景&#xff1a; 项目中大量使用了缓存&#xff0c;本地运行非常快&#xff0c;二三百毫秒&#xff0c;部署到服务器后 一个表格请求就七八秒&#xff0c;最初猜想是数据库查询慢&am…