Sutdown Blog

「行至朝雾里,坠入暮云间」

协程库项目实现2

协程库项目实现2 - thread,协程类 thread 主要有两个类,Semaphore和Thread Semaphore 信号量,实现PV操作,主要用于线程同步 Thread 系统自动创建主线程t_thread 由thread类创建的线程。 m_thread 通常是线程类内部的成员变量,用来存储底层的线程标识符 t_th...

后端四种层式结构

B+ tree mysql,能够很好的组织磁盘数据。一般用B+树存储索引数据。结点映射相邻的磁盘页 (从磁盘中读取数据的时候,需要经过内核,系统调用,读取一个字节时会返回一页的数据) B+树和红黑树的区别 红黑树 平衡二叉搜索树 平衡规则在于从根节点到叶子结点所拥有的黑色结点数相同 查找时间复杂度O(logn) B+/B树 多路平衡搜索树 ...

协程库项目实现1

协程库项目实现1 github项目链接:GitHub - Sutdown/coroutinelib: coroutine lib 前言(碎碎念一下) 之前学着写了下lsm tree,学到的东西远比想象的要多,从九月份开始到现在,大概两三个月时间,和六级备考,一些课程期末作业并行,日均大概在10+h。两个月前写了个想法自嘲是虚假的科班选手,也没做,起码大学的前两年实在没走在学习cpp的正...

一篇心情不太好的碎碎念

好久没更了,来更一条吧。 这是写完后补的。我写这段的时候我的心情好差啊,类日记吧,不知道未来我的心态会不会平稳些,其实当初高三也是,压抑的高三我写完了两个很厚的本子,那里面包括我的每日计划,我的自我鼓励自我批评,也包括诸如这篇文章意义上的情绪倾诉。很明显,我高三养成的习惯页贯彻了我整个大学生活,看来我还是什么都没变啊。 还是絮絮叨叨着写吧,我要是抱着想写得有逻辑想写的深刻的想法,反而什么...

Debug-死锁和TLS连接

共享锁和独占锁的互斥 terminate called after throwing an instance of ‘std::system_error’ what(): Resource deadlock avoided Aborted (core dumped)(死锁导致中止) 解决: gdb定位 idle中发生死锁 IOManager::idle(),run in t...

协程详解

协程详解 前言 最近在学协程库,因为计划是12月底之前,时间有限想着直接从代码起步,果然这样子还是不好的,这几天很多东西处于一种似懂非懂的状态,很难受。所以决定写篇文章重新捋一下,之前也写过一点点,但是太浅了。 主要参考有没有C++大佬把C++20的协程讲解下? - 知乎这个问题中南山烟雨珠江潮 - 知乎的回答,以及代码随想录的协程库源码。 正文 进程线程协程 进程,线程,...

详谈leveldb中的sstable

惊讶的发现我之前看leveldb的时候没怎么仔细看这一部分),估计是看到后面懒了,现在补补。 先讲讲sstable在·leveldb·中的位置 (sstable全名Sorted String Table) 在leveldb中,当将memory db的数据持久化文件中时,leveldb会以一定的规则进行文件组织,文件格式变为sstable。 查询时,一般会通过footer先在meta ...

c++多线程

略有点烦躁,看到一篇讲c++多线程的文章,感觉还不错,大致的看看这部分。 这篇写的有点潦草,之后再补充吧。 前言 看到多线程其实容易想到多进程,还有几讲出现在标准库的协程,协程这块了解不多,大致是对线程之间更加细化的分配,深入学习的话可以看看网上的文章,或者腾讯的libco源码,这是我的打算,不过目前还没看。 回到正题,多线程和多进程的多任务处理都是一种并发执行。 多进...

leveldb源码阅读8 Orient面试

介绍一下这个项目(分模块) 本项目主要参考Google开源项目levelDB,实现了一个基于LSM结构的键值存储引擎。 项目中实现了日志、布隆过滤器、内存分配器、缓存管理、文件读写、SSTable存储、写前日志(WAL),MemTable管理等核心模块,对各模块进行了单元测试。用键值对存储,支持快速写入和高效查询,具备良好的稳定性和性能。 项目介绍: 本项目主要基于log s...

leveldb源码阅读7 Question

https://segmentfault.com/a/1190000009707717# 我喜欢这篇文章,写的很有意思。 1.讲讲leveldb是什么 LevelDB是Google开源的持久化KV单机数据库,特点在于使用键值对存储,支持快速随机读写,大容量存储操作。它使用LSM树结构,优化了写入性能,同时支持compaction以减少存储空间。但是LSM树的核心思想在于放弃部分读的性能换...