- 博客(142)
- 收藏
- 关注
原创 『MySQL 实战 45 讲』24 - MySQL是怎么保证主备一致的?
4. 执行一次删除语句,查看 delete 语句在 binlog 是怎么记录的。
2024-12-07 13:48:33
1109
原创 『MySQL 实战 45 讲』22 - MySQL 有哪些“饮鸩止渴”提高性能的方法?
由慢查询导致性能问题的三种可能情况,实际上出现最多的是前两种可以通过下面过程,预先发现问题上线前,把慢查询日志(slow log)打开,并且把设置成 0,确保每个语句都会被记录入慢查询日志在测试表里插入模拟线上的数据,做一遍回归测试观察慢查询日志里每类语句的输出,特别留意字段是否与预期一致新增的 SQL 语句不多,手动跑一下就可以。而如果是新项目的话,或者是修改了原有项目的表结构设计,全量回归测试都是必要的。这时候,你需要工具帮你检查所有的 SQL 语句的返回结果。
2024-06-29 13:23:10
1319
1
原创 『MySQL 实战 45 讲』21 - 为什么我只改一行的语句,锁这么多?
session A 的 delete 语句加了 limit 2,但是 c=10 的记录其实只有两条,因此加不加 limit 2,删除效果都一样,但是加锁的效果就不一样。
2024-05-04 19:39:57
858
原创 『MySQL 实战 45 讲』20 - 幻读是什么,幻读有什么问题?
3. 当执行 select * from t where d=5 for update 的时候,6 个记录加上了行锁,还同时加了 7 个间隙锁,这样就确保无法再插入新的记录。
2024-05-04 13:51:18
1241
原创 『MySQL 实战 45 讲』19 - 为什么我只查一行的语句,也执行这么慢?
4. 可以看出 905 号线程是问题根源,可以执行。2. 扫描 1 行但是执行还是很慢的情况。
2024-05-03 00:16:53
346
原创 『MySQL 实战 45 讲』18 - 为什么这些SQL语句逻辑相同,性能却差异巨大
4.5. 优化器可以选择遍历主键索引,也可以选择遍历索引 t_modified,优化器对比索引大小后发现,索引 t_modified 更小,遍历这个索引比遍历主键索引来得更快。因此。但是这里是全索引扫描6. 即使对于对于不改变有序性的函数,优化器也不会考虑使用索引(),例如。
2024-05-02 20:05:14
51
原创 『SpringBoot 源码分析』run() 方法执行流程:(4)刷新应用上下文-处理 @Import 注解
【代码】『SpringBoot 源码分析』run() 方法执行流程:(4)刷新应用上下文-处理 @Import 注解。
2023-09-09 12:27:41
373
1
原创 『SpringBoot 源码分析』run() 方法执行流程:(3)刷新应用上下文-处理 @ComponentScan 注解
【代码】『SpringBoot 源码分析』run() 方法执行流程:(3)刷新应用上下文-处理 @ComponentScan 注解。
2023-09-09 00:45:25
531
原创 『SpringBoot 源码分析』run() 方法执行流程:(2)刷新应用上下文-准备阶段
【代码】『SpringBoot 源码分析』run() 方法执行流程:(2)刷新应用上下文-准备阶段。
2023-09-02 00:00:25
606
原创 『SpringBoot 源码分析』run() 方法执行流程:(1)初始化 SpringApplication 、上下文环境、应用上下文
6. 然后根据调用栈,找到 main 入口,获取到主程序类,设置到。5. 设置完初始化器之后,开始设置监听器。的实现类,逐一初始化,并按照。找到所有 key 为。
2023-08-19 20:44:11
734
1
原创 『手撕 Mybatis 源码』09 - MyBatis 插件
用于定义插件的类指定要拦截哪个对象里面哪个方法// 详细的配置要拦截那些对象里面的那些方法 }由于一个拦截器可以同时拦截多个对象的多个方法,,所以就使用了Signture数组,该注解定义了拦截的完整信息// 拦截的类 Class <?> type();// 举例:type = StatementHandler.class // 拦截的方法 String method();// 举例:method = "prepare" // 拦截方法的参数 Class <?
2023-06-30 00:50:20
216
原创 『手撕 Mybatis 源码』08 - 动态代理 invoke 方法
【代码】『手撕 Mybatis 源码』08 - 动态代理 invoke 方法。
2023-06-22 10:44:30
409
原创 『手撕 Mybatis 源码』06 - Mapper 代理方式初始化
【代码】『手撕 Mybatis 源码』06 - Mapper 代理方式初始化。
2023-06-11 00:05:18
395
1
原创 『手撕 Mybatis 源码』05 - SqlSession 执行主流程
SqlSession 执行主流程获取 BoundSql经过加载完所有配置之后,继续梳理执行 sql 的过程public class MybatisTest { @Test public void test1() throws IOException { ... // 4. 委派给 Executor 来执行,Executor 执行时又会调用很多其他组件(参数设置、解析 sql 的获取,sql 的执行、结果集的封装) User user = sqlSession.selectOne("u
2023-06-10 16:14:03
683
原创 『MySQL 实战 45 讲』17 - 如何正确地显示随机消息?(随机抽取 3 个词)
取下一个行 (R’,rowid’),跟当前堆里面最大的 R 比较,如果 R’小于 R,把这个 (R,rowid) 从堆中去掉,换成 (R’,rowid’)5. 小结:order by rand() 使用了内存临时表,内存临时表排序的时候使用了 rowid 排序方法。对于这 10000 个准备排序的 (R,rowid),先取前三行,构造成一个堆。重复第 2 步,直到第 10000 个 (R’,rowid’) 完成比较。使用了优先队列排序算法,其实只要取 R 的最小的 3 个 rowid。
2023-05-25 00:12:14
401
原创 『MySQL 实战 45 讲』16 - “order by” 是怎么工作的
【代码】『MySQL 实战 45 讲』“order by” 是怎么工作的。
2023-05-18 01:16:02
486
原创 『Leetcode 5266』推箱子
『题目』: 给「推箱子」是一款风靡全球的益智小游戏,玩家需要将箱子推到仓库中的目标位置。游戏地图用大小为 n * m 的网格 grid 表示,其中每个元素可以是墙、地板或者是箱子。现在你将作为玩家参与游戏,按规则将箱子 'B' 移动到目标位置 'T' :玩家用字符 'S' 表示,只要他在地板上,就可以在网格中向上、下、左、右四个方向移动。地板用字符 '.' 表示,意味着可以自由行走。...
2019-11-17 15:47:09
702
1
原创 『Leetcode 5250』检查「好数组」
『题目』: 给你一个正整数数组 nums,你需要从中任选一些子集,然后将子集中每一个数乘以一个 任意整数,并求出他们的和。假如该和结果为 1,那么原数组就是一个「好数组」,则返回 True;否则请返回 False。『限制条件』:1 <= nums.length <= 10^51 <= nums[i] <= 10^9『输入输出』输入:nums = [12,5,7...
2019-11-03 16:30:52
443
原创 『Leetcode 5241』铺瓷砖
『题目』: 你是一位施工队的工长,根据设计师的要求准备为一套设计风格独特的房子进行室内装修。房子的客厅大小为 n x m,为保持极简的风格,需要使用尽可能少的 正方形 瓷砖来铺盖地面。假设正方形瓷砖的规格不限,边长都是整数。请你帮设计师计算一下,最少需要用到多少块方形瓷砖?『限制条件』:1 <= n <= 131 <= m <= 13『输入输出』输入:n ...
2019-10-27 16:43:36
1377
原创 『Leetcode 5239』循环码排列
『题目』: 给你两个整数 n 和 start。你的任务是返回任意 (0,1,2,,...,2^n-1) 的排列 p,并且满足:p[0] = startp[i] 和 p[i+1] 的二进制表示形式只有一位不同p[0] 和 p[2^n -1] 的二进制表示形式也只有一位不同『限制条件』:1 <= n <= 160 <= start < 2^n『输入输出』输...
2019-10-27 11:59:32
505
原创 『Leetcode 5225』规划兼职工作
『题目』: 你打算利用空闲时间来做兼职工作赚些零花钱。这里有 n 份兼职工作,每份工作预计从 startTime[i] 开始到 endTime[i] 结束,报酬为 profit[i]。给你一份兼职工作表,包含开始时间 startTime,结束时间 endTime 和预计报酬 profit 三个数组,请你计算并返回可以获得的最大报酬。注意,时间上出现重叠的 2 份工作不能同时进行。如果你选...
2019-10-20 20:46:17
592
原创 『Leetcode 5232』替换子串得到平衡字符串
『题目』: 有一个只含有 'Q','W', 'E', 'R' 四种字符,且长度为 n 的字符串。假如在该字符串中,这四个字符都恰好出现 n/4 次,那么它就是一个「平衡字符串」。给你一个这样的字符串s,请通过「替换子串」的方式,使原字符串 s 变成一个「平衡字符串」。你可以用和「待替换子串」长度相同的 任何 其他字符串来完成替换。请返回待替换子串的最小可能长度。如果原字符串自身就是一个...
2019-10-20 20:32:46
579
原创 『Leetcode 5225』最大相等频率
『题目』: 给出一个正整数数组nums,请你帮忙从该数组中找出能满足下面要求的 最长 前缀,并返回其长度:从前缀中 删除一个 元素后,使得所剩下的每个数字的出现次数相同。如果删除这个元素后没有剩余元素存在,仍可认为每个数字都具有相同的出现次数(也就是 0 次)。『限制条件』:2 <= nums.length <= 10^51 <= nums[i] <= 10...
2019-10-13 15:38:14
563
原创 『POJ 1860』Currency Exchange
『题目』: 我们的城市有几个货币兑换点。让我们假设每一个点都只能兑换专门的两种货币。可以有几个点,专门从事相同货币兑换。每个点都有自己的汇率,外汇汇率的A到B是B的数量你1A。同时各交换点有一些佣金,你要为你的交换操作的总和。在来源货币中总是收取佣金。例如,如果你想换100美元到俄罗斯卢布兑换点,那里的汇率是29.75,而佣金是0.39,你会得到(100 - 0.39)×29.75=2963....
2019-09-30 21:59:12
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人