⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 zhuanlan.zhihu.com/p/360390223 「胡津铭」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注**微信公众号:【芋道源码】**有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言将得到认真回复。甚至不知道如何读源码也可以请教噢
  4. 新的源码解析文章实时收到通知。每周更新一篇左右
  5. 认真的源码交流微信群。

周信静 是我最好的朋友之一,也是我最敬佩的同龄人。我早就想写写文章讲讲他的故事,但由于各种原因,始终未能动笔。适逢前段时间他成功申请到了MIT的CS PhD(计算机博士),遂趁此机会讲讲他的故事,或者说是讲讲我眼中的他吧。

初识信静:安静又狂热的技术极客

说实在的,与信静的相识颇有几分偶然。当时是2017年春季,那时我们都刚参加完浙大计算机学院的研究生考试。为了准备考研复试的机试,当时我天天埋头苦刷PAT。而我刚开始屁颠屁颠地刷PAT甲级题目的时候,就已经有一位同学早早地刷完了的所有题目。ID“无敌大饺子”在PAT的排行榜榜首上孤高地挂着,个性签名“:)”透露成一股绝世高手的气息。当时我就好奇,这位“绝世高手”究竟是何许人也。某次考研群里讨论问题的时候,信静现身回答了几句,我敏锐地注意到了他的QQ昵称就是“无敌大饺子”。怀着巴结大神的忐忑不安心情,我申请了信静的好友;他很快通过了。然而那时候我的水平还太次,并未达到能与他交流的程度,所以只是怯怯地打了个招呼,就没再进一步交流。

后来我们考研复试要确定实验室。彼时的我还有些迷茫,不知道该投递哪个实验室。于是我想,不如问问大神的意向吧。信静告诉我说他应该会去数据库实验室。于是,抱着跟着大神走的想法,我也同样投递了数据库实验室。后来我们都很轻松地拿到了数据库实验室的offer。他没有任何犹豫就选择了接受,而那时的我还并不懂他对数据库的热爱;而我则犹豫纠结了很久,最后也选择了数据库实验室。

2017年暑假,我们与其他两位比较熟悉的考研同学商量,打算在入学之前就提前组一个宿舍。于是我和信静前往学校办理宿舍手续。在土木科技馆的门口,我们见到了彼此的第一面。信静高高瘦瘦,身材与我颇有几分相似,一身都是运动装束。见到我之后,信静腼腆又羞涩地笑了笑,打了个招呼,”你好,我是周信静。“我上前和他握了个手,”百闻不如一见啊,我是胡津铭,以后就靠你带我了。“随后拍了拍他的肩以示好。他被我拍了之后有些不适应,往边上让了一小步,又略有些尴尬地笑了笑说,“互带,互带。”

之后我们在校园里边逛边聊。我一开始试图找一些共同话题,如动漫、电影之类的聊聊,但信静面对任何话题都是只说三两句,搞得我像追求女生时尬聊找话题的男生一般。无奈之下,我只能问他最近在干嘛。谁料这一下就打开了他的话匣子,他告诉我他最近在一家数据库创业公司实习,并开始滔滔不绝地讲他在那边做的工作,诸如什么重写hash map(哈希表)比STL快几十倍啦,什么Raft、PAXOS啦。这众多名词的突然袭来打得我是措手不及。他就这样脸色微红、语气略有些急促地开始讲那些数据库技术,手指不停地笔划,告诉我这些工作有多么得激动人心,而这与刚刚羞赧的、不善言辞的他判若两人。看着这样的他,我突然生出了一种感觉:这家伙以后可能是会改变数据库领域的。

再识信静:低调逆袭的奋斗者

虽然很遗憾最后因为一些原因我们没能成功组成宿舍,但是开学之后我们还是会常常讨论一些学术问题。我俩的背景颇有些不同:我本科是毕业于航天专业的,所以计算机基础很是缺乏,因此我当时更倾向于好好补一些基础;而他本科则是正统科班出身,基础很是扎实,而且他有强烈的做research的意愿,因此会大量地去看paper、提idea与我讨论、并做实验尝试。在与他的讨论中,我常常被他深不见底的数据库、系统的知识储备所震惊。现在回顾起来,当时初入科研门槛的我们其实提出了不少有意思的想法。比如我们在2017年的时候就预见到了机器学习会在数据库/系统领域有广泛的应用,甚至我们在课堂演讲的时候还说了这么一句话“任何需要决策的地方、调整参数的地方,也许都可以使用机器学习”(when there is a decision needed, there is potentially ML needed)。我们也尝试了一些机器学习应用在系统上的想法 ,不过很遗憾的是,那时候我们并没有比较好的实验条件与机器,这些想法最终都没能变成完整的工作。

