安奕将纸条小心收好,继续低头做题。但他的心思已经飞到了别处——图书馆那几台老旧电脑,应该还能用。明天午休就去看看。如果运气好,也许能在高考前就搭出系统雏形。至于那张纸条……既然有人已经盯上他了,那他就得更快,更隐蔽。笔尖在纸上划出坚定的线条,一道物理题被他迅速解出。窗外的夜色更深了,教学楼里的灯光一盏盏熄灭,只有高三教室还亮着。安奕是最后一个离开的,他锁好教室门,走廊里空无一人。脚步声在寂静中回响,像倒计时的钟摆。 *** 2000年3月14日,星期二午休。 江城一中的图书馆位于教学楼西侧一栋独立的两层小楼,红砖外墙爬满了常青藤,春天刚冒出的嫩绿新芽在阳光下泛着油亮的光泽。正午的阳光透过高大的梧桐树洒在石板路上,光影斑驳。空气里飘着食堂饭菜的余味和刚修剪过的青草气息。 安奕端着饭盒,在食堂匆匆扒了几口饭就离开了。他没有回教室,而是径直走向图书馆。 推开厚重的木门,一股混合着旧纸张、灰尘和木头霉味的空气扑面而来。图书馆里很安静,只有头顶老式吊扇缓慢旋转时发出的吱呀声,以及远处管理员整理书籍时轻微的窸窣声。阳光透过高处的彩色玻璃窗,在磨得发亮的水磨石地面上投下斑斓的光影。 他扫视了一圈。 一楼是阅览区,几张长条木桌旁零星坐着几个学生,大多在埋头看书或写作业。靠墙的书架上整齐排列着各类杂志和报纸。二楼是藏书区,楼梯口挂着“保持安静”的牌子。 安奕没有在一楼停留,直接上了二楼。 二楼比一楼更安静,也更暗。高高的书架像沉默的巨人排列在两侧,中间只留下狭窄的过道。空气里的灰尘在从书架缝隙透进来的光柱中缓缓飘浮。他沿着过道往里走,脚步声在空旷的空间里被地毯吸收,只留下细微的摩擦声。 最里面靠窗的位置,有一排单独隔出来的小隔间,用深色的木板隔开,每个隔间里有一张小桌和一把椅子。这里是图书馆最偏僻的角落,平时很少有人来。 安奕选择了最靠里的那个隔间。 坐下后,他从书包里掏出几本书——一本《C语言程序设计》,一本《数据结构》,都是他从图书馆借的。又拿出一本崭新的笔记本,封面是深蓝色的硬壳,没有任何标记。 但他没有立刻打开笔记本。 而是先翻开那本《C语言程序设计》。 这本书是1998年出版的,纸张已经泛黄,书页边缘微微卷起。前几页有零星的借阅记录,最近一次是去年十月。安奕快速翻动着书页,目光扫过那些熟悉的代码示例——printf、scanf、for循环、指针……这些在2025年看来已经古老得如同甲骨文的知识,在2000年却是最前沿的编程入门。 他翻到第127页。 这一页讲的是“文件操作”,空白处有前一个借阅者用铅笔写的几行注释,字迹潦草。安奕从笔袋里拿出一支蓝色圆珠笔,笔尖悬在空白处,停顿了几秒。 然后,他开始写字。 但不是普通的文字。 而是一套只有他自己能懂的符号系统。 一个圆圈,里面画个美元符号——代表计费模块。 一个方框,里面写了个“M”——代表会员管理系统。 一个三角形,顶点指向右上角——代表远程监控功能。 一个波浪线,下面画个箭头——代表游戏自动更新。 这些符号看似随意,但每一个都经过精心设计,既不会让外人一眼看懂,又能在安奕的脑海中迅速对应到具体的功能模块和算法逻辑。 他画得很慢,很专注。 笔尖在纸张上摩擦发出沙沙的声响,混合着窗外远处操场上体育课学生的喧闹声,以及图书馆里始终存在的、那种属于书籍和时间的静谧。 画完符号框架,他开始在符号旁边添加更详细的注解。 这次用的是英文缩写和数字组合,同样经过加密: “FC-01: real_time_clock + price_table + log_system” “MM-02: card_no + balance + level + discount + point” “RM-03: screen_capture + key_log + alert_system” “GU-04: ftp_auto + diff_patch + version_control” 每一个缩写,每一组数字,都对应着前世“磐石”网吧管理系统的核心功能模块。 安奕的呼吸渐渐平稳,眼神却越来越亮。 记忆如潮水般涌来。 不是2025年那个破产的中年人安奕的记忆。 而是2003年,那个二十五岁、刚刚创业失败的年轻人的记忆。 *** 2003年夏天,深圳。 一间不足二十平米的出租屋里,闷热得像蒸笼。老旧空调发出拖拉机般的轰鸣,却只吹出微弱的热风。安奕光着膀子坐在电脑前,屏幕上密密麻麻的代码在闪烁。 那是他开发的第一个网吧管理系统。 简陋,粗糙,bug无数。 但那是他全部的心血。 “安哥,又死机了!” 隔壁网吧的网管小张推门进来,满头大汗,“三号机、七号机、十二号机同时蓝屏,客人都在闹!” 安奕猛地站起来,椅子在地上划出刺耳的声响。他抓起工具包就往外冲。 那家网吧有八十台机器,用的是他花了三个月开发的“简易网吧管理1.0版”。系统功能很简单:计时收费、会员卡、基本的游戏菜单。 但问题太多了。 计费不准——有时候多算钱,有时候少算钱。 会员系统经常丢数据——昨天充了一百块的会员,今天登录显示余额为零。 游戏更新全靠手动——网管每天要花三四个小时一台台机器去更新《传奇》《奇迹》《CS》。 最要命的是,系统没有任何远程监控功能。一旦某台机器出问题,网管必须跑到现场去处理。八十台机器,两个网管,忙得像陀螺。 安奕冲进网吧时,里面已经乱成一团。 三台蓝屏的机器前围满了人,客人在骂娘,网管在拼命重启。空气里弥漫着烟味、汗味和泡面味。显示器闪烁的光映在一张张焦躁的脸上。 “安哥,快看看!” 安奕蹲在机箱前,拆开侧板,手指在主板和硬盘上快速检查。汗水顺着额头滴进眼睛,刺痛。但他顾不上擦。 那天,他从下午三点一直修到晚上十一点。 修好了蓝屏,又发现计费系统有个逻辑错误,导致夜间时段收费加倍。他连夜改代码,测试,再改,再测试。网吧老板给他泡了碗面,他直到面凉透了才想起来吃。 凌晨两点,所有问题暂时解决。 安奕坐在网吧门口的水泥台阶上,看着空荡荡的街道。深圳的夜永远不眠,远处高楼还有零星的灯光。他点了根烟,手指在发抖。 不是累的。 是绝望。 他知道自己的系统有问题,知道需要改进,知道未来的网吧需要什么——远程监控、自动更新、更稳定的计费、更智能的会员管理…… 但他没钱了。 创业三个月,积蓄花光,信用卡刷爆,合伙人周明上个月已经提出撤资。 “安奕,这玩意儿没前途。”周明当时说,“现在市面上已经有成熟的网吧管理系统了,人家是大公司做的,我们这种小作坊怎么竞争?” 安奕没说话。 他知道周明说得对,但又不全对。 市面上的那些系统,功能确实比他的完善,但价格昂贵,一套要上万块。而且那些系统都是为大网吧设计的,操作复杂,很多小网吧的网管根本不会用。 他看到了一个机会。 一个做轻量级、易用、便宜的系统,专门针对中小网吧的机会。 但他需要时间,需要钱,需要团队。 而这三样,他都没有。 烟烧到了手指,刺痛让他回过神。 他扔掉烟头,用脚碾灭。站起身时,腿因为久坐而发麻。他扶着墙,一瘸一拐地走回出租屋。 电脑还开着,屏幕保护程序在闪烁。 他坐下,看着那几千行代码。 然后,按下了删除键。 不是全部删除,而是重新开始。他要把之前的所有经验教训都融入新系统,要设计一个更完善的架构,要写出更健壮的代码…… 但他只写了两天,就接到了父亲的电话。 “小奕,你妈住院了。” *** 记忆在这里戛然而止。 安奕的手指停在纸面上,笔尖在“alert_system”后面点出了一个墨点。 他闭上眼睛,深吸一口气。 图书馆里旧纸张的味道涌入鼻腔,带着时间的重量。 再睁开眼时,眼神已经恢复了清明。 前世的所有失败,所有痛苦,所有遗憾,此刻都化作了燃料,燃烧在他的胸腔里。 他知道2000年的网吧行业是什么样子。 现在,2000年3月,全国网吧数量大约在五万家左右,而且正在以每月上千家的速度增长。《传奇》还要等一年才公测,《奇迹》还要等两年,《魔兽世界》更是遥远。但CS已经火了,红色警戒、星际争霸、帝国时代是网吧的标配。 现在的网吧管理,基本还处于原始状态。 大多数小网吧用的是手工记账——网管拿个本子,客人上机时记下时间,下机时算钱。好一点的用个简单的计时软件,但功能单一,经常出错。 会员系统?很多网吧连会员卡都没有,充值时在账本上记一笔,容易丢,容易乱。 游戏更新?网管每天背着硬盘,一台台机器去拷贝。一个网吧如果有五十台机器,更新一遍要三四个小时。 远程监控?想都别想。 安奕的笔重新动了起来。 这一次,他画的不再是简单的符号框架,而是一张详细的技术架构图。 最底层:硬件兼容层。 ——必须兼容2000年主流的硬件配置:赛扬处理器、128MB内存、20GB硬盘、Windows 98系统。 中间层:核心功能模块。 ——计费模块:支持分时段计价、会员折扣、临时卡、包夜套餐。 ——会员模块:支持储值、积分、等级、消费记录查询。 ——监控模块:支持屏幕截图、键盘记录(用于监管未成年人)、异常操作报警。 ——更新模块:支持FTP自动下载、增量更新、版本回滚。 最上层:管理界面。 ——必须简单,直观。网管培训十分钟就能上手。 ——支持多网吧连锁管理(为未来扩张预留接口)。 ——支持数据备份和恢复。 安奕画得越来越快,笔尖在纸上飞舞。 符号、箭头、注释、流程图…… 一张完整的“磐石”系统雏形架构图,在《C语言程序设计》第127页到130页的空白处逐渐成形。 他知道这个系统的价值。 在2000年,这样一套系统如果开发出来,哪怕只实现百分之七十的功能,也足以碾压市面上所有同类产品。 而他的定价策略,他已经想好了。 不按套卖。 按年订阅。 一套系统,一年服务费五百块。 五百块,对一家网吧来说,可能只是两三天的营业额。但对他而言,如果能有五百家网吧使用,一年就是二十五万。一千家,就是五十万。 而这只是开始。 系统上线后,他可以不断迭代,增加新功能:在线点餐系统(连接网吧小卖部)、游戏点卡销售系统(代理《传奇》点卡)、广告推送系统(在开机界面和待机界面投放广告)…… 每一个功能,都是一条新的盈利渠道。 更重要的是,通过这套系统,他可以掌握全国网吧的终端数据——机器配置、上网时长、热门游戏、消费习惯…… 这些数据在2000年可能还不值钱。 但到了2005年、2010年,这些数据就是黄金。 安奕停下笔,看着纸上密密麻麻的符号和注释。 阳光从窗外斜射进来,正好照在书页上,那些蓝色的墨迹在光线下泛着微光。灰尘在光柱中缓缓飘浮,像时光的碎屑。 他合上书,靠在椅背上。 闭上眼睛,脑海里已经开始模拟开发过程。 第一步:需要一个开发环境。 ——图书馆这几台电脑,如果能用,就是最好的起点。 他睁开眼,目光扫向图书馆深处。 在二楼最里面的墙角,确实放着三台电脑。老式的CRT显示器,米白色的机箱上落满了灰尘,键盘上的字母已经磨损得看不清。那是学校几年前淘汰下来的机器,平时几乎没人用。 安奕站起身,走过去。 按下开机键。 机器发出沉闷的嗡鸣,硬盘开始转动,发出咔哒咔哒的声响。显示器亮起,出现Windows 95的启动画面。蓝色的进度条缓慢移动。 一分多钟后,系统终于启动完成。 桌面很干净,只有几个基本图标:我的电脑、回收站、IE浏览器。安奕点开“我的电脑”,查看配置:Pentium 133MHz处理器,32MB内存,2GB硬盘。 配置低得可怜。 但够用了。 他打开记事本,输入一行最简单的C代码: ```c #include int main(){ printf(“Hello, 2000.“); return 0; } ``` 保存,打开命令行,输入编译命令。 屏幕上出现错误提示:编译器未安装。 安奕皱了皱眉。他起身去找图书馆管理员——一个五十多岁、戴着老花镜的阿姨,正坐在柜台后面织毛衣。 “老师,那几台电脑能安装编程软件吗?” 阿姨抬起头,从老花镜上方看他:“编程?你要干什么?” “我想学习编程,参加信息学竞赛。”安奕面不改色地说出早就想好的理由。 阿姨打量了他几眼:“学生证。” 安奕掏出学生证。阿姨看了看,又看了看他:“安奕……高三(五)班的?” “是。” “高三了还搞这些?”阿姨摇摇头,“不过既然想学……那几台电脑是学校淘汰的,系统很老,你要装什么软件得自己带安装盘。而且不能影响其他同学使用。” “我明白,谢谢老师。” 安奕回到座位,从书包里拿出一个软盘盒。 里面是他上周从电脑城买的几张软盘:Turbo C 2.0、Visual Basic 6.0、还有一张Windows 98的安装盘(盗版)。花了他三十块钱,相当于一周的午饭钱。 他走到电脑前,插入Turbo C的安装盘。 软驱发出吱吱的读盘声,绿色的指示灯闪烁。安装过程很慢,屏幕上的蓝色安装界面简单得近乎简陋。安奕耐心等着,手指无意识地敲击着桌面。 二十分钟后,安装完成。 他重新打开记事本,输入那段“Hello, 2000.”的代码,保存为hello.c。 打开Turbo C,加载文件,编译,运行。 黑色的DOS窗口弹出,显示出一行白色文字: Hello, 2000. 安奕看着那行字,嘴角微微扬起。 这是他在这个时代写下的第一行代码。 简陋,但意义重大。 他关掉窗口,开始真正的工作。 新建文件,命名为“billing.c”——计费模块的核心文件。 手指放在键盘上,停顿了三秒。 然后,开始敲击。 键盘是老旧的那种机械键盘,按键很硬,敲击时发出清脆的咔嗒声,在安静的图书馆里格外清晰。安奕的手指在键盘上飞舞,代码一行行出现在屏幕上。 ```c //计费模块核心结构体 typedef struct { int card_id;//卡号 char start_time[20];//上机时间 char end_time[20];//下机时间 float unit_price;//单价(元/小时) float total_fee;//总费用 int discount_rate;//折扣率(百分比) } BillingRecord; ``` 他写得很专注。 时间在代码的流淌中悄然流逝。 窗外的阳光从正午的直射变成了斜射,光斑在书架上缓缓移动。图书馆里偶尔有学生上来找书,脚步声在木地板上响起又远去。管理员阿姨织毛衣的竹针碰撞声有规律地传来,像某种古老的计时器。 安奕完全沉浸在自己的世界里。 前世二十多年的编程经验,此刻全部汇聚在指尖。他知道怎么写代码更高效,怎么设计数据结构更合理,怎么避免常见的bug和漏洞。 但他也时刻提醒自己:这是2000年。 编译器是Turbo C 2.0,不支持C99标准,很多现代语法不能用。 硬件配置极低,必须优化每一行代码,减少内存占用和CPU消耗。 操作系统是Windows 95/98,稳定性差,要考虑异常处理和崩溃恢复。 网络环境更差——大多数网吧还是拨号上网,带宽只有几十K,远程通信必须设计得极其精简。 这些限制,反而激发了他的创造力。 就像戴着镣铐跳舞,但舞步必须优雅。 三个小时后。 安奕停下来,活动了一下僵硬的手指。 屏幕上已经写满了代码:计费模块的核心数据结构、会员管理的基本函数、文件读写的工具库……虽然还只是雏形,但骨架已经搭起来了。 他保存文件,拔出软盘。 软盘标签上,他用圆珠笔写了两个小字:磐石。 这是他的起点。 也是他向这个时代宣告的第一声。 收拾好东西,安奕看了一眼窗外。夕阳已经西斜,天空被染成橘红色,远处的教学楼传来下课铃声。图书馆里更安静了,管理员阿姨不知什么时候已经离开,柜台空着。 他该走了。 把《C语言程序设计》合上,小心地放进书包——那本书里的符号笔记,比软盘里的代码更重要。那是他的设计思想,是他的商业蓝图。 背上书包,走出隔间。 木地板在脚下发出轻微的吱呀声。他沿着书架之间的过道往外走,影子被夕阳拉得很长,投在两侧的书脊上。 走到楼梯口时,他停下了脚步。 楼下传来脚步声。 很轻,但很熟悉。 安奕站在楼梯转角,往下看。 苏晚晴正从一楼上来。 她穿着校服,白色的衬衫,深蓝色的裙子,头发扎成简单的马尾。手里拿着两本书,一本是英语词典,一本是物理习题集。夕阳从她身后的窗户照进来,给她整个人镀上了一层柔和的金边。 她抬头,看见了安奕。 两人目光相遇。 空气仿佛凝固了一秒。 图书馆里安静得能听见灰尘落地的声音。 苏晚晴先开口,声音很轻,像是怕打破这里的宁静:“安奕?你怎么在这里?” “来找点资料。”安奕走下最后几级台阶,和她站在同一层,“你呢?” “我……”苏晚晴顿了顿,“我来还书。” 她的目光落在安奕背着的书包上,又移到他手里拿着的《C语言程序设计》。书是合着的,但书页边缘露出一些蓝色的墨迹——那是安奕画符号时墨水渗透到下一页的痕迹。 “你看编程书?”苏晚晴问,语气里带着好奇。 “随便看看。”安奕把书往身后挪了挪。 但这个动作反而引起了苏晚晴的注意。 她的目光追着那本书,看见了封面上的书名,也看见了书页边缘那些奇怪的蓝色痕迹——不是文字,不是数字,而是一些她完全看不懂的符号:圆圈、方框、三角形、波浪线…… 像是某种密码。 “那些是什么?”她下意识地问。 安奕的手指收紧了一瞬。 然后,他平静地说:“笔记。一些学习笔记。” “用符号做笔记?” “嗯,自己发明的一套记号,方便记忆。” 他说得轻描淡写,但苏晚晴眼中的疑惑更深了。 她认识安奕三年了。 从高一起就是同班同学。她记得高一时的安奕,成绩中等,性格内向,上课总是低着头,很少主动发言。高二时的安奕,也没什么变化,只是更沉默了些。 但最近这一个星期,安奕变了。 数学课上那道压轴题的解法,晚自习时专注得可怕的眼神,还有现在——图书馆最偏僻的角落,看不懂的符号笔记,编程书…… 一切都透着一种说不出的陌生感。 “你最近……”苏晚晴开口,又停住。 她想问“你最近怎么了”,但话到嘴边,又觉得太冒昧。他们只是同学,连朋友都算不上——至少以前算不上。 “我最近在准备信息学竞赛。”安奕主动接话,给出了一个合理的解释,“所以看些编程书。” “信息学竞赛?”苏晚晴眨了眨眼,“以前没听你说过。” “刚决定的。” “哦……” 对话在这里卡住了。 两人站在楼梯口,夕阳的光从窗户斜射进来,在地面上投出长长的影子。远处传来操场上打篮球的呼喊声,但图书馆里依然安静。 安奕看着苏晚晴。 她的眼睛很清澈,瞳孔里映着夕阳的光,也映着他的影子。前世,这双眼睛曾经为他哭过,笑过,最后在他怀里永远地闭上…… 心脏猛地一抽。 他移开目光。 “我先走了,还要上晚自习。” “嗯,我也该回去了。” 安奕点点头,从她身边走过。 擦肩而过的瞬间,苏晚晴的目光再次落在他手里的书上。那些蓝色的符号在夕阳的余晖中泛着微光,神秘而诡异。 她张了张嘴,想问什么。 但安奕已经走下了楼梯。 脚步声在空旷的图书馆里回响,渐行渐远。 苏晚晴站在原地,看着他的背影消失在门口。然后,她转过身,走向安奕刚才坐过的那个隔间。 隔间里还残留着有人待过的气息——椅子被拉出来一点,桌面上有细微的灰尘被擦拭过的痕迹。她坐下,手指无意识地划过桌面。 然后,她看见了。 桌角的地板上,躺着一支蓝色圆珠笔。 笔帽松了,滚到了椅子腿旁边。 苏晚晴弯腰捡起笔。 笔身还是温的,显然刚被人握过不久。笔尖上沾着一点墨迹,蓝色的,和书页边缘那些符号的颜色一模一样。 她握着笔,看向窗外。 夕阳已经完全落下去了,天空变成深蓝色,第一颗星星在远处亮起。 图书馆里的灯还没开,隔间陷入昏暗。 苏晚晴坐在黑暗里,手指摩挲着那支笔。 笔身上没有任何标记,就是最普通的那种五毛钱一支的圆珠笔。但握在手里,却仿佛能感受到刚才那个人留下的温度,和那种说不出的、专注到极致的气息。 她想起数学课上,安奕站在黑板前写解题步骤的样子。 手指稳得不像个高中生。 眼神平静得不像个十八岁的少年。 还有那些符号…… 那些她完全看不懂,却隐约觉得藏着某种重要秘密的符号。 苏晚晴把笔放进书包。 站起身,离开隔间。 走到楼梯口时,她回头看了一眼那个角落。 昏暗,安静,仿佛什么都没发生过。 但她知道,有些东西已经不一样了。 安奕不一样了。 而她,也开始不一样了。