离线计算

我考上了暨南大学的研究生。导师给我分的课题是关于电机和风能发电的,叫“构网电机”。说实话,我不是很感兴趣。但刚入学,换导师也不现实,就想着先做下去再说。

在考取研究生之前,我已经在外面工作了两年。因为之前是在小公司工作。我为了做出产品,我写了大量软件、硬件代码(各方面技能都被锻炼到了)。编程语言,C语言、C++、Python、matlab这些我都会。小公司分工不明确,他们只要全栈开发工程师。
研究生复试时,导师问我写了多少行代码了?
我说,应该有6万多行吧?
导师点点头,说:“可以,挺好的。”
可能是导师觉得把我招进课题组,性价比很高,就把我招进来了。

刚录取没多久,老师就让我提前报到,直接开始上课。研究生一年级主要是上课。我看课表,觉得不少课内容比较浅,有些像机器学习、神经网络,我之前都学过;还有一些是思政类的。有的课老师干脆让我们自己上台汇报,做presentation。整体上,我感觉课程难度不大,所以平时不怎么听课,只是课后完成作业。这样一来,空余时间就多了。

我不想浪费我宝贵的研究生一年级,就自己选了6门觉得有用的课,安排自学。我用了两个月集中学一门课,系统学了信号与系统、数字信号处理、自动控制原理、现代控制理论和电力系统分析。比如一月份集中学信号与系统,二月份集中做题,三月份学数字信号处理,四月份再把习题全部做一遍。基本上,我是脱离学校大纲,按自己的节奏学的。

这6门课程要么在我本科期间学过,要么在我考研备考期间学过。我在研究生一年级只是把之前学过的内容再复习一遍。一般一门课程的学时大概30个小时。以信号与系统为例,这门课在哔哩哔哩上看完视频大概要三十个小时,平均一天看一个小时,以一个月为步调。我一天只专注于一个小时的视频学习,所以压力没那么大。

习题训练的话,一门学科的习题大概有600道。我去购物网站买学科对应的习题集,一般是600道,平均一天20道。在我专门做习题的月份,一天专心做20道题。我一般会在两个小时内搞定,也就是一个小时内做10道题。对我来说也还好,至少一个月学习一个学科,做题也是可行的,压力适中。

到了研一下学期,正式开始做科研。导师一开始觉得我工程能力不错,软件硬件都能上手,以为捡到宝了。但很快我们就有了矛盾。我记性不太好,他口头交代的事,我常会忘记,得靠微信记下来。为这个,他发过好几次火,觉得我反应慢,脑子不够灵光。

更关键的是,他觉得我太“轴”。他定了方向和方法,我做完之后,总会附上自己的方法,还多做几组实验对比,证明我的更好。他看了也不表态,但能感觉到他不高兴。他大概希望我是一个听话的执行者,而不是总有自己的想法。后来,他渐渐不怎么管我了,算是放养。态度也差了,有时会说我高考分数低,是大专升上来的,暗示我智商情商都不行。

在信号处理上,我们的分歧最大。组里都用现成的仿真软件,每1024个点处理一次。但我想追求更低的延迟和更快的速度,决定手写代码,推翻基于信号分帧的软件架构,还想实现一些工程创新,比如CPU和GPU结合的异构计算。

最重要的是,我读到了一篇论文。我实际上,找到了这一个领域内最经典、最核心的开源系统的论文,理解了其核心架构和设计哲学。该论文系统性地讲述了怎么做一个仿真软件。我还把该论文推荐的、引用的文章全部读一遍。读完后我胸有成竹。我彻底有底气实现这一个仿真软件,解决我的问题了。我已经不是在黑暗中摸索,我有地图了!!!接下来的难点,主要是工程上的。而我强势的技能,就是工程创新。

导师发现后,专门找我谈,说我的方法不对,坚持让我改用仿真软件。我试了一两个星期,发现那些软件在处理某些细节时有局限,干脆彻底放弃,继续按我的思路做。

有一次,老师把我叫到办公室,让我坐下,问我要了我父母的电话,然后当着我的面打了过去。他说:“你儿子在学校不服管教,刚愎自用……”说了我一大堆缺点。最后他说,如果我再一意孤行,就准备延毕吧。

我站在那儿,像个小学生一样默默听着。上一次老师这样打电话给我父母,还是我小学四年级的时候。

