CMU-15445(1)——环境搭建

前言

最近在找完暑期实习之后,终于有了一些干项目外的空余时间学习新的知识,在这么多轮面试中,数据库的考察非常多,但孱弱的数据库基础导致我有很多次面试被问住,因此我希望在学习CMU-15445(Fall 2024)的过程中能夯实我的基础,更好的理解数据库在计算机中的应用。

我将从本节开始记录我从查找资源、注册以及后续project提交的过程。

1. 准备工作

1.1 Gradescope注册

在学习课程之前,我们需要注册一个Gradescope账号用于提交测试我们的project,并留记录以证明自己的学习经历。

非CMU学生如果要测试project,需在网站Gradescope提前注册账号。

  • 确保将学校设置为“Carnegie Mellon University”
  • 参赛代码为“WWWJZ5”

1.2 clone仓库

课程主页:CMU 15-445/645 :: Intro to Database Systems (Fall 2024)

github:cmu-db/bustub: The BusTub Relational Database Management System (Educational)

过程如下:

  1. 首先,在自己的github下创建新存储库

  2. 在PC上,创建公有 BusTub 存储库的克隆:

    $ git clone --bare https://github.com/cmu-db/bustub.git bustub-public
    
  3. 将公有BusTub镜像到刚才创建的新存储库中:

    $ cd bustub-public# If you pull / push over HTTPS
    $ git push https://github.com/student/bustub-private.git master# If you pull / push over SSH
    $ git push git@github.com:student/bustub-private.git master
    

    我这里使用的SSH协议,用户名和仓库名写为自己新创建的仓库名和用户名,如下:

    $ git push git@github.com:qiaobeibei/cmu-15445.git
    

    但是在 push 过程中,遇到了一个问题:

在这里插入图片描述

这里需要我们配置有效的SSH密钥,从而能通过GitHub的身份验证:

  1. 我们先查看本地是否已经存在SSH密钥:

    $ ls -al ~/.ssh
    

    如果存在id_rsa.pub(RSA 密钥)或者 id_ed25519.pub(Ed25519 密钥),则说明本地已存有密钥,如下

    在这里插入图片描述

    将id_rsa.pub 文件的内容输出到终端,然后复制:

    $ cat ~/.ssh/id_rsa.pub
    

    在这里插入图片描述

    如果密钥不存在,那么我们需要生成新的SSH密钥:

    $ ssh-keygen -t ed25519 -C "your_email@example.com"
    

    your_email@example.com是我们Github上注册的邮箱地址。

    生成密钥后,启动SSH代理并将新生成的密钥添加到代理中:

    $ eval "$(ssh-agent -s)"
    $ ssh-add ~/.ssh/id_ed25519
    

    若使用的是 RSA 密钥,就把 id_ed25519 替换成 id_rsa。

    然后查看密钥内容,并复制。

  2. 将SSH 公钥添加到 GitHub 账户

    1. 登录 GitHub 账户,点击右上角的头像,然后选择 Settings。

    2. 在左侧菜单中,点击 SSH and GPG keys。

    3. 点击 New SSH key 按钮。

    4. 在 Title 字段中,输入一个描述性的名称,例如你的电脑名称或使用场景,方便你识别这个密钥。

      在这里插入图片描述
      在这里插入图片描述

    5. 在 Key 字段中,粘贴你刚才复制的公钥内容。

    6. 点击 Add SSH key 按钮保存设置。

  3. 测试SSh连接

    输入以下指令,测试SSH连接是否正常:

    ssh -T git@github.com
    

    执行该命令后,输入密钥的密码短语,若出现以下结果,则连接成功:

    在这里插入图片描述

    其中,username 是 GitHub 用户名,可以正常使用 SSH 协议克隆和操作仓库了。

再次克隆仓库:

$ git push git@github.com:qiaobeibei/cmu-15445.git

push成功后,删除刚才clone到本地的公有 bustub-public 仓库。

$ cd ..
$ rm -rf bustub-public
  1. 将我们的个人仓库clone到本地计算机

    # If you pull / push over HTTPS
    $ git clone https://github.com/student/bustub-private.git# If you pull / push over SSH
    $ git clone git@github.com:student/bustub-private.git
    
  2. 将公共的 BusTub 仓库添加为第二个远程仓库

    $ git remote add public https://github.com/cmu-db/bustub.git
    

    使用以下命令验证远程仓库是否已成功添加:

    $ git remote -v
    

    预期输出示例:

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

    在这里插入图片描述

1.3 环境部署

