在小长假的最开始

虽然对我而言,在校的每天都相当放假。不过还是挺期待这种大家都放假的氛围。 今天下午三四点困意袭来,看动漫到五点,还是上床睡了一觉。伴随着梦醒来的时候喉咙有点痒,咳了几声在黑暗中睁开了眼睛,室友都不在。一个人在昏暗中独自醒来,这样的时刻清明自由。 9.28 大四的预推免工作结束,wzj 本来挺想去中南的,也为之规划了挺久,后来阴差阳错去了哈工大,他初始觉得挺可惜,不过焉知非福了,未来的事谁说得准呢。于是在昨晚,叫上了高中的一些同学,主要聊天,顺便给 zj 分享了一些自己最近读研/工作的体会。也好久没和他们打电话聊天,开了个在线会议在 b 站直播。后来直播间提及了一些敏感词立马被封了。 我和 rzf 嫉恶如仇,拾人牙慧偷来的观点助长了某些人的傲慢,以至于他虚荣地给人贴上“思想觉悟不够”的标签,意识不到自己不尊重生命和人格的观点是多么丑陋,甚至放弃思考。很难想象这是身边相处很久的人会有的观点,也正因为是朋友,才会更加气愤。是的,没有人会永远单纯,只是想不到 ljj 走向复杂的第一步是变得如此不堪,也许这变化和他大四关注了某些 up 有关,也许从他们身上学到了新奇的思考问题方式,或是某些真知灼见,变得夸夸其谈,不会从自己能够理解的,能够把握住的角度出发,在空中轻飘飘地急于表现自己的进步。当人试图提醒他实事求是,他总能找到道理来找到反驳的角度,已经丧失了与最有血有肉的普通人共情的能力,放弃对真理的追求,当身边的朋友(lzh, rzf, 我)企图刺痛他时,他却是一副老成的样子,“就你们那个思想觉悟”。我现阶段已经放弃与他对话了,还是让生活对他严厉些,让他意识到自己和大多数百姓一样是个具体的人,面对不公时会气愤、遭受挫折是会消沉的,而不是在那里摆弄概念和卖弄观点。也许那时,还能做回没有缝隙的朋友。 谈到被封的直播间还是不得不表达出上面的想法,昨天 rzf 和 ljj 吵架也是因为这个,在那前几天我也刚因为这个和他吵架,更久之前 lzh 也有一段。 昨晚和高中同学们聊到很晚,总体上还是很放松满足的,看起来大家的生活状态不算差,尽管大家迷茫悲观仍有。但与之相对,有的时候意识到前路不明朗证明是在思考的,进步过程是在慢慢发生的。 希望自己能尽可能地时刻保持反思能力。 Donald Knuth - My advice to young people ) - YouTube If somebody said what advice would I give to a young person, they always ask that funny kind of a question. And I think one of the things that I would, that would sort of come first to me is this idea of, don’t just believe that because something is trendy, that it’s good. I’d probably go the other extreme where if something, if I find too many people adopting a certain idea I’d probably think it’s wrong or if, you know, if my work had become too popular I’d probably think I’d have to change. That’s of course ridiculous but I see the other side of it too often where people will do something against their own gut instincts because they think the community wants them to do it that way, so people will work on a certain subject even though they aren’t terribly interested in it because they think that they’ll get more prestige by working on it. I think you get more prestige by doing good science than by doing popular science because if you go with what you really think is important then it’s a higher chance that it really is important in the long run and it’s the long run which has the most benefit to the world. So usually when I’m writing a book or publishing a book it’s different from books that have been done before because I feel there’s a need for such a book, not because there was somebody saying please write such a book, you know, or that other people have already done that kind of thing. So follow your own instincts it seems to me is better than follow the herd. My friend Peter Wegner told me in the ’60s that I should, for “The Art of Computer Programming” I shouldn’t write the whole series first, I should first write a reader’s digest of it and then expand on the parts afterwards. That would probably work for him better than me, much better, but I work in a completely different way. I have to see something to the point where I’ve surrounded it and totally understood it before I can write about it with any confidence and so that’s the way I work, I don’t want to write about a high level thing unless I’ve fully understood a low level thing. Other people have completely different strengths I know but for me, you know, I wrote a book about a few verses of the Bible, once I understood those verses and sort of everything I could find in the library about a small part of the Bible, all of a sudden I had firm pegs on which I could hang other knowledge about it. But if I went through my whole life only on, without any in depth knowledge of any part then it all seems to be flimsy and to me doesn’t given me some satisfaction. The classic phrase is that liberal education is to learn something about everything and everything about something and I like this idea about learning everything about an area before you feel, if you don’t know something real solid then you never have enough confidence. A lot of times I’ll have to read through a lot of material just in order to write one sentence somehow because my sentence will then have, I’ll choose words that make it more convincing than if I, if I really don’t have the knowledge it’ll somehow come out implicitly in my writing. These are little sort-of-vague thoughts that I have when reflecting over some of the directions that distinguish what I’ve done from what I’ve seen other people doing. ...

