这是一个手机生成验证吗的小demo,

图一仿写写,图二老师代码

思路

前提,在pom中导入redis相关依赖

  <dependencies><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.2.0</version></dependency></dependencies>
在import com.sun.org.apache.bcel.internal.classfile.Code;
import redis.clients.jedis.Jedis;import java.util.Random;
import java.util.Scanner;/*** @author jph* @version 1.0* @Description* @date 2022/8/18 16:07*/
public class Sjyzm {public static void main(String[] args) {//1.请输入手机验证码Scanner scanner = new Scanner(System.in);System.out.println("请输入手机号");int phone = scanner.nextInt();//2.输入1完成发送,稍后会接受到验证码,需要我们对验证码进行处理System.out.println("输入1完成发送");//这一步起一个暂停效果,如果我们不输入数组,程序就不往下走.scanner.next();//会出现两种情况,一种是次数不超,生成验证码,另一种是次数超了.直接返回一个-1String yzmCode=getCode(phone);//超了就结束了,不会往下进行了.if("-1".equals(yzmCode)){System.out.println("手机输入验证码已经超过3次");return;}System.out.println("验证码是"+yzmCode);//3. 请输入验证码System.out.println("请输入验证码");String inYzm = scanner.next();System.out.println("请输入1完成发送");scanner.nextInt();boolean flag=verifyCode(inYzm,yzmCode);if(flag){System.out.println("验证码输入正确");}else{System.out.println("验证码输入错误");}//4.发送验证码,获取检验结果并输}private static boolean verifyCode(String inYzm, String yzmCode) {boolean flag=false;if(yzmCode.equals(inYzm)){flag=true;}return flag;}private static String getCode(int phone) {//生成验证码String produceCode = produce();//验证码时长不能超过2分钟 ,  进一步联想连接服务器就要记得关闭linux的防护墙Jedis jedis = new Jedis("192.168.245.131",6379);//到这时redis中创建出一个来 produceCode"+phone ,key值来jedis.setex("produceCode"+phone, 120, produceCode);//判断本手机验证码是否超过3次//count"+phone 在redis中是没有的,所以第一次访问必定为空//在访问次数上下功夫.String count=jedis.get("count"+phone);if(count==null){//相当于又开辟了一个keyjedis.set("count:"+phone, "1");}else if(Integer.parseInt(count)<3){//为什么不增?jedis.incr("count:"+phone);}else{//这个是大于3的情况,咱们就把这个值符为-1produceCode = "-1";}return  produceCode;}public static String produce(){Random random = new Random();String s="";for (int i = 0; i < 6; i++) {int i1 = random.nextInt(10);s+=i1;}return s;}}

代码分界线

import redis.clients.jedis.Jedis;import java.util.Random;
import java.util.Scanner;public class PhoneCode {public static void main(String[] args) {//1、输入手机号Scanner input = new Scanner(System.in);System.out.println("请输入手机号码:");String phone = input.next();//2.点击发送后随机生成6位数字码,2分钟有效System.out.println("输入1完成发送:");input.next();String code = sendPhone(phone);if("-1".equals(code)){System.out.println("今天输入验证码已经超过3次,请明天再试");return;}System.out.println("验证码是:"+code);//3、输入验证码,点击验证,返回成功或失败System.out.println("请输入验证码:");String myCode = input.next();System.out.println("输入1进行验证");input.next();boolean flag = verifyCode(phone,myCode);//4.输出结果if(flag){System.out.println("成功");}else{System.out.println("失败");}}/**     * 进行验证     */private static boolean verifyCode(String phone, String myCode) {boolean flag = false;//默认失败Jedis jedis = new Jedis("192.168.20.200",6379);//1.获取保存在redis中的正确验证码String codeKey = "code:"+phone;String code = jedis.get(codeKey);//2.if(myCode.equals(code)){flag = true;}jedis.close();return flag;}/*** 发送手机号码,返回验证码*/public static String sendPhone(String phone) {Jedis jedis = new Jedis("192.168.20.200",6379);//1.获取验证码String code = getCode();//2.将验证码保存在redis中,两分钟有效String codeKey = "code:"+phone;jedis.setex(codeKey,120,code);//3.每个手机号每天只能输入3次String countKey = "count:"+phone;String count = jedis.get(countKey);if(count==null){ //如果是第一次,设置次数为1次jedis.setex(countKey,24*60*60,"1");}else if(Integer.parseInt(count)<=2){ //如果是第二次或者第三次,设置次数+1jedis.incr(countKey);}else{//如果超过3次,给出次数超过的提示//code ="今天输入验证码已经超过3次,请明天再试";code="-1";}jedis.close();//4.返回结果(验证码或者超过3次提示)return code;}//生成6位数字验证码public static String getCode() {Random random = new Random();String code = "";for(int i=0;i<6;i++) {int rand = random.nextInt(10);code += rand;}return code;}
}

其中总结小失误

Linux 防火墙问题,总是在访问Linux时忘记关闭防火墙,

查看防火墙systemctl status firewalld
关闭防火墙 systemctl stop firewalld


debug工具的使用,还需要加深.

另外最关键的一点:

出现bug思路问题, 定位,代码审查,逻辑审查,解决问题

模拟生成验证码,有相应次数限制(个人学习记录)相关推荐

  1. python绘制动态模拟图-Python 模拟生成动态产生验证码图片的方法

    模拟动态产生验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image L ...

  2. python动态验证码_Python 模拟生成动态产生验证码图片的方法

    模拟动态产生验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image L ...

  3. python 验证码图片 模拟登录_Python 模拟生成动态产生验证码图片的方法

    模拟动态产生验证码图片 模拟生成验证码,首先要做的是生成随机的字母,然后对字母进行模糊处理.这里介绍一下 Python 提供的 Pillow 模块. Pillow PIL:Python Image L ...

  4. 生成验证码、模拟登录、手机号屏蔽

    生成验证码 package StringTest; import java.util.Random; import java.util.Scanner; public class Main {publ ...

  5. Redis——模拟手机验证码发送

    使用redis模拟手机验证码发送,规定一个手机号一天只能请求三次验证码,且每次请求的验证码只有两分钟就会过期 1.首先写一个函数随机产生六位验证码,使用random函数 //随机生成六位验证码publ ...

  6. 随机生成验证码及发送短信验证码

    验证码 包括过期时间和redis缓存以及校验 1.设置过期时间 private Date getNextDayZeroTime() {Calendar calendar = Calendar.getI ...

  7. python 生成验证码

    import randomfrom PIL import Image, ImageDraw, ImageFont, ImageFilter _letter_cases = "abcdefgh ...

  8. 生成窄带信号_房间冲激响应RIR原理与模拟生成方法

    论文"Room Impulse Response Generator"的阅读笔记.下面的链接为原论文. rir_generator.pdf 530.3K · 百度网盘 这篇论文主要 ...

  9. 使用kaptcha生成验证码

    2019独角兽企业重金招聘Python工程师标准>>> kaptcha是一个简单好用的验证码生成工具,通过配置,可以自己定义验证码大小.颜色.显示的字符等等.下面就来讲一下如何使用k ...

最新文章

  1. Vue + Element UI + Spring Boot——易班优课YOOC课群在线测试自动答题解决方案(十)问题管理页面
  2. 2018GDKOI——记录
  3. 使用Spring Cloud休息客户电话
  4. web实现数据交互的几种常见方式
  5. matlab画转体_【求助】matlab生成旋转体?
  6. 【6.0】组合主键映射
  7. Source code manager common
  8. URL.createObjectURL图片预览
  9. leetcode770. Basic Calculator IV
  10. 植树问题python_《程序员的数学》思考题(一)
  11. scala下载新的版本号
  12. 2022大湾区杯粤港澳金融数学建模备赛
  13. 行走在centos的弯路上:Restarting network (via systemctl):: Job for network.service failed. ...
  14. 1.488Mpps是如何计算出来的?
  15. 学术期刊数据库---EBSCO
  16. Android通过浏览器打开App并传递参数
  17. 全国青少年编程等级考试python一级真题2020年12月(含题库答题软件账号)
  18. 不看会后悔的100个超有趣冷知识(一)
  19. Android 9.0 SystemUI 锁屏界面禁止状态栏下拉
  20. VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences

热门文章

  1. 总结了25个Pandas Groupby 经典案例!!
  2. 分享我的经历,你以为你很努力
  3. iOS app可视化开发(一)使用Xcode创建app
  4. win2003下搭建IIS serve
  5. HTML5个人博客首页demo
  6. mysql如何减少主从复制延迟?
  7. 英语2017年6月听力
  8. python 隐藏进程_运行进程隐藏Python
  9. 百度AI使用方案:黑白图片上色
  10. python qt gui与数据可视化编程 kindle_Kindle Python教程 电子书 – Python数据可视化编程实战 PDF...