首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CSAPP lab

CSAPP学习过程 这篇文章主要记录CSAPP书和lab的学习过程,具体某个lab的踩坑过程会分别附单独链接,本文主要是记录漫长的学习过程以及方便想学但是尚未开始学习的同学参考,以下是github的lab...image.png Todo Bilibili翻译课程 lecture 1-4 搭建实验环境 Data lab Bilibili翻译课程 lecture 5-9 Bomb lab Attack...lab 前置材料 一本CSAPP CSAPP的bilibili翻译课程 实验材料 参考经验贴1 参考经验贴2 我想做些什么 开设这个仓库是想记录我做CSAPP的lab的过程,也顺便将踩坑过程分享,帮助后人少走弯路...学习过程(以Lab为单位总结) 简单查阅别的学习经验后,大多数人的分享都说看书再多遍也不如做lab学到的多,lab是课程的精髓,我已经粗略的学过编译原理,计算机组成原理和操作系统,所以我会比较快速的过一遍网课然后开始...lab,目标3个月完成大多数的lab(也许有一些实在不感兴趣的lab会跳过) Timeline 2022-03-30 完成Datalab 2022-03-28 完成实验环境搭建 2022-03-27 完成

1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MIT 6.830数据库系统 -- lab six

    MIT 6.830数据库系统 -- lab six 项目拉取 原项目使用ant进行项目构建,我已经更改为Maven构建,大家直接拉取我改好后的项目即可: https://gitee.com/DaHuYuXiXi...各个lab的实现,会放在lab/分支下。 ---- 引言 在本实验中,我们将要实现基于日志的中止回滚和崩溃恢复。源码中提供了定义日志格式的代码,并在事务期间的适当时间将记录附加到日志文件中。...要实现的是simpledb的日志系统,以支持回滚和崩溃恢复;在lab4事务中,我们并没有考虑事务执行过程中,如果机器故障或者停电了数据丢失的问题,bufferpool采用的是no-steal/force...synchronized (this) { preAppend(); // some code goes here // 获取事务...,判断是回滚还是重放 Map activeTransactions = new HashMap(); // 获取最新

    22520

    MIT 6.830数据库系统 -- lab four

    MIT 6.830数据库系统 -- lab four 项目拉取 原项目使用ant进行项目构建,我已经更改为Maven构建,大家直接拉取我改好后的项目即可: https://gitee.com/DaHuYuXiXi...各个lab的实现,会放在lab/分支下。...两阶段锁协议的主要内容如下: 在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁。在对任何数据进行读操作之前要申请获得S锁,在进行写操作之前要申请获得X锁。...|lab2 lockManager.releaseLock(pid,tid); } . . . } 解决死锁的方式有: 超时等待:对每个事务设置一个获取锁的超时时间,如果在超时时间内获取不到锁...读取某页前,需要获取页面的共享锁;写入某页前,需要获取页面的互斥锁。

    27030

    MIT 6.830数据库系统 -- lab two

    MIT 6.830数据库系统 -- lab two 项目拉取 原项目使用ant进行项目构建,我已经更改为Maven构建,大家直接拉取我改好后的项目即可: https://gitee.com/DaHuYuXiXi...各个lab的实现,会放在lab/分支下。 Lab Two lab2必须在lab1提交的代码基础上进行开发,否则无法完成相应的练习。此外,实验还提供了源码中不存在的额外测试文件。...操作迭代器意味着迭代器自身在遍历数据时,会根据自身实现搞点事情,Operator接口模板化了部分流程,各个需要在迭代器遍历时进行操作的子类,只需要去实现readNext这个核心方法,并且每次获取下一个元组的时候...children[0]; } } 装饰器模式要点有两个: 装饰器对象继承被装饰对象的抽象父类或者父类接口,这样我们才可以在使用时能够用基类指针接收被装饰后的对象实现 装饰器对象内部需要调用被装饰对象的方法获取数据...fetchNext方法这里就是Insert装饰器对象需要实现的方法,其内部调用被装饰器对象的next方法获取所有数据,然后执行insert操作,同时计算插入数据条数,最终返回的是插入的数据条数。

    32030

    MIT 6.830 数据库系统 -- Lab One

    各个lab的实现,会放在lab/分支下。...,例如: 这里并不提供SQL语言,而是通过一系列的查询操作来组成查询计划,在后续的实验中将会提供简单的解析器 视图 除了整数和定长字符串以外的数据类型 查询优化(后续实验提供) ---- Lab One...schema数据组成,我们将实现向catalog中添加table以及获取table信息的功能。...与table关联的是一个TupleDesc对象,通过该对象可以确定表字段个数和类型 SimpleDB含有一个Catalog的单例,我们可以通过Database.getCatalog()方法获取到该单例对象...它们从磁盘读取元组数据 本次实验,我们将会实现一个简单的操作,实现下面类中的方法: src/java/simpledb/execution/SeqScan.java 该操作通过构造函数的tableid扫描指定表的页获取元组数据

    35030

    ucore-lab7

    自行填写,懒得找了,可以参考kiprey 练习一 理解内核级信号量的实现和基于内核级信号量的哲学家就餐问题(不需要编码) 完成练习0后,建议大家比较一下(可用meld等文件diff比较软件)个人完成的lab6...和练习0完成后的刚修改的lab7之间的区别,分析了解lab7采用信号量的执行过程。...可以在proc的结构体里面增加信号量的相关代码,用于获取信号量的值,发出增加或减少信号量的请求,再由操作系统实现。详细可以参考kiprey,他参考了linux的实现。...//看注释知道要做什么 void cond_signal (condvar_t *cvp) { //LAB7 EXERCISE1: YOUR CODE cprintf("cond_signal...up(&(cvp->owner->next)); else //否则释放锁 up(&(cvp->owner->mutex)); // 尝试获取条件变量

    92630

    LAB_3 NAT

    LAB_3 NAT 一.NAT概述... 1 二.NAT综合实验... 3 三.TCP/UDP端口NAT映射... 5 四.利用地址转换实现负载均衡... 6 一.NAT概述 ·NAT核心思想:将私网地址转换成公网地址...数据包采用内部本地地址为源地址,外部本地地址为目的地址进行封装。 (2)NAT路由器先检查在路由表中是否有包含数据包目的地址的路由表项。如果没有与目的地址相匹配的路由表顶,则该数据包被丢弃。...如果有与目的地址相匹配的路由表项,则路由器检验数据包是否是从内部网络发往外部网络的,并且检验数据包是否与已配置的NAT匹配。...如果找到了,则把数据包的源地址用内部本地全局地址替换;如果仅配置了静态NAT,而没有与数据包匹配的静态NAT表项,则数据包不被转换,而直接被路由转发。...客户端自动获取IP ? 在边界路由器上配置默认信息源 ? 路由表 ? ? ? ? ? DNS ? Test ? ? ? 三.TCP/UDP端口NAT映射 该企业申请ADSL地址。

    5.5K10

    数据获取:认识Scrapy

    在最后的实战项目中,我们将会使用Scrapy来做数据采集并进行深度的数据分析和可视化。 在Scrapy的官网上对它的介绍是:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。...Downloader(下载器) 从调度器中传过来的页面URL,下载器将负责获取页面数据并提供给引擎,而后把数据提供给spider。...Item Pipeline(实体管道) Item Pipeline负责处理Spider中获取到的Item,并进行后期处理,比如详细分析、过滤、存储等等操作。...在Parse()方法中,主要是完成了两个操作:1.提取目标数据2.获取新的url。...['language'] = language yield item 重写的DoubanSpider 类中getDetailLinks()和getMovieDetail()引用自之前数据获取小节中的内容

    21520

    elasticsearch分页获取数据

    提到elasticsearch分页,可能首先想到的是类似mysql的那种处理方式,传入分页起始值以及每页数据量,es确实提供了类似的处理策略,代码如下: @Test public void searchFromSize...new SearchSourceBuilder(); searchSourceBuilder.query(QueryBuilders.matchAllQuery()); //每页10个数据...but was [11010] 为什么会使用index.max_result_window来限制搜索深度,因为这需要耗费大量内存,比如from为10000,es会按照一定的顺序从每个分片读取10010个数据...,然后取出每个分片中排序前10的数据返回给协调节点,协调节点会将从所有分片节点返回的10条数据再次进行统一排序处理,以此来返回全局排序前10的数据,如果有类似的需要可以使用scroll以及search

    1.1K10

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    热门标签

    领券