我的智商逐年递增 第262节

  张强眼里的那一丝希望,被陈拙这句话彻底掐灭了。

  一句话,连他装病,装可怜,试图用太难做不出来逃避的退路,全部给焊死了。

  做不出没关系,开学前天才弟弟亲自上门辅导,你跑得掉吗?

  张强母亲听完,连连点头,感激涕零。

  “小拙你放心,阿姨绝对不打他,他要是敢不学,我就让他爸天天拿皮带在旁边看着他写!”张志诚在旁边也是满口答应,看着陈拙的眼神像看活菩萨。

  拜年的流程很快就走完了。

  张志诚一家三口走的时候,陈建国和刘秀英一直送到楼梯口。

  张志诚夫妇满面红光,觉得今天这趟拜年简直是捡了天大的漏。

  只有张强。

  他像个失去了灵魂的木偶,怀里死死抱着那本沉重的黑色笔记本,脚步虚浮地跟在父母身后。下楼梯的时候,他回过头,看了站在门口的陈拙一眼。

  眼神里写满了控诉,悲愤,以及对这个世界深深的绝望。

  陈拙靠在门框上,冲他挥了挥手。

  那笑容,温暖如春。

  防盗门关上。

  屋子里安静了下来。

  陈建国一边收拾茶几上的杯子,一边感慨。

  “小拙啊,你对强子确实上心,老张家就这一个独苗,你要真能把他成绩拉起来,老张能把你当祖宗供起来。”

  “应该的,顺手的事。”

  陈拙顺手拿起自己的杯子喝了一口水,水顺着喉咙流下去,熨帖着胃部。

  想着张强未来二十天的悲惨生活,陈拙觉得今天这水喝起来都透着一股甘甜。

  他并不觉得愧疚,初二确实是分流的关键期,他总不能真的看着张强混成个只知道打街机的盲流吧。既然是兄弟,那就帮他把前路铺好,哪怕这手段稍微痛苦了那么一点点。

  就在这时,客厅角落里的座机突然响了起来。

  “铃铃铃”

  陈拙放下保温杯,走过去拿起听筒。

  “喂,你好。”

  听筒那边先是一阵极其嘈杂的背景音。

  有劈里啪啦狂敲机械键盘的声音,有电脑机箱风扇的巨大轰鸣,甚至还夹杂着几句尖锐的游戏音效。“Fireinthehole!”

  “喂,拙哥!”

  听筒里传来一个沙哑却透着一股诡异兴奋感的声音。

  楚戈。

  “过年好啊。”

  陈拙把话筒换了只手,走到窗户边。

  窗外,楼下又有人点燃了一挂鞭炮,劈里啪啦的响声在积雪上炸开。

  “好个屁。”

  楚戈在那头骂了一句,背景里似乎还有人在喊老板加泡面。

  “我大年三十就在县城这破网吧包宿,熬了整整两天两夜,键盘都快被我敲冒烟了。”

  楚戈的声音里带着一种技术狂人特有的亢奋。

  “怎么?你的底层架构写崩了?”

  陈拙看着窗外炸开的鞭炮纸屑,语气轻松。

  “架构没崩,但数据库卡死了。”

  楚戈在电话那头猛吸了一口烟。

  “我跟京城那个搞六度空间的哥们,把初代校园社交网的模型搭起来了,但只要并发量一上来,几千个用户的多维交叉检索,直接把他的租用服务器搞成了死锁。”

  楚戈顿了一下,语气变得严肃起来。

  “拙哥,你期末在宿舍教我的那个离散代数矩阵降维,能不能改写成数据库的查询语句?不用管连续性,只要能把多节点并发的冗余砍掉一半就行。”

  陈拙的目光穿过结着冰花的玻璃,看向远处灰蓝色的天空。

  “能改。”

  陈拙看着窗外,声音平稳。

  “找张纸条,拿笔,我念,你记。”

