验证码工具类 – Random – 随机数用法 – 豹子号 – 顺子号
本页目录
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
![](/assets/blank.gif)
永久会员
验证码工具类 – Random – 随机数用法 – 豹子号 – 顺子号相关推荐
- java 随机md5_java常用工具类 Random随机数、MD5加密工具类
本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下 random随机数工具类 package com.jarvis.base.util; import java.util.ra ...
- java生成验证码工具类_Java生成图形验证码工具类
生成验证码效果 validatecode.java 验证码生成类 package cn.dsna.util.images; import java.awt.color; import java.awt ...
- 直播平台开发,验证码工具类
直播平台开发,合理使用验证码工具类 package com.ywfcake.demo.util;import lombok.extern.slf4j.Slf4j;import java.awt.*; ...
- 邮箱发送验证码工具类
1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...
- aliyun短信服务包含随机生成四位数字验证码工具类
.1.pom文件 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sd ...
- VerifyCodeUtil 验证码工具类的使用
目录 一.VerifyCodeUtil 二.需要使用Base64Util 三.控制器使用生成 一.VerifyCodeUtil package com.baizhi.utils;import java ...
- java时间随机数_java开发代码工具类(时间戳/随机数/日期等)
简介 java开发代码工具类,提高开发效率,持续更新~ 实践 package com.springboot.sixmonth.common.util; import java.math.BigInte ...
- SpringBoot的整合————一些常用工具类依赖及用法总结
文章目录 概述: (1)Hutool (2)fastjson (3)commons-lang3 (4)poi 概述: 为了简化我们的开发代码,我们常常在pom.xml文件中引入一些工具类的依赖来方便我 ...
- Android图形验证码工具类
移动端获取图形验证码有两种形式,一种是在本地随机生成进行验证,另一种是根据服务端返回的图片流设置到页面上,今天我们要做的就是根据服务端返回的操作图形验证码,完整demo地址:https://downl ...
最新文章
- html5 子元素选择器,CSS子元素选择器 - HTML电子邮件
- python中的format什么意思中文-Python中.format()常见的用法
- python的时间差计算
- python学习笔记——类
- linux执行脚本查找ip,linux 查看ip、用户、时间对应执行的命令
- python字符串函数运算_Python入门教程2. 字符串基本操作【运算、格式化输出、常用函数】 原创...
- (DFS or BFS)Find The Multiple(poj1426)
- python lxml xpath_Python/lxml/Xpath:如何找到包含特定文本的行?
- 数据结构代码学习笔记(持续更新中)
- JAVA购物管理系统
- 物业为什么要用微小区SaaS系统进行管理
- word中输入带圈字符
- android字体右对齐,Android TextView将文本右对齐和左对齐
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(四十八) 落雷!治疗!陷阱!连锁闪电!多段群伤!魔法之终极五重奏①...
- ps2无线手柄连接arduino的使用方法
- 宝立食品上交所上市:年营收15.78亿 市值58亿
- 香蕉树上第五根芭蕉——机器学习算法PCA算法通俗易懂说明
- Android 九宫格物理键盘数字英文切换
- spark封神之路(1)-spark简介
- Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载)
热门文章
- 配置ubuntu20.04+anaconda+pytorch+ssh+win10+vscode远程深度学习训练环境
- 网易游戏团队离职危机梦幻西游前途未卜(转)
- 基于Qt的三分屏播放客户端实现
- 阴阳师服务器维护3月25日,阴阳师3月25日体验服更新 追月神新皮肤上架
- JDBC:5步法实现对数据表的查询【stmt.executeQuery(sql)】
- DES加密和解密工具(亲测可用)
- 职中计算机技术与应用主修哪些课程,中职计算机运用专业课程整合
- RCU到底是什么?为什么快?为什么可以读写并行?
- 人工智能成手机标配,但大多数手机玩AI的姿势都是错的?
- 揭秘新型勒索病毒Petya攻击方式