8051单片机C语言工程骨架与LED闪烁实践

核心内容摘要

基于MATLAB平台的多智能体一致性算法电力系统分布式经济调度策略优化方案
2026年Java面试题目收集整理归纳(金三银四版持续更新)

Janus-Pro-7B实战体验:一键生成惊艳图文内容

今日完成乘客用户中心服务验证码发送首先我们需要开发用户注册和登录功能其中重点是乘客发送验证码以下是发送验证码的时序图REST ful 风格在设计rest fuk 风格的时候我们需要考虑以下的事情协议httphttps域名 (www.xxx.com/aoi/coursesapi.xxx.com/courses)路径版本v1v2等动作postputpatch, delete, getnacos下载和配置下载地址https://github.com/alibaba/nacos/releases/tag/

2.

3添加maven依赖!-- nacos-- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId version

2

1/version /dependency dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId version

2

1/version /dependency# 启动Nacos Server: 定位到bin目录然后执行启动命令 ## cmd窗口 startup.cmd -m standalone ## powershell窗口 .\startup.cmd -m standalone 这将以单机模式启动Nacos服务器。

获取随机验证码RestController public class NumberCodeController { GetMapping(/numberCode/{size}) public String numberCode(PathVariable(size) int size) { System.out.println(生成验证码验证码长度 size); JSONObject result new JSONObject(); result.put(code,

; result.put(message, success); JSONObject data new JSONObject(); //获取随机数 String number 0123456789; StringBuilder numberCode new StringBuilder(); for (int i 0; i size; i) { int index (int) (Math.random() * number.length()); char c number.charAt(index); numberCode.append(c); } System.out.println(numberCode.toString()); data.put(numberCode, numberCode); result.put(data, data); return result.toString(); } }统一返回类型public enum CommonStatusEnum { SUCCESS(1, success), FAIL(0, fail); Getter private int code; Getter private String value; private CommonStatusEnum(int code, String value) { this.code code; this.value value; } }Data Accessors(chain true) public class ResponseResultT { private int code; private String message; private T data; /** * 成功返回结果 */ public static T ResponseResultT success(T data) { return new ResponseResultT().setCode(CommonStatusEnum.SUCCESS.getCode()) .setMessage(CommonStatusEnum.SUCCESS.getValue()) .setData(data); } /** * 失败返回结果 */ public static T ResponseResultT fail(int code , String message) { return new ResponseResultT().setCode(code) .setMessage(message); } /** * 失败返回结果,自定义失败 */ public static T ResponseResultT fail(int code, String message,T data) { return new ResponseResultT().setCode(code) .setMessage(message) .setData(data); } /** * 失败统一失败 */ public static T ResponseResultT fail(T data) { return new ResponseResultT().setData(data); } }改造后的为RestController public class NumberCodeController { GetMapping(/numberCode/{size}) public ResponseResult numberCode(PathVariable(size) int size) { System.out.println(生成验证码验证码长度 size); //获取随机数 String number 0123456789; StringBuilder numberCode new StringBuilder(); for (int i 0; i size; i) { int index (int) (Math.random() * number.length()); char c number.charAt(index); numberCode.append(c); } //定义返回值 NumberCodeResponse numberCodeResponse new NumberCodeResponse(); numberCodeResponse.setNumberCode(Integer.parseInt(numberCode.toString())); return ResponseResult.success(numberCodeResponse); } }api-passenger和service-verificationCode之间的调用dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-loadbalancer/artifactId /dependencyFeignClient(service-verificationcode) public interface ServiceVerificationCodeClient { GetMapping(/numberCode/{size}) ResponseResultNumberCodeResponse numberCode(PathVariable(size) int size); }验证码redis使用maven依赖!--redis使用-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId /dependencyyml编写server: port: 8081 spring: cloud: nacos: discovery: server-addr:

127.

0.

1:8848 application: name: api-passenger redis: host:

127.

0.

1 port: 6379代码编写Service public class VerificationCodeService { // 验证码前缀 private String verificationCodePrefix passenger-verification-code-; Autowired private StringRedisTemplate stringRedisTemplate; Autowired private ServiceVerificationCodeClient serviceVerificationCodeClient; public ResponseResult generateCode(String passengerPhone){ // 调用验证码服务 System.out.println(调用生成验证码服务); ResponseResultNumberCodeResponse numberCode serviceVerificationCodeClient.numberCode(

; System.out.println(获取验证码为 numberCode.getData().getNumberCode()); //存入redis System.out.println(将验证码存入redis); String key verificationCodePrefix passengerPhone; stringRedisTemplate.opsForValue().set(key, numberCode.getData().toString(),1, TimeUnit.MINUTES); //通过第三发短信商务发送验证码 TODO //返回值 return ResponseResult.success(numberCode); } }校验验证码骨架PostMapping(/verification-code-check) public ResponseResult verificationCodeCheck(RequestBody VerificationCodeDTO verificationCodeDTO){ String passengerPhone verificationCodeDTO.getPassengerPhone(); String verificationCode verificationCodeDTO.getVerificationCode(); return verificationCodeService.checkCode(passengerPhone, verificationCode); }/** * 校验验证码 * param passengerPhone * param verificationCode * return */ public ResponseResult checkCode(String passengerPhone, String verificationCode){ //

根据手机号获取redis中的验证码 //

校验验证码 //

判断原来是否存在用户如果不存在则创建用户 //

颁发令牌 TokenResponse tokenResponse new TokenResponse(); tokenResponse.setToken(token value); //

返回结果 return ResponseResult.success(tokenResponse); }校验redis验证码/** * 校验验证码 * param passengerPhone * param verificationCode * return */ public ResponseResult checkCode(String passengerPhone, String verificationCode){ //

根据手机号获取redis中的验证码 String key generatorKeyByPhone(passengerPhone); String codeRedis stringRedisTemplate.opsForValue().get(key); System.out.println(redis中的key:codeRedis); if (codeRedis null){ return ResponseResult.fail(CommonStatusEnum.VERIFICATION_CODE_ERROR.getCode(), CommonStatusEnum.VERIFICATION_CODE_ERROR.getValue()); } if (!codeRedis.equals(verificationCode)){ return ResponseResult.fail(CommonStatusEnum.VERIFICATION_CODE_ERROR.getCode(), CommonStatusEnum.VERIFICATION_CODE_ERROR.getValue()); } stringRedisTemplate.delete(key); //

校验验证码 //

判断原来是否存在用户如果不存在则创建用户 //

颁发令牌 TokenResponse tokenResponse new TokenResponse(); tokenResponse.setToken(token value); //

返回结果 return ResponseResult.success(tokenResponse); } private String generatorKeyByPhone(String phone){ return verificationCodePrefix phone; } }乘客用户服务骨架RestController public class UserController { Autowired private UserService userService; PostMapping(/user) public ResponseResult loginOrRegister(RequestBody VerificationCodeDTO verificationCodeDTO){ String passengerPhone verificationCodeDTO.getPassengerPhone(); return userService.loginOrRegister(passengerPhone); } }Service public class UserService { public ResponseResult loginOrRegister(String passengerPhone){ System.out.println(注册手机号被调用手机号为passengerPhone); //根据手机号查询用户 //判断用户是否存在 return ResponseResult.success(passengerPhone); } }

两个人亲近的插画-两个人亲近的插画应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123