CMU15445-project1-满分收获总结

CMU 15445 Project 1 Buffer pool CMU 15445 2023spring Project 1 Buffer pool 阅读详情


在这里插入图片描述

在这里插入图片描述

TASK #0 gradescope
0.0 关于线上测试的天坑

在gradescope上测试代码时,没有通过的案例如果显示的是超时,那不一定是因为死锁或者死循环!

  1. 我没有写线程安全的代码,显示的是超时
  2. 我代码有的部分会造成内存泄漏,显示的还是超时
  3. 死锁或者replacer复杂度太高确实有可能造成超时
TASK #1 - LRU REPLACEMENT POLICY
1.1线程安全

要求了线程安全但又没有说具体怎么做,以至于在最后才回来考虑上锁的问题。

其实很简单,在头文件内声明一个锁。在实现的每个函数开头上锁,结尾释放就行。

// 头文件
#include<mutex>
// 声明
std::mutex lock_;
//上锁(请求锁),释放锁
lock_.lock();
lock_
cmu15445 2023spring project0&1 cmu15445 2023 lab0&1 阅读详情

相关推荐

CMU15445-project3-满分收获总结

!!gradescope究极大BUG!!!开始之前ValueIndex数据存储三剑客tupleTableHeap数据表信息三剑客CatalogschemacolumnINSERTUPDATEDELETEHASHJOINLIMITDISTINCT排名拉了,没精力优化了太折磨了太痛苦了,看代码的时间比写代码的时间还多,很多天都处于完全没法动键盘的状态。SQL拆成一棵执行树之后,其中的节点的功能承担者,也是这次实验主要要完成的部。构造执行树时不会构造Executor,而是用后面的成员函数,和。........

Kprogram的博客 4786

CMU15445 (Spring 2023) #Project1 优化

基于这篇文章的总结部,在写的时候就能感觉到很多地方需要优化,且最终实现起来难度并不高,但效果是显著的。测试文件为 阅读测试文件的常量: 不难看出总共生成 6400 页,8个 scan 线程顺序进行再,8个 get 线程按 zipfian 布 进行再。最终评测成绩按以下公式计算: 其中 1ms 表示延时 1ms 再操作 从公式可以看出,我们希望 get 能最快优化1 按照课程的提示 替换策略认为短时间内访问次数多的页有更高的优先级。 对于为什么要更改替换策略, 我主要想了以下两个原因:最终经过不断实验

weixin_70354558的博客 1305

CMU15445-project2-满分收获总结

用来存储键值对的page,利用readable_[]判断当前index是否存有数据,occupied判断当前index是否装过数据(按道理这玩意儿没啥用)。而数组就用来存储键值对。 :其实可以看作是HashTable的信息存储地,因为需要并发控制以及保存关键信息,故直接利用一个page来存储这些信息,每次使用的时候提取该page出来就行。这里没有同以往的 TASK文档一样,明确告知我需要实现的文件在哪里,需要从最后面的测试需要提交的文件列表里面去找,但文档出现了...............

Kprogram的博客 1626

CMU 15445 Projec0 2022

设计C++ 11 的功能特性都有详细的解释,适合对C++不了解的人上手

HUSTIS1804的博客 3196

CMU15445 2024Spring 课程作业

CMU15445 2024Spring 课程作业。目前完成P1。正在学习P2课程

qq_28625359的博客 2867

CMU15-445 Project1总结2021

本篇博客是对CMU15-445课程project1的总结,代码的实现借鉴了一些其他前辈的代码,因为自己的C++实在是小白水平,对数据库的实现理解的也不够透彻,就抄了大家的代码,然后理解这些代码之后,再作此篇总结,加深对知识点的理解。 这里附上借鉴的博客:[已满分]CMU数据库15-445)实验1-BufferPoolManager。 本次实验的原文要求在这里PROJECT #1 - BUFFER POOL 关于本门课程的知识点总结我推荐[CMU-15445] 总述 Project1要求我们实现一个数据库

沈子鸣 4770

记录一下 CMU 15445 项目

CMU 15445 数据库课程,采用c++语言实现数据库存储引擎~

Unyielding will 7137

CMU15-445 PROJECT #1 - BUFFER POOL(Fall2020实验代码,已满分

