摘要: [TOC] 成员变量 vector迭代器类型就是普通指针类型。 内部维护三个指针,start指向内存起始处,finish指向下一个放内存的地址,end_of_storage指向可用内存末尾。 迭代器 vector的迭代器就是普通指针: 构造函数 以 为例。 首先分配n个元素所需要的内存,然后用val 阅读全文
posted @ 2019-06-27 09:32 gatsby123 阅读(616) 评论(0) 推荐(0) 编辑
摘要: [TOC] 内存分配和释放 STL中有两个分配器,一级分配器和二级分配器,默认使用二级分配器,使用二级分配器分配大内存时会调用一级分配器去执行,一级分配器使用malloc和free分配和释放内存。如果分配小内存那么二级分配器会从内存池中进行查找,防止malloc/free的开销。 为了了解原理,不深 阅读全文
posted @ 2019-06-27 00:01 gatsby123 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 最近研究了下cmake,总结了一些常用命令,方便以后快速查找。 1. project(projectname [CXX] [C] [Java]): 1. 设置工程名。 2. set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]]): 1. 设置变量VAR为指定值 阅读全文
posted @ 2019-05-18 14:06 gatsby123 阅读(1406) 评论(0) 推荐(0) 编辑
摘要: 概述 本lab将实现一个锁管理器,事务通过锁管理器获取锁,事务管理器根据情况决定是否授予锁,或是阻塞等待其它事务释放该锁。 背景 事务属性 众所周知,事务具有如下属性: 1. 原子性:事务要么执行完成,要么就没有执行。 2. 一致性:事务执行完毕后,不会出现不一致的情况。 3. 隔离性:多个事务并发 阅读全文
posted @ 2019-05-01 16:35 gatsby123 阅读(2188) 评论(0) 推荐(3) 编辑
摘要: 概述 经过几天鏖战终于完成了lab2,本lab实现一个支持并发操作的B+树。简直B格满满。 B+树 为什么需要B+树 B+树本质上是一个索引数据结构。比如我们要用某个给定的ID去检索某个student记录,如果没有索引的话,我们可能从第一条记录开始遍历每一个student记录,直到找到某个ID和我们 阅读全文
posted @ 2019-05-01 10:34 gatsby123 阅读(4405) 评论(1) 推荐(1) 编辑
摘要: 概述 最近又开了一个新坑,CMU的15445,这是一门介绍数据库的课程。我follow的是2018年的课程,因为2018年官方停止了对外开放实验源码,所以我用的2017年的实验,但是问题不大,内容基本没有变化。想要获取实验源码的同学可以上github搜,或者直接clone我的代码,找到最早的comm 阅读全文
posted @ 2019-03-28 10:20 gatsby123 阅读(3871) 评论(2) 推荐(0) 编辑
摘要: 概述 lab2中实现了raft协议,本lab将在raft之上实现一个可容错的k/v存储服务,第一部分是实现一个不带日志压缩的版本,第二部分是实现日志压缩。时间原因我只完成了第一部分。 设计思路 ![kvserver](https://blog 1253119293.cos.ap beijing.my 阅读全文
posted @ 2019-03-22 20:22 gatsby123 阅读(1703) 评论(0) 推荐(0) 编辑
摘要: [TOC] 摘要 raft是一种比paxos容易理解的一致性算法,实现起来比paxos简单许多。本文前部分描述算法的细节,后部分尝试探讨下该算法的原理。 算法描述 raft算法之所以简单的原因之一是它将问题分解成三个子问题,分别是: 1. Leader选举 2. Log复制 3. 安全性保证 概述 阅读全文
posted @ 2019-03-22 13:00 gatsby123 阅读(1340) 评论(0) 推荐(0) 编辑
摘要: 概述 本lab将用go完成一个MapReduce框架,完成后将大大加深对MapReduce的理解。 Part I: Map/Reduce input and output 这部分需要我们实现common_map.go中的doMap()和common_reduce.go中的doReduce()两个函数 阅读全文
posted @ 2019-03-20 20:36 gatsby123 阅读(553) 评论(0) 推荐(0) 编辑
摘要: 概述 MapReduce是由JeffreyDean提出的一种处理大数据的编程模型,用户定义map和reduce函数,map函数处理原始数据生成一系列键值对中间数据,reduce函数并合相同key的键值对。 编程模型 整个计算过程输入的是键值对,输出的也是键值对。用户只需要提供两个函数分别是Map和R 阅读全文
posted @ 2019-03-20 17:12 gatsby123 阅读(515) 评论(0) 推荐(0) 编辑