使用Spring自动注入时必须使用构造函数注入方式!

https://docs.spring.io/spring-framework/docs/5.3.25/reference/html/core.html#spring-core The Spring team generally advocates constructor injection, as it lets you implement application components as immutable objects and ensures that required dependencies are not null. Furthermore, constructor-injected components are always returned to the client (calling) code in a fully initialized state. As a side note, a large number of constructor arguments is a bad code smell, implying that the class likely has too many responsibilities and should 技术角度上说,依赖注入可以有field注入,setter注入方式和构造函数注入方式。技术角度上看,构造函数的优势在于保证返回的bean是完整的,且bean中依赖的其他类不为空。 然而在实际生产过程中,spring官方给的技术优势大部分开发并不关注,还是直接写一个域然后标一个autowired。...

September 19, 2023 · 1 min

翻译】每个开发者都必须了解的unicode和character sets(字符集)知识点

原文地址:https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/ 你有没有想过content-type这个Tag是做什么的?就是当你写HTML时应该写的但是你从来不知道应该填什么的content-type。 Content-Type: text/html; charset=utf-8 Content-Type: multipart/form-data; boundary=something 你有没有收到过一份邮件里面有一行“????????????“ 我惊讶地发现有太多的开发者并不了解character sets, encodings, Unicode这些东西。 几年前,一个测试问我FogBUGZ(译者注:可能是原作者开发的一个软件)能不能用日语处理收到的邮件。日语?他们有用日语写的邮件?我完全没想过这回事。当我们仔细检查用来解析MIME邮件的商用版ActiveX control时,我们发现它确实错误处理了字符集(character sets),所以我们不得不写了一份代码去回滚它的错误并且重新对邮件进行解析。当我去看另一个商用版库的源代码时,我发现它的字符代码实现也非常差劲。我联系了这个包的开发者,他说他“对这个包也做不了更多的事“。就像很多程序员一样,他只想这件事就这样过去得了。 但是这件事不会就这样过去!当我发现主流的web开发工具PHP竟然有一个完全忽视字符集编码的issue(complete ignorance of character encoding issues),blithely使用了8个bit处理字符(characters),导致他妈的几乎不可能拿php开发出好的互联网应用。我觉得,这一切都该结束了。 在此我宣誓:如果你是一个在2003年工作的程序员,而你不知道characters, character sets, encodings和Unicode的基础知识。假设你被我逮着了,那我就要惩罚你在潜艇里切6个月洋葱。我发誓我会这样做的。 还有一件事: 它没有那么难。 在本文我将告诉你每一个在职程序员都应该知道的基础知识。“普通文本等于ASCII等于字符(characters)都是8比特的”这种想法,不仅是错误的,而且是非常错误的。如果你还带着这种想法编程,那你差不多相当于一个不懂细菌的医生。求你在没读完这篇文章前不要再写任何一行代码了。 在开始之前,我有一个提醒,如果你是那种比较罕见的懂国际化(internationalization)的人,你会发现我接下来的讨论有点过于简单了。我只想把最简单的教给大家,这样每个人都知道发生什么事了,并且能编写可以处理各种语言的代码而不是只有英语(甚至不能带重读符号)。我还要提醒你,字符处理知识创建国际化软件的一小部分,我有时间可以写点其他方面的,但今天我们只讲字符集(character sets)。 历史角度 了解一件事情最简单的方式就是跟着时间了解它。 你可能认为我会讲一些上古时期的字符集(character sets)比如EBCDIC。但是我不会。EBCDIC跟你的生活一点关系也没有。我们不会讲这么远的事。 在中古时期,当Unix被发明出来而K&R正在写《The C Programming Language》的时候,一切都很简单。EBCDIC正在退出历史舞台了。唯一需要处理的字符是哪些不带重音的英文字母。我们有一套叫做ASCII的编码可以用32到127之间的数据代表每一个字符。空格是32,字母‘A’是65,诸如此类。这些数字可以很方便地用7个比特存储下来。那时候大部分电脑都是用8bit的字节(8-bit bytes), 所以你不仅可以存下每一个ASCII字符,你还多出来整整1个bit。如果你耍点小聪明,这1个比特可以用于自己的目的。WordStar中的那群傻瓜就把最高位用于表示每个单词的最后一个字母,导致WordStar只能打印英语。用小于32的数字表示的字符是无法打印的(unprintable),被用于诅咒别人。开个玩笑。它们被当作控制字符使用(control characters),比如7会让计算机蜂鸣,12会导致打印机上的当前纸张飞出,让新纸填入。 这一切都很美好,如果你是一个英语使用者的话。 因为每个字节使用了8个比特,许多人就想到,“我们可以把128-255的数字给自己用”。问题在于很多人同时有了相同的想法,而且他们对于128到255的数字的用法都有自己独特的想法。IBM-PC 有一些后来被称为 OEM 字符集的东西,它为欧洲语言提供了一些重音字符和一系列线条绘制字符… … 水平条、垂直条、右边有小铃铛悬挂的水平条等等。 你可以用这些线条字符在屏幕上画好看的盒子和直线,用这些字符集画的画你仍然能在你的干洗机上的8088电脑上看到。事实上,当人们开始在美国以外购买个人电脑时,各种不同的OEM字符集就被设想出来了,这些字符集都是为了自己的目的而使用前128个字符。比如130在一些电脑上会被显示为é,但是在以色列售卖的电脑会将130显示为希伯来语Gimel(译者注:原文的字符打不出来),所以当美国人发送résumés到以色列时,以色列人会收到r(Gimel)sum(Gimel)s。在很多情况下,比如在俄罗斯,关于如何使用前128个字符有非常多的想法,所以交换两个俄语文档都是可能有问题的。 这种OEM混战的情况最终被ANSI标准敲定下来。在ANSI标准中,大家对小于128的数字该做什么都取得了一致认知,这点很像ASCII,但是从128开始的数字根据你所在的地区不同就有很多不同的方式处理了。这些不同的处理系统叫做*code pages。*比如以色列的DOS用的code page叫做862, 而希腊人使用的是737。小于128都是一样的,但是从128开始都完全不同了,而很多有趣的字母就出现在128之上(包括128)。MS-DOS的国际化版本有许多code page, 这些code page能处理各种语言,从英语到冰岛语,它们甚至还有一些多语言(multilingual)的code page可以同时在一台电脑上处理世界语和加利西亚语。哇!但是,在同一台计算机上同时显示希伯来语和希腊语是完全不可能的,除非你编写自己的自定义程序,使用位图图形显示所有内容,因为希伯来语和希腊语需要不同的代码页,对大数有不同的解释。 与此同时,亚洲的有成千上万的文字(letter),这些文字用8个比特是不可能装的下的。有一种糟糕的系统叫做DBCS(double byte character set)用来解决这类问题。在DBCS中,一些文字用1个字节存储,而另一些则使用两个字节存储。在字符串中向前移动很容易,但向后移动却几乎不可能。我们鼓励程序员不要使用 s++ 和 s- 来前后移动字符串,而是调用 Windows 的 AnsiNext 和 AnsiPrev 等函数,它们知道如何处理整个混乱的字符串。...

