查看原文
其他

昨天跟这位大佬交流了下

是Yes呀 yes的练级攻略 2022-09-04

你好,我是 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,我们下篇见。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存