周记04|2025.07.28 - 08.03 暑假第五周
本文是对20250728 - 0803 的记录与思考
阅读有关Parquet和ORC的论文;并发程序的新理解;矩阵和矩阵乘法的理解;开坑线性代数的正式学习和记录;准备学习Rust
1. 本周进展总结
😍Database Systems
- 阅读了 CMU 15-721 Lecture02配套的论文,这是一篇深入剖析 Parquet 与 ORC 内部结构与性能的研究论文。论文不仅详细介绍了两种列式存储格式的设计思路,还结合现实世界的数据分布设计了一套基准测试框架,系统性评估了它们在不同负载下的表现与存储效率,并对未来更现代化的列式结构提出了设计建议
- 观看了对应的 CMU15-721 Lecture02
🤔Operating Systems
- 阅读了《Operating Systems: Three Easy Piceces》25,26,27章
- 观看了南京大学jyy老师的Lecture03和Lecture04,内容分别是
- jyy老师通过并发程序状态机的视角,使我对于并发编程中的原子性、顺序性、可见性,及不同编译优化级别(如
-O1、-O2)带来的行为差异有了新的理解。尤其是 Lecture 03 中提到的一个观点:CPU 本身也是一个“编译器”,以前虽然学过微指令的概念,但从未意识到流水线级别的乱序也会带来数据竞争
📏Linear Algebra
- 学习了MIT 18.06 线性代数课程的Lecture 01, 02, 03 ; 阅读了教材《Introduction to Linear Algebra》的2.1, 2.2, 2.3, 2.4, 2.5 ; 并结合《线性代数的本质》系列视频进行了补充理解
- 怒写五篇笔记,正式再次"开坑"对于线性代数的学习和记录
- 这周在矩阵与矩阵乘法方面有了前所未有的理解
🌠CMU15213 CSAPP
✍️英语词汇
- 完成单词书Chapter2的学习
🌐个人网站
- 集成 Giscus评论系统

2. 日历工具的探索
这周尝试把 Notion Calendar 和 Google Calendar 结合起来用,来统一管理我的日程安排。用下来感觉还挺不错的
Notion Calendar的优点
- 可以直接集成并显示Google日历
- 与自己的Notion相连,在Notion中可以根据自己的需要搭建数据库,比如设置状态,优先级等属性(Google日历的活动没有状态,任务没有截止时间)
Google Calendar的优点
- 可以设置重复活动(每周重复,单双周,特定次数,重复到特定时间)
- 更适合协作,可以通过Gmail邮件来安排与别人的活动
所以我最终选择了用Noiton日历管理学习任务,用Google日历管理课表与协作日程,再将Google日历集成到Noiton中统一视图
另外一个小收获是,我发现其实不需要再手写一张一周计划了,完全可以直接在日历里把每天的任务和大致时间排好
3. 矩阵和矩阵乘法的理解
这周通过线性代数的学习,真的是在在矩阵和矩阵乘法上有了新的理解
矩阵的不同理解
- 列向量的排列组合
- 线性方程组的系数
- 一种对线性变换的描述,是对标准基向量变换后的位置的描述
矩阵乘法
- 单个元素 --
是对A矩阵i行和B矩阵j列的对应元素的点乘 - 列向量 -- C中的列是对A中的列的一种线性组合,而按什么组合,按的是B中的线性关系进行组合的
- 线性变换的角度
- 可以理解为对列向量或列向量组进行线性变换
- 如果B不是列向量的话,也可以理解为两次线性变换的综合效果
- 行向量 -- C中的行是对B中各行的线性组合,而线性关系是A中的行向量决定的
- 一列乘一行
4. 处理器也是"编译器"
x++这个操作的底层是由三条汇编指令(读,加,写)组成的,在并发编程中并不能保证其原子性,可能会导致竞态条件和一些不可预测的行为
更进一步,我们的编译器为了优化性能,会对指令进行整合 调整,而不同的优化做的事情不一样,-O1、-O2不同的优化带来了不同的结果
其实真正我没想到的是: 即使是一条指令,在处理器内部也未必“安全”
这是因为处理器也是“编译器”,它会把汇编指令拆解成多条微指令,并在内部进行流水线执行、乱序执行
其实回想起来微指令,流水线技术,超流水线技术当时在计算机组成原理中学过了,但是却没有想到这一点
5. 新计划 -- 下周开始学习Rust
从下周开始,我决定每天晚上都安排一点时间来学Rust,第一个学习资源我选择了新南威尔士大学的课程COMP6991,是一门受好评的Rust入门课
6. 其他的一点想法
- 随着周记越来越多,准备给网站加一个Reflections详情页,用来放周记、总结、随笔、灵感、反思
- 准备在Noiton上搭一个账本系统,开学使用