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.mzph.cn/pingmian/78611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…