摘要: 问题 之前都是在Linux上面安装docker,并且习惯了命令行操作。因此在Windows下面安装docker后,对于用鼠标进行启动的方式感觉不习惯,希望在Windows PowerShell下进行启动 参考资料 探索PowerShell (三) PowerShell下使用Aliases 为 Win 阅读全文
posted @ 2022-08-14 08:11 nhj11 阅读(5272) 评论(0) 推荐(0)
摘要: 问题 在centos7上编译leveldb时需要使用googletest,由于自带的gcc是4.8版本,没法通过编译(不支持c++11中的一些新特性),因此需要升级gcc。 解决 通过百度查询升级命令并正确安装。 $ sudo yum install centos-release-scl $ sud 阅读全文
posted @ 2022-08-13 07:34 nhj11 阅读(120) 评论(0) 推荐(0)
摘要: 概述 leveldb支持一个进程中多线程访问 leveldb会启动一个后端线程进行compact操作 涉及的竟态访问资源,memtable,sstable,manifest,各种文件的生成和删除 写操作 通过写队列的方式,只允许一个线程进行写操作 并且在写log和memtable会进行unlock, 阅读全文
posted @ 2022-07-23 14:51 nhj11 阅读(205) 评论(0) 推荐(0)
摘要: 跳表 参考资料 Skip List--跳表 特点 跳表插入、删除、查找元素的时间复杂度跟红黑树都是一样量级的,时间复杂度都是O(logn) 空间换时间,如果每层有1/2的概率保存数据,那么需要2n的空间 最底层链表会按顺序保存所有数据,因此区间查找效率高 leveldb跳表实现 节点定义 Node只 阅读全文
posted @ 2022-07-23 14:49 nhj11 阅读(166) 评论(0) 推荐(0)
摘要: Open open主要有两个功能:加载元数据重建current version和对log进行重做 graph TD; DB::Open==>DBImpl::Recover DBImpl::Recover-->Env::LockFile Env::LockFile-->Env::FileExists{ 阅读全文
posted @ 2022-07-23 14:47 nhj11 阅读(129) 评论(0) 推荐(0)
摘要: 一. 数据库文件 leveldb每个数据库对应一个目录并且每个数据库只能被一个进程打开。 *.ldb:数据存储文件 *.log:日志文件 MANIFEST-*:元数据信息 CURRENT:当前版本的元数据文件名 LOCK:文件锁,避免被多个进程打开 LOG:leveldb日志信息 二. 元数据文件 阅读全文
posted @ 2022-07-23 08:37 nhj11 阅读(434) 评论(0) 推荐(0)