早上,我们一群人在格子间工作。我正在写代码,老师轻轻喊我名字。我知道,他又想吃楼下早餐店的油条和炸麻薯了。我走过去,默默接过他递来的钱,心照不宣地出去买。我明白,在他心里,早晨打断我的工作、让我去买早餐,对项目进度的影响是最微不足道的。

课题组几个同学,跟我相处得挺好。但这种好是地下的。我们不想让老师知道。

每次想去食堂一起吃饭,我们都得像搞特务接头。我先起身,磨磨蹭蹭收东西,过五分钟,另一个再假装去接水,自然地下楼。最后那个,负责断后。在食堂角落的餐桌上,就是我们的“据点”。我们一起吃饭一段时间。就这么十几分钟,我们飞快地交换情报,吐槽压力。这成了那段时间里,最重要的透气口。吃完饭,我们从不一起回去。依旧各自散开,像没事人一样溜达回实验室,继续对着电脑扮演专注。

导师可能一直觉得我独来独往。他不知道,就是这些零碎的、偷偷摸摸的闲聊,让我觉得自己没那么孤单,还能再撑一天。

经过研一下学期近四个月的相处,导师彻底对我不抱希望了。他不再派活给我,我每天就干坐在实验室,坐到下午五六点回宿舍。这样过了两个星期,我觉得必须做出改变。既然他不看好我,我偏要做出来给他看!!!

此时,经过研究生一年级导师给我的课题摸索,以及对各种仿真软件的使用,我心里很清楚:仿真软件这条路其实根本就走不通。要想强行走通,要么委屈实验的质量,要么论文造假。我觉得只有自己手搓仿真软件,为科研场景定制仿真软件才是正道。

那时正值暑假,我和导师关系不好,于是七月份下旬几乎没去实验室。我在外面给自己放了两个星期的假,加上之前坐实验室的两周,整整腾出了一个月的自由时间。

八月份开始,我调整好状态,决定自己干。我先解决风电系统中的驱动问题。我先用matlab做了大量小型实验。然后花了一个月用Python手写了整个硬件设备的驱动,模拟软件架构。

为了可以快速出错,快速迭代。我选用Python这一个编程语言。因为它可以一边编译一边运行,遇到错误就直接报错,这样我就能快速知道问题出在哪里。我们之前的做法要反反复复检查小细节,确保不出错,会导致开发周期大大拉长。通过Python,我可以快速失败,快速知道问题出现在哪里

九月份,我开始动手写为项目定制的仿真软件。但我选用的技术方法太“离经叛道”,心里其实也没底。

我完全开始独立做项目,脱离老师的统一规划(其实就是被老师放养了)。开始时不时做噩梦。我已经稳定形成,至少要到凌晨两点才能入睡。我常常失眠,在梦中梦到要去高考、考得很不顺利、考不上大学等梦境。或者梦见,在高中时,在班级里听不懂课,压力很大...那段日子让我感觉非常煎熬。

十月份,我遇到了理论瓶颈,也不太确定自己做得对不对。更深层的原因是,我感觉自己对信号处理确实不太擅长。于是,十月份,一个月的时间,我系统学习了信号与系统,十一月份又学了数字信号处理。

在学习理论,打基础的两个月,我一度对自己非常怀疑和困惑,因为我觉得我是来做项目的,需要赶紧把项目做出来。但我花了很长时间学习,已经花了一个多月,什么都不干,都在学习理论,完全没做工程,觉得很矛盾。另一个重要原因是压力很大,几乎失眠。我早上10点起床,下午到实验室,干活到凌晨1点才回宿舍洗漱回家。我觉得作息非常不健康,每次下午才到实验室上班,导师看我的表情总是复杂(有时直接就是,肉眼可见的嫌弃),我知道他完全放弃我了,在他心中我就是个烂人。

到了十二月份,我开始学C++,并根据所学知识,把之前八、九月份写的Python代码全部转成C++。

我时不时怀疑,我做的这个方向真的很冷门。技术方向太冷太偏了。真的会有人需要这么一个东西吗?我觉得学一门编程语言(比如Java、Go),比如数字孪生、比特币、大模型,真的更容易找工作。但我学的跟电网相关的编程工作,真的很容易找工作吗?还是说,我会不会费了那么大劲,最后只找了一个薪水,其实很低的工作?

