java soarqube扫描new Random()报bug,修改为securerandom.getinstancestrong()造成线程阻塞,使用apache工具类生成随机数
描述#
项目中生成随机数的,new Random()写法sonarqube会提示是个bug,推荐写成Random rand = SecureRandom.getInstanceStrong();这种方式本地没啥问题,发到线上会造成线程阻塞;可以使用如下方式,org.apache.commons.lang.RandomStringUtils包下的
/** * count 创建一个随机字符串,其长度是指定的字符数,字符将从参数的字母数字字符集中选择,如参数所示。 * letters true,生成的字符串可以包括字母字符 * numbers true,生成的字符串可以包含数字字符 */ String random = RandomStringUtils.random(15, true, false); System.out.println(random);
其他API#
/** * 创建一个随机字符串,其长度是指定的字符数。 * 将从所有字符集中选择字符 */ random = RandomStringUtils.random(22); System.out.println(random);
/** * 创建一个随机字符串,其长度是指定的字符数。 * 字符将从字符串指定的字符集中选择,不能为空。如果NULL,则使用所有字符集。 */ random = RandomStringUtils.random(15, "abcdefgABCDEFG123456789"); System.out.println(random);
/** * 创建一个随机字符串,其长度是指定的字符数,字符将从参数的字母数字字符集中选择,如参数所示。 * count:计算创建的随机字符长度 * start:字符集在开始时的位置 * end:字符集在结束前的位置,必须大于65 * letters true,生成的字符串可以包括字母字符 * numbers true,生成的字符串可以包含数字字符 * */ random = RandomStringUtils.random(1009, 5, 129, true, true);
/** * 产生一个长度为指定的随机字符串的字符数,字符将从拉丁字母(a-z、A-Z的选择)。 * count:创建随机字符串的长度 */ random = RandomStringUtils.randomAlphabetic(15);
/** * 创建一个随机字符串,其长度介于包含最小值和最大最大值之间,,字符将从拉丁字母(a-z、A-Z的选择)。 * minLengthInclusive :要生成的字符串的包含最小长度 * maxLengthExclusive :要生成的字符串的包含最大长度 */ random = RandomStringUtils.randomAlphabetic(2, 15);
/** * 创建一个随机字符串,其长度是指定的字符数,字符将从拉丁字母(a-z、A-Z)和数字0-9中选择。 * count :创建的随机数长度 */ random = RandomStringUtils.randomAlphanumeric(15);
/** * 创建一个随机字符串,其长度介于包含最小值和最大最大值之间,字符将从拉丁字母(a-z、A-Z)和数字0-9中选择。 * minLengthInclusive :要生成的字符串的包含最小长度 * maxLengthExclusive :要生成的字符串的包含最大长度 * */ random = RandomStringUtils.randomAlphanumeric(5, 68);
/** * 创建一个随机字符串,其长度是指定的字符数,字符将从ASCII值介于32到126之间的字符集中选择(包括) * count:随机字符串的长度 */ random = RandomStringUtils.randomAscii(15);
/** * 创建一个随机字符串,其长度介于包含最小值和最大最大值之间,字符将从ASCII值介于32到126之间的字符集中选择(包括) * minLengthInclusive :要生成的字符串的包含最小长度 * maxLengthExclusive :要生成的字符串的包含最大长度 */ random = RandomStringUtils.randomAscii(15, 30);
/** * 创建一个随机字符串,其长度是指定的字符数,将从数字字符集中选择字符。 * count:生成随机数的长度 */ random = RandomStringUtils.randomNumeric(15);
/** * 创建一个随机字符串,其长度介于包含最小值和最大最大值之间,将从数字字符集中选择字符. * minLengthInclusive, 要生成的字符串的包含最小长度 * maxLengthExclusive 要生成的字符串的包含最大长度 */ random = RandomStringUtils.randomNumeric(15, 20);
分类:
JAVA
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2020-07-23 Java核心基础之数据类型
2020-07-23 Java 导出Excel
2019-07-23 C#后台HttpWebRequest模拟跨域Ajax请求,注册Windows服务到服务器上