被Netty搞昏了头,先学一下幂等性压压惊吧,2024年最新面试真题解析公众号

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

我们先看一下用户保存操作:

controller

@Log(“用户创建”)

@ApiOperation(value = “用户创建”,notes = “用户创建”)

@PostMapping(“/createUser”)

public GoflyResponse createUser(@Valid UserDto userDto) throws GoflyException {

User user = new User();

BeanUtils.copyProperties(userDto,user);

iUserService.createUser(user);

return new GoflyResponse().code(HttpStatus.OK).message(“成功”);

}

postman多次提交用户保存操作

提交三次之后,新增了同样的三个用户,所以这个是错误的,需要修改

| USER_ID | USERNAME | PASSWORD | NAME

| 9 | yangyangyang | fcea920f7412b5da7be0cf42b8c93759 | 杨羽茉

| 10 | yangyangyang | fcea920f7412b5da7be0cf42b8c93759 | 杨羽茉

| 11 | yangyangyang | fcea920f7412b5da7be0cf42b8c93759 | 杨羽茉

2.2 redis和lua解决问题

lua脚本----> checkidem.lua

放在resources目录下

//获取token----> redis: get token

local current = redis.call(‘GET’,KEYS[1])

//如果不存在返回-1

if current == false then

return ‘-1’

end

//访问一次之后,删除token

local isdel = redis.call(‘DEL’,KEYS[1])

//如果删除成功就返回’1’

if isdel == 1 then

return ‘1’

else

//删除失败,说明token不存在

return ‘0’

end

redis工具类------> RedisLuaUtil.java

用于运行lua脚本

/**

  • redis解析lua工具类

*/

@Component

public class RedisLuaUtil {

//注入stringRedisTemplate

@Resource

private StringRedisTemplate stringRedisTemplate;

//运行lua脚本

public String runLuaScript(String luaFileName, List keys){

DefaultRedisScript redisScript = new DefaultRedisScript<>();

//读取lua脚本文件

redisScript.setScriptSource(

new ResourceScriptSource(

new ClassPathResource(luaFileName)

)

);

//lua返回值类型

redisScript.setResultType(String.class);

//值参数

String argson = “none”;

//执行lua脚本,获取返回值,lua返回的内容主要看

String result = stringRedisTemplate.execute(redisScript, keys, argson);

return result;

}

/**

  • 校验token

  • @param request

*/

public String checkToken(HttpServletRequest request) {

//获取token,从request中获取

String token = request.getParameter(“token”);

//将token存储到list中

List keys = new ArrayList<>();

keys.add(token);

//调用运行lua脚本的方法,并且传入lua文件的名称及token集合

String result = this.runLuaScript(“checkidem.lua”, keys);

//根据自定义的lua脚本,会返回三种返回值:

//1. GET token 不存在时返回-1

//2. DEL token 成功时,返回1

//3. DEL token 不成功,返回0

if(result.equals(“1”)){

return “保存成功”;

}else{

return “请勿重复提交”;

}

}

}

生成token、模拟保存用户操作、测试

//自动注入redisTemplate,用于存储token到redis中

@Autowired

private StringRedisTemplate stringRedisTemplate;

//自动注入自定义的Redis Lua工具类

@Autowired

private RedisLuaUtil redisLuaUtil;

(1) 生成token

@GetMapping(“/getToken”)

public String getToken(){

//生成UUID,作为token

String result = UUID.randomUUID().toString();

//将生成的token保存到redis中

stringRedisTemplate.opsForValue().set(result,result);

//返回给用户

return result;

更多:Java进阶核心知识集

包含:JVM,JAVA集合,网络,JAVA多线程并发,JAVA基础,Spring原理,微服务,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存等等

image

高效学习视频

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

[外链图片转存中…(img-qyra7anc-1713549085245)]

高效学习视频

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-4sZN1lza-1713549085246)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值