October 1, 2022

C++ atomic

Strong / Weak Memory Model 强内存模型:常常指线性一致性(sequential model)。满足以下两个条件 程序按照源文件中的代码顺序执行; 各个线程的所有操作存在一个固定的顺序(global order)。想象各线程共享一个 gloabl clock; 弱内存模型:常常指 relaxed semantic. thread-1 可能看到 thread-2 不是按照其源文件中代码顺序来执行的; 甚至 thread-2 本身自己执行指令就不按照源代码顺序; 这两种模型间还有其他内存模型,比如 Acquire-release semantic. 内存模型越强,对于程序员来讲越好理解,但是对于系统(编译器、处理器、caches)来讲,留有的优化空间越小。反之,采用较弱的内存模型写的程序,具有很大的优化潜能,但是比较反人类直觉,一般程序员难以理解。 The Atomic Flag std::atomic_flag 是一个原子的布尔量,具有 clear, set 两种状态。clear 状态下值为 false, set 状态下值为 true。 成员方法: clear() 方法,将变量的值设置为 false。 test_and_set() 方法,返回变量的旧值并将变量值设置为 false。 C++20 新加入 test(), wait(), notify_one(), notify_all() 成员方法,本文暂不讨论,专注 C++11 内容。 初始化: 必须以如下方式初始化。 std::atomic_flag flag = ATOMIC_FLAG_INIT; std::atomic_flag flag(ATOMIC_FLAG_INIT); // !! unspecified. 特点: 唯一保证真正 lock-free 的原子量 (atomic)。lock-free 含义:系统范围内保证运行无阻塞。 ...

September 24, 2022

Tutorial: Dissecting, Designing, and Optimizing LSM-based Data Stores

Tutorial: Dissecting, Designing, and Optimizing LSM-based Data Stores 一篇 tutorial 性质的论文,主要介绍 LSM 的基本原理、存在的优化空间和目前已有的优化技术。论文主要内容分为三个部分: LSM Basics. 介绍 LSM 的基本原理。 Optimizing Ingestion. 介绍优化写性能的具体策略。 Tuning and Navigating the LSM Design Space. 分析了 LSM 策略的设计空间。 LSM Basics LSM 概念 LSM-tree: Log Structured Merge tree 用户逻辑视角上看,LSM 是一个提供索引服务的结构。LSM-tree 存储着一系列的 key-value 键值对数据,用户可根据 key 对数据项进行 get, put, update, scan 等操作。(通常 LSM-tree 结构里存储的数据项会被排序) 物理组织上看,LSM-tree 由两大组件组成。 位于内存: 某种数据结构 (比如跳表,各种排序树,vector, hash-skiplist, hash-linkedlist, 视场景的 workload 而定) 位于硬盘: 类似的结构但存储空间更大。硬盘中的数据都来自内存,即蕴含着某种层级关系。 如果 LSM-tree 结构共有 L 层,通常内存存储 Level0 层的数据,硬盘存储 Level1~LevelL 层数据。 LSM-tree 基本运作原则 批量写:任何写操作(插入、删除、更新)都会先记录到内存的某个数据结构即 Level0,当它容量到达上限时,LSM-tree 会根据 key 排序将内存中的数据转移到硬盘上。 ...