系统做出来之后,我才发现老师说的有道理——我的技术路线,计算复杂度实在是太高了!!!我自己设计的仿真软件最多只能模拟7个风机。而这远远不够。那时我才意识到,导师可能是对的。我的脑海中马上出现了导师嘲笑的表情,以及我毕不了业的悲惨局面。

现在这个简单的仿真软件是用Python实现的。我询问deepseek,如果我这个软件用C++重写,可以获得多少倍性能提升?我把关键代码一并提交给deepseek。它跟我说,如果全部用C++重写,大概可以获得5倍性能提升。我当时心里嘀咕,这也不够啊!

之后确实拿C++重新把这个系统全部写了。但是我引入了一些假设,这些假设要尽可能能够大幅简化我这个系统的计算量。现在情况很危急,一切以毕业为导向。我明白了,工程师也是人。人的知识储备是有限的。人的精力是有限的。做项目的时候要对项目给出的问题进行简化。把问题理解为自己可以处理的样子。把一个陌生的问题,转化为自己熟悉的问题。在允许的条件下,用最简单最节约成本的方式做。做好权衡,用比较巧妙的方法,让各方的利益都恰到好处得到满足。

目前,我自己设计的仿真软件最多只能模拟7个风机。这个问题困扰了我一段时间,我当时非常凄凉,觉得马上就要毕不了业了。但我又想了个办法:把软件切分分成界面端和引擎端。在引擎端,我实例化了6个进程,每个进程是一个服务器(Worker),可以并行的计算内容,切分为上千份,手动使用CUDA调度GPU的上千个子计算单元进行计算。不能并行,可以使用SIMD加速的,使用SIMD加速。

研究生二年级上,过年前夕,导师像往常一样面无表情地穿过实验室的过道,目光习惯性地扫过每个学生的工位。走到我桌前时,他脚步顿住了。视线落在那本《CUDA 编程权威指南》上,书脊上鲜明的黄色标志在堆满论文的桌面上格外扎眼。

他沉默地站了约莫五六秒,空气仿佛凝固了。随后,他用食指关节不轻不重地叩击了两下我的桌面。

“你,”他的声音平淡,听不出情绪,“来我办公室一趟。”

我心里一沉,默默跟在他身后。

办公室里,导师坐下,指了指对面的椅子。他没有绕圈子,直接问道:“说说吧,怎么回事?怎么看起CUDA了?”

我深吸一口气,知道这是摊牌的时候了。我尽量让语气保持平稳和客观:“老师,我研一的时候,系统试用了课题组常用的几种仿真软件,包括您推荐的那几款。我发现,在处理构网型风机涉及的高频、非线性暂态过程时,现有的基于信号分帧的架构,确实会遇到实时性瓶颈。每1024个点处理一次的方式,会引入固有延迟,很难满足我们对毫秒级甚至微秒级动态响应进行精确模拟的要求。”

我停顿了一下,观察他的反应。他脸上依旧没什么表情,但眼神示意我继续。

“所以,我推断如果完全依赖现有软件,可能很难从根本上解决我们这个课题的核心问题——也就是实时性的问题。基于这个判断,我决定尝试自己构建一个更轻量、更底层的仿真核心。”

我打开笔记本电脑,向他展示我的代码目录。“过去几个月,我用Python写了大概四千多行代码,实现了一个简易的仿真框架。目前这个版本,最多能同时模拟7个风机节点。但就像我刚才说的,计算复杂度成了大问题,纯CPU运算规模完全上不去,离实际科研应用还差得很远。”

我点开核心模块的文件。“我已经把整个软件的不同功能都封装好了,比如风机模型、电网环境、求解器这些。本质上,我把它做成了一个简单的领域特定语言。现在,只需要导入这个模块,然后像声明变量一样,声明不同的风机节点(Node),再用类似绘图的方式把它们之间的电气连接关系定义清楚,最后调用一个Server.Run()方法,就能实时看到仿真波形和数据结果。”

我带着他快速浏览了一下几个关键类的结构,以及一个简单的示例脚本。“我现在卡在性能瓶颈上。所以,我才开始研究CUDA,想看看能不能把最耗时的计算部分,比如微分方程求解和矩阵运算,搬到GPU上做并行加速。这是目前能想到的,让这个自研软件达到可用规模的唯一技术路径了。”

