array(5) { ["chapterid"]=> string(8) "49247949" ["articleid"]=> string(7) "7279460" ["chaptername"]=> string(7) "第3章" ["content"]=> string(13701) "陈序看见那群透明利爪的时候,第一反应是后退。
第二反应,是找路。
这很不正常。
可他已经没空管自己正不正常。
脚下那座由代码构成的平台还在震。
边缘裂缝里不断漏出红色异常栈,像地底有什么东西正在报错。远处黑暗里,数不清的透明利爪一点点伸出来,细长、无声,像一片倒挂的冰林。
陈序握紧那面半透明金色盾牌。
盾牌边缘还在抖。
刚才挡住空指针幽灵已经很勉强,现在要挡一群,他觉得不太现实。
他低头看向源码铭牌。
警告
RealityService 初始化失败。
缺失依赖:ChenXu
Null 源正在接近。
“缺少依赖?”
陈序喘了口气。
“我什么时候成依赖了?”
没人回答。
黑暗回答他的方式,是更多利爪从里面伸出来。
脚下平台又震了一下。
裂缝扩大,几行红色异常从地面浮起。
Object reference lost
Compile zone unstable
陈序眼皮跳了一下。
编译区不稳定。
这几个字他看懂了。
不需要有人解释。系统崩的时候,最怕看到的就是“unstable”。它通常意味着:现在没炸,不代表下一秒不炸。
他试着往后退。
结果鞋跟刚碰到平台边缘,一股灰白色的风就从深渊里卷了上来。
那不是普通风。
风里夹着碎掉的括号、分号和一串串断裂的变量名。它们碰到平台边缘的碎石,碎石立刻变成灰色代码块,被风卷进深渊。
陈序的后背一下绷紧。
他看见一块平台碎片在半空里闪了一下,表面浮出一行小字。
unreferenced
下一秒,那块碎片消失了。
不是掉下去。
是被清理了。
陈序往回缩了一步。
“边缘不能站。”
他低声说。
话音刚落,黑暗里的第一只利爪已经到了。
陈序抬盾。
砰!
利爪撞在盾面上,盾牌瞬间凹下去一块。陈序手臂一麻,整个人往后滑了半步。
又一只利爪从侧面伸来。
他立刻把盾往左一偏。
第二下撞击更重。
盾面浮出一串错误。
captured: NullPointerException
count: 2
capacity: low
陈序看着最后一行,差点气笑。
“容量还挺真实。”
第三只利爪从脚下裂缝里钻出。
陈序来不及躲,只能本能地往旁边一滚。利爪擦着他的衣角划过,没碰到身体,却让他脑子里猛地空了一下。
刚才自己为什么在这里?
他呼吸一滞。
下一秒,胸前源码铭牌闪了闪。
Name:ChenXu
Type:Java Adapter
Status:Activated
名字亮了一下。
陈序咬住牙。
“陈序。”
他低声重复。
“程序的序,秩序的序。”
这句话说出口时,他自己都觉得有点中二。
但有效。
那块空掉的记忆像被重新拉回了引用,视野重新稳住。
他爬起来,抬头看向远处那条裂缝后的荒原。
荒原尽头,那座闪烁的城市还在亮灭。
高塔像服务器指示灯,一会儿亮,一会儿暗。道路不是普通道路,而是一条条发光线段,断断续续地连接着城门、桥梁和建筑。每当某条道路熄灭,城市里就会有一片区域跟着暗下去。
天空里,巨大的编译进度条悬着。
Compiling world... 99%
进度条后面跟着一个小小的提示。
Waiting for service:RealityService
陈序盯着那行字,心里沉了一下。
最早把他拖进来的那行日志,是 RealityService.java:404。
刚才源码铭牌又提示过 RealityService initialization failed。
现在,天空上的进度条正在等待 RealityService。
这不是随机异常。
它在把他往某个方向推。
又一阵风从荒原吹来。
风里有服务器风扇一样的低鸣,还有很轻的声音。
像有人隔着很远的机房喊他。
“……别站……边缘……”
陈序猛地抬头。
“谁?”
声音断断续续。
“编译区边缘……会被回收……”
陈序皱眉。
这声音不清楚,带着电流杂音,像老旧对讲机,又像线上会议里网不好的人在说话。
但他听出了一个词。
回收。
他低头看向刚才平台碎片消失的地方。
“GC?”
灰白色风再次卷过平台边缘。
这一次,一块从代码桥上掉下来的碎片被风刮起,表面同样闪过 unreferenced,随后化成灰。
陈序后背发凉。
被世界判定为无引用,就会被清理。
他不想知道自己如果掉下去,会不会也变成 unreferenced。
黑暗里的 Null 源群已经逼近。
利爪越来越多。
正面挡不住。
后面不能退。
那就只能往前。
陈序看着脚下通往荒原的裂缝。那条缝隙并不稳定,像一段还没完全加载出来的接口通道。时亮时暗,边缘全是跳动的红色异常。
他深吸一口气。
“先离开日志通道。”
他抬起手,试着召唤刚才那把椅子。
new Chair()
金色办公椅歪歪扭扭地落下来。
还是那把破椅子,轮子一边高一边低,像随时会散架。
陈序看着它沉默半秒。
“委屈你了。”
他一脚把椅子踹向前方裂缝。
椅子滑出去,四个轮子在发光代码上疯狂打转,勉强滚过半段不稳定通道。下一秒,三只透明利爪从黑暗里刺下,把椅子扎成一片金色碎光。
但通道亮了。
椅子经过的地方,留下了一串短暂的金色引用线。
陈序眼睛一亮。
能探路。
第二把椅子滚向左侧,被灰风卷掉一只轮子,歪进边缘,瞬间化成灰色代码块。
那里不能走。
第三把椅子滚向裂缝中央,四个轮子伸出短暂引用线,把一段不稳定路由搭亮了一秒。
一秒很短。
但对救火的人来说,一秒够看清下一跳。
离谱。
但有效。
陈序不再把椅子当武器。
它们现在是探针、路标,也是一次性引用。
黑暗里,Null 源群已经贴近平台。
一只利爪擦过他的盾牌,盾面裂开第二道缝。
capacity: critical
陈序看了一眼。
“知道了,别催。”
他把盾牌往前一顶,借着反震冲了出去。
脚下金色引用线亮起。
他踩着前几把椅子留下的路径,冲向荒原。
第一步。
脚下代码晃了一下。
第二步。
左侧灰风卷起,他贴着边缘避开。
第三步。
透明利爪从头顶落下。
陈序抬盾硬挡,整个人被砸得单膝跪地。
盾牌裂开一半。
他没停。
继续往前。
在最后一段通道断裂前,他猛地向前扑了出去。
身体穿过那道黑暗裂缝。
世界忽然亮了。
不是明亮。
而是有了天空。
陈序重重摔在地上,滚了两圈,嘴里全是砂砾味。
他撑着地爬起来,第一件事还是摸胸前源码铭牌。
还在。
第二件事,看四周。
这是一片荒原。
地面不是土,也不是石头,而是由灰白色代码碎片堆成的。裂缝里流着红色异常栈,风吹过时,碎片会发出细小的键盘声。
天空很低。
深蓝色。
巨大的编译进度条横在天幕中央。
Compiling world... 99%
进度条旁边偶尔闪出红字。
Dependency missing
Service unavailable
Retrying...
远处那座城市比在裂缝里看见的更清楚。
它像一台正在反复重启的服务器。
高塔亮起。
熄灭。
桥梁亮起。
熄灭。
道路上有发光的线条来回奔跑,像请求流量。每当某条线断掉,城市某一角就会暗下去,随后冒出一片红色异常烟雾。
陈序站在荒原上,握着半裂的盾牌,忽然有种很熟悉的感觉。
这不是城市。
这是服务。
一座以城市形态存在的服务。
身后黑暗裂缝剧烈震动。
Null 源群追出来了。
数十只透明利爪从裂缝里伸出,像一群找不到目标对象的手,疯狂摸索着空气。
陈序转身,盾牌举起。
但这一次,他没有立刻冲上去。
他看见那些利爪的动作有规律。
它们并不是随便攻击。
它们在搜索。
搜索目标。
搜索引用。
陈序低头看源码铭牌。
上面那行提示还没消失。
缺失依赖:ChenXu
“所以现在我就是那个被找的依赖?”
他扯了扯嘴角。
“听起来不是什么好事。”
就在这时,远处传来第二次声音。
比刚才清楚一点。
“别硬接。”
陈序猛地抬头。
“谁?”
风声里,那道声音带着沙哑的电流杂音。
“沿着接口线跑……去安全区……”
陈序看向地面。
荒原上,确实有几条很淡的发光线,从他脚边延伸向远处那座闪烁城市。线条像被埋在地下的光缆,时明时暗,但方向很明确。
他刚要问“你是谁”,胸前源码铭牌忽然弹出一行新提示。
Unknown shell signal detected
Shell?
陈序心里一动。
但没时间细想。
Null 源群已经锁定了他。
数十只透明利爪同时抬起。
荒原上的红色异常栈被它们牵引,像一大片倒卷的血雨。
陈序握紧盾牌,转身就跑。
沿着那条发光接口线。
身后,第一只利爪刺进地面。
轰!
灰白色代码碎片炸开。
第二只、第三只、第四只接连落下。
每一次落地,地面上都会浮现同一行错误。
target not found
陈序跑得肺都快炸了。
他不知道自己现在有没有肺。
但那种缺氧感非常真实。
前方接口线忽然断了一截。
他急刹,差点一头栽进裂缝里。
裂缝下面不是地底。
是密密麻麻的灰色代码块,正在缓慢旋转。每一块上都贴着同一个标签。
unreferenced
陈序脸色一变。
后面利爪已经到了。
他抬手想召唤盾牌,源码铭牌却闪出警告。
Object creation limit approaching
“还有限制?”
陈序骂了一声。
骂完,他反倒冷静了。
既然不能无限 new,那就不能乱造。
他看着断掉的接口线,又看向旁边半塌的代码石柱。
石柱上有几段残缺字符。
route:/compile/safe-zone
status:degraded
路由。
安全区。
陈序一把按住石柱,指尖触到那些残缺字符。
金色光从他手指边缘渗进去。
他不会修这个世界。
至少现在不会。
但他会看路径。
他能看出哪段断了。
陈序闭了闭眼,在脑子里把刚才经过的接口线、断点、残缺路由拼到一起。
就像线上排查调用链。
请求从网关进来,路由到服务,中间断了,就找下一跳。
下一跳在哪?
他睁开眼。
右侧。
那里有一段几乎熄灭的细线,被灰白色碎片盖住了大半。
陈序冲过去,一脚踹开碎片。
细线亮了一点。
胸前源码铭牌跳出提示。
Route fragment found
身后利爪落下。
他没有回头。
抬手写下最简单的一行。
new Chair()
金色办公椅落地。
这一次,陈序没有拿它砸怪。
他把椅子往断裂接口线中间一横。
椅子很破。
但它是对象。
有引用。
有结构。
金色引用线从椅子四个轮子上延伸出来,短暂搭住了断开的路由。
接口线亮了。
只亮了一秒。
但够了。
陈序踩着椅背一跃,越过裂缝,落到右侧那段残缺路由上。
身后,椅子被利爪撕碎。
路由也跟着再次熄灭。
陈序没回头。
他沿着那条细线继续跑。
前方荒原尽头,闪烁城市越来越近。
城市上空,忽然响起一阵刺耳广播。
不是人声。
更像系统提示被强行放大。
RealityService unavailable.
外层世界不稳定。
检测到同步污染。
陈序脚步一顿。
外层世界不稳定。
同步污染。
这几个词组合在一起,不需要解释,他也能听出问题大了。
现实正在被影响。
就在这时,风里的那个沙哑声音又响了。
“听见了吗?”
“你刚才救的不是自己。”
“是现实那边还没彻底崩掉的一次请求。”
陈序猛地抬头。
远处城门亮起一瞬。
城门上方浮现四个字。
新手编译区
下一秒,身后的 Null 源群同时发出无声震动。
所有透明利爪对准了他。
陈序握紧快要碎掉的盾牌,冲向城门。
城门里的广播再次响起。
RealityService 异常。
污染同步中……
Java Adapter,立即进入编译区。
陈序一边跑,一边抬头看向天空那条永远卡在 99% 的进度条。
他终于意识到一件事。
这不是幻觉。
也不是梦。
有一个世界,真的正在编译。
而他,是那个缺失的依赖。
城门打开。
白光从门内涌出来。
陈序冲进去的瞬间,身后的透明利爪也刺到了他的后背。
他整个人向前摔去。
耳边先是刺耳警报,接着是一阵杂乱人声。
“关门!”
“Null 源跟进来了!”
“别碰他,他身上有污染!”
“等等——检测到语言适配。”
陈序撑着地抬起头。
他看见城门内站着一群人。
有人手里缠着银色脚本流,有人身边漂浮着彩色视图碎片,也有人掌心燃着细小的蓝色命令行光标。
而所有人的目光,都落在他胸前那块源码铭牌上。
铭牌亮了一下。
Type:Java Adapter
短暂的安静之后,人群里有人低声说了一句。
“Java?”
那声音里有惊讶,也有一点毫不掩饰的嫌弃。
“现在还有人觉醒这么重的东西?”" ["create_time"]=> string(10) "1785508761" }