昨天跟这位大佬交流了下
你好,我是 Yes。
周五下午有个微信好友添加通知,我看了下备注...有点顶是晓斌大佬,现阿里运维平台负责人,《Maven实战》的作者,之前有幸拜读过大佬的书,再次膜拜一下。
后来得知大佬是看了我之前分析 Dubbo 源码的文章联系上我的,有点受宠若惊。
其实之前看过挺多大佬写的文章,例如论好文章和烂文章,今天算是对上人了!大佬是一个对技术文章非常尊重和上心的人,从他之前写文的准备来看,可见一斑。
而且大佬也不是那些抽象派,像大佬这句见鬼去吧,就深得我心。
午休期间做了些许交谈,大佬说现在认真写技术文章的人很少,这句话有点戳到我了。
其实我去年为了刨根到底看了很多源码,写了很多源码分析的文章,还有什么比源码更加一览无余的呢?
就说 RocketMQ 消息消费重试功能,可能大部分文章只能看到消费失败会重试,那具体是怎么实现重试的呢?
只有看了源码才知道原来是每个消费组都有设置一个重试队列,然后会利用延时队列功能把消息先保存在SCHEDULE_TOPIC_XXXX的延时队列中,原来的 Topic 放在消息的扩展字段里,等延时一段时候之后再恢复到重试队列中进行重试。
知晓这些之后再看消息重试会有种通透的感觉,就是这种舒坦的感觉让我对很多东西都有深入研究的动力,当然也不是说所有东西都要看源码,只是说对合适的知识点要稍稍拨开一点迷雾。
说到这,我想起去年国庆写的《国庆期间,我造了台计算机》 这篇文章,当时是被《编码的奥义》这本书的书名所吸引。
看了几章之后就无法自拔了,遂国庆期间看了3遍,产出了这篇文章,算是对运算单元、内存、时钟、地址、溢出、补码等等有了更深一层的认识,也更深刻地理解了什么叫取指执行,也明白了高级语言的发展史。
这样的书,才叫好书,即使我能力有限,但我也尽可能地往这方面努力,想产出这样的文章。
但是这样的文章很难写,像之前写 GC 三部曲的时候,我花了几周的时间看了《垃圾回收算法手册:自动内存管理的艺术》、《垃圾回收的算法与实现》、《ZGC设计与实现》。
翻阅了 R 大的博客、知乎上的 1300 多个回答,以及所有回答下面的评论,还有狼哥的博客,等等太多了。
我还去找狼哥诉苦了,狼哥说你挖这么深干啥?
你可能感受不出来,实际上的产出可能就是一句话上面个别字眼的差别,类似大多数场景下和所有场景都是,这样的区别。
但是现在我好像有点浮躁。虽说我近期为了写 MySQL 看了很资料,但是总有点要赶鸭子上架的感觉。
我渐渐没有耐心去剖析,去深入理解,很想一股脑儿全部写出来,想着模糊化些字眼,觉得反正影响也不大,对吧?
不明白的就用可能,不清晰的就用应该。
之所以没耐心是因为心里很着急,没存稿着急,有了存稿之后,为了有更多的存稿又着急...
这样往复下来,导致我很难受,渐渐地有点为了赶文而写文。
而大佬的这句话点到我了,只有好的文章才有意义,不然和网上一些千篇一律的文章一样有什么意义呢?
我现在的心态非常平稳,稳如老狗,也希望我能坚持下来,产出的文章对大家有些许帮助,共勉。
再补充一下上一篇 MySQL 的技术文的一些遗漏点和错误点。
上篇文章没说具体看了哪些书和专栏,现在补一下。
我先看了 《MySQL 必知必会》,这本书适合完全啥都不知道的初学者看,你要是懂啥是 SELECT ,就没必要去看,知乎上有很多人推荐,但是我并不觉得推荐的人看过他们所推荐的书。
然后我看了 《从根儿上理解 MySQL》这篇小册,之前在公众号送过实体书,我自己也买了,作者说了书会比小册完整,我有点傲娇,觉得不差那么点,所以塑料袋都没拆,就放着收藏了,因为小册在手机上看比较方便,然后就采坑了,等下会提。
这本书很细,作者很细,细到跟你扣了数据页的每个字段有多少字节,分别代表什么意思,果然是从根上理解,推荐!
然后我看了《高性能 MySQL》,这本书被很多人推崇,我看完之后理解不了为什么作者要把 MySQL 的基准测试和服务器性能剖析放在第2章和第3章,我个人浅薄地认为应该先介绍原理,后面再上基准测试和性能剖析。感觉我功力不够,看了一遍没啥大感觉,GET不太到点,等我之后再刷一遍!
接着我看了 《MySQL技术内幕 InnoDB存储引擎》,这本书我很喜欢,我觉得写得很好,二刷之后收获很大!我觉比《高性能 MySQL》细致一些,可能是专门只写 InnoDB 的原因。
然后刷了极客的 《MySQL实战45讲》,三刷收获依旧很大,现在还在刷评论区,只能说思想的碰撞是最精彩的,如果你也有这个专栏,评论区不要错过,各种角度刁钻的提问,收获很大!
其实我是极客时间的忠实粉丝,上下班路上都看,所以接了很多他们的推广,没有任何负担,因为我自己就是这样学的,课的质量当然有好有坏,不过大部分我个人觉得都是不错的。
想系统学习 MySQL 的,可以看看上面我说的这些。
还要补充的一个点就是之前文章提到了 InnoDB 可重复读解决幻读的问题。
《高性能 MySQL》和《MySQL技术内幕 InnoDB存储引擎》上面都是这样写的,但是有个读者留言说他看了 《从根儿上理解 MySQL》 ,上面提到InnoDB 可重复读无法完全解决幻读,书中给了案例,是第 424 页在 5.7 版本下复现了,我一看确实!
这就是我没看书,只看了小册踩的坑,哈哈。
在之前的文章我已经留言置顶了,但是怕很多人没看到这里再重新说一下。
幻读指的是在一个事务里面多次查询得到的记录数不一样,准确点讲是之后的查询得到的记录数比之前查询多,而 InnoDB 利用 Next-key Lock 屏蔽了大多情况下幻读的产生,没有完全解决幻读的问题。
我们来看下读者提供的书上的 demo 就一清二楚了。
书上没提到,但是这里有个当前读的概念,要更新数据就需要先读后写,而这个读只能读当前的值,所以能读到事务 T2 插入的值,而读了之后再修改记录,那么记录的 trx_id 也被更新成事务 T1 的事务ID,因此接下来的 SELECT 就可以得到这条记录。
这里涉及到 readview 的概念,之后文章再做详细说明。
再提一下,《从根儿上理解 MySQL》这本书推荐大家购买,从字眼里可以感受到作者真的很用心,非常的干,有挺多人留言推荐,还有很多人私信我说这本书很好。
刚好最近当当也在搞活动,四折买书,我这里有两个叠加满减优惠码可以用:
满200-30元,BJ7MJX
满300-60元,HTCERS
有效期到5月23号过,全场书籍都可以使用,扫描下方的二维码直接到达购书专题。
周末碎碎念就到这儿了,我是yes,我们下篇见。