导师听完,身体向后靠进椅背,双手交叉放在桌上,沉默地注视着我。办公室里的空气再次凝固,只有电脑风扇的微弱嗡鸣声。导师脸上的表情从审视,慢慢变为专注,最后闪过一丝不易察觉的惊讶和欣赏。

导师身体前倾,提出了几个非常尖锐的技术问题,例如:“你的数据同步怎么解决?”“内存瓶颈考虑了吗?”

我对他的问题,一一做出回答。

听完我的回答后,导师靠回椅子,沉默了片刻。然后,他做出了一个决定性的表态。

“嗯……我明白了。你的想法很大胆,软件架构,还有领域编程语言也有点意思。之前我担心你是在胡闹,现在看来,你是在下苦功,而且方向……是有一条独特的路径的。”

“好,我同意你可以继续按你的思路做下去。”

“但是,”导师敲了敲桌子

“从今天起,你这个项目,不能只有一个‘最终成品’的目标。你要把整个开发过程,拆解成一个个可以量化的里程碑。”

“你要发论文,明白吗?”
“你要发论文,明白吗?”
“你要发论文,明白吗?”
导师讲了三遍。

“比如,就是把你刚才说的Python验证模型的核心思想,写成一篇算法短文。第二个里程碑,GPU加速后的性能对比分析,就是一篇完整的期刊论文的素材。”

这样,就算最后你的系统没达到完美预期,但过程中的每一个创新点,都已经转化成了实实在在的学术成果。你明白我的意思吗?”

我表示肯定,点了点头。
老师专门把我叫到办公室,强调了发论文的重要性。就算再傻,我都明白论文对老师非常重要。我再也不想把跟老师的关系搞这么僵了。我想应该做到两点:第一,这些论文应该尽快发出来;第二,每隔一段时间跟老师汇报,让他不要那么心慌。
...
于是十二月份和次年一月份,我着手学CUDA,并实现这个想法。

我擅长软件架构。但是,我对于GPU编程,对于GPU并行计算(CUDA)的理解非常浅薄。第一个版本写得漏洞百出,甚至因为内存管理不当导致系统崩溃多次。我不得不需要经常使用deepseek、到处查资料、来解决我的问题。

学习累了,我就开始写之前导师提到的论文。时不时和导师汇报一下进展。先发几篇论文确保可以毕业。

临近过年,我的导师忽然说要请我们整个课题组的同学吃饭。我们找了个饭馆。在餐桌上,导师拿起酒,依次敬了每个课题组的同学,也包括我。导师说,我们这段时间科研辛苦了。

过年期间,我开开心心地回了老家。因为,我觉得我把所有坑和技术难题都踩完了。我快接近半年没见到母亲了。我设想,过年回家的场景应该是母慈子孝的。回到家后,我母亲看着我,第一句话就是,你这个研究生什么时候可以读完?我的心情直接降到了冰点,在课题组意外地获得了一丝表面的温暖,瞬间烟消云散。因为她说这话,我心里很清楚,她就是想我快点把研究生读完,然后赶紧出来挣钱。

为了实现我心中的技术梦想,我几乎把潜力逼到前所未有的高度,以一个月为步调,尽可能吸收几乎是一个团队所需要的知识,但换来的却是身边人的打击与嘲讽。

过年的时候,我给导师发了拜年短信。导师回复我一个拜年的表情包。导师说,过年就好好休息吧。

二月份,我感觉自己真的撑不住了,直接“摆烂”了一个月。二月份正值元宵节,我给自己放了一个“大元宵节”的假期。我看到代码就想吐。(摆烂,还有一个原因:所有坑都踩完了,我知道自己一定能做出来)。二月份几乎没有什么工作。唯一的工作,我想就是写论文吧。相比于写代码,写论文显得“简单”。写论文不用付出太大的脑力活动。相比于写代码,写论文会轻松很多。写点matlab代码,绘制一些图表。把创新点、实验过程、项目过程写下来。我自己先审核几遍。然后我先让AI帮我审核多次,最后由导师来帮我审核把关。

长达一个月的休息,使得我渴望“出海”,渴望“战斗”!!!三月份,我彻底“沸腾”了。我士气高涨!我开始着手缝合我之前写好的各种模块。我熟练使用各种编程概念:接口,抽象类,泛型,多重继承,继承链设计,灵活使用设计模式。单例模式。引擎端,UI端分离。各种数据结构。我仿佛重新回到了人生中,第一次摸到电脑的那一个下午。我感觉我和电脑,“人机合一”。

