摘要:
# TCP三次握手,四次挥手 首先,讲一讲tcp的特点。tcp市一种可靠的传输层协议。它的特点如下: ① 面向连接 TCP是面向客户端和服务器端连接的通讯协议,即面向B/S的通讯协议。数据通信之前,必须要有一个连接通道建立。 ② 可靠性 是指无论网络环境多差,TCP都可以保证信息一定能够传递到接收端 阅读全文
摘要:
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.第三方异步框 阅读全文