雨下了一整夜。
陈默醒来时,窗玻璃上还挂着水珠。外面天刚泛白,灰蒙蒙的,像没洗干净的脸。他坐起来,被子滑到腰间。
屋里很静,能听见冰箱的嗡鸣。
他赤脚走到电脑前。屏幕还亮着,昨晚的代码停在最后一行。光标安静地闪烁,等着他继续。他坐下来,手指碰了碰键盘。
凉意从指尖渗进去。
系统界面自动浮现。蓝光流淌过代码行,标注出三处潜在风险点。陈默扫了一眼,开始修改。键盘声哒哒响起,在清晨里格外清晰。
七点,张浩的消息弹出来。
“搞定了。”
后面跟着一个压缩包。陈默点开下载,进度条缓慢爬行。他起身去冲咖啡,水壶烧开时,嘶嘶地冒着白汽。
咖啡粉倒进杯子,热水冲下去。
褐色旋涡转起来,香味散开。他端着杯子回到电脑前,压缩包已经解压完成。里面是完整的调度模块,附带测试用例。
他点开文件,一行行往下看。
代码很干净,注释详细。张浩用了新的状态机设计,节点切换逻辑清晰。陈默看了十分钟,呼吸慢慢变轻。
这是个好架构。
他给张浩回消息:“收到。我跑一遍测试。”
张浩秒回:“等你结果。”
陈默关掉聊天窗口,打开测试环境。模拟器启动,进度条缓慢加载。屏幕上弹出虚拟的社区地图,街道网格交错,楼栋用方块表示。
他导入张浩的模块。
编译通过,绿灯亮起。他点了运行,模拟器开始运作。右下角的数据面板跳动起来,吞吐量曲线缓缓爬升。
比预期快百分之三十。
陈默盯着曲线,手指在桌上敲。一下,两下,节奏很稳。曲线爬到峰值,稳住,轻微波动。内存占用保持在安全线以下。
他喝了口咖啡,已经凉了。
苦味在舌根打转。他咽下去,喉咙发紧。测试运行了二十分钟,没有崩溃,没有死锁。日志里只有常规警告,没有错误。
他截了图,发给沈清澜。
“调度模块测试通过。”
发完消息,他靠在椅背上。肩膀发酸,颈椎像生了锈。他转了转头,骨头嘎吱响。窗外传来鸟叫,短促的一声。
手机震了。
沈清澜回:“性能数据比预想好。可以整合到主分支了。”
陈默打字:“今天做集成测试。”
“需要我远程接入吗?”
“要。”陈默说,“下午两点。”
沈清澜回了个简单的“好”。陈默放下手机,看向屏幕。测试还在跑,曲线已经平稳。他点了停止,界面暗下去。
他站起来活动肩膀。
屋里堆满了设备。路由器闪着绿光,交换机嗡嗡响,几台旧显示器摞在墙角。电线在地上盘成蛇,插板插得满满当当。
他跨过电线,走到窗边。
楼下早餐摊刚出摊,油锅滋啦响。白汽腾起来,混着葱油饼的香味飘上来。他推开窗,冷风灌进来,带着雨后泥土的腥味。
他深吸一口气,肺里凉飕飕的。
上午十点,他开始整合代码。
把张浩的模块拖进项目文件夹,替换掉旧的调度层。依赖检查弹出来,三个冲突。他逐个解决,敲字声密集如雨。
解决到第二个时,系统界面浮现。
蓝光标注出更优的解法。陈默看了两秒,摇摇头,自己写了方案。系统停顿一下,界面淡去。他继续敲代码。
中午吃了泡面。
塑料碗烫手,他垫了张报纸。面条泡得发软,他几口吃完,汤喝干净。碗扔进垃圾桶,咚的一声。
他洗了把脸,冷水泼在脸上。
水珠顺着下巴滴下来,落在领口。他擦了擦,坐回电脑前。时间跳到一点五十,他打开远程协作软件。
沈清澜准时接入。
她的头像亮起来,是个简洁的字母s。语音接通,她的声音传来,有点失真,但清晰。“能听到吗?”
“能。”陈默说。
“开始吧。”
陈默共享屏幕,打开集成测试界面。这是“瞬瞳”的第一个完整原型,智慧社区安防系统演示版。界面很简单,左侧是地图,右侧是控制面板。
他点了启动。
系统加载,进度条缓慢前进。百分之十,百分之三十,百分之七十。风扇转起来,呼呼地响,机器开始发热。
进度条走到头,界面亮起来。
地图上出现模拟的监控点,红点闪烁。数据流开始传输,右侧面板刷新着识别结果。行人,车辆,非机动车。
一切正常。
沈清澜说:“加负载。”
陈默拖动滑块,模拟同时接入五十路视频流。cpu占用率瞬间飙升,风扇狂转。界面卡顿了一下,又恢复流畅。
识别延迟在可接受范围。
“再加。”沈清澜说。
陈默加到一百路。这次界面明显卡顿,帧率下降。但系统没崩溃,识别还在继续,只是延迟变长。日志开始报警告。
“停。”沈清澜说。
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
陈默停下测试。风扇慢慢静下来,屋里只剩电流声。他盯着屏幕上的延迟数据,心里算了算。
“瓶颈在解码。”他说。
“硬件问题。”沈清澜说,“实际部署会用专用设备。软件层表现合格。”
陈默没说话。他调出详细日志,一行行往下翻。警告集中在内存分配上,张浩的调度模块处理得不错,没有内存泄漏。
他截了图,发给张浩。
“压力测试过了。”
张浩很快回:“牛逼!我这边还在公司摸鱼,等下班细看。”
陈默关掉聊天窗口。沈清澜说:“可以准备演示了。李贺那边,需要一份测试报告。”
“我在写。”
“发我看看。”
陈默打开文档,光标停在标题页。他写了个开头,又删掉。重新写,写了三行,觉得不对。他停下来,揉了揉眼睛。
屏幕蓝光刺得眼球发酸。
沈清澜等了一会儿,说:“不用写太复杂。数据说话,对比图,性能指标,应用场景。”
“我知道。”陈默说。
但他还是写得很慢。每个字都斟酌,每个数据都核对。他写了一个小时,写了三页。发给沈清澜,她两分钟看完。
“可以。”她说,“发吧。”
陈默没动。他盯着发送按钮,手指悬在鼠标上方。窗外飘过云,影子滑过屏幕。光暗了一瞬,又亮起来。
他点了发送。
邮件飞出去,叮的一声。他靠在椅背上,胸口空了一下。像跑了长跑,冲过终点,突然不知道该干什么。
沈清澜说:“恭喜。”
陈默愣了下。“什么?”
“第一个原型。”沈清澜声音很轻,“虽然简陋,但能跑了。这是第一步。”
陈默听着,没说话。他看向屏幕,测试界面还开着。地图上的红点安静闪烁,像呼吸。这是他七个月来搭起来的东西。
十万行代码,七百个文件。
从零开始,一行行敲出来。被辞退的那个下午,他坐在公园长椅上,脑子里一片空白。后来有了系统,有了推演,有了方向。
现在有了能跑的原型。
他吸了口气,慢慢吐出来。喉咙发干,他端起水杯,发现已经空了。他站起来去倒水,腿有点麻。
饮水机咕嘟响,水流进杯子。
他喝了一口,温水,没味道。沈清澜说:“赵志刚那边,我查了监控。”
陈默握着杯子,手指收紧。“怎么样?”
“楼道监控坏了。”沈清澜说,“物业说是雷击,但坏得太巧。电梯监控拍到个人影,戴口罩,看不清脸。”
“什么时候?”
“凌晨四点十二分。”
陈默算了算时间。那时候雨正大,雷声滚滚。他睡得很沉,什么都没听见。信封塞进门缝,轻得像片叶子。
“报警吗?”他问。
“没证据。”沈清澜说,“但说明他急了。你原型出来,李贺推进投资,他坐不住。”
陈默走回电脑前。杯子放在桌上,轻轻一声。他看着屏幕上的地图,红点还在闪。突然觉得那些红点像眼睛。
在看着这个房间。
他摇摇头,甩掉这个念头。沈清澜说:“下周我帮你约试点小区的人,见个面。原型得落地,才有说服力。”
“好。”
“时间地点我发你。”沈清澜顿了顿,“陈默。”
“嗯?”
“小心点。”她说,“但别停。”
通话结束。头像暗下去,屋里彻底安静。陈默坐着,听自己的呼吸声。很轻,很稳。他伸手碰了碰屏幕。
指尖凉,屏幕温。
他关掉测试界面,打开代码编辑器。光标闪烁,等着他写下一行。他想了想,新建了一个文件。
文件名:“部署注意事项”。
他开始写第一条:现场网络环境可能不稳定,需准备离线模式。敲完这行,他停下,看向窗外。
天已经暗了,傍晚的蓝灰色。
楼下路灯亮起来,昏黄的光晕开。行人匆匆走过,影子拖得很长。他看了几分钟,转回头,继续敲字。
键盘声又响起来。
张浩下班后打来电话。背景音很吵,像是在地铁里。他声音兴奋,语速很快。“我刚细看了数据,调度层还能优化!”
“怎么优化?”
“我在想用异步回调替换部分同步锁。”张浩说,“这样并发还能提。不过我得多测测,怕出乱子。”
陈默听着,手指在桌上画圈。木纹粗糙,指尖划过,留下细微的触感。“周末来得及吗?”
“我熬个夜。”张浩说,“反正明天周六,公司没事。”
“别太拼。”
“心里有火,憋不住。”张浩笑了,笑声短促,“陈默,这玩意儿真成了,咱们算不算干了件大事?”
陈默没立刻回答。他看向屏幕,代码密密麻麻。“算第一步。”他说。
“够了。”张浩说,“有第一步就有第二步。我先挂了,地铁进隧道了。”
电话挂断。陈默放下手机,屋里又静了。他站起来开灯,啪嗒一声,白光洒下来。影子投在墙上,拉得很长。
他煮了碗面,简单吃了。
洗碗时,水龙头出水不稳,时大时小。他关掉,又打开,水流恢复正常。水珠溅到袖口,湿了一小片。
他擦干手,回到电脑前。
今晚的任务是完善演示脚本。他打开ppt,一页页做。技术架构图,性能对比表,应用场景示意图。做到第十页时,眼睛开始发花。
他停下来,闭眼休息。
眼皮底下有光斑流动,红红绿绿。他想起小时候玩万花筒,转一下,图案就变。那时候觉得神奇,现在知道是镜片反射。
系统界面忽然浮现。
蓝光温和,不像平时那么刺眼。一行字显示:“检测到视觉疲劳,建议休息。”陈默看着,笑了笑。
“你也管这个?”他低声说。
界面闪烁,字变成:“健康影响效率。”然后淡去。陈默睁开眼,光斑还在,但淡了些。他起身走到窗边,推开窗。
夜风灌进来,带着凉意。
远处高楼亮着灯,一格一格的窗户,像巨大的电路板。车流在楼下淌过,红色尾灯连成线。他看了很久,直到风吹得皮肤发凉。
他关窗,坐回去。
继续做ppt,做到第十二页,完成。他保存文件,关掉电脑。屏幕暗下去,映出他的脸。眼窝深,下巴有胡茬。
他摸了摸下巴,刺手。
该刮胡子了。他想着,走进卫生间。镜子里的自己看起来很疲惫,但眼睛里有光。他打开水龙头,接水洗脸。
冷水拍在脸上,清醒了些。
他用毛巾擦干,走回卧室。床单凌乱,被子堆在一角。他躺上去,盯着天花板。墙角有片水渍,是上次下雨漏的。
还没修。
他闭上眼睛,脑子里代码还在转。函数,变量,循环。转着转着,慢慢停下来。呼吸变缓,沉进睡意里。
半夜醒来一次。
屋里黑着,只有路由器指示灯在闪。绿点,规律地明灭。他看了几秒,翻个身,又睡过去。
这次梦见自己在跑。
跑在空荡荡的街道上,两边楼很高,影子压下来。他在追什么东西,看不清是什么。跑得肺疼,还是追不上。
醒来时天刚亮。
他坐起来,胸口发闷。梦里的感觉还在,那种追不上的无力感。他深呼吸,几下之后,闷感散了。
他下床,走到电脑前。
开机,输入密码。桌面亮起来,图标整齐排列。他点开测试报告,又看了一遍。数据没问题,结论站得住脚。
他给李贺发了封简短邮件。
“李总,原型已完成,测试报告请查收。随时可安排演示。”
发出去,他关掉邮箱。打开代码编辑器,光标闪烁。他新建了一个文件,文件名:“下一步”。
写什么呢?
他想了想,敲下第一行:优化识别算法在低光照条件下的准确率。这是试点小区可能遇到的问题,老旧小区路灯暗。
敲完这行,他停住。
窗外传来鸟叫声,清脆明亮。他转头看去,天已经大亮,晴空万里。昨夜的雨洗过,天空蓝得透澈。
他站起来,伸了个懒腰。
骨头嘎巴响。他走到窗边,推开窗。新鲜空气涌进来,带着晨间的清冽。楼下早餐摊热气腾腾,已经有顾客在排队。
生活照常进行。
他看了几分钟,关窗。坐回电脑前,继续敲字。键盘声响起,稳定而持续。一行行字出现在屏幕上,像种子落进土里。
等春天来,就会发芽。
他敲到第三行时,手机震了。沈清澜发来消息:“试点联系人约好了,周二下午三点,锦华小区居委会。”
后面附了个地址和联系人电话。
陈默回:“收到。我会准备。”
沈清澜又发:“别穿太随便。”
陈默低头看了看自己的t恤和运动裤,笑了。他回:“知道。”
对话结束。他保存文件,站起来。走到衣柜前,拉开。里面衣服不多,他翻了翻,找出一件还算正式的衬衫。
挂起来,周二穿。
做完这个,他回到电脑前。屏幕上的“下一步”文件还开着,光标在第四行闪烁。他坐下,手指放上键盘。
继续写。
晨光从窗户斜射进来,落在桌面上。灰尘在光柱里飘浮,缓慢旋转。键盘声持续不断,像心跳,稳而有力。
新的一天开始了。