简单来说,研二那年,我几乎是一个人埋头苦干,手写了近两万四千行C++代码,构建了一个实时信号处理和控制系统。为了应对巨大的计算量,我甚至用了CUDA调用GPU来加速。

6月份,研二下学期快结束的一个下午,我向导师演示了我的系统。他翻看我井井有条的代码,听我讲解如何用GPU并行计算。导师戴着MR眼镜,手指在空中操控着仿真模型,沉默了一会。他摘下眼镜,没有看我,而是盯着屏幕上的代码,喃喃道:“你这个架构……确实解决了实时性的问题。” 他没有表扬我,而是连续问了几个非常尖锐的技术问题,关于边界条件和扩展性。我们的交流,第一次完全脱离了情绪,回到了纯粹的技术层面。我明白,我赢得了他的“技术尊重”,但这不代表他喜欢我这个人。

研二期末,成绩排名出来,我排在第二。排第一的,是那个最听话、执行能力最强的同学。下午午睡完,看着成绩排名,宿舍室友聊天时唏嘘道:“看来老师还是更喜欢执行者,不鼓励高风险创新。”我心里明白,确实是这样。

随后,听着室友的话,我渐渐回过味来。我觉得我太大“ego”了。我被我的心气,遮蔽了。我想,导师需要的是稳定、可预期的产出。比如说论文、专利。但是我的方法,我的路径是高风险、高投入的“豪赌”。我要手写一个仿真软件,成功率有多高?万一失败了怎么办?在导师眼里,很可能低于10%。这意味着,他投入一个学生三年的时间和课题资源,有超过90%的概率血本无归:没有论文,没有专利,只有一个无法毕业的学生和一个烂尾的项目。

而且,后果他无法承担:如果我失败了,毕不了业,对他也是严重的教学事故。这会损害他的声誉,影响他后续招生,甚至会被学院问责。他的首要任务,是确保我能“安全”毕业。我的创新,在他看来,是以我和他共同的职业生涯为赌注。

我真是,满血版愣头青啊!!!
聪明地很傻。
不会做人...

如果我懂得管理导师的预期,如果我懂得向上管理。我很可能就可以不用过的那么惨...

后来,凭借这个自研的仿真软件项目,我一口气申请了四篇发明专利,一篇实用新型专利。导师看到申报材料后,沉默了片刻,第一次用平静的、就事论事的语气对我说:“你这一个仿真软件很完整了。你现在把这些创新点拆开,我们可以发一系列文章。我来安排评审。”

在导师的指导下,我们将这一个仿真软件拆分为好几篇论文。导师动用关系加速论文的评审与发表。导师对我的态度缓和了许多,不再说难听的话了。我第一次在导师脸上,看见了...笑容。

进入研三,我一共花了6个月的时间来写各种论文。由于之前搞项目已经很累了。我彻底进入了“养老模式”。我不急於动笔,而是先花几周时间研读目标期刊上近期文章的写作风格、实验设计和理论深度。然后,当第一篇论文初稿完成并进入修改或投稿阶段后,我开始并行地开始撰写第二篇论文(科学发现)和第三篇论文(软件平台)...

之后,就是应对审稿意见、以及最终定稿,然后就是心无旁骛地撰写我的硕士学位论文。

我这种磨洋工的样子,导师还是看出来了。他可能觉得我太闲了,就开始从外面接一些零零碎碎的小项目回来。有一次,他把我叫过去,指着电脑上一个厂家的需求说:“这个你跟进一下,技术含量不高,你抽空弄弄就行。”

我一看就知道,那活儿没什么技术挑战,就是些重复性的东西。我心里跟明镜似的,这哪是真的需要我,分明是看我没事干,给我找点事,提醒我还在他手底下。我当时嘴上答应着“行,老师,我看看”,但心里早就想好了:我就按最普通、最不出错的方法慢慢做,绝对不投入任何额外精力。我的全部心思,都在我自己的论文和毕业上,那才是我自己的事。

导师安排一位师妹协助我,说是帮我分担工作,让我能更专注于毕业。我当时相信了这个说法,完全没想过,导师可能是希望把我的技术留在课题组。如此一来,我的日常便被分割成三块:撰写毕业论文、处理导师派的杂活,以及抽时间培训师妹。导师既然这么安排,我想也就好好做这件事情。一方面是为了讨好导师,另一方面也是为了不要跟课题组的其他同学关系搞得那么僵。

