array(5) { ["chapterid"]=> string(8) "49247954" ["articleid"]=> string(7) "7279460" ["chaptername"]=> string(7) "第7章" ["content"]=> string(14998) "private 写下去的瞬间,陈序听见了自己的心跳。
不是正常人的心跳。
更像一段服务启动时的低频脉冲。
咚。
金色字符贴着胸口向内收缩。
咚。
源码铭牌上的 Name: ChenXu 被一层极薄的金光包住。
咚。
那只透明利爪卡在金光外,指尖距离他的核心字段只剩不到一毫米。
没有被弹开。
没有爆炸。
也没有什么惊天动地的技能特效。
它只是进不去了。
陈序站在原地,整个人像被冻住。
周围的新手编译区骤然暗下去,广场中央的代码钟楼停止转动,边缘还没修复好的网关屏障发出低低的嗡鸣。
余未身边的视图碎片全部黑屏。
裴森指间的银色脚本流也停了一瞬。
所有人都看着陈序胸前那层金光。
很薄。
薄得像一层透明壳。
可那只空指针幽灵的利爪,就是被它挡在外面。
黑暗里浮出一行红字。
field: core.identity
access: denied
陈序看着那行提示,终于喘出一口气。
他没有赢。
只是终于没被继续往里掏。
透明利爪轻轻颤了一下。
下一秒,它猛地加力。
陈序胸口像被一辆货车撞上。
他整个人往后退了一步,脚下发光方格接连碎开。那层金色薄壳被压得凹陷,边缘冒出细碎火花。
源码铭牌疯狂闪烁。
private boundary unstable
Mental load:critical
陈序咬住牙。
“还不稳定?”
半坏的广播里,周野的声音传来,带着很明显的火气。
“你刚会走就想跑?”
“private 不是写个单词就完事。”
“那还要什么?”陈序声音发哑。
周野说:“边界。”
透明利爪再次往里压。
金色薄壳出现第一道裂纹。
陈序眼前一黑,脑子里那台破服务器又开始轰鸣。刚才被擦掉的记忆感再次涌上来,像一只手从脑后伸进来,要把他的名字往外拽。
他看见了现实办公室。
凉透的咖啡。
键盘缝里的饼干渣。
告警群里那句“陈序你还在吗”。
然后这些画面开始变淡。
陈序猛地抬头。
“我在。”
他低声说。
金色薄壳亮了一下。
周野的声音从广播里压下来。
“对,就是这个。”
“封装不是躲起来。”
“是告诉世界:哪些东西能访问,哪些东西不能。”
陈序胸前的 private 字符开始重新排列。
原本只是一个词。
现在,它像一圈极细的锁扣,围着 core.identity 一点点合上。
透明利爪继续刺。
金色锁扣继续收。
两股力量在陈序胸口僵住。
余未终于恢复了一块视图碎片。
碎片画面里,陈序整个人被分成了几层。
最外层是身体轮廓。
中间是源码铭牌。
再里面,是一团模糊但稳定的金色核心。
核心外面,正在生成一圈新的边界。
余未盯着那层边界,低声说:“它不是盾。”
裴森问:“不是盾是什么?”
“权限。”
余未盯着那层薄壳。
“盾是硬挡。这个是在告诉它:这里不能进。”
裴森怔了一下。
随后骂了句:“权限还能这么打?”
周野冷哼。
“你们前端把隐藏当删除,你们脚本把跑完当解决,没见过边界很正常。”
裴森:“这运维迟早被人打。”
余未却没接话。
她看见空指针幽灵正在改变方向。
利爪没有继续从正面刺入。
它散成了数十条更细的透明丝线,绕过金色薄壳边缘,试图从缝隙钻进去。
像绕过校验的非法请求。
余未立刻喊:“它在找入口!”
陈序也看见了。
那几十条细线贴着金光边缘游动,每经过一处,那里就浮出一小段红字。
access attempt
access attempt
access attempt
所有尝试都没成功。
但边界太薄。
只要有一个缝隙被钻进去,他的 core.identity 还是会被碰到。
周野的声音变低。
“听好。”
“封装不是把所有东西锁死。”
“锁死了,你自己也用不了。”
“那怎么办?”陈序问。
“开放该开放的。”
陈序愣了一下。
周野说:“你要保护核心,不是把自己变成孤岛。”
“名字留给自己,状态给队友,异常抛给能处理的人。”
“边界不是把门焊死。”
“是知道哪扇门该开,哪扇门必须锁。”
陈序胸前的金色字符再次变化。
private 外侧,几行更小的字符浮现出来。
不是完整代码。
更像陈序临时理解出来的规则。
private core.identity;
public status();
protected trace();
第一行落下时,金色内壳贴住核心字段。
第二行落下时,外层浮出一块半透明状态面板,只显示生命状态和负载。
第三行落下时,一条暗金色链路从边界侧面延伸出去,像一根只允许指定人读取的维修线。
透明丝线撞上 private core.identity,全部停住。
但有几条试图攻击他的状态感知,被 public status() 引导到外层。
陈序胸前弹出一行提示。
status:alive
mental load:critical
裴森看见了,立刻说:“活着,但是快炸。”
陈序喘着气。
“谢谢翻译。”
余未的视图碎片捕捉到另一条细线。
“左侧,有东西想追溯你的路径。”
陈序看见了。
一条透明丝线绕向他身后的金色引用线,那条线连接着天空里卡在 99% 的编译进度条,也连接着那团看不清的 RealityService 白光。
它不是在攻击陈序的名字。
它在找他为什么被标记为依赖。
周野的声音忽然沉下来。
“别让它碰那条线。”
陈序抬眼。
“那是什么?”
广播里沉默了半秒。
“现在不是解释的时候。”
“你们运维都喜欢这句话?”裴森忍不住插嘴。
周野没理他。
“陈序,把 trace 给我。”
陈序皱眉:“什么?”
“你刚才不是写了 protected trace()?”
“那是我临时想到的。”
“够了。”周野说,“给我一段受保护的调用痕迹,我帮你挡它。”
陈序看向身后的金色引用线。
那条线很亮。
也很危险。
像一根从他心口拖出去的电缆,一头连着自己,一头连着一个还没启动成功的现实服务。
他不知道周野能不能信。
事实上,他对周野一无所知。
只知道那道声音从源码荒原一路提醒他,不要站边缘,不要乱 new,不要暴露核心字段。
陈序闭了闭眼。
不能完全开放。
也不能完全拒绝。
那就给受保护访问。
他抬起手,在金色边界外侧轻轻一划。
一小段暗金色链路从胸前延伸出去,没有暴露核心,只截出一段经过模糊处理的调用轨迹。
protected trace: /RealityService/retry/ChenXu/...
链路刚出现,广播里传来一声低低的电流爆响。
远处半坏的网关屏障后,一道蓝白色命令行光标亮起。
$ tail -f protected.trace
下一秒,那条试图钻向 RealityService 的透明丝线被一道蓝白色光标钉住。
周野的声音冷得像服务器机房里的风。
“找到你了。”
蓝白色命令行向外一拉。
空指针幽灵第一次发出声音。
不是吼叫。
是一串断断续续的空白。
像有人把错误日志里的内容全部删掉,只留下换行。
广场上的新人们捂住耳朵。
黑衣少年,也就是那个刚被众人重新“记住”的林姓少年,抱着脑袋缩在角落里,嘴里不断重复:“我明天有考试,我明天有考试,我明天有考试……”
陈序听见了。
他忽然觉得这句很蠢。
也很有用。
蠢得像现实。
有用得像引用。
空指针幽灵被蓝白色命令行钉住一条丝线,其他透明细线立刻收缩,重新汇成利爪。
它放弃绕路。
直接撞向陈序胸口。
这一次,金色边界没有像盾牌那样硬挡。
它向内收紧。
贴合。
封闭。
每一层都像一个明确的访问级别。
外层允许状态被读取。
中层允许受保护追踪。
核心字段完全封闭。
透明利爪刺到最里面时,停在那行字外。
private core.identity
红色错误再次浮现。
IllegalAccessException
Cannot access private field: core.identity
裴森眼睛一亮。
“这次报的不是空指针。”
余未说:“被挡在外面了。”
陈序胸口传来剧痛。
边界挡住了攻击,但代价没有消失。精神负荷像一块湿透的棉布蒙在脑子上,每一次呼吸都带着沉重的嗡鸣。
他知道自己撑不了太久。
“周野。”陈序咬着牙,“下一步。”
“别急。”
“你再说别急,我就真急了。”
周野说:“你现在只是让它访问不到你。”
“要让它退,就得让它找不到有效目标。”
陈序明白了。
空指针幽灵靠引用攻击。
如果目标引用还暴露,它就会一直沿着线找。
要么保护核心。
要么断开无效访问路径。
不能断 RealityService 那条线。
那就断它手里的那条非法路径。
陈序看向胸前所有红色 access attempt。
它们像一串串贴在边界上的脏请求。
他抬起发抖的手。
没有 new。
没有 catch。
只有封装边界外,一道金色方法门缓缓打开。
门上浮出一个词。
validate()
周野轻轻“嗯”了一声。
“不错。”
“终于像个后端了。”
陈序没力气吐槽。
他把所有非法访问请求拖到那道金色方法门前。
透明利爪试图挣脱。
陈序眼前又黑了一下。
裴森的声音从旁边响起。
“我能做什么?”
陈序咬牙。
“继续让它外层散。”
裴森笑了一声。
“这个我熟。”
银色脚本流爆发。
不是攻击核心。
只是不断切散空指针幽灵外围的黑雾,让那些非法请求暴露出来。
余未立刻补上视图标记。
“左侧三个。”
“右侧两个。”
“胸口正前方一个大的。”
陈序把所有被标出的非法访问拖进 validate()。
金色方法门亮起。
request: illegal
target: private field
action: reject
一条。
两条。
三条。
每拒绝一条,空指针幽灵的身体就淡一分。
它终于开始后退。
不是被打退。
是找不到可以继续访问的路径。
陈序胸前的金色边界越来越稳定。
那层金光不再像盾牌一样外扩,而是贴着他的核心一点点成形,像一个明确的壳层。
周野的声音在广播里低低响起。
“记住这个感觉。”
“边界不是墙。”
“墙只会挡。”
“边界会告诉别人:你能到哪,不能到哪。”
陈序喘着气,看着空指针幽灵逐渐退向黑暗。
“听起来像文档。”
周野说:“比没文档强。”
裴森忍不住笑了一声。
余未也很轻地弯了下嘴角。
就在众人以为它要消失的时候,空指针幽灵忽然停住。
它那团没有脸的身体转向陈序身后的金色引用线。
然后,它散开了一小部分。
不是攻击。
是留下了一段黑色标记。
标记顺着那条金色引用线爬了一寸,又被周野的蓝白命令行强行钉住。
天空中的编译进度条闪了一下。
Compiling world... 99%
Waiting for service:RealityService
紧接着,进度条下面浮现出一行更小的字。
Temporary dependency protected.
Root fragment detected.
陈序看着那行字,心脏猛地一沉。
Root fragment。
根片段?
他的核心字段里到底有什么?
周野那边也安静了。
这种安静比他说话更糟糕。
陈序问:“你看见了吗?”
广播里只有电流声。
过了几秒,周野才开口。
“看见了。”
“解释。”
“现在解释不了。”
“周野。”
“我不是敷衍你。”周野声音第一次没那么吊儿郎当,“是这里不安全。”
陈序看向周围。
新手编译区的灯光开始恢复,红色警报退回黄色,黑衣少年身后的引用线也暂时稳定下来。
但广场外的黑暗没有退。
城门外,似乎有更多透明利爪在远处游动。
空指针幽灵没有被彻底消灭。
它只是被暂时挡回去了。
陈序低头看向自己的源码铭牌。
Name:ChenXu
Access:private
Temporary Dependency:protected
Mental load:critical
还活着。
但状态很难看。
裴森走过来,看着那行 Access: private。
“恭喜,你现在终于不裸奔了。”
陈序抬眼。
“你能不能别跟周野学说话?”
“我觉得他说得挺形象。”
余未收起视图碎片。
“封住了核心,但问题没解决。”
陈序点头。
“它还会回来。”
余未说:“而且下次,它可能不会从你的名字下手。”
陈序没有反驳。
他看着那行 Root fragment detected,心里有一种很不好的预感。
周野的广播再次响起。
“陈序。”
“如果你还想知道自己核心字段里藏了什么,来守夜区。”
“怎么去?”陈序问。
广场边缘,一道已经半坏的蓝白色命令行光标亮起。
它像一盏路标,指向新手编译区深处一条不起眼的维护通道。
通道门口浮着一行字。
maintenance only
裴森看了一眼。
“维护通道?听起来就不像好地方。”
周野说:“比你们待在广场等下一波重试强。”
黑衣少年忽然抬头,声音还很虚。
“我……我想起来一点。”
众人看向他。
他抓紧外套,眼神惊惶。
“刚才那个东西剪我引用线的时候,我看见了一行字。”
陈序问:“什么字?”
黑衣少年咽了下口水。
“它说……”
“现实服务,没有初始化。”
广场上刚恢复的灯光,再次闪了一下。
陈序看向维护通道。
那条蓝白色命令行光标一闪一闪,像在催促。
他握了握还在发抖的手。
不能 new。
不能硬扛。
核心刚封住。
但路已经摆在面前。
他们不是去冒险。
他们是去查一个线上事故的根因。
只不过这一次,事故现场在世界底层。
陈序深吸一口气。
“走。”
裴森愣了下。
“你现在这样还走?”
陈序看着那条维护通道。
“线上事故不会因为我头疼就自己恢复。”
余未沉默片刻,收起最后一片视图碎片。
“我跟你去。”
裴森叹了口气。
“行吧。”
“反正广场这边也不像能睡觉。”
三人朝维护通道走去。
身后,新手编译区的钟楼重新转动。
天空进度条仍然卡在 99%。
而维护通道深处,蓝白色光标一闪。
像有人在世界底层,替他们推开了一扇不该开的门。" ["create_time"]=> string(10) "1785508769" }