09 2023 档案
摘要:Lambda表达式 要使用lambda表达式就要要使用java 8,使用Lambda表达式可以让我们的代码更少,看上去更简洁;它是为了简化了函数式接口匿名内部类的语法。 Lambda只能接受函数式接口,所谓的函数式接口指的是只能有一个抽象方法的接口。 Lambda表达式语法 Lambda表达式通过操
阅读全文
摘要:达人探店业务之点赞、排行榜功能(Redis经典场景) 初始代码: @GetMapping("/likes/{id}") public Result queryBlogLikes(@PathVariable("id") Long id) { //修改点赞数量 blogService.update().
阅读全文
摘要:商品查询业务之解决商品查询的缓存穿透、缓存雪崩、缓存击穿问题(封装工具类) 核心思路如下: 在原来的逻辑中,我们如果发现这个数据在mysql中不存在,直接就返回404了,这样是会存在缓存穿透问题的 现在的逻辑中:如果这个数据不存在,我们不会返回404 ,还是会把这个数据写入到Redis中,并且将va
阅读全文
摘要:秒杀优化 秒杀优化-异步秒杀思路 我们来回顾一下下单流程 当用户发起请求,此时会请求nginx,nginx会访问到tomcat,而tomcat中的程序,会进行串行操作,分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单 4、校验是否是一人一单 5、扣减库存 6、创建订单 在这六
阅读全文
摘要:优惠券秒杀业务之一人一单 需求:修改秒杀业务,要求同一个优惠券,一个用户只能下一单 这里插个题外话,其实很多业务如博客的阅读量、点赞数等都是要一人只能统计一次阅读量和一人只能点赞一次,阅读量是根据ip来统计的,而点赞数要用到redis的set类型(去重),排行榜是用到redis的sortedSet类
阅读全文
摘要:优惠券秒杀业务之库存超卖问题解决 有关超卖问题分析:在我们原有代码中是这么写的 if (voucher.getStock() < 1) { // 库存不足 return Result.fail("库存不足!"); } //5,扣减库存 boolean success = seckillVoucher
阅读全文
摘要:优惠卷秒杀业务之全局唯一ID 当用户抢购时,就会生成订单并保存到tb_voucher_order这张表中,而订单表如果使用数据库自增ID就存在一些问题: id的规律性太明显 受单表数据量的限制 场景分析:如果我们的id具有太明显的规则,用户或者说商业对手很容易猜测出来我们的一些敏感信息,比如商城在一
阅读全文
摘要:Redisson的看门狗watchDog机制 如果业务代码没执行完锁却过期了,这时候怎么办? 这不就线程不安全了吗? 别急,Redssion内部有个看门狗机制,WatchDog! Redisson内部提供了一个监控锁的看门狗,它的作用是在Redisson实例被关闭前,不断的延长锁的有效期。 默认情况
阅读全文
摘要:学习笔记之Java的异步实现方式 异步的八种实现方式:1.线程Thread 2.Future(少用) 3.异步框架CompletableFuture(是Future的升级版) 4.Spring注解@Async(重点) 5.Spring ApplicationEvent 6.消息队列 7.第三方异步框
阅读全文
摘要:学习笔记之Redission redission是为了解决锁失效问题而出现的 锁失效问题:由于现在我们部署了多个tomcat,每个tomcat都有一个属于自己的jvm,那么假设在服务器A的tomcat内部,有两个线程,这两个线程由于使用的是同一份代码,那么他们的锁对象是同一个,是可以实现互斥的,但是
阅读全文
摘要:学习笔记之Redis消息队列-基于Stream的消息队列 Stream 是 Redis 5.0 引入的一种新数据类型,可以实现一个功能非常完善的消息队列。 其实只需要知道写入消息队列的命令和读取消息队列的命令就行了 写入消息队列:XADD 读取消息队列的方式之一:XREAD 在业务开发中,我们可以循
阅读全文
摘要:学习笔记之synchronized ynchronized是一个JDK提供的同步的关键字,通过synchronized可以锁定一个代码块或者一个方法,从而实现锁的效果。 synchronized的几种用法 1.修饰在对象方法上 public class SynDemo { int i = 0; in
阅读全文
摘要:Lambda表达式 要使用lambda表达式就要要使用java 8,使用Lambda表达式可以让我们的代码更少,看上去更简洁;它是为了简化了函数式接口匿名内部类的语法。 Lambda只能接受函数式接口,所谓的函数式接口指的是只能有一个抽象方法的接口。 Lambda表达式语法 Lambda表达式通过操
阅读全文
摘要:Redis的缓存穿透、缓存雪崩、缓存击穿问题及解决方案 缓存穿透问题及解决思路 缓存穿透 :缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。因为我们查数据通常是现在redis缓存查数据,如果redis没有这个数据,就会去数据库查。如果张三想要搞垮
阅读全文
摘要:周二 学了多账号统一登录的实现方案(微信公众号文章:多账号统一登录(实现方案) (qq.com)),这里有几个知识点,单点登录(sso),以及统一登录方式,三方登录(三方登录要用到Oauth2.0),统一登录方式。 单点登录(sso),统一登录,统一身份认证:https://www.cnblogs.
阅读全文
摘要:这个网址提供了很多java的学习资料:https://github.com/hello-go-maker/cs-books 这个是mall商城的源码和教程: 《全网最全最新编程资料合集》链接:https://pan.quark.cn/s/19082733db15 提取码:rtSS 现加入知识星球【A
阅读全文
摘要:# MYSQL如何搭建主从复制 首先要了解为什么要用主从复制,主从复制有什么好处。首先呢,你要实现读写分离就必须要在实现主从复制的前提下,读写分离就是主服务器的数据库(master)修改、删除、增加数据,而从服务器(slave)实现读操作。MySQL读写分离是一种数据库架构设计策略,旨在分离处理数据
阅读全文
摘要:# 工作中常用到的SQL查询 ## 一、连接查询 图解示意图  ### 1、建表语句 部门和员工关系表: ```s
阅读全文