实验说明:https://15445.courses.cs.cmu.edu/fall2020/project1 我的完整实验代码见github:https://github.com/nefu-ljw/database-cmu15445-fall2020(已通过gradescope所有测试点) 文章目录TASK #1 - LRU REPLACEMENT POLICY说明代码TASK #2 - BUFFER POOL MANAGER说明代码 TASK #1 - LRU REPLACEMENT POLICY 说明

nefu_ljw的博客 3697

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

CMU15445是一门关于数据库管理系统(DBMS)的设计和实现的优秀课程。由数据库领域大佬Andy主讲,同时还有迟策大佬所设计和维护的BusTub,其名声在外之处更是有着极高质量的作业(HOMEWORKS)和项目(PROJECTS)。

grq的博客 8540

2022 CMU15445 Project1

​在上面的实例中std::sort函数第三个参数应该是传递一个排序规则的函数,但是这个实例中直接将排序函数的实现写在应该传递函数的位置,省去了定义排序函数的过程,对于这种不需要复用,且短小的函数,直接传递函数体可以增加代码的可读性。Lambda表达式语法定义捕获列表。在C++规范中也称为Lambda导入器, 捕获列表总是出现在Lambda函数的开始处。实际上,[]是Lambda引出符。

weixin_45084090的博客 539

CMU15445 buffer pool 2021

CMU15445 buffer pool 2021源代码 lab1地址 源代码 LRU Replacement Policy //lru_replacer.h #pragma once #include <list> #include <mutex> // NOLINT #include <vector> #include "buffer/replacer.h" #include "common/config.h" namespace bustub { /**

最佳损友1020的博客 3579

CMU15-445 FALL 2022】Project #1 - Extendable Hashing

下面以插入这几个数为例,其中元素仅仅声明了key,并未标注对应的value,因为是根据key进行插入,以及查找等操作的,在下面的示例中, 你也可以理解为key == value。发生溢出,判断global_ depth _ 与发生溢出的桶的depth_大小关系。如下图所示,二者相等,依次进行->目录扩张->桶->重新连接。完成插入,后面越插入越复杂了,所以就到此为止了,注意: 不同的初始条件,插入元素得到的结果不同。再次尝试插入6,还是溢出,再进行判断。又尝试插入6,此时完成插入。

半生瓜のblog 1195

CMU15-445 2022 Fall 通关记录 —— Project 1: Buffer Pool

重点在于理解清楚前两个Task,第三个Task实现起来相对来说反而轻松

farewellyi的博客 1765

CMU 15-445 (FALL 2022) Project #1 Buffer Pool题解

CMU15-445 Project1的讨论

AntiO2的博客 2724

(全网最详细!!!)CMU15-445(Fall 2023)——从环境搭建开始的P0详细历程及踩坑经历

CMU15-445(Fall 2023)——从环境搭建开始的P0详细历程,以及各种各样的踩坑经历和解决办法,最最最最详细!

weixin_49614712的博客 8924

CMU15445 2022笔记(并发、多线程 & 聚集与排序)

1、blocking OS mutex(阻塞式的操作系统锁):不能应对大规模的多线程并发,如果一个线程进来锁住了一个变量,另一个线程会检查这个变量,然后这个线程会直接进入内核态然后进行sleep等待解锁将其唤醒。观察:不管怎么操作第一步就是锁根节点,B+树还支持叶子节点的扫描,但是B+树不支持死锁检测,因此需要自己设定一些规则,比如只支持从小到大的索引。若数据不大,都在内存之中则可以直接用之前数据结构中的排序算法进行,但是若数据很大,则难以将其全部存在内存中去,就需要用到其他的算法。一列K/V进行排序。

weixin_45261673的博客 1207

CMU 15445 2022 Fall P2 B+Tree Index

裂internal page的步骤为:1.新建一个空的page,2.将原page的一半转移到新page中,需要注意原page和新page的第一个key都是无效的,3.更新新page所有child page的父节点指针,指向新page,4.获取parent page,5.将用于区原page和新page的key插入parent page中,6.更新parent page中所有child page的父节点指针。若合并的是internal page,记得更新合并后page的子节点的父节点指针。

qq_41386543的博客 615

cmu15445 2021fall project1总结

project1阶段总结

Hxy_666的博客 1001
上一篇: 在vscode(win10)配置 CMU-15445-lab(linux子系统)
下一篇: CMU15445-project2-满分收获总结
Korpse
博客等级 码龄9年 115粉丝 25原创
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值