CMU15445 fall 2022/spring 2023 项目环境搭建+选择合适的版本

news2024/9/21 20:37:21

前言

CMU15445是一门关于数据库管理系统(DBMS)的设计和实现的优秀课程。由数据库领域大佬Andy主讲,同时还有迟策大佬所设计和维护的BusTub,其名声在外之处更是有着极高质量的作业(HOMEWORKS)和项目(PROJECTS)。总的来说,15445共有五个项目,最终会实现一个面向磁盘的传统关系型数据库 Bustub 中的部分关键组件,包括 Buffer Pool Manager (内存管理), B Plus Tree (存储引擎), Query Executors & Query Optimizer (算子和优化器), Concurrency Control(并发控制),分别对应Project 1 到Project 4,而Project 0(C++ Primer)是检测学生是否有能力完成该课程的C++测试,要求实现一个支持并发操作的键值Trie(spring 2023增加了copy on write),文档中也提到如果你不能满分通过这一关,那还是推荐你退掉(drop)这门课 ┭┮﹏┭┮。
好了,话不多说,让我们开始美妙的学习之旅吧。


参考资料

ButTub Github
CMU15445 fall 2022 FAQ
clang报错


环境配置(Linux/Mac yes,WSL not guaranteed work)

Cloning this Repository

1.首先你要创建一个Github仓库(repository),请务必设为私有(Private),并且不要公开你的代码。
在这里插入图片描述

2.clone 一个bare仓库,该仓库为公共存储仓库
git clone --bare git@github.com:cmu-db/bustub.git bustub-public
3.进入bustub-public,将项目push到第1步创建的远程私有仓库中,这一步相当于进行了duplicating a repository以后就可以在我们创建的仓库中修改、提交代码了。

cd bustub-public
git push git@github.com:guoruiqi01/test_for_15445.git # 你自己的远程仓库

在这里插入图片描述

现在远程私有仓库已经有内容了,我们可以将第2步clone下来的公共仓库内容删掉。

cd ..
rm -rf bustub-public

4.将远程私有仓库clone到本地
git clone git@github.com:guoruiqi01/test_for_15445.git
5.(这一步我没搞懂什么意思,但还是照着做了)添加公共 BusTub 存储库作为第二个远程存储库。这允许我们从 CMU-DB 存储库检索更改,并将它们与整个学期的解决方案合并:
git remote add public https://github.com/cmu-db/bustub.git
检查是否添加成功:
git remove -v

origin	https://github.com/guoruiqi01/test_for_15445.git (fetch)
origin	https://github.com/guoruiqi01/test_for_15445.git (push)
public	https://github.com/cmu-db/bustub.git (fetch)
public	https://github.com/cmu-db/bustub.git (push)

Build

1.使用脚本配置软件包
sudo build_support/packages.sh
2.由于我们做的是2022 fall,而现在官网是给本学期的学生使用的,因此我们要找到2022年的版本,最后一次布置的作业是在Nov 17, 2022发布的,我们需要在commits里找到该日期附近的版本号(5e0b917ca00af46ebca8a1eea218c219c1b55aa1),并git checkout过去,如果你做最新版本不需要做这一步。
在这里插入图片描述

git checkout 5e0b917ca00af46ebca8a1eea218c219c1b55aa1
3.接下来构建项目,创建build生成目录

mkdir build
cd build
cmake ..
make

这里可能会报一个warning:
WARNING "!! We recommend that you use clang-12 for developing BusTub. You're using GNUxxx, which is not clang."
从我们的参考链接中得知,项目需要用到clang-12作为编译器,而编译时用了其他的。
你可以先查看机器上是否安装了clang-12

where is clang-12
where is clang++-12

如果没有你可以安装它,并将选择使用的默认版本:

# 安装
sudo apt install clang-12
sudo apt install clang++-12

# 使用默认版本
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-12 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-12 100

然后将安装路径加到CMakeLists.txt中即可解决。
在这里插入图片描述

接下来再构建项目应该就没有warning了。


Gradescope在线测评

作为non-CMU的学生,我们也可以将写好的项目上传进行自动测试和排名,2022 fall的邀请码(Entry Code) 是PXWVR5。FAQ里我们能找到链接:
在这里插入图片描述

我们注册一个帐号,并选择Student。
在这里插入图片描述

学校要填Carnegie Mellon University,ID可以不填。
这就完成了注册:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/959571.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言每日一练--Day(17)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字:数对 截取字符串 💓博主csdn个人主页:小小unico…

如何在访问一个页面时,将访问时刻的时间显示在页面上