如果仅仅是这样的话,那信静在我心中只是一位基础扎实、动机强烈(highly self-motivated)、刻苦勤奋的很强的朋友罢了。真正让我震惊的是无意中得知的信静之前的故事。

有次我们在讨论算法题,信静随意说了一句自己之前有一些ACM经历。我闲着无聊,想搜搜看他之前的ACM成绩。这一搜不得了,无意中搜到了这样一条推送:不忘初心 笃行致远——记软件技术122班毕业生周信静 。我这才惊讶地得知原来信静不止是从杭电辛苦地考上浙大计算机的,他甚至之前还是专升本到的杭电!震惊之下,我把这条推送发给了信静,表示了自己的膜拜与佩服之心。谁想到信静转而说出了让我更震惊的事情。信静尴尬一笑,说自己小时候不懂事,也没啥人管,天天就知道乱玩。到了初三的时候,职高来他们初中宣传,一忽悠,信静就一冲动,放弃了中考而选择了去职高。结果在职高读到第三年,他突然醒悟,觉得自己不想就这样度过一生,于是开始奋发图强,努力学习。无奈积重难返,且偏科严重,后来仍然只有考上一所大专。信静并没有因此而绝望,而是进入大专之后,继续维持着之前努力的势头,积极学习高质量的公开课,最终完成了专升本和考研到浙大的逆袭。职高->大专->专升本->考研到浙大!我实在无法想象信静背后是付出了多少努力,才能走出这样的道路。

附:这里有信静在大专二年级时写的一些项目:raft-core。大家一看代码就知道他当时的水平了。诚实地说,现在的我仍然距此仍有相当距离,很难想象当时的他付出了多少努力。

与信静的科研合作:永不放弃的坚定前行者

又过了一段时间,由于一些原因,我转出了原来的实验室。由于信静所在的数据库实验室已经基本没有同学做数据库(都去做机器学习了),故信静仍然常常来找我这个不做也不懂数据库的人来讨论想法(idea)、实验和写作方面的问题。某天晚上,信静突然非常激动地跑到我的寝室,和我说他新想出了一个想法。这个想法是针对一种新的存储硬件NVM的(Non-Volatile Memory,非易失存储)。这个想法的动机(motivation)是来源于NVM的一个特点:NVM的读很快,具有接近DRAM(Dynamic Random Access Memory,动态随机存取存储器,即我们平时所说的内存)的速度,但是写比DRAM慢很多。这样的特点使得NVM上的写在很多时候成为了一个瓶颈,因此这篇工作就希望能够降低NVM的写的频率。使用的方法启发于以前一篇数据库领域的论文。那篇论文设计了一种混合多阶段索引(hybrid multi-stage index)来减少写操作。启发于此,信静设计了一个双阶段(dual-stage)的索引来减少NVM上的写操作。(关于这篇论文详细的说明可以参考这篇文章)信静有些忐忑又有些期待地看向我:“你觉得这个想法怎么样?靠谱吗?做出来能中顶会吗?”我很肯定地告诉他:“我觉得非常靠谱,做出来的话应该能中。”信静欢欣雀跃地说:“我也这么认为!那我就去实现了!”

在这项工作中,还有一些让我印象深刻的事情。在与以前的相关工作进行实验对比的时候,我们发现之前的工作基本都没有开放源代码(开源)。数据库、系统方面的论文实现是极其复杂且困难的,常常会耗费巨大量的力气,因此如果之前的工作有开源的话,那就会大大减少复现的代价;否则的话,则可能要花大量的精力在复现论文上。信静抱着试试看的想法给作者们写了邮件,想看看能不能要到源代码,这样就可以省下大量精力。遗憾的是,所有最新的相关论文的作者都表示无法提供源代码,但是有几位作者表示,如果信静复现论文的过程中碰到问题的话,他们愿意提供帮助。“这怎么办呢?要不就比较一些老一些的但是开源了的工作?”我问信静。“不行,这样的话,实验结果就缺乏说服力了。不提供代码就不提供代码吧,我自己来实现!”信静坚定地回复我。后来,信静就凭借自己惊人的工程能力,将所有需要对比的工作都复现了出来。

