本文作者:开源技术之家

MySQL小册创作之心路历程

开源技术之家 1年前 ( 2019-05-14 ) 1158 抢沙发

MySQL小册创作之心路历程摘要: 精诚所至,金石为开。在彼时对数据库“进阶”的理解只限于为WHERE条件中的列加索引罢了,从未想过之后会为MySQL写一本系统的书。不过今日《MySQL是怎样运行的:从根儿上理解My...

精诚所至,金石为开。在彼时对数据库“进阶”的理解只限于为WHERE条件中的列加索引罢了,从未想过之后会为mysql写一本系统的书。不过今日《MySQL是怎样运行的:从根儿上理解MySQL》小册已经完稿,是时候来装个犊子总结一下这一年来的心路历程了。其实真正认真做一件事,过程里有很多磕磕绊绊,可结局总是好的,并没有上班时虽然从睁眼到闭眼不休的工作,看起来很忙但却是满满空虚,总觉的每日浑浑噩噩,时间飞逝,已然为了生存而生活的无力感。

关于离职

很幸运加入了一个非常棒的团队,和那么多有爱的同学一起奋斗,罗老板和金总没日没夜的工作更是给我留下了深刻的印象 —— 想把事情做成,就得这么拼。不过有一点不是很适应的是,耳边总是环绕着如何提高客单价、如何提高转换率、如何最大限度的从用户那里薅羊毛这样的声音。当然,为了养活公司这么大一帮子人,赚钱无可厚非,可是我们毕竟是在线教育公司,却很少听到如何通过制作更好的内容来赢得用户口碑,这是让我感到比较失望的一个地方。毕竟选择在线教育公司的一个很重要的出发点就是我坚信在线教育将是未来十几年里最有作为的一个产业,我觉得它不应该是像新东方那样线下教育的一个翻版,不应该还是一个老师对着几十个,上百个同学在那里照着板书讲课,不应该还是那么高的客单价。在线教育应该更加专业化,专业的人做专业的课程,有一大帮子编剧在后边研究用户的认知规律,写出最容易接受的剧本,再由专业的导演把剧本影视化,使用用户最容易接受的方式来把我们想让用户接受的东西转换成用户脑子里的东西。在线教育和传统教育的最大区别就是边际成本极其低廉,我们可以让更多的人接受到更好的教育,而不是一味的提高客单价,甚至提高到和线下一样的价格。

我觉得虽然我对敲代码非常有兴趣,但是相比之下做内容更能让我嗨到爆炸,做什么内容呢,做k12给小孩儿教数学物理?倒也是个好法子,不过好像距离我的生活太远。后来又发现生活里哪里有抱怨,哪里就有解决问题的需求,小抱怨有小需求,大抱怨有大需求,还不如从我自身周边不满的东西做起。我自己就是个敲代码的,学习的时候也看过很多书,但是大部分技术书籍都会把我弄的云里雾里,一开始我也觉得是我自己智商不够的问题,所以就一个知识点反复学习,待到真正学会了之后,又发现这玩意儿是如此这么的简单。这样的经历越多,我就越怀疑其实这并不完全是我智商有限的问题,是这个书压根儿就没把东西说清楚!这些让我懵逼的书籍里有许多相似的地方:

  • 概念的满屏堆积。不介绍故事背景,直接上来怼概念,一两个还好,十来个我就看不下去了~

  • 所讲内容主旨不明确,结构不清晰。你本来以为他在讲A问题,可讲着讲着又感觉他在讲B问题、C问题,如果这些问题互不关联还好,这些问题如果有交叉依赖,我能不糊涂么~

  • 引用后文概念十分严重。在解释某个陌生概念时,使用到大量在后文中才会使用到的概念,尤其是在解释一个比较复杂的问题时,这种情况简直是我理解内容的头号杀手。

  • 复杂概念没有图示,全凭想象。用文字表述复杂概念时,很难非常具象的理解作者想表达的意思,如果一个小地方理解错了,会导致后边一系列的东西理解有偏差。

  • 所讲内容不详细,细节缺失太多导致理解困难。计算机技术这个东西,你可以天天在天上吹什么架构和模式,我偏偏喜欢在地上搞内存格子是怎么移动。其实很多看似非常复杂的问题,把各种内存结构一画,运作原理12345的列出来,倒也显得不那么深不可测,反倒是感觉这是设计者面对问题时逼不得已的设计罢了。

  • 无趣。好多书真的好无聊的说,2333,能把人看睡着(有一本每看必着,这里就不点名了)~

