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.pswp.cn/pingmian/78611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/78611.shtml
英文地址,請注明出處:http://en.pswp.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…