August 1, 2023 · 2 min

最近遇到的一些比较坑的bug

Bug:读取两个文件,然后输出这两个文件的内容。第一个文件输出始终为空,第二个文件可以正常输出。 解决:第一个文件损坏了(具体是什么原因未知),我将第一个文件的内容复制到一个文件中就可以正常使用了。 教训:永远要质疑输入的合法性 Bug:使用Gradio,按钮绑定了一个回调方法,这个方法内部调用了OpenAI做了对输入的两个文件进行处理。结果总是第一个文件处理完之后就停止了。 解决:实际上不是在第一个文件处理完之后停止,而是LLM处理第一个文件花费了大约1分钟,而Gradio默认一分钟回调方法没返回结果就超时失败。所以,设置Gradio应用启动为queue模式,取消超时等待。 教训:任何一个方法执行时间很长就得考虑是否存在超时失败 Bug:测试人员测试我写的的一套上传下载照片逻辑时,同时在测试环境测试了我的上传和下载接口,结果是下载下来的照片无法识别。 解决-1:这里有一个关键点,下载下来的照片无法识别这个问题,我一开始以为是加解密错误导致照片出现问题。但是加解密如果异常应该在程序中就报错。最后发现,下载下来的图片大小是0kb,但是Windows自带的照片预览会直接说无法识别该类型。 教训-1: 对于存储在磁盘上的文件一定首先检查文件大小(这让我想起来实习期的一个问题是因为文件本质是个软连接,如果第一时间查看大小就能看出问题) 解决-2: 代码中的上传下载逻辑我都有详细覆盖性很强的单元测试,本地都上传下载过,不应该出问题。遂回滚代码尝试,发现旧的代码也下载不了,经排查发现是测试环境的host配置错误了。 教训-2: 涉及到这种代码改造(不修改旧逻辑)的测试,在测试之前应该第一步先校验旧代码的可用性,我给它取个名字叫基准测试。 解决-3: 测试过程中,测试使用了另一个服务的接口间接调用了本服务的上传接口,结果走不通。在一开始,下意识认为是本服务的问题,因为另一个服务被使用的接口没有被改造。但排查后发现是另一个服务挂了(挂的原因是我在该服务上做了其他修改,导致服务没启动的了) 教训-3: 间接调用优先确保服务可用性 解决-4: 另一个服务挂掉的原因,是外部依赖更换了服务地址,所以代码中需要修改,而修改的点是另一位同事在改,今天上线并没有合并到master分支,导致我合并master分支时没有合到这部分代码。 教训-4: 如果代码有意料之外的问题,第一时间先看一下其他同事的开发分支有没有一些关键操作没有合并到master。同时也知道了合并master,以及branch命名,commit规范的重要性(要是都糊写一通,根本就没法快速排查)

