Mybatis源码阅读准备

导读

阅读源码是提升自己代码能力的一个非常重要的手段,但是源码阅读有时候也非常麻烦,一定要找到入口点,然后动态地去看代码,一步步调试然后画图做笔记记录,才能在一团乱中清理出一个道路来。这篇文章介绍了我在阅读Mybatis源码的准备过程。

阅读全文

Java泛型super和extends区别

知乎: https://www.zhihu.com/question/20400700

阅读全文

order by是怎么工作的

来源: 林晓斌「MySQL实战45讲」专栏

在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求。还是以我们前面举例用过的市民表为例,假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前 1000 个人的姓名、年龄。

阅读全文

详细分析MySQL事务日志(redo log和undo log)

来源: 掘金

innodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作。

阅读全文

什么是WAL

来源: 腾讯云社区

什么是WAL

阅读全文

事务到底是隔离的还是不隔离的

来源: 林晓斌「MySQL实战45讲」专栏

你好,我是林晓斌。你现在看到的这篇文章是我重写过的。在第一版文章发布之后,我发现在介绍事务可见性规则时,由于引入了太多概念,导致理解起来很困难。随后,我索性就重写了这篇文章。现在的用户留言中,还能看到第一版文章中引入的 up_limit_id 的概念,为了避免大家产生误解,再此特地和大家事先说明一下。

阅读全文

count(*)这么慢,我该怎么办

来源: 林晓斌「MySQL实战45讲」专栏

在开发系统的时候,你可能经常需要计算一个表的行数,比如一个交易系统的所有变更记录总数。这时候你可能会想,一条 select count(*) from t 语句不就解决了吗?

但是,你会发现随着系统中记录数越来越多,这条语句执行得也会越来越慢。然后你可能就想了,MySQL 怎么这么笨啊,记个总数,每次要查的时候直接读出来,不就好了吗。

阅读全文

状态模式:游戏、工作流引擎中常用的状态机是如何实现的

来源: 王争「设计模式」专栏

从今天起,我们开始学习状态模式。在实际的软件开发中,状态模式并不是很常用,但是在能够用到的场景里,它可以发挥很大的作用。从这一点上来看,它有点像我们之前讲到的组合模式。

状态模式一般用来实现状态机,而状态机常用在游戏、工作流引擎等系统开发中。不过,状态机的实现方式有多种,除了状态模式,比较常用的还有分支逻辑法和查表法。今天,我们就详细讲讲这几种实现方式,并且对比一下它们的优劣和应用场景。

阅读全文

策略模式:如何实现一个支持给不同大小文件排序的小程序

来源: 王争「设计模式」专栏

上一节课,我们主要介绍了策略模式的原理和实现,以及如何利用策略模式来移除 if-else 或者 switch-case 分支判断逻辑。今天,我们结合“给文件排序”这样一个具体的例子,来详细讲一讲策略模式的设计意图和应用场景。

阅读全文

链表(下):如何轻松写出正确的链表代码

来源: 王争「数据结构与算法之美」专栏

上一节我讲了链表相关的基础知识。学完之后,我看到有人留言说,基础知识我都掌握了,但是写链表代码还是很费劲。哈哈,的确是这样的!

想要写好链表代码并不是容易的事儿,尤其是那些复杂的链表操作,比如链表反转、有序链表合并等,写的时候非常容易出错。从我上百场面试的经验来看,能把“链表反转”这几行代码写对的人不足 10%。

阅读全文