第166章 拉倒吧

  电话那头的背景音乱成了一锅粥。

  有人在扯着嗓子喊网管,C区三号机加十块钱,还有人在拍桌子骂你丢雷啊,闪到我了,夹杂着一连串的咳嗽声和打火机点烟的声音。陈拙把座机的话筒稍微拿远了一点。

  “你等会。”

  楚戈在那头喊了一声,紧接着是一阵拖拽椅子的摩擦声,声音稍微小了些,似乎是换了个角落。“行了,你说,我找着笔了。”

  楚戈咬着根糖,左手死死把话筒夹在肩膀和耳朵之间,右手在一堆乱七八糟的键盘线里摸索出了一根圆珠笔。桌上没有纸,他四下看了一眼,顺手把旁边吃剩的康师傅红烧牛肉面桶拉过来,把那层沾着几滴红油的硬纸盖撕了下来,翻到背面。纸盖背面有些潮湿,但不影响写字。

  陈拙站在客厅的窗户边,看着玻璃上那层薄薄的霜花,伸手在上面划了一道。

  “京城那边的数据库是怎么建的?”陈拙问。

  “关系型,典型的树状结构。”

  楚戈使劲咬了两口糖。

  “他们想做一个六度空间的社交网,底层逻辑很简单,我是A,我认识B,数据库就建一条边,查询我的好友,速度很快,查询我好友的好友,也勉强能跑。”楚戈的声音透着一股熬夜过后的干涩感。

  “但是只要往下查三度,四度,一旦并发量超过两百人,数据库就要做无限的嵌套联合查询,一张几十万用户的表,瞬间交叉出几千万条冗余数据。”“京城那哥们说,刚才他们做压力测试,两百个虚拟账号同时点开可能认识的人这个功能,服务器的风扇转得像直升机,CPU直接飙到百分之百,三秒钟后数据库就锁死了。”

  楚戈叹了口气。

  “现在这就成了一个死结,要想快,就得把所有关系提前算好存进缓存,但这需要海量的内存,他们买不起那么多服务器,如果不提前算,实时查,只要稍微有几个人同时访问,数据库就得崩。”

  陈拙听完,没有立刻说话。

  他走到沙发边坐下,拿起果盘里的一颗带壳花生,在手里轻轻捏开。

  “你们学计算机的,是不是有点轴?”

  陈拙把花生衣搓掉,语气里带着一点笑意。

  “什么意思?”

  楚戈愣了一下。

  “这是个纯粹的图论问题,你们为什么要用查户口的办法去解?”

  陈拙把花生扔进嘴里。

  “丢掉你们的嵌套查询,把所有的用户,看成高维空间里的点,用户之间的关系,是一条线。”楚戈没吭声,笔尖停在泡面盖子上。

  “建立一个邻接矩阵。”

  陈拙的声音很平稳,像是在大学自习室里给人讲一道大一的微积分课后题。

  “假设有十万个用户,就是一个十万乘十万的矩阵A,用户i和用户j是好友,矩阵中(i,j)的值就是1,否则就是0。”“等一下。”

  楚戈打断了他。

  “十万乘十万,那是一百亿个数据点,你算过这要占多大内存吗?服务器当场就得炸。”

  “楚戈。”

  陈拙在电话这头轻笑了一声。

  “你在现实里,有十万个朋友吗?”

  “没有,我连十个都没有。”

  楚戈老老实实地回答。

  “正常人都没有。”

  陈拙说。

  “所以,这个矩阵里百分之九十九点九九的值,都是0,这是一个极度稀疏的稀疏矩阵。”楚戈拿着笔的手指猛地一紧。

  “在内存里,你不需要存那一百亿个点,你只需要存那些是1的坐标就行了。”

  陈拙继续往下说。

  “这就是个简单的坐标映射,接下来,你想找好友的好友,也就是二度人脉,在数学上怎么表达?”楚戈的脑子转得飞快,那些大一学过,后来又被他忘得差不多的线性代数知识,突然像闪电一样劈开了他脑子里的混沌。“矩阵乘法。”

  楚戈脱口而出。

  “A乘以A,A的平方。”

  “对。”

  陈拙站起身,走到茶几倒了杯温水。

  “A的平方,矩阵里值不为零的地方,就是二度人脉,A的立方,就是三度人脉。”

  楚戈看着泡面盖子,圆珠笔在上面无意识地画着圈,呼吸变得急促起来。

  “但是矩阵相乘的计算量太大了,尤其是高阶乘法,CPU还是吃不消。”

  楚戈提出了最核心的问题。

  “那是你太贪心了,你想一次性算出所有人的关系网络。”

  陈拙喝了口水,润了润嗓子。

  “服务器不需要知道所有人认识谁,服务器只需要回答当前登录的那个用户的请求,所以,你不需要做矩阵和矩阵的乘法。”陈拙的声音变得有些轻,但在楚戈耳朵里却像是一声炸雷。

  “当前登录的用户,不是一个矩阵,他是一个向量。”

  陈拙给出了最后的解法。

  “一个只有他自己那个位置是1,其余全是0的向量,你拿这个一维向量,去乘那个稀疏矩阵,乘一次,得出他的直接好友向量,再拿结果去乘一次矩阵,得出二度好友。”

  陈拙顿了顿,补了一句。

  “向量乘稀疏矩阵,时间复杂度是0(N),就算他有一万度的人脉,计算机做这种一维数组的乘法,连一毫秒都用不了。”网吧里,楚戈嘴里的糖已经咬干净了。

  咬到了糖棍被骆了一下牙,他才猛地反应过来,一把将糖棍甩在地上。

  他的眼睛死死盯着面前那张沾着红油的泡面纸盖。

  上面写着两行有些凌乱的公式。

  困扰了京城那个初创团队整整半个月,被几个清华计算机系的高材生视为无解硬件瓶颈的数据库死锁问题。在这个十二岁男孩嘴里,被几句最基础的线性代数概念,直接降维打击成了碎渣。

首节上一节262/333下一节尾节目录