July 11, 2023 · 1 min

钢铁之躯(片段)

“砰”,远处庭院中,泳池边,遮阳伞旁。在亚那州海滨的繁星下,复制器在完成最后的制造工作,打印一位计算机科学家的头颅。身体已经打印完成,挂在复制器三面体的一面上。 “如果我死去,不要打印我的头颅。”科里的旧语再一次在张博士脑中闪过。 “你知道对科学家来说,最大的耻辱是什么吗?”张博士询问身边一起前来的智宇,智宇被复制器的制造过程震惊到了,并没有留意张博士的提问。 “保存他的头颅。”博士自顾自地回答起来。 复制器最后的打印步骤完成,钢铁制的头颅上反射出星空璀璨。复制器的三面体开始旋转,将头颅扭转到躯体之上,随后发出一声闷响,头颅与躯体拼接完成。 复制器复制出的人低垂着头,复制器托着他双臂的支架唰地收起,复制人猛然落下,发出重重的落地声。 复制器的产物在诞生后的最初五分钟会重复主人生命中最后一天早上的行为,这个时候他们是记忆模糊的,或许是威本科技的技术限制导致,这五分钟威本科技并不能完全控制复制人。这五分钟或许也算是本体生命的延续。智宇这样想着,庭院中的复制人身体亮出隐隐的蓝光,缓缓抬起了头颅。 复制人向前走了几步,走到了一张吊床前,俯下身亲吻空气。接着他转身向另一处方桌走去,他在桌子上盘弄着空气,打翻了方桌上本来摆放的各类实验试剂以及子弹。盘弄了一两分钟,他左手托着一枚TR86杀人蜂微型导弹走到吊床旁,把托盘递了出去后,他松手,托盘摔碎,他坐在空气上,望着空空的吊床谈笑着。而后,他走到泳池边,对着博士和智宇的位置,开始梳妆打扮。 刷牙,洗脸,似乎摸了一些护肤品,最后当他开始梳理头发时,已经过了四分钟了。复制人的手在摸到自己的金属制头发时停顿了下,随后开始上下摸索。几秒钟后,他伸出双手,狠狠的掰断了自己的小拇指,他伸出手看向自己的手,似乎是在判断自己没有疼痛感,这也能解释为什么在宾西州的另一个科里也没有小拇指了。复制人望向泳池中的自己,突然崩溃的吼叫了一声,然后他的目光转向远处的博士和智宇。 远处的红色亮光闪过,智宇知道大事不好了,双眼的红光代表复制人进入了战斗模式。但没等他躲开,空中一个庞然大物已经落地,冲击波将智宇直接整飞到一旁的花圃中,尘土弥散过后,博士已经被复制人科里卡住脖子举了起来。 博士的紧紧抓住复制人科里的手,给自己争取一点点呼吸空间,他努力转头看向一旁落在地上的手机,屏幕碎裂,但是计时器的数字还在不断跳跃。 “5月18日,5月18。”复制人科里听到这个时间,扣住博士的手稍松了些劲。 “2034年5月18日16点08分,你认识梓萌,现在距离你们认识过去了68天,你们单独相处15天。” “梓。。。萌”,复制人科里缓缓地说出这个名字,抬起了头,松开了博士,跪倒下去,红色消失,复制人垂下了头。 五分钟到了,复制人科里身体冒出绿光,“威本科技为您服务,正在启动中。。。”复制人科里说到。

