创科大厦十三楼的会议室里,空调风带着生冷的凉意,吹得墙角的绿萝叶片微微发颤。长条会议桌旁,部门十二名同事坐得整整齐齐,目光不自觉地在主位的张磊、侧边的李浩和对面的陈默之间来回游走。气氛凝重得像拉满的弓弦,连呼吸声都刻意放轻,只有墙上的电子钟在无声地跳动,每一秒都在放大这场职场对峙的张力。
张磊率先打破沉默,他手指重重敲了敲桌面,语气带着不容置疑的威严:“今天召集大家开这个会,核心就一件事 —— 新版本上线的闪退故障。现在用户投诉已经破万,合作方那边发了最后通牒,老板把我骂了整整半小时。” 他话锋一转,目光像刀子一样扎向陈默,“根据运维组提供的日志和李浩的排查结果,故障根源已经明确 —— 陈默昨晚修改的支付模块代码存在严重漏洞,导致高并发场景下数据冲突,触发了空指针异常。”
“磊哥说得对,” 李浩立刻接话,脸上带着恰到好处的惋惜,推了推鼻梁上的眼镜,“我从早上七点排查到现在,逐行比对了代码,终于找到了问题。陈默哥应该是连续熬了三个通宵,太累了才疏忽了 —— 支付接口的分布式锁逻辑被他误删了,还在函数末尾加了一段延迟执行的日志代码,没想到这段代码在高并发下触发了隐藏 bug。” 他说着,熟练地操作笔记本电脑,将投屏切换到代码界面,红色的删除线和绿色的新增代码清晰可见,“你们看,这里原本有个 Redis 分布式锁,现在没了,这就是问题关键。”
同事们窃窃私语起来,看向陈默的目光多了几分复杂。小李悄悄拉了拉陈默的衣角,低声说:“你赶紧解释啊,是不是哪里弄错了?” 陈默微微摇头,脸上看不出丝毫慌乱,只是平静地看着张磊和李浩一唱一和。
“误删?” 陈默缓缓站起身,声音不大却穿透力十足,让会议室瞬间安静下来。他走到投影前,没有急着反驳,而是调出项目的 Git 日志,指尖在触控板上精准滑动,“既然说到代码,那我们就把事情说透。大家看,这是昨天下午三点十七分的提交记录 —— 提交人是李浩,备注是‘优化支付模块代码效率’,但实际上,他修改的不仅是循环结构,还有关键的锁机制。”
投屏上弹出代码对比界面,陈默用激光笔指向其中一段:“左边是原始代码,这里明确有 Redis 锁的实现逻辑,用于防止高并发下的数据冲突;右边是李浩修改后的代码,锁机制被完整删除,反而加了这段看似无害的延迟代码。” 他顿了顿,切换到代码解析工具,“我们来反编译一下这段延迟代码。”
淡蓝色的解析结果跳出来,一行行清晰的逻辑让会议室里响起吸气声:“这段代码根本不是日志统计,而是一个条件触发陷阱。它会实时监测系统运行时间和并发量,当运行时长超过四小时、并发量突破五千时,就会自动抛出空指针异常,并且篡改报错堆栈,将责任指向我昨晚修改的订单处理逻辑。”
“你胡说!” 李浩猛地站起身,脸色惨白如纸,双手撑在桌子上,“这是伪造的!我根本没写过这样的代码,是你篡改了提交记录!”
“篡改?” 陈默冷笑一声,调出服务器的安全日志,“服务器的操作日志显示,昨天下午三点十五分,你的办公 Ip 登录了生产环境代码仓库,三点十七分提交修改,三点二十分退出登录。登录设备的 mAc 地址、操作时的网络带宽波动,甚至你当时打开的其他文件记录,都有完整备份。这些数据由公司运维部和阿里云双重存储,你觉得谁能篡改?”
灵能强化后的记忆让陈默对这些细节过目不忘,他甚至能准确报出李浩当时打开的另外两个文件名称 ——《支付模块测试用例.xlsx》和《月度绩效自评.docx》,这些细节让李浩的辩解瞬间失去了说服力。
“就算是我修改的,那也是操作失误!” 李浩还在挣扎,声音带着哭腔,“我只是想优化代码,没想到会出这种问题!”
“操作失误能精准删除锁机制,还能写出逻辑如此严密的陷阱代码?” 陈默调出李浩过去一年的代码提交记录,“大家看,李浩的编码习惯非常固定 —— 变量命名喜欢用拼音缩写,比如‘分布式锁’写成‘fbsuo’,‘延迟触发’写成‘yanchufa’;他还习惯用 while 循环代替 for 循环,并且从不写注释。而这段陷阱代码里的变量名是‘yanchufa_001’‘yanchufa_002’,循环结构也是 while,和他的习惯完全一致。这难道也是巧合?”
同事们纷纷点头,有人拿出手机翻出李浩之前的代码提交记录比对,越看越觉得陈默说得对。小李忍不住开口:“我记得上次做电商活动,李浩也写过类似的延迟代码,变量名也是拼音缩写!”
张磊的脸色越来越难看,他没想到陈默会准备得如此充分,甚至连编码习惯这种细节都挖了出来。他猛地一拍桌子,试图转移焦点:“够了!现在纠结是谁的错有什么用?当务之急是解决用户投诉,挽回公司损失!陈默,不管是不是你的问题,你作为代码负责人,都要承担主要责任!”
“我不承担。” 陈默的目光转向张磊,平静中带着一丝锐利,“因为这根本不是失误,而是你们早就策划好的阴谋。” 他切换投屏,调出一组微信聊天截图,“这是我在公司内网云盘的备份文件里找到的 —— 张磊和李浩的聊天记录。”
截图上的对话清晰可见:
“李浩,支付模块的锁机制你想办法删掉,加个延迟陷阱,等上线后触发故障,把锅甩给陈默。”
“磊哥,放心,我已经写好了,四小时后高并发触发,报错会指向陈默的修改记录。”
“做得好,等陈默被开除,你就能顶替他的位置,我已经跟老板推荐你做核心开发了。”
“谢谢磊哥!那加班费和项目奖金……”
“少不了你的,等事情成了,我给你申请双倍奖金。”
会议室里一片哗然,同事们的目光瞬间变得愤怒,看向张磊和李浩的眼神像在看两个陌生人。“难怪张磊一直逼着陈默加班,原来是早就想让他背锅!”“太恶心了,为了提拔自己人,居然这么陷害同事!”“我上次的项目功劳被李浩抢了,原来是张磊在背后操作!”
张磊的脸涨成了猪肝色,他猛地站起身,指着陈默怒吼:“你敢侵犯我们的隐私!我要告你!”
“隐私?” 陈默淡淡回应,“这些聊天记录涉及恶意陷害、损害公司利益,已经不属于隐私范畴,而是证据。我已经把所有材料 —— 包括版本控制记录、服务器日志、代码解析报告、聊天截图,都提交给了公司审计部和人力资源部,并且做了公证。现在,该担心的不是我,是你们。”
李浩双腿一软,瘫坐在椅子上,眼神空洞,嘴里反复念叨着:“完了,全完了……”
陈默看着眼前这两个惊慌失措的人,心中没有丝毫快意,只有一种解脱的平静。他在这家公司待了三年,从一个充满干劲的应届生,变成了被 996 压榨得身心俱疲的社畜,早就受够了这里的勾心斗角和不公待遇。若不是昨晚那场生死危机,若不是爷爷留下的旧键盘带来的奇妙变化,他可能还在逆来顺受,默默承受这一切。
“我今天把这些证据拿出来,不是为了报复谁,只是想还自己一个清白。” 陈默拿起自己的笔记本电脑,“工作失误可以弥补,但恶意陷害、踩着别人上位的行为,不该被容忍。剩下的事情,就交给公司处理吧。”
说完,他转身走出会议室,没有再看张磊和李浩一眼。身后的议论声、指责声、张磊的怒吼声,都像是隔了一层厚厚的屏障,再也影响不到他。走到办公室门口时,他听到张磊气急败坏地大喊:“陈默,你给我站住!你别想就这么走了!”