CMU数据库(15-445)Lab0-环境搭建
0.写在前面
从这篇文章开始。开一个新坑,记录以下自己做cmu数据库实验的过程,同时会分析一下除了要求我们实现的代码之外的实验自带的一些代码。争取能够对实现一个数据库比较了解。也希望能写进简历。让自己简历丰富一些。2020年课程的网址如下
https://15445.courses.cs.cmu.edu/fall2020/index.html
在这里可以找到课上的视频和ppt以及一些notes
实验一的说明地址如下 https://15445.courses.cs.cmu.edu/fall2020/project1/
实验一的github地址如下 https://github.com/cmu-db/bustub
1.环境搭建
这里我们使用docker搭建环境所以请大家先下载docker(docker所有系统都可以下,而且操作基本类似)
1.1 docker下载
在mac-os下我们可以利用homebrew很容易的安装docker。
brew install docker
当然去官网下载也很容易
https://www.docker.com/
进入官网之后按照如下步骤操作



然后点击docker的图标就可以运行了

你的电脑右上角会出现这个小标志

输入docker --version如果成功的话就表示安装成功了
(base) > docker --version
Docker version 19.03.13, build 4484c46d9d
2. 配置docker镜像

按照上面的点击顺序来配置镜像
把之前文本框里的内容用下面的替换
{
"experimental": false,
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn"
],
"features": {
"buildkit": true
}
}
输入docker info 如果能找到类似下面的内容则表示安装成功
Registry Mirrors:
https://docker.mirrors.ustc.edu.cn/
Live Restore Enabled: false
Product License: Community Engine
1.2 正式实验环境的搭建
先在github中把整个实验clone到本地。这里方法随意可以用git也可以直接下载。
进入整个实验在本地的地址。

这里需要在终端进入这个地址
cd /Users/zhouxiaolun/offer/cmu-db/bustub

然后执行下面的两条命令
$ docker build . -t bustub
$ docker create -t -i --name bustub -v $(pwd):/bustub bustub bash
随后执行这一条命令
docker start -a -i bustub
这个时候就可以进入我们的容器里。这个容器就是我们的实验环境啦。
随后就可以配置文件环境了。
在bustub文件中执行这一条命令
$ build_support/packages.sh
$ mkdir build
$ cd build
$ cmake ..
$ make
1.3 配置本地目录挂载
最后一步我们需要配置以下docker和本地目录的挂载来实现在本地修改在docker中自动同步
执行下面的命令
docker container run -it -v /Users/xxxx/yourFilePath:/bustub --name=bustub_env bustub /bin/bash
/Users/xxxx/yourFilePath 请替换成你自己想要进行同步的目录 :/bustub 也请替换成你自己想要命名的目录

这里的bustub目录就是和你本地目录同步的目录
同步完成之后可以发现在docker下的bustub目录和我们的yourFilePath文件实现了同步


完成上面的操作之后我们的配置就算完成了。
接下来我们可以在本机的编译器编写我们的代码。然后在docer中的虚拟容器上编译和运行我们的代码。


** 注意每次关闭docker在下一次运行的时候需要先启动我们的容器。**
- 先找到我们命名为bustub_env容器的容器id
docker ps -a

