本页目录

Math.random()方法 返回的是 [0,1) 区间范围的数 使用规则一般是 Math.random()*(Max+1 – min)+min 就可以达到[min,Max]的数了

高性能的随机数ThreadLocalRandom

京东说:避免Random实例(Random实例包括java.util.Random实例或者 Math.random()方法)被多线程使用,虽然共享该实例是线程安全的,但会因竞争同一seed导致的性能下降。为了保证性能,推荐使用ThreadLocalRandom.current().nextInt()

// 取值范围是 [0,10),也就是[0,9]
ThreadLocalRandom.current().nextInt(10); # Demo
// 取值范围是: 原范围是[0,9],左右取值范围+1 即:[1,10]
ThreadLocalRandom.current().nextInt(10)+1;

场景,需要做个验证码 生成器,不需要图片。只能自己做一个,虽然网站有很多,自己写的,自己用着舒服。可能性能没别人好,但是可以借着做一篇 调优篇。

Random

import java.util.Random;/*** @author : zanglikun* @date : 2021/2/1 11:03* @Version: 1.0* @Desc : 验证码 生成。 有个缺点,有时间 进行修复 :每次 都是 new出来 Random对象 、String[]、StringBuilder对象 看看能不减少生成次数*/
public class CheckCodeUtil {// 纯数字private final static String allnumcode = "0,1,2,3,4,5,6,7,8,9";// 纯小写字母private final static String allcharcode = "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";// 全混合性private final static String allcode = "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,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";// 输入验证码长度 生成纯数字验证码public static String allnumcode(int num){StringBuilder code = new StringBuilder();String[] split = allnumcode.split(",");Random random = new Random();//Math.random()方法 返回的是 [0,1) 区间范围的数  使用规则一般是 Math.random()*(Max - min)+min 就可以达到[min,Max]的数了for (int i = 0; i < num; i++) {code.append(split[random.nextInt(split.length)]);}return code.toString();}// 输入验证码长度 生成纯小写字母验证码public static String alllowcasecharcode(int num){StringBuilder code = new StringBuilder();String[] split = allcharcode.split(",");Random random = new Random();//Math.random()方法 返回的是 [0,1) 区间范围的数  使用规则一般是 Math.random()*(Max+1 - min)+min 就可以达到[min,Max]的数了for (int i = 0; i < num; i++) {code.append(split[random.nextInt(split.length)]);}return code.toString();}// 输入验证码长度 生成混合型字母验证码public static String allcode(int num){StringBuilder code = new StringBuilder();String[] split = allcode.split(",");Random random = new Random();//Math.random()方法 返回的是 [0,1) 区间范围的数  使用规则一般是 Math.random()*(Max+1 - min)+min 就可以达到[min,Max]的数了for (int i = 0; i < num; i++) {code.append(split[random.nextInt(split.length)]);}return code.toString();}/*** 测试 验证码* @param args*/public static void main(String[] args) {System.out.println(allnumcode(6));System.out.println(alllowcasecharcode(6));System.out.println(allcode(6));}
}

想要生成带图片验证码的,请参考 Hutool工具。

https://hutool.cn/docs/#/captcha/%E6%A6%82%E8%BF%B0?id=%e8%87%aa%e5%ae%9a%e4%b9%89%e9%aa%8c%e8%af%81%e7%a0%81

特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!
收_心

永久会员

打赏 收藏 海报 链接

验证码工具类 – Random – 随机数用法 – 豹子号 – 顺子号相关推荐

  1. java 随机md5_java常用工具类 Random随机数、MD5加密工具类

    本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下 random随机数工具类 package com.jarvis.base.util; import java.util.ra ...

  2. java生成验证码工具类_Java生成图形验证码工具类

    生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...

  3. 直播平台开发,验证码工具类

    直播平台开发,合理使用验证码工具类 package com.ywfcake.demo.util;import lombok.extern.slf4j.Slf4j;import java.awt.*; ...

  4. 邮箱发送验证码工具类

    1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...

  5. aliyun短信服务包含随机生成四位数字验证码工具类

    .1.pom文件 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sd ...

  6. VerifyCodeUtil 验证码工具类的使用

    目录 一.VerifyCodeUtil 二.需要使用Base64Util 三.控制器使用生成 一.VerifyCodeUtil package com.baizhi.utils;import java ...

  7. java时间随机数_java开发代码工具类(时间戳/随机数/日期等)

    简介 java开发代码工具类,提高开发效率,持续更新~ 实践 package com.springboot.sixmonth.common.util; import java.math.BigInte ...

  8. SpringBoot的整合————一些常用工具类依赖及用法总结

    文章目录 概述: (1)Hutool (2)fastjson (3)commons-lang3 (4)poi 概述: 为了简化我们的开发代码,我们常常在pom.xml文件中引入一些工具类的依赖来方便我 ...

  9. Android图形验证码工具类

    移动端获取图形验证码有两种形式,一种是在本地随机生成进行验证,另一种是根据服务端返回的图片流设置到页面上,今天我们要做的就是根据服务端返回的操作图形验证码,完整demo地址:https://downl ...

最新文章

  1. html5 子元素选择器,CSS子元素选择器 - HTML电子邮件
  2. python中的format什么意思中文-Python中.format()常见的用法
  3. python的时间差计算
  4. python学习笔记——类
  5. linux执行脚本查找ip,linux 查看ip、用户、时间对应执行的命令
  6. python字符串函数运算_Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】 原创...
  7. (DFS or BFS)Find The Multiple(poj1426)
  8. python lxml xpath_Python/lxml/Xpath:如何找到包含特定文本的行?
  9. 数据结构代码学习笔记(持续更新中)
  10. JAVA购物管理系统
  11. 物业为什么要用微小区SaaS系统进行管理
  12. word中输入带圈字符
  13. android字体右对齐,Android TextView将文本右对齐和左对齐
  14. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十八) 落雷!治疗!陷阱!连锁闪电!多段群伤!魔法之终极五重奏①...
  15. ps2无线手柄连接arduino的使用方法
  16. 宝立食品上交所上市:年营收15.78亿 市值58亿
  17. 香蕉树上第五根芭蕉——机器学习算法PCA算法通俗易懂说明
  18. Android 九宫格物理键盘数字英文切换
  19. spark封神之路(1)-spark简介
  20. Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载)

热门文章

  1. 配置ubuntu20.04+anaconda+pytorch+ssh+win10+vscode远程深度学习训练环境
  2. 网易游戏团队离职危机梦幻西游前途未卜(转)
  3. 基于Qt的三分屏播放客户端实现
  4. 阴阳师服务器维护3月25日,阴阳师3月25日体验服更新 追月神新皮肤上架
  5. JDBC:5步法实现对数据表的查询【stmt.executeQuery(sql)】
  6. DES加密和解密工具(亲测可用)
  7. 职中计算机技术与应用主修哪些课程,中职计算机运用专业课程整合
  8. RCU到底是什么?为什么快?为什么可以读写并行?
  9. 人工智能成手机标配,但大多数手机玩AI的姿势都是错的?
  10. 揭秘新型勒索病毒Petya攻击方式