第13章 图书馆里的“幽灵”(2/2)

这个发现让他心中微微一动。但他没有贸然上前打扰,毕竟在图书馆,随意搭讪是极其不礼貌的行为。

转折发生在那天晚上林辰准备离开的时候。他已经收拾好东西,正准备关闭电脑,最后检查了一眼服务器日志,那个诡异的死锁依然没有重现,但也意味着问题没有被解决。他有些郁闷地合上电脑,站起身。

就在这时,一张折叠起来的小纸条,从对面推了过来,滑过光滑的桌面,停在了他的面前。

林辰愣了一下,抬头看向对面。那个女生已经背起书包,正准备离开,接触到他的目光,她快速地、几乎微不可见地指了指那张纸条,然后便像受惊的小鹿一样,快步走出了阅览室。

带着疑惑,林辰打开了纸条。上面是一行清秀而有力的字迹:

“同学,冒昧打扰。无意中看到你在调试服务器程序,注意到你似乎遇到了并发问题。如果日志中出现 ‘thread x waiting for lock a held by thread y, while thread y waiting for lock b held by thread x’ 类似的循环依赖,或许可以检查一下 handle_message 函数和 update_user_status 函数中,锁的获取顺序是否可能在某些极端情况下出现反转。—— 一个同样被bug困扰的夜猫子。”

林辰的瞳孔猛地收缩!

这纸条上的内容,一针见血!直接点出了他那个死锁问题最可能的根源!而且,对方竟然能通过观察(天知道她是怎么“无意中”看到并理解他屏幕上的代码和日志的?)就精准地推断出问题所在,这份洞察力和技术功底,绝非普通学生可比!

更重要的是,她提到了 handle_message 和 update_user_status 这两个函数名!这分明是“开放qq”服务器代码里的内部函数命名!她怎么会知道?!

一个念头如同闪电般划过林辰的脑海:难道她也是……?不,不可能。重生这种事太过匪夷所思。那唯一的解释就是,她也是一个技术水平极高的同行,并且很可能也在从事类似的项目,甚至……她可能通过某种途径,接触过“开放qq”的代码?是基地的人?还是……

林辰的心跳不由自主地加快了。他拿着那张轻飘飘的纸条,却感觉重若千钧。他立刻重新打开电脑,按照纸条上的提示,仔细检查那两个函数的锁获取顺序。

果然!在一个非常隐蔽的、由特定消息序列触发的条件分支下,两个线程获取锁的顺序确实存在反转的可能!由于触发条件极其苛刻,在之前的测试中从未出现过,所以一直被忽略了。

他迅速修改了代码,确保了所获取的顺序一致性。然后,他再次运行了高并发压力测试。

这一次,服务器稳定运行了整整半个小时,没有再出现任何死锁迹象!

问题解决了!

林辰长长地舒了一口气,心中充满了难以言喻的兴奋和……对那个神秘女生的强烈好奇。她是谁?她怎么如此了解他的代码?她纸条里提到的“同样被bug困扰”,又是在做什么项目?

他看向对面那个已经空荡荡的位置,第一次对这个每晚如期出现的“幽灵”,产生了浓厚的兴趣。

第二天深夜,林辰特意提早了一些来到老图书馆。那个女生果然还在老位置。

这一次,林辰没有犹豫。他拿着那张纸条,走到对面,在她旁边的空位坐下。

女生似乎被他的举动吓了一跳,抬起头,有些警惕地看着他,手指无意识地握紧了正在写写画画的笔。

“同学,你好。”林辰将纸条放在桌上,推到她面前,脸上带着真诚的感谢和微笑,“非常感谢你的指点。按照你的提示,那个死锁问题已经解决了。你帮了我一个大忙。”

看到林辰的态度,女生的警惕稍微放松了一些,她看了看纸条,又看了看林辰,轻声说道:“不用客气,能帮上忙就好。”她的声音清脆,带着点吴侬软语的柔和。

