第126章 算我的 (第1/2页)
走廊里那股挥之不去的84消毒液味道,总让人觉得呼吸不太顺畅。
215宿舍的门虚掩着,留了一条缝用来通风。
王大勇蹲在阳门边的插座旁,眼睛死死盯着地上的那个不锈钢电热杯。
杯子边缘已经有些被燻黑了,里头的水刚烧开,咕噜咕噜地翻滚着,顶得那个轻飘飘的盖子叮当直响。他手里攥着两包老坛酸菜面的料包,还没撕开,大勇转过头,看了一眼坐在桌前的陈拙。
陈拙坐在书桌前,背对着阳。
桌上摊开着一本厚重的大开本俄文书,书页微微泛黄。
宿舍里很安静,只能听到电热杯煮水的声音,以及陈拙偶尔翻动书页时发出的轻微摩擦声。他看书的速度并不快,虽然他之前就看过俄语的书,不过还是难免遇到一些难以理解的词汇。遇到长句或者生僻的专业词汇,目光会停留在上面,手指习惯性地在桌面上轻轻敲击两下。然後他会翻开旁边的词典,按着俄文字母的顺序,耐心地把词根找出来,在脑子里过一遍它在物理语境下的准确含义。这本苏联时期出版的《朗道理论物理学教程》,在物理学界出了名的难啃。
不仅因为它的理论门槛高,更因为作者有一个让所有初学者抓狂的习惯。
在这位物理学大佬的笔下,推导公式的过程经常会被大幅度省路。
往往上一行还是个复杂的微积分偏导方程,中间空了一行,下一行直接跟了一句俄文的Q,AH。(显而易见),然後就是一个乾乾净净的结论。陈拙看到这四个字的时候,总是有点无奈。
这位大佬不仅聪明,而且确实很会省排版费。
别人看到显而易见可能会觉得痛苦或者跳过,但陈拙不会。
既然作者跳了步,那把这些步骤补齐,这对陈拙来说本身就是一种极好的思维消遣。
陈拙随手从桌角的杂物堆里抽过一张列印纸。
这是前两天楚戈用来测试印表机打废的一张代码纸,正面印着密密麻麻的C语言函数,反面是完全空白的。他拿起手边那支黑色的钢笔,拔下笔帽,在空白的那一面开始推导。
没有任何停顿,也不需要打草稿。
那些复杂的流形边界条件被他一层层剥开,代数矩阵在纸面上以一种极具对称美感的方式铺展,咬合。就像是在完成一个挺有意思的拚图游戏。
大概写了小半页纸,推完最後一步的一个映射,得出的代数式刚好和书上的那个结论严丝合缝。陈拙停下笔,看着纸面上的算式,心里涌起一阵成就感。
他把钢笔盖上,放在一边,伸手拿过旁边那个水杯,喝了一口水。
水有些凉了,但他并不在意。
就在这个时候,对门216宿舍的门被人猛地一把拉开了。
紧接着,走廊里传来拖鞋踩在地板上急促的踩踏声,直冲着215过来。
215的门被一把推开大半。
楚戈顶着一头抓得像鸟窝一样的乱发,走了进来。
他眼眶下一圈乌青,脸色灰白,身上的T恤皱巴巴的,整个人透着一股刚从网吧熬了三天三夜出来的颓废感和焦躁感。随着门被推开,216宿舍里的声音也清晰地传了进来。
那是两老旧的组装电脑主机,机箱风扇因为满负荷运转,发出犹如拖拉机上坡一般的巨大轰鸣声。在这片轰鸣声中,还能听到陆嘉在对面叹气的声音。
「拙哥。」
楚戈一屁股坐在陈拙旁边的空椅子上,身体往後一靠,仰着头看着天花板,长长地叹了一口气。陈拙把手里的水杯放下,转过头看着他。
「卡住了?」
陈拙问得很理所当然,每次楚戈来找自己八成都是因为这事。
王大勇蹲在阳边,也转过头,举着手里一直没撕开的调料包问。
「楚老板,这水都快烧乾了,面到底下不下?刚才去你们宿舍看,陆嘉连话都不跟我说,我都没敢问他晚上要吃几包。」楚戈伸手用力搓了一把脸,声音有气无力。
「大勇,先把电拔了。别烧了。」楚戈苦笑了一声,「这面今天晚上能不能吃得上,还是个问题。」王大勇愣了一下,赶紧伸手把墙上的插头拔了下来。
电热杯里翻滚的水面失去了热源,渐渐恢复了平静,只剩下一丝白色的热气往上冒。
「又出什麽事了?」
陈拙转过身,面向楚戈,他顺手把桌上的朗道合上,往旁边推了推,腾出了一点交流的空间。楚戈指了指对门216的方向,眉头拧成了一个死结。
「死循环了,彻底卡死了。」
楚戈叹了口气。
「市里那个搞医药批发的老板,这阵子不是赚翻了吗?各大医院、乡镇卫生院还有连锁药房,天天找他要84消毒液,口罩和板蓝根,他以前那个单机版的Access进销存库直接崩了,找咱们用SQLServer重新写一套。」
楚戈越说越烦躁,从口袋里摸出一根烟,想点,看了看陈拙,又烦躁地塞了回去。
「本来就是个简单的进出库,写个前端连个库就行,但是老板非要加一个变态的调配逻辑。」楚戈比划着名手势。
「货源紧缺,市级医院的单子要绝对优先,然後是连锁大药房,最後才是下面县城的小诊所,而且不能把小诊所全断了,得留个百分之十的底仓给他们按比例分。」
陈拙安静地听完,没有插话。
「陆嘉写统筹算法的时候,用的是嵌套循环。」
楚戈揉了揉太阳穴,有点头疼。
「如果来的是医院订单,走路线A,查库存,扣减,如果是药房,走路线B,查库存,按比例扣减,逻辑上没毛病。」楚戈顿了顿,脸色变得很难看。
「但是今天晚上交工,我跟陆嘉倒了三万条模拟数据进去做压力测试,三万个订单带着不同的优先级标签同时挤进来,那些IF和Else的条件判断套了五六层。伺服器要在後把这几万个订单反覆遍历,比对,排序。」
「然後呢?」陈拙问。
「然後CPU占用率直接飙到百分之百,内存吃满,机箱风扇转得快冒烟了,系统死机。」楚戈靠在椅背上。
「这算法的时间复杂度太高了,我和陆嘉在对面调了一下午的参数,怎麽改最後都是死循环,老板说今晚必须看到跑通,要是扛不住这三万条并发,万把块钱的尾款就没了。」
楚戈说完,眼巴巴地看着陈拙。
「拙哥,你脑子好使,数学底子厚,你帮着捋捋,这底层逻辑到底是哪出毛病了?」
陈拙坐在椅子上,目光落在桌面的那本《朗道》上,静静地思考了几秒钟。
他听懂了。
楚戈和陆嘉遇到的问题,在於他们试图用最直接,最笨重的穷举法去走迷宫。
在数据量小的时候,挨个判断身份,排队,分配,计算机算得过来。
但数据量一旦呈指数级爆发,嵌套循环就会变成一个计算黑洞。
这和他之前看普林斯顿团队那篇论文时遇到的死结,在纯逻辑上是同构的。
德里安的团队试图用连续的时空微积分去跨越奇点,结果遇到了发散,楚戈他们试图用线性的条件判断去处理庞大的交叉订单,结果遇到了内存溢出。陈拙点了点头。
「思路从一开始就偏了。」
陈拙语气平稳。
楚戈愣住了,半张着嘴。
「偏了?按条件判断分配,这不是编程书上教的最稳妥的统筹方法吗?」
陈拙没急着解释。
他伸手把刚才那张写满了物理推导公式的草稿纸拿了过来。
他看了一眼纸面上密密麻麻的算式,那是刚刚补全的朗道理论,陈拙很自然地把纸翻了个面,露出印着废弃C语言代码的那一面。这上面的代码行距很宽,中间有很多留白的区域。
(本章未完,请点击下一页继续阅读)