后来就离职喽~ 离职的时候也想过,未来将会有很长一段时间没有收入,背负着这么大的压力?... 不对,我这么幸运的一个人能有什么压力?有压根儿不管你干啥的父母,有对我没一毛钱要求,佛系到爆炸的女朋友,自己也没欠下几百万赌债,我这么着急赚钱干啥?作为一个对吃、喝、玩、乐没有一毛钱要求的人,也不去买房子还房贷,我有个毛线压力,趁着年轻,在自己变成自己讨厌的那个人之前做点想做的事儿不挺好?。心得:哪有那么多压力,自找的罢了

创作的过程

其实最开始写的内容并不是MySQL,一开始写的是java语法,当时刚开始写东西,写的比较随便。java语法写完之后开始写java并发相关的内容,从这时候起开始觉得吃力,找了特别多的资料都感觉没有把这个东西讲清楚的。后来觉得不能在java层面找原因了,所以开始读更深一层的一些书籍。于是开始重学计算机组成原理、汇编语言、内存本质,开始看数字电路、8086。。。学这些东西对写java并发的内容自然是帮助了不少,但是由于时间仓促,自己并没有将这些知识整理成一个闭环(实在是因为太多了,自己也没有扎根学下去,当然还有一个重要的原因就是讲这些知识的资料也极其晦涩难懂~~~),不过还是凑合的把java并发的内容完成了。现在回头看,里边儿有不少错误,很多东西并未解释清楚,写的文笔也差的一笔。先不管了,总算是完成了一个系列,赶紧从这个坑里出来跳向另一个坑 —— MySQL

大约在2018年3月份的时候,MySQL基础内容已经完成,这时候志浩同学建议我搞一个公众号,聚点粉丝,说不定还能挣点钱,所有就有了现在的小青蛙:



说实话,钱倒是没挣着,精力倒是花了不少,2333~

MySQL是怎样运行的:从根儿上理解MySQL》小册中的内容也是从这个时候就开始写了,也是从这个时候开始,才开始摆脱随随便便的写作方式。可是我对MySQL进阶的概念还停留在给WHERE条件中使用到的列添加索引的初级阶段,要自己写一本关于MySQL内核的书,真不是在看玩笑?哈哈,只要功夫深,铁杵磨成针,当然这个过程中遇到的问题真是一把辛酸泪:

  • 首先MySQL的源码是C++的,我毕竟是个javaer,首先要把C++好好学一下是吧~ 好在语言这个东西不是什么难点,不求精通,只求看代码不卡~ 幸得设计MySQL的大叔写的代码也还算好懂,该有的注释大部分都有,也没用各种花花设计,都是很直截了当的代码。

  • 代码应该有上百万行(我没仔细数),总不能无头苍蝇乱看,所以得找些参考书。很无奈,除了《高性能MySQL》这本书对初学者比较友好之外,其余的书真的看起来比较挠头(晦涩归晦涩,但是的确给了我很大帮助,不然这本小册估计还得1年才能完稿),更不幸的是《高性能MySQL》并不是一本讲内核的书,对MySQL涉及到的各种结构根本没有提及,对查询优化、事务和锁的讲解停留在蹭痒痒的阶段~ 那咋办,对着那些大厚书迎着头皮看呗,一遍不成两遍,两遍不行五遍,有的书都快被我磨破了?,一篇MySQL的文档有时候要看十来遍,逐词逐词的推敲~~~

  • 看过小册的同学们肯定都有一个感受,就是小册对细节的描述实在太细了。这主要是因为我自己在学习的时候就是因为好多书籍缺乏细节而导致自己无法完全理解,晕晕乎乎,所以我觉得一步步的求证细节。这一搞可把我累坏了,有时候为了求证一个知识点要连着看好几天的代码,参阅n多资料,不停的debug~~~ 每每想放弃跳过之时总是庆幸自己又多看了一会,豁然开朗之后才觉得原来不过如此。

  • 因为MySQL算是一个系统级别的软件,所以会在很多地方直接依赖更底层的一些服务,当看到网络有疑惑的地方,便暂时停下来去搞网络,当看到IO有不会的地方,便暂时停下来去看IO,如此往复,直到我觉得自己可以编一个闭环的知识给大家听为止。

  • 与敲代码比起来,写能让人很愉快看懂的技术书籍更是一门艺术。其实这个和写一篇引人入胜的小说差不多,使用许多的手法,比方说谋篇布局,词汇运用、设置悬念、幽默搞笑等等都得上阵,一篇大家看起来很流畅的文章其实背后都是修改了数遍的结果,已经记不清有多少次把写了几千字的文章全部删掉,推倒重来,只为给大家一个较好的阅读体验。自己读起来都不爽的文章,其他同学读起来肯定更难受。当然,有时候在许多地方为了内容的准确性或者别的什么目的会牺牲一些用户体验,不过体验这个东西是慢慢培养出来的,通过用户反馈,之后再修改,慢慢也可以迭代优化。


    小贴士: 我坚信,你肚子里有多少东西,和你能把你肚子里的东西教会别人多少,是完完全全的两码事儿。

  • 等我想起来再说吧~~~