1.如何在访问一个页面时,将访问时刻的时间显示在页面上 GetMapping("/append") public ModelAndView append() {ModelAndView mvnew ModelAndView("expense/append");String date LocalDate.now().toString();mv.addObject("date",d…

OTFS-ISAC雷达部分最新进展(含matlab仿真+USRP验证)

OTFS基带参数设置 我将使用带宽为80MHz的OTFS波形进行设计,对应参数如下: matlab Tx仿真 Tx导频Tx功率密度谱 帧结构我使用的是经典嵌入导频帧结构,Tx信号波形的带宽从右图可以看出约为80Mhz USRP验证 测试环境 无人机位于1m处 Rx导频Rx…

Python爬取京东商品评论

寻找数据真实接口 打开京东商品网址查看商品评价。我们点击评论翻页,发现网址未发生变化,说明该网页是动态网页。 API名称:item_review-获得JD商品评论 公共参数 获取API测试key&secret 名称类型必须描述keyString是调用key&#xff…

source insight 宏 MakeBufClip

趁着工作间隙在搞一些source insight 的宏,当在使用这个 MakeBufClip 的时候,出现了问题,如: 居然是未知的命令,可是这个是从官方文档里参考的啊:MakeBufClip (hbuf, fClip) 然后我也是尝试一下发邮件给 s…

Ansible自动化运维工具(三)

目录 Ansible 的脚本 --- playbook 剧本 ​编辑2.vars模块实战实例 3.指定远程主机sudo切换用户 4.when模块实战实例 5.with_items迭代模块实战实例 6.Templates 模块实战实例 (1)先准备一个以 .j2 为后缀的 template 模板文件,设置引用…

Linux 常见命令操作

一、目录管理 1.1 列出目录 ls # ls 命令 # -a 参数,查看全部的文件,包括隐藏的文件 # -l 参数,列出所有的文件,包括文件的属性和权限,不显示隐藏文件 [rootlocalhost /]# ls bin boot dev etc home lib lib64…

<数据结构>AVL树详解

目录 AVL是什么? 平衡因子 旋转 左单旋 右单旋 左右双旋 右左双旋 全部的代码 AVL树又叫平衡树(Balance_Tree),笔者认为这个名字非常不错,中国嘛,就是在意阴阳平衡,之前小编还拿这个当过自己网络IP&#xff0c…

计算机组成原理之计算机系统概述(补充)

目录 一、引入二、计算机发展历程2.1 什么是计算机系统2.2 硬件的发展2.3 软件的发展2.4 目前的发展趋势2.5 小结 三、计算机硬件的基本组成3.1 早期冯诺依曼机的结构3.2 现代计算机的结构3.3 小结 四、各个硬件的工作原理4.1 主存储器的基本构成4.2 小结 五、计算机系统的层次…

常见项目管理中npm包操作总结

前言 我们在日常工作中,可能需要下载包、创建包、发布包等等。本篇推文将记录日常项目中关于npm包的操作。 引用包 npm仓库公开的包我们都可以通过npm install的命令进行引用下载。 而我们开发的业务公共组件需要在公司内部项目公共引用,而不希望公开为外…

Java“牵手”京东店铺所有商品API接口数据,通过店铺ID获取整店商品详情数据,京东店铺所有商品API申请指南

京东平台店铺所有商品数据接口是开放平台提供的一种API接口,通过调用API接口,开发者可以获取京东整店的商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片、价格信息等详细信息 。 获取店铺所有商品接口API是一种用于获取电商平台上商品详…

狂神汇编原理

1.汇编(可以破解软件,写外挂…) ------计算器语言----- 2.机器语言 0和1 c>汇编—>二进制 INC --抽象-->编译器 0100 0000DECMULDIV3.进制 10进制(10个手指) 可以自己定义进制,作为进制加密解密,查数 1进制 一进一 写出2 ->1 1 2进制 0 1 10 11 100 101 110…

使用Arrays.asList生成的List集合,操作add方法报错

早上到公司,刚到工位,测试同事就跑来说"功能不行了,报服务器异常了,咋回事";我一脸蒙,早饭都顾不上吃,要来了测试账号复现了一下,然后仔细观察测试服务器日志,发现报了一个…

springboot实战(四)之整合mybatis-plus

目录 环境: 准备: 开始: 1.创建表t_user 2.项目添加依赖 3.配置 1.配置mysql链接信息 2.在启动类配置mapper扫描路径 4.创建实体类 5.创建mapper 6.测试 环境: jdk:1.8 springboot版本:2.7.15…

3D虚拟数字人定制+AI交互数字人技术,助力企业开启营销新思路

近日,番茄小说推出数字人IP番卷卷,其承担着连接现实世界与番茄世界的重要角色,作为用户进入番茄世界的数字导游。数字人番卷卷的出现,一方面能够强化品牌在用户层面的心智,另一方面可以让用户拥有多层次、多情感、角色…

C++ while 循环

只要给定的条件为真,while 循环语句会重复执行一个目标语句。 语法 C 中 while 循环的语法: while(condition) {statement(s); }在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。condition 可以是任意…

防雷接地+防雷检测综合应用解决方案

防雷接地和防雷检测是防雷工程中的重要内容,它们旨在保护建筑物和设备免受雷电的危害。地凯科技将介绍防雷接地和防雷检测的基本原理、施工案例方案和国标措施。 防雷接地是指将建筑物的金属结构、防雷装置和电气设备与地面连接,形成一个接地系统&#…

vscode宏键绑定

开发语言php 实现输入[ 得到 [];的效果 [win]ctrlp,[mac]superp 输入>keyboard 选择 在json文件里增加(目前有缺陷,sublime的设置是比较完美的.或者phpstorm默认不需要配置): {"key": "[","command": "editor.action.insertSnippet&…

CUDA Toolkit多版本安装与配置

CUDA Toolkit多版本安装目的是为了将CUDA Toolkit支持多个版本,并将当前版本更新到后续支持常见pytorch的版本(即cuda11.6),目前该系统默认安装的是cuda10.2,cuda11.0和cuda11.2。CUDA一般有两种API,一个是…

PMD代码检查:没有使用的私有字段(UnusedPrivateField)

https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_bestpractices.html#unusedprivatefield 如果代码中的private字段声明了、或者赋值了,但没有被用到,就报违反项。例如: 但是从PMD 6.50.0版本开始,如果私有字段上有任…