
《三体》中的“大多数人”
在《三体》中,刘慈欣通过浩瀚的历史叙述,探索了个体与集体之间的复杂关系。他对西式民主的质疑贯穿始终,反映出对大多数人自决命运的不安。书中众多英雄的努力与牺牲,最终却在历史的洪流中显得微不足道,彰显了个体在面对历史巨变时的无力感。故事从文化大革命的动荡开始,暗示着精英与平庸大众之间的深刻冲突,折射出对人性和社会的深刻思考。
日常 3080 字

6.5840 实验一 —— MapReduce
实验一的目标是实现一个 MapReduce 系统,分为 master 和 worker 两个核心部分。这个过程对 golang 的 RPC 和并发编程要求较高,同时需要深入理解 MapReduce 的流程。实验经历了两个版本的实现,从基于 mutex 锁的版本到更优雅的基于 channel 的无锁版本,后者的设计更加简洁明了。理解实验的关键在于认真阅读相关文档,特别是其中的流程图和说明。
笔记 2259 字

MapReduce 论文阅读
MapReduce 是一种高效的并行计算模型,旨在简化大规模数据集的处理。通过定义 Map 和 Reduce 两个关键函数,用户能轻松地将复杂任务分解为简单的操作。该模型的架构能够自动管理数据分发和任务调度,使得开发者可以专注于算法本身,而无需过多关注底层细节。这种方法在分布式系统中的广泛应用,展现了其强大的灵活性和实用性。
笔记 1469 字

CSAPP LAB 环境搭建
在学习 CSAPP 的过程中,实验环节的重要性不可忽视。然而,许多学生在搭建 Linux 环境时遇到各种麻烦,尤其是在使用虚拟机的情况下。诸如安装错误、兼容性问题、网络连接不畅等问题层出不穷,往往让人望而却步。为了解决这些障碍,WSL(Windows Subsystem for Linux)成为了一个理想的选择,尤其适用于 Windows 10 版本 2004 及以上的用户。WSL 提供了一个更为简洁、直接的方式来体验 Linux 环境,同时避免了虚拟机带来的复杂性和性能瓶颈。
折腾 1827 字

MYDB 10. 服务端客户端的实现及其通信规则
MYDB 采用 C/S 结构,类似于 MySQL,允许多个客户端通过 socket 连接到服务器,执行 SQL 查询并返回结果。通信采用了一种特殊的二进制格式,尽管也可以选择明文传输,以简化实现。服务端与客户端之间的基本传输结构确保了数据的有效交流和处理。
项目 1137 字

MYDB 9. 字段与表管理
表管理器(TBM)的职责是管理字段和表结构。通过对类 SQL 语句的结构化解析,Parser 能将语句信息封装为相应的类,从而简化后续操作。章节内容也包括 MYDB 使用的 SQL 语句语法,为理解整个管理过程提供了基础。
项目 1477 字

MYDB 8. 索引管理
MYDB 基于 B+ 树实现了聚簇索引。通过 IM 直接与数据管理(DM)交互,省略了版本管理(VM)层,确保索引数据直接写入数据库文件。章节中详细描述了二叉树索引的结构,涵盖节点的基本组成元素,包括叶子标记、键数量及兄弟节点标识等,为实现索引查找提供了基础框架。
项目 1220 字

MYDB 7. 死锁检测与 VM 的实现
VM 需要处理 MVCC 导致的版本跳跃及死锁问题。通过简单的标记方式,MYDB 能轻松撤销或回滚事务,确保 aborted 事务的数据不会影响其他事务。这种设计使得事务在处理并发时更为高效和可靠,避免了传统 2PL 方法常见的死锁风险,提升了整体系统的稳定性和性能。
项目 2036 字

MYDB 6. 记录的版本与事务隔离
VM 通过两段锁协议确保调度序列的可串行化,并引入多版本并发控制(MVCC),以消除读写阻塞问题。此外还定义了数据库操作中的冲突,特别关注更新与读取操作的相互影响,为理解事务间的隔离级别奠定基础。
项目 2783 字

MYDB 5. 页面索引与 DM 的实现
页面索引是 DM 层的重要组成部分,通过缓存每一页的空闲空间来优化插入操作。这一机制使得上层模块能够迅速定位合适的页面,避免了冗长的搜索过程,提高了数据处理的效率。在实现方面,页面索引与数据项(DataItem)的抽象紧密结合,为数据库的高效运行提供了支撑。
项目 1787 字