当然,即便如此,《MySQL是怎样运行的:从根儿上理解MySQL》也只能是对一些比较核心的概念搭建一个知识闭环,所以我才说本书其实只是一本MySQL进阶的入门书籍,更多的内容需要大家逐一去研究,不过对于不是内核开发者的同学们来说,书中的内容已经够大家用一阵子的了。

开始售卖

掘金这个平台是我从老钱那听来的(老钱就是那个写:《 Redis 深度历险:核心原理与应用实践》的同学),然后我说反正纸质书不挣钱(纸质书是特别不挣钱,已经有不下5个技术书籍作者跟我说过了),还不如先放到这种平台上来卖一卖。

然后不知不觉亲爱的2019年就到来了,书籍的内容大部分也都完成了,是该出去露露脸了。万万没想到啊,掘金经历了一次大裁员,负责小册的同学仅剩一位linmi同学(微信昵称),他貌似同时在看好多个小册,每天都忙的要死,连周末都工作(当然我是007)~ 反正是平台流量有限,如果想把小册卖好,就得自己去多找些渠道。我当然是想多卖点,毕竟快2年没有收入,再不搞点收入怎么能继续创作好内容呢?这时候做公众号的好处就体现出来了,我在做公众号期间加了200多位公众号博主的微信,当然有大号也有小号。幸运的是,在把小册的内容给他们看过之后,有差不多不到100多个同学同意以不同的方式给我的小册打个广告,有的在朋友圈发一下小册海报,有的转发我的干货文章附上小册海报,更有的同学自己撰文来给我宣传小册。这里特别提一下公众号“架构师之路”的沈剑大大,在得知我所做的事儿之后,特意自己撰文来为我打广告,而且坚持不要分成收入(小册有分成提成,只要生成自己的小册海报,有同学购买后就可以得到标价的30%作为分成,大约是一本9块钱。),当时真是把我感动的不要不要的,世上真是好人多啊~

小贴士: 由于微信把分享海报的这种行为称之为诱导分享,所以掘金并没有在微信的链接中提供生成海报的入口,如果有已经购买的同学觉得内容不错,自己也可以到电脑版小册主页或者手机app里生成海报哦,给自己赚点分成收入,也算是帮一下饥寒交迫的作者~

反正是刚上线的那几天(2019年3月初)每天都在联系各种公众号博主,各种说好话,把自己变成了一个运营。后来想想,其实我做运行还蛮专业的?

到现在为止,小册的销量是7500+册,不算是满足我的预期,我想着这么棒的内容,小册销量怎么也得追上老钱呀(老钱写的小册销量接近2万册)。不过也不算太差,毕竟自己没有啥title,也没有别人家那么强大的市场营销,做到这个成绩也凑乎吧~

完稿之后的打算

我不是神,就算我用尽全力来把文章写的通俗易懂,但终归还是我自认为的通俗易懂,还是有好多同学对文章中的内容有疑惑。我觉得学习的过程答疑是一个非常重要的步骤,所以我们建了一些微信群来专门答疑,目前已经是有6个这样的群了,每天都会有好多人来@我提问,然后我就要一个一个回答(说实话真心是挺累的,你想想6个500人的群,每个群里都有好多同学提问,啧啧啧啧~)。令我哭笑不得的是绝大部分同学的问题其实在小册中都已经有明确的回答了,虽然我强调了一万遍不要跳着看,可大家就是不听,我也很无奈?。

目前并不打算现在就去工作,先基于小册的内容再增删改一些东西吧,把小册里现有的bug重新梳理一遍,先出本纸质书看看,说不定还能卖个10万册(虽然10万册也挣不了多少钱)。如果之后生产内容的确可以养活我,那之后就专心干这个,如果实在够呛,还是得先去工作赚点钱,之后再给大家写一些既通俗,又深入的东西,让天下没有难学的知识哈哈。


本文标题:MySQL小册创作之心路历程
本文链接:https://www.kyjszj.com/sjkzq/246.html
作者授权:除特别说明外,本文由 开源技术之家 原创编译并授权 开源技术之家 刊载发布。
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。
文章版权及转载声明

作者:开源技术之家本文地址:https://www.kyjszj.com/sjkzq/246.html发布于 1年前 ( 2019-05-14 )
文章转载或复制请以超链接形式并注明出处开源技术之家

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论

快捷回复:

评论列表 (暂无评论,1158人围观)参与讨论

还没有评论,来说两句吧...