- 博客(15)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 LevelDB源码解析(五)
core skiptablenaruto log systemLSM Tree https://o444bvn7jh.feishu.cn/sheets/shtcn9ulkvMy9rAwUdnngNWBHLe?table=tbl3fU0dYPH8Rxb0&view=vewP2B92zvhttps://o444bvn7jh.feishu.cn/docs/doccn9NZDKDBPquLtYQuMTqNADggoogleTest https://google.github.io/googletest/pri
2023-08-14 14:34:28
314
原创 LevelDB源码解析(四)
SSTable的构成是由若干Data Block、若干Meta Data Block、一个Index Block和一个Footer组成。其中:Data Block为key-value存储的结构,由于LevelDB在查询数据的时候,又想顺序读取数据(顺序读要快于随机读),又想缩短查找数据的时间(试想,如果只使用顺序读,一次性读取很大的内存再顺序查找是较慢的),所以LevelDB将默认每16个数据为一组(Group或者下图的Entry)使用进行顺序读,每组之间使用十分查找。
2023-08-14 14:31:27
362
原创 LevelDB源码解析(三)
leveldb作者没有使用c++自带的字符串库,而是封装了一个表示字符串的指针和长度的Slice类,这样可以节省复制字符串带来的开销。
2023-08-14 14:30:07
467
原创 LevelDB源码解析(一/二)
reinterpret_cast 用于进行各种不同类型的指针之间、不同类型的引用之间以及指针和能容纳指针的整数类型之间的转换。快速管理内存,用于高频次的内存分配和释放,主要用在memtable和immemtable上。创建给定类型对象大小满足对齐要求的未初始化内存块,在一个内存对齐的缓冲区上创建对象。声明一个变量的析构函数永远不会调用,一般还会配合单例模板类使用。对象时,它试图接收给定互斥的所有权。但是可以使用移动语义,对右值进行所有权的传递。,同时提供了转移拥有权的接口。对象的作用域时,销毁。
2023-08-14 14:23:28
555
原创 从零开始Ubuntu20.04搭建QT+qtcharts+qtdatavis3d
从零开始Ubuntu20.04搭建QT+qtcharts+qtdatavis3d
2022-04-06 13:48:44
1684
原创 libpcap编译遇到的问题 ‘pcap_lookupdev’ is deprecated
libpcap编译遇到的问题问题1:warning: ‘pcap_lookupdev’ is deprecated: use ‘pcap_findalldevs’ and use the first device [-Wdeprecated-declarations]解决1在libpcap 1.1.1或是使用最新的版本libpcap1.10.1 都会出现这个报错,查询一番i以后,发现1.9版本及以后都不支持pcap_findalldevs函数,会报错。版本换到libpcap1.8.1 即可安装过
2022-03-30 10:05:21
1552
原创 QT入门(一)
1.下载和安装QT下载选择CN镜像下载即可。2.创建项目3.文件目录main.app#include "mywidget.h"#include <QApplication>//包含一个应用程序类的头文件。//argc命令行变量的数量,argv是命令行变量的数组int main(int argc, char *argv[]){ //a 应用程序对象 应用程序对象有且仅有一个 QApplication a(argc, argv); //窗口对象
2021-07-12 18:03:54
462
原创 C++primer学习笔记(4)
第十天1.复制构造函数只有单个形参,该形参是对本类类型对象的引用(常用const修饰)。根据另一个同类型的对象显式或隐式初始化一个对象。复制一个对象,传递给一个函数。从函数返回是复制一个对象。初始化顺序容器中的元素。根据元素初始化列表初始化数组元素。初始化的两种形式:直接初始化和复制初始化。直接初始化直接调用与实参匹配的构造函数。复制初始化调用复制构造函数。创建一个临时的对象,然后复制构造函数将那个临时的对象复制到正在创建的对象。作为一般规则,初始化容器元素,分配一个空容器并将一直
2021-07-11 13:11:07
295
原创 C++primer学习笔记(3)
第八天1. 泛型算法find函数如果不支持相等(==)操作符,或打算用不同的测试方法来比较元素,则可以使用第二个版本的find函数。这个版本需要一个额外的参数:实现元素比较的函数的名字。**泛型算法本身从不执行容器操作,只是单独依赖迭代器和迭代器操作实现。**算法从不直接添加或删除元素。比如操纵出入器(inserter)。#include<algorithm>#include<numeric>accumulate()int sum = accumulate(vec.b
2021-07-06 08:51:24
195
原创 C++primer学习笔记(2)
五. 第五天1.IO类型头文件:(支持char类型)iostream定义读写控制窗口的类型。fstream定义读写已命名文件的类型。sstream所定义的类型则用于读写存储在内存中string对象。前面加上w则是支持wchar_t类型。2.IO对象不可复制或赋值只有支持赋值的元素类型可以存储在vector或其他容器类型里。形参或返回类型也不能是流类型。3.状态每个IO类还定义了三个iostate类型的常量值,分别别哦啊还是特定的位模式。badbit标志着系统级的故障,如无
2021-07-02 15:37:02
316
原创 C++primer学习笔记
第一天1.基本算数类型boolcharwchar_t:用于扩展字符集short int longfloat double long double2.字面值常量以0开头的是八进制 以ox开头的是16进制128u (unsigned)1l (long)3. 字符‘A’ 表示单个字符A“A” = “A \0” 表示 字母A和空字符 两个字符 字符串4. 初始化直接初始化和复制初始化直接初始化更灵活更高效。int ival(1024); //直接初始化int ival
2021-06-30 10:52:08
277
关于C++函数参数声明的问题
2022-06-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人