/**
* 雪花id的工具类
*/
@Slf4j
public class SnowFlakeUtil {
private static long workerId = 0;
private static long datacenterId = 1;
private static Snowflake snowflake = IdUtil.getSnowflake(workerId,datacenterId);
@PostConstruct // 自动调用,在构造方法前做
public void init(){try {workerId = NetUtil.ipv4ToLong(NetUtil.getLocalhostStr());log.info("当前机器的workId:{}",workerId);}catch (Exception e){log.error("当前机器的workId获取失败",e);workerId = NetUtil.getLocalhostStr().hashCode();}
}public static synchronized long snowflakeId(){return snowflake.nextId();
}public static synchronized String snowflakeIdStr(){return String.valueOf(snowflake.nextId());
}public static void main(String[] args) {System.out.println(SnowFlakeUtil.snowflakeIdStr());
}
}
### 4.生成验证码流程:* 生成4位的验证码;
* 产生唯一的id,作为验证码的key;
* 以key,value的形式存储到redis中;
* 前端显示验证码图片;设置验证码的有效时间>
> // 3.redis中存储,key-value,设置有效时间为 60 s
> stringRedisTemplate.opsForValue().set(key,code,60,TimeUnit.SECONDS);
>
>
>
package com.tianju.springboot.controller;
import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;
import com.tianju.springboot.dto.HttpRespSimple;
import com.tianju.springboot.util.SnowFlakeUtil;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
/**
* 雪花id的调用,返回一张图片
*/
@RestController
@RequestMapping(“/api/user/code”)
public class CodeDemoController {
@Resource
private StringRedisTemplate stringRedisTemplate;@GetMapping("/snowcode.jpg")
public HttpRespSimple createCode(HttpServletResponse response) throws IOException {// 1.产生验证码LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100, 4, 10);String code = lineCaptcha.getCode();// 2.产生唯一的值,作为key,用雪花id作为唯一的keyString key = SnowFlakeUtil.snowflakeIdStr(); // 生成雪花id,string类型的// 3.redis中存储,key-value,设置有效时间为 60 sstringRedisTemplate.opsForValue().set(key,code,60,TimeUnit.SECONDS);// 4.返回给浏览器cookieresponse.addCookie(new Cookie("vc", key));// 5.显示到前端lineCaptcha.write(response.getOutputStream());System.out.println(">>>>>>>>>>>>验证码为:"+code);return new HttpRespSimple(20001, "验证码创建成功");
}@GetMapping("/inputcode")
public HttpRespSimple inputCode(HttpServletRequest request){for (Cookie cookie: request.getCookies()) {if (cookie.getName().equals("vc")){String key = cookie.getValue();System.out.println("从redis取出存入的验证码:"+stringRedisTemplate.opsForValue().get(key));if (Objects.isNull(stringRedisTemplate.opsForValue().get(key))){return new HttpRespSimple(40001, "验证码无效");}else {return new HttpRespSimple(20002, "验证码成功");}}}return new HttpRespSimple(20003, "验证码不存在");
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/99ee3f99cf384e6291a7969fa4c03004.png)#### 前端显示
### 5.JMeter测试验证码生成**1)新建线程组**![在这里插入图片描述](https://img-blog.csdnimg.cn/fa64e72c2f3c4e679150b8815ef36cbb.png)**2)设置参数**![在这里插入图片描述](https://img-blog.csdnimg.cn/fb9c8842c37f471199f1ffea7de334ce.png)**3)添加取样器**![在这里插入图片描述](https://img-blog.csdnimg.cn/85e372e26549405dbae6acd60621d92b.png)**4)设置参数:协议,ip,端口,请求方式,路径**![在这里插入图片描述](https://img-blog.csdnimg.cn/c11228d42d1d46bdbbe09e7696c3c42c.png)**5)添加查看结果树**![在这里插入图片描述](https://img-blog.csdnimg.cn/e320dcd0a7634b71be5804929af0beca.png)**6)启动+查看结果**![在这里插入图片描述](https://img-blog.csdnimg.cn/7d8ca786cfc549e894dee6d19a704e99.png)![在这里插入图片描述](https://img-blog.csdnimg.cn/51c7cdd1789f4389a53565071019769a.png)## JMeter![在这里插入图片描述](https://img-blog.csdnimg.cn/b4bab02d720e43479fdec26b5b3ff3e5.png)### 什么是JMeter?>
> Apache JMeter™
>
>
> The **Apache JMeter™** application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance(接口性能),It was originally designed for testing Web Applications but has since expanded to other test functions.
>
>
> ### JMeter安装配置#### 1.官网下载![在这里插入图片描述](https://img-blog.csdnimg.cn/cf83ab352e434a4aa2c81cae5a19bd6d.png)#### 2.下载后解压![在这里插入图片描述](https://img-blog.csdnimg.cn/4611d9e719824f2ebb10eb2f09bf1962.png)#### 3.汉语设置![在这里插入图片描述](https://img-blog.csdnimg.cn/d1086c354402470b951dfa32bb516d0c.png)## JMeter的使用方法![在这里插入图片描述](https://img-blog.csdnimg.cn/b440ae64ca0547d8954a98b1e60f2257.png)### 1.新建线程组![在这里插入图片描述](https://img-blog.csdnimg.cn/fab789cf66ab45ef9066c9129ee02bd4.png)### 2.设置参数![在这里插入图片描述](https://img-blog.csdnimg.cn/83b7017870eb4414a7d5289a26887d58.png)### 3.添加取样器![在这里插入图片描述](https://img-blog.csdnimg.cn/02d6712be6314a9eae74dd7f78f5c857.png)### 4.设置参数:协议,ip,端口,请求方式,路径![在这里插入图片描述](https://img-blog.csdnimg.cn/2da11bebb8374e72942b6d87e00de1eb.png)### 5.添加查看结果树![在这里插入图片描述](https://img-blog.csdnimg.cn/c1d6c6c354f4478dad2bc4054117cded.png)