首先要配置LLVM的C/C++环境,这一步非常重要,可以参考文章:CMU15445 2023spring环境准备 | JoyTsing

简要流程:

  1. 安装LLVM全家桶+cmkae

    sudo apt install clang clangd lldb cmake
    
  2. 安装LLVM

    wget https://mirrors.tuna.tsinghua.edu.cn/llvm-apt/llvm.sh
    chmod +x llvm.sh
    sudo ./llvm.sh all -m https://mirrors.tuna.tsinghua.edu.cn/llvm-apt
    
  3. Vscode所需插件:

    在这里插入图片描述

1.4 build

首先cd到项目根目录下,运行脚本安装依赖

$ sudo build_support/packages.sh

然后编译流程和官网介绍一样:

Then run the following commands to build the system:

$ mkdir build
$ cd build
$ cmake ..
$ make

If you want to compile the system in debug mode, pass in the following flag to cmake: Debug mode:

$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make -j`nproc`

This enables AddressSanitizer by default.

If you want to use other sanitizers,

$ cmake -DCMAKE_BUILD_TYPE=Debug -DBUSTUB_SANITIZER=thread ..
$ make -j`nproc`

There are some differences between macOS and Linux (i.e., mutex behavior) that might cause test cases to produce different results in different platforms. We recommend students to use a Linux VM for running test cases and reproducing errors whenever possible.

后续就是跟着project的介绍一步步做,完成project的task后,通过下面的命令进行测试:

$ cd build
$ make -j$(nproc) hyperloglog_test
$ ./test/hyperloglog_test

运行编译好的测试程序即可测试:

./test/hyperloglog_test

在这里插入图片描述

确保从测试用例名称中移除了 DISABLED_ 前缀,不然这些测试用例不会运行。如果想要运行某个之前被禁用的测试用例,只需把 DISABLED_ 前缀去掉即可。

比如要测试./test/buffer/lru_k_replacer_test.cpp,需要将测试用例第二个形参开头的DISABLE_前缀去掉,然后再次make,就会正常测试。
在这里插入图片描述

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

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

相关文章

CSS元素动画篇:基于当前位置的变换动画(四)

基于当前位置的变换动画(四) 前言透明效果类元素动画闪烁动画效果效果预览代码实现 淡入动画效果效果预览代码实现 淡出动画效果效果预览代码实现 结语 前言 CSS元素动画一般分为两种:一种是元素基于当前位置的变换动画,通过不明…

STM32驱动AD5318配置8通道DA详细讲解

目录 1. AD5318 芯片特性 2、AD5318寄存器概述 3、SPI数据帧格式 3.1 控制位(Bit15) 3.2 地址位(Bit14-Bit12,3 位) 3.3 数据 / 控制码(Bit11-Bit0) 4、控制功能寄存器(控制位 = 1 时激活) 4.1 参考与增益配置(MM = 00) 4.2. LDAC模式(MM = 01) 4.3 掉…

如何搭建spark yarn 模式的集群集群

以下是搭建Spark YARN模式集群的一般步骤: 准备工作 - 确保集群中各节点安装了Java环境,并配置好 JAVA_HOME 环境变量。 - 各节点间能通过SSH免密登录。 - 安装并配置好Hadoop集群,YARN作为Hadoop的资源管理器,Spark YARN模式需要…

SpringMVC处理请求映射路径和接收参数

目录 springmvc处理请求映射路径 案例:访问 OrderController类的pirntUser方法报错:java.lang.IllegalStateException:映射不明确 核心错误信息 springmvc接收参数 一 ,常见的字符串和数字类型的参数接收方式 1.1 请求路径的…

在 Windows 系统上升级 Node.js

一、查询电脑端已经安装的 Node.js 版本 1、通过【winR】 键,输入 cmd,点击【确定】按钮打开 cmd 窗口 2、命令行界面输入 node -v 查看目前 Node.js 版本 3、命令行界面输入 npm -v 查看目前 npm 版本 二、进入官网地址下载安装包 1、官网地址&#x…

深入详解人工智能数学基础——概率论中的马尔可夫链蒙特卡洛(MCMC)采样

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

C++ 嵌套类 (详解 一站式讲解)