我最初的计划相当紧凑,准备每天固定一个半小时,将时间均分给Unity3D、Matlab和Python三个部分。当我把这个雄心勃勃的教学方案告诉deepseek时,人工智能deepseek直言这对于一个研一新生来说简直是“噩梦”。deepseek的回答,像一盆冷水浇醒了我。我开始反思自己的教学方法。对于一个初学者来说,我那种急于求成的方式确实太苛刻了。我意识到教学需要“循序渐进”,心急吃不了热豆腐!毕竟还有半年才毕业,我不必讲得那么着急。

于是,我调整了教学策略。我计划把讲课速度放慢了。第一个月只讲Python和Unity 3D的基本使用,第二个月才简单介绍软件的操作流程。我告诉自己:她不需要理解软件的设计原理,但至少要会使用。于是我重点教她标准操作流程SOP,比如如何新增一种自定义的风机类型,代码写在哪里,在哪里注册。

一开始见面的时候,我能明显感觉到师妹的抵触情绪。她似乎有点怕我,甚至讨厌我。而且我感觉她自己也并不投入。有一次我们约在第二饭堂对接,下午四点,我打电话过去,她声音含糊,明显还没睡醒。我催她快点过来,她匆匆赶到时还戴着口罩,眼角还留着没擦掉的眼屎。我们就那样开始讲课、对接系统。

由于我是职业教育师范专业出身,导师交给我的教学任务极大点燃了我的教学热情。我觉得当老师也是一个很有趣的事情。我是在构建一个我“自研”的教学体系。教学是另外一个非常有意思的研究课题,我把很多教学技法都融入了我的“课程”中。比如ADDIE、布鲁姆目标分类,以学生为中心等等。上课前我会把要讲的知识点规划好,写为教案。在上课之前,我会提前把教学大纲发给学生,让她了解下一节课要讲什么。课上我会按部就班,精准地讲述每个知识点。

我甚至参照普林斯顿大学微积分读本和托马斯微积分的教学方法,每次只讲一个小知识点,从不同角度反复阐释。这样做之后,师妹确实开心了不少,她说教学效果好了很多,虽然忍不住吐槽我“太啰嗦”。她说其实理论会用就可以了。她捂着嘴笑,表示我完全就是“机器人”。当我问她是否学明白了时,她给出了肯定的答复。

我发现她对软件的兴趣主要集中在实操层面——只要按步骤点几下就能得出结果。至于背后的原理,她并不想深究。这种专注虽然局限,但至少保证了基本的使用能力。

有时我会想,我期望的是,师妹学会的是“创造能力”。但导师和师妹潜意识里期待的“学会”,其实是:能熟练操作我留下的系统,跑出数据,完成论文和项目。这才是对课题组生存最“安全”的。师妹对原理的排斥,恰恰是这种“安全模式”下的最优解:用最小成本,获得最大效用。她和导师,本质是一类人。

到我快毕业时,我问她,系统差不多会用了没?她说应该可以了。我又问了一个简单的问题:系统里的Node继承树是怎样的?基类是BaseNode,然后有哪些子类?她磕磕绊绊答出来了。师妹在我面前举起手,说她其实,软件使用,以及软件架构是大概理解的原理的,就是细节实在是...无能为力。

研究生毕业,导师最后一次叫我去他办公室。他简要地跟我聊起,他年轻时的往事,说在九几年,他跟着一位电网的老局长做项目。老局长对他们说,科研人员就是要跟着国家计划,帮助国家搞建设。

说完,他从书架的顶层取出一本旧书,书脊已经磨损,纸张泛黄。那是他当年读研时用的《电力系统暂态分析》。他翻开扉页,上面有他年轻时工整的笔记和日期。

“这本书我留了二十年,里面的笔记现在看可能过时了,但解决问题的思路没变。”他将书递给我,“这本书你拿去吧。以后遇到基础理论的问题,翻一翻,或许能看到另一种思路。”最后,导师祝我,前程似锦。

他一路送我到校门口。我拿着那本沉甸甸的书走进站里,回头还能看见他站在那。书的重量和旧纸的气味握在手中,我忽然明白了,什么叫做一代人有一代人的路。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容