当前位置: 首页 > news >正文

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,就会正常测试。
在这里插入图片描述

相关文章:

  • Missashe考研日记-day29
  • CUDA编程 - 测量每个block内线程块的执行时间 - 如何应用到自己的项目中 - clock()
  • 数据库对象概述
  • layui时间范围
  • AI时代下前端的未来发展与当下状况
  • 100%提升信号完整性:阻抗匹配在高速SerDes中的实践与影响
  • 论文阅读_Citrus_在医学语言模型中利用专家认知路径以支持高级医疗决策
  • 【Vue.js】组件数据通信——基于Props 实现父组件--> 子组件传递数据(最基础案例)
  • 【网络入侵检测】基于源码分析Suricata的统计模块
  • conda和bash主环境的清理
  • C#进阶学习(十六)C#中的迭代器
  • 昆明理工大学2025年891计算机专业核心考研真题解析
  • 【函数解析】腐蚀与膨胀操作 skimage.morphology.dilation / erosion
  • Python pip下载包及依赖到指定文件夹
  • MAC如何安装多版本jdk(以8,11,17为例)
  • SplitReason:在复杂步骤借助更大尺寸模型推理,1.5B+32B,实现准确率28%提升+8倍速度提升
  • 医院信息管理系统全解析
  • vue跨域问题总结笔记
  • Flinkcdc 实现 MySQL 写入 Doris
  • GoLand包的爆红问题解决
  • 太好玩了!坐进大卫·霍克尼的敞篷车进入他画笔下的四季
  • 上海乐高乐园建设进入最后冲刺,开园限量纪念年卡将于5月开售
  • 见证上海援藏30年成果,萨迦非遗珍品展来沪
  • 校长套取学生伙食费设小金库,重庆通报6起违反八项规定典型问题
  • 下任美联储主席热门人选沃什:美联储犯下“系统性错误”,未能控制一代人以来最严重的通胀
  • 学校食堂饭菜有蛆?举报人遭值班人员辱骂?四川苍溪县教育局回应