0%

本片文章我们说一说leveldb中的文件命名规则。

这篇文章虽然放在前置知识,但是内部原理牵涉到leveldb中的Version相关类,所以看不懂没关系,只用知道一个结论:leveldb的所有带编号的文件共用一套编号系统,也就是说任何带编号的文件不可能有重复的编号。如不会出现 000001.ldb和000001.log文件这种情况。

阅读全文 »

本系列的前几篇文章并不准备深入到leveldb中的”核心“,而是分析一些leveldb中用到的”杂项“内容,如本文要说的Env类,后面要提到的编码、文件命名方式等。

阅读全文 »

1.leveldb源码阅读记录-整体架构

[toc]

0. 前言·

本系列文章是对leveldb源码分析的笔记,基本会包含leveldb中的方方面面。阅读过程中,参照网上各博客并加上了个人的理解,所以难免有错,如有错误还请告知。

如果你是刚开始看leveldb,我希望你对LSM有一定的概念。为了避免过度陷入代码细节,本文将解释leveldb的整体设计架构,各个组件的宏观设计,这样能在心里对leveldb有个轮廓,也能指导我们从哪里入手代码。

本文非写者编辑,转载自:http://cighao.com/2016/08/14/leveldb-source-analysis-02-structure/

阅读全文 »

本次lab Proxylab。 也是csapp的最后一个lab。

1.实验目的·

proxylab, 从最终目的来看,我们实现的是一个代理服务器。proxy接收来client的请求,转发给server,并从server中取得数据后,返回给client。另外,proxy从server中取回数据后还需要做cache,这样,当另一个client请求相同的数据时,就不用从server端请求数据,降低了server的压力。

再看看一些细节的要求,要求支持多线程请求,多线程涉及一些同步的问题,所以做的时候一定要考虑哪些是互斥资源,用什么方式同步等。

阅读全文 »

本次lab, shlab. 即编写一个简单的shell。

0. 背景知识·

shlab相对其它lab要简单一些,但是其中牵涉出来的一些概念是相当难的。简单说一下这次lab依赖的背景知识吧。

书籍对应 异常控制流 章节

  1. 理解进程的概念,linux如何创建新进程,进程的状态转换,回收等过程。
  2. 理解linux中的signal概念,掌握如何发送、接收、处理signal事件,理解signal handler中的 Async-Signal-Safety问题及解决方案(也是本次实验的难点) ,掌握async-signal-safety的guideline.
阅读全文 »

本次 lab, cachelab.

0. 说明·

从这个lab开始,终于开始编写一些高级语言的代码了,而不像之前要去分析汇编。但是这并不意味这题目就简单了,实际上,cachelab耗费了我2天多的时间。ok,言归正传,这个lab的目的是什么呢?

cachelab帮助我们理解计算机存储体系中的重要组成部分–cache。 理解cache是如何组织的,如何工作的,又是如何影响我们的程序的性能的。

阅读全文 »