June 23, 2023 · 1 min

博客版面更新

今天,把博客的版面更新了一版本。最早的时候,我只想在此博客写技术文章。生活感想之类的还是在QQ空间里面写,而微信主要就发事业上相关的事情。在屡次被QQ空间删除说说,照片被屏蔽之后,我还是决定彻底放弃国内的社交平台。将日常的所思所想也搬运到本博客。加上之前写的散文,诗,小说等都散落在各个平台不方便管理,遂也统一搬运到本博客。这样一来一回,博客里的文章就不单单是技术文章了,以至于到此时,技术文章的占比已经成为很小的一部分内容了。博客的内容杂乱,各种分类混杂在一起,十分不好阅读。 因为我的原始资料使用的是Notion,通过notablog这个工具,将Notion的文章生成静态网页在部署在github上,所以版面功能限制于notablog这个工具以及notion的能力。没有自动分类,没有索引,没有数据统计功能。文章的管理,分类都得我手工做,之前一直没有好好梳理博客,最近终于抽出时间,将凌乱的博客梳理清楚。将首页做成内容分流,标签栏只放几个重点标签。 倒是有一种杂志社编辑的感觉,本身极度推崇自动化工作的我,在手动梳理了整个博客之后,放弃了自动化管理博客的想法,这种个人报刊式的博客,倒是让我非常享受,嗯,看来是可以再创办一个栏目叫做《读者投稿》了。

June 18, 2023 · 1 min

写给树先生的信

这是一篇旧文,迁移到本博客 hello,树先生: 我十二岁左右时,很喜欢在村子里骑自行车。路边的树会不停地掠过身边,有的时候,在很多很多树的残影中,会站着一个人。穿着臃肿肥硕的灰裤子,皱巴肮脏的灰衣裳,手指上都是泥和油渍。也许他的衣裳是有颜色的,但已经脏的结了垢。我没有见过他哭,他永远是很开心的样子。有的时候,还会有一个女人站在他旁边,一样的裤子和衣裳,一样的呆笑。 他的人是几乎不会变样子的,能变化的是他手中拿的东西。有的时候是邻居施舍的饼干,有的时候是不知道哪里来的橘子。 没见到他时我是不会想起他的。 今年回家,我在路边又见到了他,和几年前,一模一样,我惊讶于他这么多年居然没有一点点变化。哪怕是时间的流逝也没有在他身上有一点体现。 我的表姐跟我说,我小时候见到的是他的哥哥,这个是弟弟。 “那他哥哥呢?” “好几年前就死了,他妈妈是个呆子,生了两个儿子也都是呆子,他爸爸也不知道在哪里。” 我想起来,是从某个时间开始,我再也没有见到和他站一块的女人了。 没见到她的时候我是不会想起她的。 我骑电动车回家时,我已经很久没有骑自行车了。他手里拿的是橘子,橘黄,是他浑身上下最透亮的颜色。 时代抛弃了多少人,忘记了多少人。 我们在没有见到他们的时候,是不会想起他们的。

June 12, 2023 · 1 min