目录 嵌套类 嵌套类的定义 嵌套类结构的访问权限 pimpl模式(了解) 嵌套类 嵌套类的定义 首先介绍两个概念: 类作用域(Class Scope) 类作用域是指在类定义内部的范围。在这个作用域内定义的成员(包括…

tcp 和http 网络知识

1. 请简述TCP和HTTP的定义与基本概念 TCP:即传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议。它为互联网中的数据通信提供稳定的传输机制,在不可靠的IP层之上&a…

MySQL安装的多个组件中无用组件卸载

在决定卸载MySQL的哪些组件前,需根据你的实际使用场景判断。以下是各组件的主要功能及卸载建议: 1. 核心组件卸载建议 组件名称作用是否可卸载MySQL Server数据库服务核心,存储数据、处理SQL请求的核心程序。不可卸载 (卸载会导致…

CosyVoice 技术全景解析:下一代语音生成模型的革命性突破

目录 一、CosyVoice 模型概述 1. 背景与定位 二、技术架构与创新 1. 核心架构设计 2. 关键技术亮点 三、行业地位与竞品对比 1. 市场定位分析 2. 竞争优势 四、部署方案与硬件成本 1. 硬件需求 2. 优化技巧 五、优势与挑战 1. 核心优势 2. 主要挑战 六、开源生态…

rabbitmq-集群部署

场景:单个pod,部署在主节点,基础版没有插件,进阶版多了一个插件 基础版本: --- apiVersion: v1 kind: PersistentVolume metadata:name: rabbitmq-pv spec:capacity:storage: 5GiaccessModes:- ReadWriteOncestorage…

[密码学实战]商用密码产品密钥体系架构:从服务器密码机到动态口令系统

[密码学实战]商用密码产品密钥体系架构:从服务器密码机到动态口令系统 关键词:商用密码、密钥体系、服务器密码机、金融数据密码机、动态口令、智能密码钥匙 摘要:本文深度解读商用密码产品的核心密钥体系架构,涵盖服务器密码机、金融数据密码机、VPN产品、动态口令系统及…

【unity游戏开发入门到精通——UGUI】UI事件监听接口

注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——UGUI】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言1、什么是UGUI事件接口?2、想要监听事件步骤 一、事件接口1、U…

Spark知识总结

宽窄依赖:父RDD的分区只对应下面子RDD的一个分区,为窄依赖。其余为宽依赖 维度‌‌窄依赖‌‌宽依赖‌数据传输无shuffle,本地处理14需shuffle,跨节点传输14并行度高(允许流水线并行)57低(需等…

铭记之日(3)——4.28

铭记之日(3)——4.28 25.4.28,绝对是继20.12.19与24.6.26之后,又一个被钉在耻辱柱上的日子。 4.28本质上为12.19的严重恶劣版。 道德败坏、恶劣的大骗子终于在今日穿帮落马。 斯文面孔下,竟藏匿了如此罪恶幽暗混沌的内心。 24.10.20&…

第16节:传统分类模型-支持向量机(SVM)在图像分类中的应用

一、引言 支持向量机(Support Vector Machine, SVM)作为一种经典的机器学习算法,自20世纪90年代由Vapnik等人提出以来,在模式识别和分类任务中表现出卓越的性能。 在深度学习兴起之前,SVM长期占据着图像分类领域的主导地位,即使…

《系统分析师-第三阶段—总结(六)》

背景 采用三遍读书法进行阅读,此阶段是第三遍。 过程 本篇总结第11章第12章的内容 第11章 第12章 总结 软件架构设计是宏观,基本架构确定之后,开始了系统化设计, 系统设计中对应的基本部分的知识较多,基础知识是第…

new的使用

上次堆区的介绍中,我们提到了一个关键字new,那今天我们就详细讲讲它 今天我们主要将两个内容 1.new的基本语法 2.用new创建数组 1.new的基本语法 new,可以在堆区中创建空间,来存放数据,就比如像下面这样 int* p new int(29);//n…

使用python实现自动化拉取压缩包并处理流程

使用python实现自动化拉取压缩包并处理流程 实现成果展示使用说明 实现成果展示 使用说明 执行./run.sh 脚本中的内容主要功能是: 1、从远程服务器上下拉制定时间更新的数据 2、将数据中的zip拷贝到指定文件夹内 3、解压后删除所有除了lcm之外的文件 4、新建一个ou…

香橙派打包qt文件报错“xcb 插件无法加载”与“QObject::moveToThread”线程错误的解决方案

PyQt 报错总结:打包文件过程,“xcb 插件无法加载”与“QObject::moveToThread”线程错误的解决方案全解析 在使用 PyQt5 搭建图形界面时,打包文件的过程中出现的问题,真难绷,搞了半天。 Qt 平台插件 xcb 无法加载QOb…