摘要: https://www.cnblogs.com/LubinLew/p/CppNamespace.html 阅读全文
posted @ 2018-11-17 10:36 MH1092 阅读(85) 评论(0) 推荐(0) 编辑
摘要: C++类成员函数分为静态成员函数和非静态成员函数,而非静态成员函数又分为普通函数和虚函数。 Q: 为什么使用虚函数 A: 使用虚函数,我们可以获得良好的可扩展性。在一个设计比较好的面向对象程序中,大多数函数都是与基类的接口进行通信。因为使用基类接口时,调用基类接口的程序不需要改变就可以适应新类。如果 阅读全文
posted @ 2018-11-13 14:55 MH1092 阅读(326) 评论(0) 推荐(0) 编辑
摘要: LevelDB文件类型 下面的log文件,sst文件,临时文件,清单文件末尾都带着序列号,序号是单调递增的(随着next_file_number从1开始递增),以保证不会和之前的文件名重复。另外,注意区分db log与info log:前者是为了保障数据安全而实现的二进制Log,后者是打印引擎中间运 阅读全文
posted @ 2018-11-13 11:36 MH1092 阅读(1079) 评论(0) 推荐(0) 编辑
摘要: 一、LevelDB简介 LevelDB是Google开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。LevelDB应用了LSM (Log Structured Merge) 策略,lsm_tree对索 阅读全文
posted @ 2018-11-13 10:28 MH1092 阅读(1501) 评论(0) 推荐(0) 编辑
摘要: leveldb的write代码初看瞎搞一堆,细看则实为短小精悍。1 Status DBImpl::Write(const WriteOptions& options, WriteBatch* my_batch) { 2 // A begin 3 Writer w(&mutex_); 4 w.batc 阅读全文
posted @ 2018-11-09 18:02 MH1092 阅读(601) 评论(0) 推荐(0) 编辑
摘要: deque容器为一个给定类型的元素进行线性处理,像向量一样,它能够快速地随机访问任一个元素,并且能够高效地插入和删除容器的尾部元素。但它又与vector不同,deque支持高效插入和删除容器的头部元素,因此也叫做双端队列。deque类常用的函数如下。 (1) 构造函数 deque():创建一个空de 阅读全文
posted @ 2018-11-09 17:09 MH1092 阅读(7115) 评论(0) 推荐(1) 编辑
摘要: 1. LevelDB的写数据过程 在LevelDB中,我们通过调用db->Put(WriteOptions(),&key,&value)来写入数据,而WriteOptions只有一个变量sync,且默认初始值为false,因此leveldb默认的写数据方式是异步,即每将写操作提交将数据写入到内存中就 阅读全文
posted @ 2018-11-09 12:17 MH1092 阅读(1061) 评论(0) 推荐(0) 编辑
摘要: 在 2006 年的 OSDI 上,Google 发布了名为 Bigtable: A Distributed Storage System for Structured Data 的论文,其中描述了一个用于管理结构化数据的分布式存储系统 - Bigtable 的数据模型、接口以及实现等内容。 本文会先 阅读全文
posted @ 2018-11-09 11:48 MH1092 阅读(589) 评论(0) 推荐(0) 编辑
摘要: 说明:这篇文章主要介绍了理解LevelDB所需要的一些基础知识,主要是一些基础代码和基本机制。了解这些有助于对LevelDB的理解 ,同时这些实现基本上都出自Sanjay和Jeff Dean(Google GFS MapReduce Bigtable的缔造者)之手,其中的很多实现都非常不错,值得学习 阅读全文
posted @ 2018-11-09 11:17 MH1092 阅读(758) 评论(0) 推荐(0) 编辑