这是一篇旧文,迁移到本博客 昨天大奶奶去世了,被装在冰柜里面, 不是可以制冷的棺材,就是装冰棍的冰柜, 冰柜上还印着“xx电器”。 大奶奶生前有诸多艳情,在场的各位没有一个落泪。 烧千纸的时候,跪着的儿孙们都尝试用着各种方式调整跪姿,极度渴望千张纸早点烧完。 丧事办的很草率,没有敲锣打鼓,没有和尚念经,大家都好像是松了一口气。 如释重负,是最好的形容。 冰柜上铺了一块红布,放在大奶奶的脸正上方。我没有去看一眼大奶奶,已经很久没有见过她了。她病重时我也没有见过她一面,对于我来说,大奶奶似乎只是一个故事里的人物,一个和我有着关系但我却又不曾真实接触过的人物。倒是我的侄女,马上上小学的小孩子,好奇地垫着脚去看冰柜里面是什么。她垫着脚攀着冰柜边缘,向里面探望时,眼神由好奇转为惊讶。随后被我妈妈拉开了。 我的北边爷爷去世时,我也是这样往冰柜里看去。不过,我的北边爷爷的冰柜是很精致的冰棺材,里面还有一圈霓虹灯,至于周身有没有广告我就记不清了。 我记得那是周五的下午,刚放学,一个朋友的母亲很急切地从人群中找着我。她似乎是很想当第一个把这件事透露给我的人,这样以后可以把我的反应当做她独一无二的谈资。事实也是这样,当我表现出震惊,茫然,伤心的时候。我是从她的脸上读出了心满意足和同情这两种含义的,这二者并不矛盾。 回到北边爷爷家时,我看到他躺在冰柜里面,双手交叉放在胸前,身边有一圈霓虹灯。鼻孔里结了冰霜。我不知道我是被吓哭的,还是因为失去亲人难受。我跑出堂屋,在路边哭泣。这便成了大人们的谈资——这孩子真孝顺。似乎是很难得的事情。 小时候我以为我的哭是人之常情,慢慢地发现是难得可贵。 不过那时的我是上初中了,再往前,我和我的侄女一样大时,我也有个亲戚去世了。我不记得那是什么亲戚,我只记得送她去火化的前一天晚上,我的父亲那一辈门在堂屋打了一晚上斗地主。我和我的表哥,拿着两副扑克,打了一晚上的小猫钓鱼。最后也没分出胜负,就被拉上了车。车子后面会拖着长长的竹子,车里面是已经离去的人儿。 不知道大奶奶送去火化的时候,车尾会不会拖一根长长的竹子。但我敢肯定,大奶奶前几个月在路口种的那棵树应该要被人偷偷砍了,之前她的邻居和大奶奶就这棵树吵了好几天。 其实我奇怪的是大奶奶的孙女们也都没有哭,可能是都哭过了吧。

June 12, 2023 · 1 min

大坟茔

这是一篇旧文,迁移到本博客 村里有个大坟茔,我爷爷说里面埋了一个抗日时期的官,在那个大坟茔不远的地方有个万人坑。是埋抗战时期新四军的。 “那个万人坑就是埋新四军的,那时候当兵的人脑袋上戴的帽子,黄的那种,像日本鬼子那种帽子,还有绿色的,蓝色的,上面有五角星,就把他们帽子理好。人死了身上有那种血,就整理干净,然后用大白布把人一裹,挖个大坑,往里面一个一个堆,就跟埋得了流感的鸡一样。” 那个大坟茔里埋的人,大家都不知道他是谁,只知道官很大,也不知道什么时候,是谁把他埋在这里的。大家都说这个大坟茔很灵,据说有的晚上这里面的官还会把万人坑里的兵带出来练操。 文化大革命的时候,我爷爷是学校里的红卫兵,扛国旗的那种。那时候镇上要铲坟,挖坟,镇里的书记拎着铁锹,带着我爷爷他们那帮小红卫兵去挖坟。书记亲自挖这个大坟茔,一共挖了三锹,第四锹还没下去,人就仰了。后来就没人敢碰这个大坟茔了,当时还是我爷爷那群小红卫兵把坟给填好的。 我爷爷说,那个坟不是普通的坟,它不是挖个坑把棺材埋进去,而是直接把棺材放在地上,然后往上盖土盖出一个坟的。里面的棺材也和普通的不一样,是一个红色的大箱子,两头下面有小支架支起来,箱子方方正正的。 每年都会有人给大坟茔扫墓,要从旁边的地里挖一个圆台形的土堆,然后把小的那一面朝下摆在坟茔上,在大的那一面上的边缘插满嵌这红色纸的干芦苇。清明节风吹过的时候很好看。

June 12, 2023 · 1 min

安全头盔

这是一篇旧文,迁移到本博客 安全头盔 像黄色小太阳 骑着电动车 一辆又一辆 穿过小轿车 车窗被摇下 一声又一声 熟悉的咒骂 安全头盔 匆忙地回家 儿子在澡盆 洗澡月亮下 安全头盔 摆在酒瓶旁 绿色的玻璃 华丽的琉璃 远处的高楼 酒碗中倒影 安全头盔 摆在小桌旁 贪婪,自私,愚蠢 同情,怜悯,善良 一遍又一遍 回荡在耳旁 重复的故事 重复的诉说 重复的酒菜 重复的小桌 安全头盔 摆在小桌旁 鼾声轰隆如雷响 一直到天亮 安全头盔 来到高楼上 踩着脚手架 头上是梦想 脚下是希望 希望一落空 抓不着梦想 安全头盔 摔在大地上 融化的夕阳 像历史的洪流 顺着柏油路 爬行并挣扎 安全头盔 摆在了小桌上 红色的药丸 一粒又一粒 慢慢不见啦 黄色的药水 一滴又一滴 慢慢不见啦 天上的星星 一颗又一颗 慢慢不见啦 地上的人儿 一个又一个 慢慢不见啦 安全头盔 一只小蜘蛛 钻进缝隙里 织起了小网