- 然后docker start 容器ID 启动我们的容器
- 输入以下命令进入到这个运行中的容器
docker exec -it 容器id /bin/bash
CMU数据库(15-445)Lab0-环境搭建的更多相关文章
- Unix/Linux环境C编程入门教程(15) BT5开发环境搭建
1. Backtrack 是处于世界领先地位的渗透测试和信息安全审计发行版本.有着上百种预先安装好的工具软件,并确定能完美运行,Backtrack5 提供了一个强大的渗透测试平台--从Web hack ...
- VS2017离线安装与Oracle数据库开发环境搭建
记得之前使用VS2015打开老的MVC4项目,不能右键创建控制器和添加视图,让我非常不习惯!找遍了网络无果,最后只能回到VS2013,但我就是不喜欢用旧的VS,这是不是病... 1.将VS2017离线 ...
- 有关WAMPSERVER 环境搭建 如何修改端口,MySQL数据库的修改
环境搭建 http://share.weiyun.com/88896747fedd4e8b19afebea18f7684c 一.修改Apache的监听端口 1.在界面中选Apache,弹出隐藏菜单选项 ...
- 数据库--PHP环境搭建
一: 1.PHP的架构 LAMP :Linux 阿帕奇 MySQL PHP WAMP:Linux 阿帕奇 Mysql PHP (集成的环境搭建软件),一键搭建PHP开发环境工具 2.修改数据 ...
- postgresql数据库异步流复制hot standby环境搭建
生命不息,test不止. 最近组里面修改了几个postgresql的bug,要进行回归测试,除了前面提到的WAL的RT测试和Mirroring Controller的RT测试,还要测试下postgre ...
- 026 SSM综合练习02--数据后台管理系统--数据库表创建及SSM环境搭建
1.数据库准备 本项目我们Oracle数据库,Oracle 为每个项目创建单独user,oracle数据表存放在表空间下,每个用户有独立表空间. (1)采用数据库管理员账号:SYSTEM,再配合数据库 ...
- 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~
一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
引导目录: Hibernate 系列教程 目录 昨晚喝多了,下午刚清醒,继续搞Hibernate.走起. 觉得还行的话,记得点赞哈,给我这个渣渣点学习的动力.有错误的话也请指出,省的我在错误上走了不归 ...
- 最新版ssh hibernate spring struts2环境搭建
最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...
随机推荐
- UML—20—001
这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzzcxy/2018SE1 这个作业要求在哪里 https://edu.cnblogs.com/campus/fz ...
- 为什么类只能用public修饰?
为什么类只能使用public修饰? 首先,类只能使用public修饰是一个伪命题,应该说我们只见到过使用public修饰的类,还有一些类没有访问修饰符,此时访问权限为default.其次,类实际上分为 ...
- [日常摸鱼]51nod1237-最大公约数之和V3-杜教筛
题意:求$\sum_{i=1}^n \sum_{j=1}^n gcd(i,j),n<=1e10$ 之前刚好在UVA上也做过一个这样求和的题目,不过那个数据范围比较小,一开始用类似的方法 $ans ...
- Flink连接器-批处理-读写Hbase
Flink批处理与hbase的读写 source-hbase 父类 是模仿官方写的. import org.apache.flink.api.common.io.LocatableInputSplit ...
- 赶紧收藏!Spring MVC 万字长文笔记,我愿奉你为王者笔记!
Spring MVC Spring MVC是目前主流的实现MVC设计模式的企业级开发框架,Spring框架的一个子模块,无需整合Spring,开发起来更加便捷. 什么是MVC设计模式? 将应用程序分为 ...
- Redis 6.0 多线程性能测试结果及分析
单线程的Redis一向以简洁高效著称,但也有其阿喀琉斯之踵:阻塞!单个线程在最容易产生瓶颈的网络读写(Redis大key)请求完成之前,其他所有请求都将会被阻塞,严重影响其效率,因此Redis的多 ...
- 使用xshell软件进行文件的上传和下载
1.选择xshell的文件里面的属性-->文件传输,把上传路径和下载路径设置好. 上传路径:介绍我们需要向Linux系统里面传东西. 下载路径:就是我们把Linux系统里面的大小拷贝出来. 2. ...
- ES标签搜索并解决评分排序问题
一.概述 需求: 最近在做一个新闻项目,有这样一个需求,如下: 用户根据视频内容手动创建标签,标签个数不限 在视频详情页提供根据标签推荐视频功能,即按本视频的标签进行搜索,标签匹配多的排在前面,匹配少 ...
- ipython快捷键
IPython Notebook有两种不同的键盘输入模式(编辑模式和命令模式). 编辑模式:允许你输入代码或者文本到一个单元格(cell这里我译作单元格)内,并且单元格外面有灰色的选中框(注:Jupy ...
- new 的原理和实现
new 运算符内部做了如下四个操作: 创建一个空的简单 JavaScript 对象(即{}): 链接新对象(即设置该新对象的构造函数)到函数对象: 将新创建的对象作为 this 的上下文: 如果该函数 ...