关灯
护眼
字体:大 中 小
上一页
目录
下一页
“当前登录的用户,不是一个矩阵,他是一个矢量。”
陈拙给出了最后的解法。
“一个只有他自己那个位置是1,其馀全是0的矢量,你拿这个一维矢量,去乘那个稀疏矩阵,乘一次,得出他的直接好友矢量,再拿结果去乘一次矩阵,得出二度好友。”
陈拙顿了顿,补了一句。
“矢量乘稀疏矩阵,时间复杂度是0(n),就算他有一万度的人脉,计算机做这种一维数组的乘法,连一毫秒都用不了。”网吧里,楚戈嘴里的糖已经咬干净了。
咬到了糖棍被骆了一下牙,他才猛地反应过来,一把将糖棍甩在地上。
他的眼睛死死盯着面前那张沾着红油的泡面纸盖。
上面写着两行有些凌乱的公式。
困扰了京城那个初创团队整整半个月,被几个清华计算机系的高材生视为无解硬体瓶颈的数据库死锁问题。在这个十二岁男孩嘴里,被几句最基础的线性代数概念,直接降维打击成了碎渣。
“我懂了。”
楚戈的声音有些发抖。
“抛弃数据库的关系查询,把所有的关系表抽出来,在内存里维护一个稀疏矩阵,所有的查询,全部在内存里做矢量相乘,算出结果后,再拿用户id去数据库里提头像和名字。”
“对。”
陈拙应了一声。
“但是有个问题。”
楚戈的程序员思维迅速抓住了漏洞。
“a认识b,b认识c,c又认识a,这在图论里是个环,如果矢量一直乘下去,会不会无限循环,把算力耗死?”“楚戈。”
陈拙在电话那头叹了口气,语气里带着点无奈。
“这是工程问题,不是数学证明题,矢量乘出来的结果里,凡是数值大于0的,你顺手用个哈希表把1d记下来,下次乘的时候遇到已经记过的,直接跳过不就行陈拙轻轻摇了摇头。
“你是个写代码的,别指望数学公式连你拉屎用几格纸都算清楚,用点你程序员的常识好吗?”楚戈听着电话里那点调侃,突然咧开嘴乐了。
“行,哥哥我承你这个情了,这回算我欠你的。”
楚戈把那张泡面盖子折了两下,小心翼翼地塞进贴身的口袋里。
“过完年回科大,我请你吃一个月的食堂小炒,先挂了,我得赶紧把这个底层的内存守护进程写出来。”没等陈拙说话,电话里传来了嘟嘟嘟的忙音。
陈拙放下话筒,摇了摇头,嘴角带着一抹笑意。
他转过身,走向厨房去拿碗筷,准备吃晚饭。
距离泽阳市一千多公里外的京城。
中关村附近的一栋破旧居民楼里。
屋子里没开灯,只有三四台显示器散发着惨白的光,窗外偶尔闪过几道绚烂的烟花,照亮了满地的烟头和吃剩的外卖盒。汪兴裹着一件棉服,整个人窝在计算机椅里,双眼布满血丝,死死盯着屏幕上的后台日志。
他们想在这个互联网的荒蛮时代,做一个真正意义上的实名制校园社交网站,点子是极好的,几个汪兴甚至已经靠着ppt拉到了一笔几十万的天使投资。但是技术瓶颈卡死了他们。
明天就是大年初三,投资人要求看一个承载五百人同时在线的系统de。
汪兴已经三天没合眼了。
只要并发量一上来,好友的好友这个内核功能的数据库查询,就会象雪崩一样拖垮整个系统。屏幕右下角的n图标突然跳动了起来。
汪兴布满血丝的眼睛动了一下,握着鼠标点开。
是楚戈,那个远在徽州,被他拉来当免费技术外援的科大变态黑客。
“老楚,别费劲了。”
汪兴敲了一行字发过去,手指有些僵硬。
“我们试了加缓存,试了建索引,没用,关系型数据库处理不了这种多级网状查询,硬体扛不住。”几秒钟后,楚戈发过来一个压缩包。
只有不到z0kb。
紧接着,楚戈的消息弹了出来。
“把你们之前的关系查询代码全删了,把这个c语言写的守护进程挂在服务器后台。”
汪兴愣了一下。
“这是什么?”
“一个内存级别的稀疏矩阵相乘工具。”
楚戈的回复很简单。
“你只要把你们的关系表导出一份纯文本塞给它,以后所有的好友查询,不用过数据库,直接发指令给这个进程,它在内存里算完,把好友id数组返回给你。”
汪兴看着那段话,有些摸不着头脑。
但他现在已经走投无路了,死马当活马医。
他接收了文档,解压,把源代码拖进编译器,粗路地扫了一眼。
本章未完,请点击下一页继续阅读>>『加入书签,方便阅读』
上一页
目录
下一页