From 2954d17e5fb2d5d3f18e5669e9e1ed752dfd2082 Mon Sep 17 00:00:00 2001 From: Guide Date: Fri, 8 Mar 2024 17:06:57 +0800 Subject: [PATCH] =?UTF-8?q?[docs=20fix]=E4=B8=80=E4=BA=9B=E5=B0=8F?= =?UTF-8?q?=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/database/mysql/how-sql-executed-in-mysql.md | 2 +- docs/interview-preparation/resume-guide.md | 3 ++- docs/java/collection/linkedhashmap-source-code.md | 8 ++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/database/mysql/how-sql-executed-in-mysql.md b/docs/database/mysql/how-sql-executed-in-mysql.md index d9f1d07d..0b01d9a4 100644 --- a/docs/database/mysql/how-sql-executed-in-mysql.md +++ b/docs/database/mysql/how-sql-executed-in-mysql.md @@ -100,7 +100,7 @@ update tb_student A set A.age='19' where A.name=' 张三 '; 我们来给张三修改下年龄,在实际数据库肯定不会设置年龄这个字段的,不然要被技术负责人打的。其实这条语句也基本上会沿着上一个查询的流程走,只不过执行更新的时候肯定要记录日志啦,这就会引入日志模块了,MySQL 自带的日志模块是 **binlog(归档日志)** ,所有的存储引擎都可以使用,我们常用的 InnoDB 引擎还自带了一个日志模块 **redo log(重做日志)**,我们就以 InnoDB 模式下来探讨这个语句的执行流程。流程如下: -- 先查询到张三这一条数据,如果有缓存,也是会用到缓存。 +- 先查询到张三这一条数据,不会走查询缓存,因为更新语句会导致与该表相关的查询缓存失效。 - 然后拿到查询的语句,把 age 改为 19,然后调用引擎 API 接口,写入这一行数据,InnoDB 引擎把数据保存在内存中,同时记录 redo log,此时 redo log 进入 prepare 状态,然后告诉执行器,执行完成了,随时可以提交。 - 执行器收到通知后记录 binlog,然后调用引擎接口,提交 redo log 为提交状态。 - 更新完成。 diff --git a/docs/interview-preparation/resume-guide.md b/docs/interview-preparation/resume-guide.md index f0eb891b..81827460 100644 --- a/docs/interview-preparation/resume-guide.md +++ b/docs/interview-preparation/resume-guide.md @@ -169,6 +169,7 @@ icon: jianli - 商品和订单搜索场景引入 Elasticsearch,并且实现了相关商品推荐以及搜索提示功能。 - 整合 Canal + RabbitMQ 将 MySQL 增量数据(如商品、订单数据)同步到 Elasticsearch。 - 利用 RabbitMQ 官方提供的延迟队列插件实现延时任务场景比如订单超时自动取消、优惠券过期提醒、退款处理。 +- 消息推送系统引入 RabbitMQ 实现异步处理、削峰填谷和服务解耦,最高推送速度 10w/s,单日最大消息量 2000 万。 - 使用 MAT 工具分析 dump 文件解决了广告服务新版本上线后导致大量的服务超时告警的问题。 - 排查并解决扣费模块由于扣费父任务和反作弊子任务使用同一个线程池导致的死锁问题。 - 基于 EasyExcel 实现广告投放数据的导入导出,通过 MyBatis 批处理插入数据,基于任务表实现异步。 @@ -177,7 +178,7 @@ icon: jianli - 热门数据(如首页、热门博客)使用 Redis+Caffeine 两级缓存,解决了缓存击穿和穿透问题,查询速度毫秒级,QPS 30w+。 - 使用 CompletableFuture 优化购物车查询模块,对获取用户信息、商品详情、优惠券信息等异步 RPC 调用进行编排,响应时间从 2s 降低为 0.2s。 - 搭建 EasyMock 服务,用于模拟第三方平台接口,方便了在网络隔离情况下的接口对接工作。 -- 基于 SkyWalking + Elasticsearch 搭建分布式链路追踪系统实现实现全链路监控。 +- 基于 SkyWalking + Elasticsearch 搭建分布式链路追踪系统实现全链路监控。 **4、如果你觉得你的项目技术比较落后的话,可以自己私下进行改进。重要的是让项目比较有亮点,通过什么方式就无所谓了。** diff --git a/docs/java/collection/linkedhashmap-source-code.md b/docs/java/collection/linkedhashmap-source-code.md index 4803d388..0fb53643 100644 --- a/docs/java/collection/linkedhashmap-source-code.md +++ b/docs/java/collection/linkedhashmap-source-code.md @@ -111,15 +111,15 @@ public class LRUCache extends LinkedHashMap { } ``` -测试代码如下,笔者初始化缓存容量为 2,然后按照次序先后添加 4 个元素。 +测试代码如下,笔者初始化缓存容量为 3,然后按照次序先后添加 4 个元素。 ```java -LRUCache < Integer, String > cache = new LRUCache < > (2); +LRUCache cache = new LRUCache<>(3); cache.put(1, "one"); cache.put(2, "two"); cache.put(3, "three"); cache.put(4, "four"); -for (int i = 0; i < 4; i++) { +for (int i = 0; i <= 4; i++) { System.out.println(cache.get(i)); } ``` @@ -128,7 +128,7 @@ for (int i = 0; i < 4; i++) { ```java null -null +two three four ```