June 12, 2023 · 1 min

纸箱(一)

“叔叔,你有孩子吗?你可以买一个暴龙吗?”路边一群小孩簇拥过来,在傍晚的小区中像一个到处捕捉灵魂的怪物。 三儿当然没有理会,只是口罩下嘴角控制不住上扬,已经到了被问有没有孩子的年纪。三儿踢开石子,肚子里刚刚狼吞虎咽进入的螺蛳粉还是温热的,转动一下身子,感觉肚子中的粉似乎团结在一起互相交织组成了一艘小船,酸笋作为木头,腐竹就成为船帆,在汤水中乘风破浪。突然一阵反胃,脑海里闪过故意被遗忘的场景。那已经是三周前的事情了,原本用来自动压扁纸箱的机器不凑巧的压扁了李元的手,鲜血和一些碎肉骨屑溅到了三儿的脸上。 三儿擦了擦脸,到了电梯门口,里面站着一个推着巨大推车的大汉,大汉按着电梯的开门键等着三儿上来。三儿沿着推车旁留下的狭小通道了电梯角落的一点空间,拘谨着身子。电梯门口陆陆续续站满了人。一位年轻的女士带着一位有些瘦弱的老头,一位挎着小包穿着老上海式旗袍的老妇人,一个拖着小单车的小孩子,一个拿着最新款苹果手机的初中生。大家看到电梯里的大推车,显然在纠结是否要上这一班电梯。推车大汉带着很重的家乡口音向电梯外招手,“看啥捏,来站着这个车子上。” 年轻女士身边的瘦弱老头非常有积极性地站了上来,笑笑嘻嘻的,在小踩了一下推车确定稳定性后,乐呵呵地对着女子招手。年轻的女士脸上带着不愿意,还是小心地站了上去。初中生和小孩带着年轻人的活力自然也踩上了推车。挎着小包的老妇人,理了一下小包的链子,并没有了选择站在小推车上,而是沿着本就拥挤的推车旁过道挤了进去。三儿很瘦,所以能双脚站着,但是老妇人显然有一些丰腴美,只能前后各一只脚扶着电梯才能站牢。三儿能闻到老妇人身上的洗衣粉味道,是薰衣草味儿的,中等阶级常买的牌子。 推车大汉似乎和瘦老头认识,聊得热火朝天,小孩挨在自己的单车旁发着呆,初中生一直高举着自己的苹果手机,嘴巴不停发出奇怪的声响。老妇人和年轻女生始终盯着电梯不断向上显示的数字。 7楼到了,年轻女士门开到一半就已经到了门口,对着老头小声催促到,“快下来”。老头还有点念念不舍大推车,女士几次催促他才下去。电梯关上了门。推车大汉对着三儿说,“他们是山西的是吧,听着口音很像。”三儿嗯了一声,没有继续回答。没有了推车大汉和老头的交谈,电梯变得安静了不少,只有苹果初中生还在不停地发出奇怪的声音。 9楼到了,三儿小声说着,“借过”,从老妇人还有苹果初中生中间挤了出去。电梯门关上的瞬间,薰衣草的洗衣粉味道与苹果初中生的嘀咕声都消失了,只留下了空荡的走廊。很有意思的一点,虽然三儿只租了自己的一间一居室,但是觉得走廊也是自己的,因为自己从来没有在走廊遇到过邻居,已进入走廊就差不多已经到了个人领地。白天被世界推着走了一天的身子,在这一瞬间疲劳从脚底如闪电般窜到头顶。 三儿不清楚自己是什么时候睡着的,阳光隔着劣质窗帘和眼皮刺激着视网膜。昨晚并没有做梦,倘若做了,今天可以回味一天。煮两个鸡蛋,去洗手间,吃两个鸡蛋,刷牙洗脸。照一下镜子,胡子已经两天还是三天没剪了?一个个冒出了小尖。眼球里的血丝依然很多,每天都在抗议睡眠不足。三儿闭上眼睛,转动着眼球,以期待它还能再用几年,转动的时候,眼球的根部非常的酸痛,像眼球在吃腌黄瓜。 三儿从上往下像擦桌子搬抹了一把脸,李元的血肉总是觉得还在脸上,希望李元安康,但是三儿今天要去约会。

June 3, 2023 · 1 min