September 15, 2022

最后一个长暑假

回首起来,时间总是过得快的。这个暑假时间跨度从六月到九月,整体上过得还算满意。趁着还记得,记笔流水账,为将来的自己留些回忆遗产。 六月多毕业回家,和几个高中好友一起旅游,在武功山玩了几天。我们一贯的风格,没做什么攻略挑了个天气不算坏的日子就出发了,不知道那不算坏的天气是不是同学的阳寿起了作用。送我们去山脚的司机比较热心,一路上和我们六个人聊个不停,也给了我们很多小建议,比如上下山大概有哪些路,在哪扎帐篷看日出方便…… 后来我感慨司机就是我们的攻略。cfg,lzh,我属于是老年登山组,没走多少步就要停下来歇息,ljj 本来和我们一块走,后来实在看不下去嫌弃我们太拉了,大步向前跟上了 zq,rb 的青年队列。一路上风景很不错,远远传来的水声和山间的凉风让人欣喜,忍不住再和这自然更贴近一点,耳得之而为声,目遇之而成色。运气比较好,登顶后看到了据说比较少见的云海。傍晚时分,天边厚厚的云层并没有被吹散,绯红泛黄的云彩代替了期待中的日落的深沉绚烂。晚上的山顶异常得冷,在睡觉前,四个人挤到一个帐篷玩了些小游戏,后面听 ljj 蹩脚地讲鬼故事,虽然有几个确实吓到了我,那个“咚咚咚”的鬼故事应该会记很久吧。凌晨四点多些,我被帐篷外面一个女生的惊呼吵醒,“月亮好好看”。我顶着狂乱的寒风艰难地披上衣服穿上鞋,幽蓝的天空中,一些轻薄如纱的云雾向着同一个方向飘荡游走,月亮只有浅浅一钩,兀自遥远,让人觉得高冷不可亵玩的同时却又留有几分精致,像是这一山冷风不过是由她兴起翻手而生。后来的日出差强人意,不算让人印象深刻,翻看手机里存的照片,多的还是朋友们的合照,云海、黑夜有关的照片。 旅游回来那天,rzf 刚好放假回老家,于是我们一行几人跑去他家里住,没过几天 rb 就要去上海上班,cfg 也要去广州,索性趁人还在,多凑几天。ljj,rzf 见面没过多久就开始大谈政治,争得面红耳赤,整个过程从下午跨到晚上睡觉,又好笑又让我们觉得无语。rzf 家附近水库的景色不差于某些风景景区,傍晚一行人在乡间宽广的马路上有说有笑,日落的余晖映在我们身上,大家的聊天说笑声、不知道是谁的拖鞋声、草地上叫不出名字的鸟的鸣叫和远处黄牛传来的哞哞声混杂在一块。我很是感动,拍下了他们几前几后的照片。 后来回到家,开始给堂弟补习,他高考出来的成绩不太好,决定再来一年。想到这,又有一些世俗意义上的悲观想法,暂且不表,天下大同只能是奢望了,希望每个人(更希望我自己)都能够摆脱一个个跳圈,脱离一条条赛道。七月份里,主要活动:睡觉、看书、读词、备课、讲课、开黑、直播。看黑塞的那段时间估计又瘦了几斤,开黑实际上是和同学一起上号挨打,直播主要和一些好友聊天。不记得哪天去城里住了几天,和 ljj, wzj 小聚了下。七月末和网友开始搞项目。 堂弟 8.3 开学(尽管后来疫情原因延迟开学),便买了 8.1 广州的票,去那边陪陪爸妈。见面我妈便心疼地说又瘦了,后来某天闲聊时,我妈说我刚来的广州的时候,在家里晒得乌漆嘛黑,人又瘦,跟我们乡下作田的人一样,根本不像二十岁读大学的小伙子。我姐补刀:“穿得又土,我都不好意思和你站在一块出去(笑)”,催着我去买几件新衣服,我想太夸张了应该不至于吧,后来某个夜晚发现好像并不夸张。那天散步有一些累了,在去书店的路上随便找了个石墩子坐下歇息,有两个小伙递给我 zgyd 传单,让我帮他们扫下码,其中一个问我是在这边工作吗?(我内心:我看起来这么老吗?有点受伤。)我答道:还在念书,我看起来这么成熟吗?又问:读大专吗?我接着回道:我看起来这么像念大专的吗?他不依不挠还问念中专吗?方向跑偏的越来越远,我有点哭笑不得。后来解释开后,和他们聊了些其他,了解到他们也还在念书,是过来兼职的。扫码后,他们好意地让我抽下奖,貌似运气比较好,抽到个平板,再三确认我是不是第一次扫这种码,他们好像比我还高兴,骑电车载我去他们门店,引发了另一段略显遗憾的故事,害,心情复杂。 hys 在深圳上班,一个半小时左右的车程,某个周四晚到了他那边,主机,显示器,音响,小奶猫,书架和书籍……,让我很是羡慕这样的独居生活,我开始幻想以后我自己独居时,布置自己的房间和生活的那种舒适,hys 好像对我那样的兴奋状态有一点点意外。周一离开的深圳,几天里主要的活动就是睡觉逗猫,大吃特吃,开黑打游戏。印象深刻的某个片段,一晚和 hys 聊到很晚,已经是比较困的状态了,小猫躺在我的小腿边,聊天的时候突然感到脚背一阵温热,小猫把她的小爪子贴上来了,瞬间觉得她好温柔,真的很治愈。 从深圳那边回来,发现之前和网友一起搞的项目工期有点紧了,作为队长,感觉自己太摸鱼了,就开始一段小肝项目的生活。接近中午起来吃点东西就开电脑,整理下思路吃中饭,小小休息消化后,下午在隔壁的装修声中写代码。重复了这样一段时间,一下子就到了交付项目的日子,实际上我对我们做出来的东西很不满意,觉得代码写得也很烂,不想去答辩。于是画了张整体的架构图,整理了下相关资料帮助自愿答辩的队友参与答辩。后来由于功能完成度在同项目组里算是比较高的,工程量也相对较大,项目评比得了第一名。算起来奖品这几天也快到了。忙完项目的那几天也快开学了,而老家疫情比较严重,回去不太方便,报道证件和行李都在老家,费了一番周折将报道要的证件寄到广州,行李寄过来太过麻烦,只能暂且轻装上阵,以后放假回家再取了。是啊,今天就放假,可是疫情原因,还是回不了家。 我原以为本科毕业这长达近三个月的暑假虽然会很快乐,但也会比较大一部分时间会觉得无聊,就像高中毕业的那个暑假一样,没想到它超出了预期。感觉以后很难再有这样一个长假了,小小记录一下。 2022.9.9 晚

