LevelDB学习笔记(四) -- memtable结构实现
LevelDB学习笔记,本篇学习memtable结构实现,学习其基于的跳表实现细节。 1. 背景 前面跟踪学习了读写实现的基本流程,继续学习梳理其中具体的流程实现。本篇看memtable结构的实现,尤其是其中的跳表实现细节。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. 跳表 跳表利用概率均衡技术,加快简...
LevelDB学习笔记,本篇学习memtable结构实现,学习其基于的跳表实现细节。 1. 背景 前面跟踪学习了读写实现的基本流程,继续学习梳理其中具体的流程实现。本篇看memtable结构的实现,尤其是其中的跳表实现细节。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. 跳表 跳表利用概率均衡技术,加快简...
LevelDB学习笔记,本篇学习日志结构对应的实现。 1. 背景 前面跟踪学习了读写实现的基本流程,此篇开始学习梳理其中具体的流程实现。本篇先看日志结构对应的实现细节。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. 日志相关操作 2.1. 再看下总体流程 前面看过了写流程,这里再放一下: 如上,为...
LevelDB学习笔记,本篇学习其读写操作流程。 1. 背景 LevelDB学习笔记(一) – 整体架构和基本操作里做了基本介绍和简单demo功能测试,本篇看下对应的读写实现流程。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. UML类图 根据代码,画一下LevelDB相关类图,如下: 3. 写操作...
TIME_WAIT状态的连接收到同四元组的SYN是什么表现 1. 背景 星球实验:连接处于 TIME_WAIT 状态,这时收到了 syn 握手包,并参考4.11 在 TIME_WAIT 状态的 TCP 连接,收到 SYN 后会发生什么? 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. 问题描述 一个连接如果...
Linux存储IO栈梳理学习 1. 背景 最近从LevelDB开始,梳理学习存储方面的内容。这里补充下Linux的存储栈,并贴一下CPU、磁盘、网络等的大概耗时体感图。 主要参考学习:聊聊 Linux IO 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. Linux存储栈 2.1. 存储栈全貌图 Lin...
LevelDB学习笔记,本篇说明整体架构和基本操作,并进行代码验证。 1. 背景 之前学习了一些网络的内容,本打算把网络相关TODO先了结完再去啃存储、CPU、内存等基础和相关领域内容,但扩展开的话点有点多,就先留部分坑了,穿插学习。换一点新的东西,先学习梳理下LevelDB这个优秀的存储引擎。 这里先参考 官网 和 leveldb-handbook,并结合一些博客文章学习,自己再动手...
netfilter作为网络协议栈非常关键的一部分,本篇学习下netfilter和iptables,有助于理解TCP发送接收过程 1. 背景 在追踪内核网络堆栈的几种方式里记录了一下iptables设置日志跟踪的实践过程,CentOS8下为什么实验失败还没有定论。 平常工作中设置iptables防火墙规则,基本只是浮于表面记住,不清楚为什么这么设置,规则也经常混淆。 TCP半连接全连接...
介绍学习几种追踪内核网络堆栈的方式 1. 背景 看知识星球文章、以及查资料时,看到几篇文章里有的基于现象去跟踪定位内核代码、有的推荐比较好的学习内核网络方法,挺有收获。看里面的方式很想自己去学习掌握一下,于是有了这篇小结和实验文章。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. 几个输入源 1、根据现象一...
TCP发送接收过程相关学习实践和Wireshark跟踪,本节先介绍基本过程及如何使用TCP Stream Graphs 1. 背景 前段时间立了个flag,准备6月底完成之前的网络知识点TODO,已经月底了,常态性延期。 虽然没达到最终预期,但这种方式对提高效率确实管用,这几天是deadline,昨天看了好几篇之前放着没看的文章(初期计划是看+实验)。 最近学习时,很多文章来自下面几...
bpftrace学习和使用 1. 背景 前面学习bcc和libbpf时,提到Brendan Gregg等大佬们编写的工具集(几个示意图可参考:eBPF学习实践系列(一) – 初识eBPF ),这些工具已经能提供很丰富的功能了。 但是想自己跟踪一些想要的个性化信息时,需要基于Python或者C/C++写逻辑,写完后有时还要调试各类编译问题,于是学习下bpftrace的使用,实践中更容易上...