“我叫林辰,计算机系大一新生。”林辰自我介绍道,然后试探着问,“不知道同学你怎么称呼?也是计算机系的吗?我看你好像……对网络编程也很熟悉?”

女生犹豫了一下,似乎在权衡什么,最终还是低声回答道:“我叫沈雨馨,软件学院的,研一。”她顿了顿,补充道,“我……我的研究方向正好也包括分布式系统和网络通信。所以……对这方面稍微有点了解。”

软件学院!研一!难怪技术如此扎实!林辰心中恍然。清华的软件学院此时刚刚成立不久,能考进来的都是尖子中的尖子。

“原来沈学姐。”林辰的态度更加恭敬了些,“学姐昨天提到的锁顺序问题,真是一语中的,让我茅塞顿开。不知道学姐方不方便透露,你是在做什么项目吗?或许……我们以后可以交流一下?”

沈雨馨的脸上掠过一丝不易察觉的复杂神色,她低下头,看着自己面前摊开的、写满了各种公式和架构图的笔记本,沉默了几秒钟,才轻声说:“我……我在做一个……类似的东西。也是一个即时消息系统,不过……是基于web的尝试。”

web版的即时消息系统?林辰心中再次一动。这在1997年,可是一个相当前沿和大胆的想法!需要处理的技术难题丝毫不比c\/s架构的少,甚至在某些方面更具挑战性。

“web版的?那太酷了!”林辰由衷地赞叹,“这涉及到ajax……呃,我是说,需要浏览器端和服务器端持续通信的技术,实现起来很有挑战性啊。”

沈雨馨惊讶地看了林辰一眼,显然没想到一个新生竟然也知道这些尚未普及的概念。“你也知道这个?”她脱口而出,随即意识到自己失言,有些不好意思地抿了抿嘴。

林辰笑了笑,没有解释自己知识的来源,而是顺势说道:“我平时也喜欢瞎琢磨。我和几个朋友也在做一个c\/s架构的即时通讯软件,叫‘开放qq’。学姐你昨天提到的函数名,就是我们项目里的。看来咱们算是……同行?”

听到“开放qq”这个名字,沈雨馨的眼睛微微亮了一下,但很快又恢复了平静,她轻轻“嗯”了一声,没有再多说什么,似乎有什么难言之隐。

林辰看出她似乎不太愿意深入交流,便也不再追问,只是诚恳地说:“沈学姐,以后如果我在技术上遇到什么问题,能不能向你请教?当然,如果学姐有什么需要帮忙的,也尽管开口。”

沈雨馨看了看林辰真诚而清澈沈雨馨看了看林辰真诚而清澈的眼神,最终轻轻点了点头:“可以。互相学习吧。”

从那天起,老图书馆深夜的角落,不再只有两个孤独的行星。他们依然各自忙碌,专注于自己的代码和项目,但偶尔,当遇到棘手的难题时,会有一张纸条悄然滑过桌面;或者,会有一声轻轻的咳嗽,引来对方关注的目光,然后是一个简短的技术问题的低声交流。

他们从不谈论彼此项目的具体细节和背景,也从不涉足学习之外的私人话题。他们的交流,纯粹而高效,局限于技术本身。但在这无声的代码和偶尔的纸条往来中,一种基于技术认同的、奇妙的默契和信任,正在悄然建立。

林辰不知道沈雨馨背后有着怎样的故事,她的那个web版即时消息项目又进展如何。但他能感觉到,这个看似文静柔弱的学姐,体内蕴藏着不输于任何人的技术热情和实力。她就像一座沉默的冰山,露出水面的只是一角。

而这座冰山,在未来,是否会成为他航行路上的阻碍,还是可以并肩同行的伙伴?林辰不得而知。

他只知道,在这座藏龙卧虎的清华园里,他又发现了一个有趣的、值得关注的存在。

夜深了,月光透过高大的窗户,洒在两张年轻而专注的脸庞上,也洒在那些承载着未来梦想的代码行间。