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

前言

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.mzph.cn/news/73186.shtml

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

相关文章

nodepad++ txt 转 csv

要将 Notepad 中的文本文件转换为 CSV 文件,您可以按照以下步骤操作: 打开 Notepad。打开您想要转换的文本文件。将文本文件的内容格式化为 CSV 格式。您可以使用逗号 (,) 分隔每个字段,并使用换行符 (\n) 分隔每行。保存文件并将其命名为以…

Java ArrayList扩容机制

来分析一下远吗吧 // 单个元素添加 public boolean add(E e) {modCount;add(e, elementData, size);return true;}// 批量add public boolean addAll(Collection<? extends E> c) {Object[] a c.toArray();modCount;int numNew a.length;if (numNew 0)return false;…

虚函数、纯虚函数、多态

一.虚函数 在基类的函数前加上virtual关键字&#xff0c;在派生类中重写该函数&#xff0c;运行时将会根据所指对象的实际类型来调用相应的函数&#xff0c;如果对象类型是派生类&#xff0c;就调用派生类的函数&#xff0c;如果对象类型是基类&#xff0c;就调用基类的函数。 …

HarmonyOS应用开发者-----高级认证试题及答案

HarmonyOS应用开发者高级认证试题及答案 试题会不定时刷新,本试题仅供大家学习参考 【判断题】 2/2 HarmonyOS应用可以兼容OpenHarmony生态 正确(True)【判断题】 2/2 所有使用@Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。 正确(True…

React基础

目录 TODO1 React概述 React的使用 React脚手架的使用 全局安装 npx安装 在脚手架中使用React JSX 1. JSX的基本使用 1.1 为什么用JSX 1.2 JSX简介 1.3 使用步骤 1.4 脚手架中能用JSX 1.5 注意点 2. 在JSX中使用JavaScript表达式 2.1 嵌入js表达式 2.2 注意点 3…

小节3:数据类型

Python的数据类型包括&#xff1a;字符串&#xff08;str&#xff09;、整数&#xff08;int&#xff09;、浮点数&#xff08;float&#xff09;、布尔类型&#xff08;bool&#xff09;、空值类型&#xff08;NoneType&#xff09;、列表&#xff08;list&#xff09;、字典&…

JUC P8 ThreadLocal 基础+代码

JUC P8 ThreadLocal 基础代码 教程&#xff1a;https://www.bilibili.com/video/BV1ar4y1x727?p100 引出问题 ThreadLocal 和 TreadLocalMap 数据结构关系&#xff1f; ThreadLocal 中的 key 是弱引用&#xff0c;为什么&#xff1f; ThreadLocal 内存泄漏问题是什么&#x…

协程 VS 线程,Kotlin技术精讲

协程(coroutines)是一种并发设计模式&#xff0c;您可以在Android 平台上使用它来简化异步执行的代码。协程是在版本 1.3 中添加到 Kotlin 的&#xff0c;它基于来自其他语言的既定概念。 在 Android 上&#xff0c;协程有助于管理长时间运行的任务&#xff0c;如果管理不当&a…

创邻科技图数据库课程走进一流高校

《图数据库原理和实践》 正式开课&#xff01; 最近&#xff0c;浙江大学计算机学院新开了一门名为 《图数据库原理和实践》 的新课程&#xff0c;该课程由创邻科技和浙江大学联合推出&#xff0c;吸引了许多学生踊跃参与&#xff01; 曾为浙大学子的创邻科技CTO周研博士作为…

51单片机-直流电机学习

简介 51单片机采用的是5V的直流电机 轴长&#xff1a;8mm 轴径&#xff1a;2mm 电压&#xff1a;1-6V 参考电流&#xff1a;0.35-0.4A 3V 转速&#xff1a;17000-18000 转每分钟 他的组成&#xff1a; 直流电机的结构应由 定子 和 转子 两大部分组成。 直流电机运行时静止…

如何在 Ubuntu 上安装 Nagios?

Nagios 的功能 Nagios 的一些关键功能包括&#xff1a; 主机和服务监控&#xff1a; Nagios 允许您使用提供实时状态数据的插件来监控主机&#xff08;可以是物理机或虚拟机&#xff09;以及 HTTP、SSH 和 SMTP 等服务。此功能使您能够全面了解整个基础设施的运行状况和可用性…

[小尾巴 UI 组件库] 组件库配置与使用

文章归档于&#xff1a;https://www.yuque.com/u27599042/row3c6 组件库地址 npm&#xff1a;https://www.npmjs.com/package/xwb-ui?activeTabreadme小尾巴 UI 组件库源码 gitee&#xff1a;https://gitee.com/tongchaowei/xwb-ui小尾巴 UI 组件库测试代码 gitee&#xff1a…

linux /proc/kcore

文章目录 前言一、简介二、读取/proc/kcore数据 前言 /proc/kcore 是 vmlinux在内存中的动态映像&#xff0c;可以使用gdb&#xff0c;objdump&#xff0c;crash等工具对其进行调试&#xff0c;从而获取当前系统内存中的数据。 一、简介 Linux /proc/kcore详解&#xff08;一…

Java(一)安装并使用 java(Windows)

安装并使用java 前言一、初识Java1.Java的安装1.1下载JDK1.2JDK安装与使用1.2.1安装1.2.2 IDEA&#xff08;编译器&#xff09;使用 2.Java运行编程逻辑&#xff08;重要后面要用&#xff09;总结 前言 学习很重要&#xff0c;复习也很重要&#xff0c;对于编程语言的复习更为…

开源|HDR-ISP开源项目介绍

引言 拖更很久了&#xff0c;本着出品必精的原则&#xff0c;我们更新就来点干货。想起刚入行时&#xff0c;网上并没有很多以及系统的ISP的学习资料&#xff0c;都是边工作、边搜集资料然后边学习&#xff0c;一路坎坎坷坷走到今天算是刚入了ISP的大门。 为了解决新人入门的…

JetBrains出品的IDE自动补全和提示文档设置

如题下图设置前景色和背景色&#xff1a; 效果如下图&#xff0c;标识1是Completion&#xff0c;标识2是Documentation&#xff1a;

1.8 工程相关解析(各种文件,资源访问

目录 1.8 工程相关解析(各种文件&#xff0c;资源访问) 分类 Android 基础入门教程 本节引言&#xff1a; 1.工程项目结构解析&#xff1a; 1.res资源文件夹介绍&#xff1a; 2.如何去使用这些资源 2.深入了解三个文件&#xff1a; MainActivity.java&#xff1a; 布局…

将 Qt Designer 的 ui 文件转换为 PySide2 使用的.py 文件

20201206 修订&#xff1a;在 Pyside2 的 5.15.2 版本中&#xff0c;从 ui 生成 py 文件过程&#xff0c;命令从 “uic” 变为 “pyside2-uic” Qt Designer 设计的 ui 文件&#xff0c;就是一个 xml 文件&#xff0c;通过 pyside-uic 可以转换成标准的.py 文件 。通过 QtDesi…

电商(淘宝1688京东拼多多等)API接口服务:提升商业效率和用户体验的关键

电商API接口服务&#xff1a;提升商业效率和用户体验的关键 随着电子商务的飞速发展&#xff0c;电商企业需要不断提升自身的业务能力和服务质量&#xff0c;以应对日益激烈的市场竞争。为了更好地满足商家和消费者的需求&#xff0c;电商API接口服务应运而生。本文将探讨电商…

Flink--2、Flink部署(Yarn集群搭建下的会话模式部署、单作业模式部署、应用模式部署)

星光下的赶路人star的个人主页 你必须赢过&#xff0c;才可以说不在乎输赢 文章目录 1、Flink部署1.1 集群角色1.2 Flink集群搭建1.2.1 集群启动1.2.2 向集群提交作业 1.3 部署模式1.3.1 会话模式&#xff08;Session Mode&#xff09;1.3.2 单作业模式&#xff08;Per-Job Mod…