
项目回顾
文章平均质量分 91
本人做开源项目的回顾
过去日记
在校大学生,csdn平台优质作者,华为云云享专家,阿里云专家博主,曾获得华为昇腾AI创新大赛优秀奖,黄河鲲鹏省赛银奖,全国大学生电子设计大赛省一等奖,擅长java方面spring boot后端开发,对新兴的go和rust也非常感兴趣
展开
-
黑马点评笔记 分布式锁
线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了条件判断的过程中,比如他已经拿到了当前这把锁确实是属于他自己的,正准备删除锁,但是此时他的锁到期了,那么此时线程2进来,但是线程1他会接着往后执行,当他卡顿结束后,他直接就会执行删除锁那行代码,相当于条件判断并没有起到作用,这就是删锁时的原子性问题,之所以有这个问题,是因为线程1的拿锁,比锁,删锁,实际上并不是原子性的,我们要防止刚才的情况发生,= -1 则会进去抢锁,抢锁的逻辑就是之前说的那三个逻辑。原创 2023-11-25 01:45:00 · 1286 阅读 · 1 评论 -
黑马点评笔记 redis缓存三大问题解决
当我们客户端访问不存在的数据时,先请求redis,但是此时redis中没有数据,此时会访问到数据库,但是数据库中也没有数据,这个数据穿透了缓存,直击数据库,我们都知道数据库能够承载的并发不如redis这么高,如果大量的请求同时过来访问这种不存在的数据,这些请求就都会访问到数据库,简单的解决方案就是哪怕这个数据在数据库中也不存在,我们也把这个数据存入到redis中去,这样,下次用户过来访问这个不存在的数据,那么在redis中也能找到这个数据就不会进入到缓存了。因为锁能实现互斥性。原创 2023-11-23 09:18:55 · 1020 阅读 · 0 评论 -
黑马点评笔记 redis实现优惠卷秒杀
以上逻辑的核心含义是:只要我扣减库存时的库存和之前我查询到的库存是一样的,就意味着没有人在中间修改过库存,那么此时就是安全的,但是以上这种方式通过测试发现会有很多失败的情况,失败的原因在于:在使用乐观锁过程中假设100个线程同时都拿到了100的库存,然后大家一起去进行扣减,但是100个人中只有1个人能扣减成功,其他的人在处理时,他们在扣减时,库存已经被修改过了,所以此时其他线程都会失败。其实按照串行的方法我们上面的代码已经实现的解决了超卖问题,但在现实中web往往是高并发的,我们的代码任然存在以下问题,原创 2023-11-24 10:07:51 · 988 阅读 · 0 评论 -
黑马点评笔记 redis实现缓存
缓存(Cache),就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据例1:Static final ConcurrentHashMap map = new ConcurrentHashMap();本地用于高并发例2:static final Cache USER_CACHE = CacheBuilder.newBuilder().build();用于redis等缓存例3:Static final Map map = new HashMap();本地缓存由于其被。原创 2023-11-23 01:00:00 · 1341 阅读 · 0 评论 -
黑马点评回顾 redis实现共享session
传统单体项目一般是把session存入tomcat,但是每个tomcat中都有一份属于自己的session,假设用户第一次访问第一台tomcat,并且把自己的信息存放到第一台服务器的session中,但是第二次这个用户访问到了第二台tomcat,那么在第二台服务器上,肯定没有第一台服务器存放的session,所以此时 整个登录拦截功能就会出现问题。原创 2023-11-14 22:22:39 · 1407 阅读 · 0 评论