September 9, 2022

毕业日

我原本以为会结束得很平淡。拍完班级毕业照的第二天,变得有点茫然,甚至闪过想尽快离开这个地方的念头,我怕某些情绪逐渐变得汹涌。彼时想到我可能没意识到自己正拥有的是多么美好珍贵,心里隐隐升起些许担忧,也许未来的自己会扼腕叹息:应该更加勇敢的,应该再用心些感受的。 于是抑制下六月初离校的冲动,选择了稍晚的日期离校。 接下来的几个雨夜,按照以往,我该会很享受猜测雨水在漆黑中的声音的那份宁静,可我的心因为临近毕业的聊天框乱了起来,时间终究是自己的,十七到二十一,对时光易逝的感怀,回想起四年里那些我所珍视追寻的、我不以为意以及唾弃的、那些我所忽视的,回顾在相对自由的大学里的野蛮生长,分析起现如今我的人格三观,种种复杂情绪在心中交织酝酿,辗转了几个夜晚,早晨却过早地从梦中挣脱出来。 每当早晨呆呆地醒来,我总觉得我偷走的不只是我一个人的梦,也许还有那些我念的,想我的人的梦,不然胸间怎会如此空寂难填。 经受了几天的感官迟钝、极差的食欲以及思绪像被来自四周八方的锁链缚住一般再也飘荡不起来的折磨,在用所谓的理性度量之后,我终究还是选择了逃避这袭人的情感,冷漠地告诉自己,不过是某些生化反应最终体现在情绪的变化上罢了,日日平淡的生活和人的生理机制会让它们泛不起光泽的,我甘愿抽去这一层情感的抽象,思想变得轻盈了些许,劝说自己还是享受夜晚的气息吧。 事实上也确实如此,大约在14号,我那暴烈的忧伤与怅然就快要变得平淡了。 我很期待14号,天气预报说14,15号都是大晴天,想是那晚应是个繁星夜,答辩过后的每天,若是不下雨,我都会在傍晚出来散步,却从来没有看到过满天星光。不过那晚只有零星几点,幸好还有一轮皎洁明亮的满月,也不至于让我太过失落。下午和胡ys爬完山,本意打算是洗澡收拾后晚上去操场散步,中途和其他小伙伴大家一起打了会儿羽毛球,操场赏月时,我们先是自嘲了一番没文化,此情此景也只能联想得到前辈们的断章巧句,自己却只能吟出“这月亮真好看”,“这感觉真舒服”。 胡xx随意问起我对研究生生涯有没有什么期待,我答没什么期待,原本还挺期待苏州的大house——豪华两人间酒店改造而成的宿舍,因为个人空间很大,同时相比与四五个人共处一室,我更喜欢独处或者只与一个人相处的模式。至于研究生其他可预见的方面,想是挺让人无聊的。 胡感慨起,以后工作的时候,也可以顺便蹭附近深大的操场,享受如今晚这般的明月。 我答道,是呀,大家都还是学生模样,感受大学里的活力气息,说不定蹭操场的同时还能遇到有缘人。 胡笑着:说不定你研究生也碰到某些事情某些人,从此生活有了干劲和活力。 我也笑着答:说不定遭受某些打击,更加一蹶不振,比现在还死气沉沉哈哈。 也许是我那段话说得太有喜感,胡笑得更加放肆了。 离毕业就差最后的几项仪式了,夜里心乱的同时陪蚊子躺到凌晨四点,第二天七点二十起床赶赴院里毕业典礼,匆匆忙忙的路上又有了大一大二踩点上早八的感觉,最后平平淡淡地完成了略微期待的拨穗的仪式,次日领双证,那也应该是很多同学之间的最后一面,最后一次对话。虽与班上大部分同学交流并不多,但根据已有的交流和我不怎么可靠的观察,大家都很善良热忱,同时也很幸运遇上热心负责且靠谱的班干们,衷心地祝愿大家未来一切都好。也许之所以想单方面的在心里再好好告别这些交流不多的同学,是知道往后几乎不可能再有交集(作者可真是冷漠呵),就像我想写这些文字的缘由之一也是觉得应该对这四年时光进行告别,时间是自己的,没了就真的没了。而那些比较熟络的朋友和同学,临近毕业也纷纷聚会以作告别,但我心中感慨不多,知道以后若是想他们了,可以肆意对他们弹出一些毫无实义无营养的短讯。 四年的生活很长,南校夜间跑道上面人家的路灯昏黄浓重,放学时破烂水泥路上人头攒动的拥挤,新校成双成对的黑天鹅的脖颈舒展自由,图书馆内明亮开阔的安静,本部街灯下蒙蒙细雨不断闪烁着的微光,夏日树荫下随意散步的惬意……如此具体的事物实在是无法一一列举,像过往一样,还是将这些具体的事物和那些我未描述的人、生活活动保留在未来,相信这些记忆会在未来的回忆里变得更加朦胧美丽。对某一天的感受存在于当日和未来的某些日子里,某种意义上回忆延长了生命。 也许已经悄悄做好了告别,但我仍未准备好迎接未来,不过我也早已习惯,就像过往无数个未准备好迎接今日的昨日般。如果非要此时此刻刻下对未来的希冀,那便希望自己能逐渐变得勇敢,更加真诚地面对自己,更加真诚地理解这个世界。 短暂的总是具有美感的,还是毕业了。

June 17, 2022