摘要: 整个文章其实并没有讲解太多地细节方面的事情,主要是理一下大致的逻辑, 大致存什么, 和有关的对象的粗略介绍,主要是为了建立对各个对象的直观认识,知道它是什么,我觉得对后面更细节的分析也是有一定帮助的 1. 如何调用到 CompactMemTable() 上一部分我们讲到了 MaybeSchedule 阅读全文
posted @ 2025-04-06 09:39 rustic-stream 阅读(37) 评论(0) 推荐(0)
摘要: 简单地过一下 levelDB 中 dbimpl.cc 中的 write 逻辑 首先需要说明的就是当我们调用 DBImpl::Put 操作的时候,实际上他会调用 DB::Put 默认的实现,调用到对应的 DBImpl::Write 操作。 简单地过一些对应的步骤,主要是分成了 4 个大部分吧 第一部分 阅读全文
posted @ 2025-04-04 09:34 rustic-stream 阅读(29) 评论(0) 推荐(0)
摘要: 这篇文章是对《STL源码剖析》第二章空间配置器的笔记,并没有记录地非常细致,主要记录一些点,如果想看细节读原文是最好的 为什么需要空间配置器 首先我们要理解为什么我们需要空间配置器,从一个简单的自己实现的 vector 开始 vector(int size = 10) { _first = new 阅读全文
posted @ 2025-04-03 19:44 rustic-stream 阅读(33) 评论(0) 推荐(0)
摘要: 在 03. 无锁栈的内存管理 我们讨论了两种检测是否节点可以被删除的方法:reference count 和 hazard pointers 方法,但是事实上是它们的管理方式比较复杂,需要考虑的比较多,而说到生命周期的管理,我们很自然而然地会想到类似 std::shared_ptr<> 的使用,所以 阅读全文
posted @ 2025-04-01 07:45 rustic-stream 阅读(56) 评论(0) 推荐(0)
摘要: Managing memory in lock-free data structures 正如之前我们在上一章,一开始讨论的那样,为了防止 dangling pointer,我们将 5. delete old head 跳过,那这样会造成内存泄露 The basic problem is that 阅读全文
posted @ 2025-03-30 08:53 rustic-stream 阅读(20) 评论(0) 推荐(0)
摘要: sequenceDiagram participant MainLoop as 主线程EventLoop participant SubLoop as 子线程EventLoop participant Eventfd as eventfd唤醒机制 MainLoop->>SubLoop: 调用runI 阅读全文
posted @ 2025-03-29 17:35 rustic-stream 阅读(58) 评论(0) 推荐(0)
摘要: C++ 并发编程实战 7.1 7.2 设计无锁栈部分 阅读全文
posted @ 2025-03-29 08:41 rustic-stream 阅读(42) 评论(0) 推荐(0)
摘要: C++的3种memory model: + sequentially consistent + relexed + acquire-release 对应5.3章 阅读全文
posted @ 2025-03-28 07:24 rustic-stream 阅读(31) 评论(0) 推荐(0)
摘要: 了解了文件系统后,也理解了他是如何进行路径解析找到对应文件的情况后,如果是本机的情况下,是可以很好地通过地址进行方法,但是,我们常常会使用U盘,使用移动硬盘,在我们使用的过程中,外部的系统是如何与我们的本地的文件系统产生关联的呢?我们是如何访问它们的呢,因为在本机的情况下我们都是使用文件路径进行访问 阅读全文
posted @ 2025-03-18 16:14 rustic-stream 阅读(34) 评论(0) 推荐(0)
摘要: 好了,到现在为止从01. 数据在磁盘中的存储 和 02. 数据在flash的存储,我们理解了说在硬件层面上数据的存储,也理解了为了使得文件系统和底层的物理特性解耦合,我们在文件系统中设定了 "逻辑块" 的概念,并且使用 映射层 来实现从逻辑块和物理地址的映射,不论是基于磁盘还是基于flash。由此我 阅读全文
posted @ 2025-03-18 13:08 rustic-stream 阅读(63) 评论(0) 推荐(0)