这项工作在做了半年之后进行了第一次投递,投递在VLDB2020(VLDB是数据库领域最顶尖的两个会议之一)上。不幸的是,第一次审稿(review)结果出来,审稿人(reviewer)的意见都比较负面,主要的批评在于工作的实验是在NVM的模拟器上做的,审稿人觉得这不太具有说服力,希望能在真实硬件上做实验。审稿人写道(此为翻译):“如果是以前也就罢了,那时候Intel没有提供硬件给外界使用,那不得不用模拟器。现在Intel已经提供硬件了,那么没理由只是在模拟器上做实验。”“哼!提供个啥!明明只有和Intel有合作的企业才能拿到。”信静很委屈地和我吐槽。我当时和信静说,实在不行的话,就再投下一个会议吧,我想总有审稿人愿意接受模拟器上的实验结果的吧。信静不服气,觉得不能就这样放弃。后来他自己想办法联系到了阿里的一个数据库的组去实习,并与实习的组商量好,在实习期间把这篇工作的实验给做了。在真实硬件上重新做了实验之后,信静再次将这篇论文提交到VLDB。审稿人看到这样的改进之后都非常高兴,纷纷给了接收(accept),这篇工作就这样中了。

信静想办法拿到真实NVM硬件做实验的这件事情让我意识到了自己和信静的一个巨大差距的地方:信静是能够打破限制(break the box)来解决问题的人(problem solver),碰到没有NVM硬件这样的限制,他会想办法打破限制;而我则是一个只敢在限制内行动的人。

三识信静:沉默着扛起所有压力的男子汉

接下来要说的这件事情,应该说是信静人生最曲折最悲惨的一件事情,却也是最让我震惊而敬佩他的一件事情。

2019年暑假的某天晚上,我问信静VLDB的审稿结果出来了吗。信静突然回我说:”我回家了,我爸因病去世了。”

信静的父亲是因为食管癌而去世的。信静告诉我说他父亲是在信静研究生入学前几天查出来食管癌晚期的,而像他父亲那样的病人,平均生存周期一般是不超过半年的,他父亲能坚持一年半多,家里人已经很知足了。我说你这几年怎么都不和我们说这事儿。他觉得也没啥好说的,说了也帮不上什么。我眼中彷佛看到了当年收到确诊噩耗的信静:他也许先是当场愣住了,没想到一直安分守命的他们会遭遇这样的天灾;而愣了一会儿之后,他握紧拳头告诉自己,自己已经是一个顶天立地的男子汉了,能够也必须扛起家里的负担了。尽管家里很穷苦,他也没有和任何其他人去说这件事情,也许是不希望大家不必要地去可怜他;他只是自己默默地找了个远程实习,一边读研一边赚钱给家里提供医药费的支持。他什么也没有说,什么也没有抱怨,沉默地扛下了所有压力。男子汉所谓顶天立地,不外如是。

离开校园后的科研:时间是海绵里的水

在那之后,许是上天不忍心再捉弄信静了,他的运气终于好了起来。DPTree的论文被接受了。而之后,这篇论文的一位审稿人 Joy Arulraj (他是佐治亚理工的助理教授)因为信静的出色工作而主动联系他寻求合作。在得知了信静还没有攻读博士后,Joy还主动找了funding(资金支持)并邀请信静去佐治亚理工读博。

到了秋招,我们都要找工作了。我和信静都非常希望能和彼此做同事。我先拿到了一家高频交易公司的offer,而后信静也非常希望能拿到这家公司的机会,我们一起当同事,但很遗憾这家公司秋招时候的系统开发岗位只有1个名额,不再继续面试信静。无奈之下,信静只能再去寻找其他大公司的数据库组的机会。后来我率先拿到了腾讯云数据库内核组的offer,之后介绍信静去面了这个组,信静也没有辜负大家的期望顺利地砍下了SSP。这本是我们成为同事的绝佳机会,然而我已经先答应了那家高频交易公司,而我向来是言出必行,故而也就未选择去腾讯与信静共事,现在想来还非常后悔和遗憾。

信静毕业去了腾讯,在那个组做了许多很不错的工作。更厉害的是,信静还利用业余时间与Joy合作做科研。那时候,信静工作日的白天上班,晚上和周末挤时间做科研。我们同届的几位朋友基本上都因工作忙得焦头烂额,挣扎在厂子里日复一日的搬砖之中,而他却能在将工作任务完成得非常出色的同时,还做了一项顶级的科研工作,真是令人敬佩。他们的这项工作SpitFire最终发在SIGMOD2021上(SIGMOD是数据库领域最顶级的两个会议中的另外一个)。

博士申请:百二秦关终属楚

读博是信静多年的梦想。我刚认识信静不久的时候,他就问过我了不了解申请美国大学博士的事情。他问我说有没有认识去CMU(卡耐基梅隆大学,美国计算机排名前四的大学)计算机系读博的同学。当时我告诉他说,这个级别的大学极难申请,浙大一年也不一定能有一位申请成功。说实话,那时候我和信静的交流还不多,对他的了解和认识都不够,心里还觉得他有些“好高骛远”,甚至是“不知天高地厚”;现在想来,当时的我是燕雀不知鸿鹄之志了。到了2020年的时候,我才知道为什么信静当时会问CMU的事情了。实际上,信静入门数据库的时候,用的是CMU的Andy Pavlo开放在网上的公开课程15-445和15-721;Andy的课程让他产生了对数据库的强烈兴趣,并一直持续至今,也让当年的信静产生了对CMU的憧憬与向往。值得一提的是,信静的SIGMOD2021的论文,三作就是Andy,不得不让人感慨命运的神奇。

2020年年底,信静开始申请美国的博士机会,并且只申请了几所顶级学校,我也一起帮他参考了一些文书方面的工作。在申请的学校中,信静出人意料而又情理之中地拿下了MIT计算机系的PhD offer,并选择去MIT就读。说出人意料,是说考虑到信静的故事背景,他也许是唯一一个从职高大专走到MIT PhD(或同等水平的学校)的人,就我所知是前无古人,后会不会有来者我也说不准;说情理之中,是说以我对他的实力和秉性的了解,他能拿到MIT的offer我毫不意外,甚至可以说这也只不过是他的一个新起点,他的征程才刚刚开始。目前,MIT的数据库实验室已经有三位教授向信静抛出了橄榄枝,这其中就包括数据库领域现存的唯一图灵奖获得者Mike Stonebraker,而Mike已经有好几年没有招学生了。

生活中的信静

我与信静的交流颇多,甚至我们现在还是室友——他从腾讯离职以后,我们与另外一位好朋友三人一块合租。生活中,信静最令我印象深刻的当属他的勤奋。除了每天的锻炼身体以外,我几乎很少看到信静在做学习、工作以外的事情——而他最大的热爱就是在数据库与计算机系统上,几乎将全部的时间与精力投注于其上。前两天,我们三人在家里聊自己业余时间有什么兴趣爱好,当我们纷纷说出自己爱好的时候,信静却微笑着说:“对我来说,数据库就是我的兴趣爱好。”而且,由于信静多年以来一直坚持跑步,他也拥有强健的体魄,这更支持着他数年如一日般地专注学习。可以说,信静是我熟悉的人中最为勤奋的一位。这里顺带一提,就我个人观察到的情况而言,可以说计算机领域多数情况下就是这样一个领域,天赋在其中的作用或许不算多大,而努力与勤奋才是最重要的。我从未见过一个勤奋努力并使用正确学习方法却学不好计算机的人,也没见过任何一个“聪明”但却不勤奋努力但却能学好计算机的人。一分耕耘,一分收获。

除此以外,信静还是一位非常温柔善良的青年。记得2020年有一天晚上,我在上海某医院看病。由于某些原因,我个人的行动能力出了点问题。信静知道之后二话不说,从家里赶到医院,全程陪着我看完了病,并送我回家,确认我平安无事之后才离去。印象最深刻的还是信静刚到医院时,从包里掏出了两根(有点压坏了的)香蕉和一个苹果。我说你这是干嘛。信静淳朴一笑,说,怕你饿了,给你带点水果充饥。我笑了笑,说,还好你带的不是橘子。

不过,很高兴的是,信静近日脱离了我们的单身队伍,从此业余生活终于不再是一味的数据库了(笑)。

结语

信静出生于浙江一个贫困的小岛。尽管早年他对读书没任何兴趣,因而进了职高大专,但他后来奋起读书,立足杭州,放眼世界,最终惊人地拿到了MIT CS PhD的offer,他的奋斗历程毫无疑问是极其励志的。更难能可贵的是,除了他出色的技术水平与学术研究水平以外,信静还是一位非常温柔、善良、诚恳、坚毅、果敢的青年,尽管生活在很长的一段时间内并未温柔地对待他,但他仍然对生命充满着热爱。抬头仰望星空,低头脚踏实地,这是对他的最好写照。他是我永远的学习榜样。

最后,希望所有出身贫寒的孩子,都能抬头看天,向着自己的梦想奋斗、努力;希望所有以前荒废了时光,现在却想“浪子回头”的同学都能相信自己,踏实勤奋地去学习,你永远想象不到未来的你会有多强大;希望所有出身“低下”的同学都能不再自卑,为自己的经历感到自豪;希望所有心中有梦的同学,都能脚踏实地而又勇敢地追寻自己的梦想。

谨以此文表达我们的这些希望。

文章目录
  1. 1. 初识信静:安静又狂热的技术极客
  2. 2. 再识信静:低调逆袭的奋斗者
  3. 3. 与信静的科研合作:永不放弃的坚定前行者
  4. 4. 三识信静:沉默着扛起所有压力的男子汉
  5. 5. 离开校园后的科研:时间是海绵里的水
  6. 6. 博士申请:百二秦关终属楚
  7. 7. 生活中的信静
  8. 8. 结语