自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 问答 (1)
  • 收藏
  • 关注

原创 CSAPP Attack Lab

历经一个多星期,之前写完第一部分就一直放着了,稍微补充了一下知识,差点让第二部分吓到,没想到做起来还挺简单哈这次任务是让我们当一个远古时期的萌新黑客,是不是很酷呀这次上来才发现看不懂让干啥,于是乎就去看了某个视频,惊讶的发现这玩意除了有README还有Writeup,啊这这这,writeup会告诉我们怎么写这个实验,巴拉巴拉而且还有方便实验的小tips,我没看完讲义,硬生生造了个 hex2raw轮子,呜呜下面开始正文,随便记录一下关键点(我不会说是我懒不想复现的)

2023-09-25 16:39:27 260

原创 CSAPP Bomb Lab

芜湖,完成实验来记录一下啦~这个lab看的我真是眼皮发麻,框框就是反汇编->c语言形式->优化c语言 最后我才能写出来,整的我睡觉都是 mov… lea…难道适中,感觉只要耐心一点就没问题,好了现在开始正文…

2023-09-14 22:30:43 644

原创 CSAPP lab1 Data Lab

本实验分为俩部分,第一部分是对整数操作,第二部分是对浮点数操作。通过可以使用的运算符来实现出要求的操作即可,并且通过./dlc -e bits.c 来检测自己是否使用非法操作完成后可通过./btest 查看自己分数,以及对应是哪个测试用例错误。写完啦,这俩天脑袋全是二进制数了

2023-09-04 22:48:20 432 2

原创 Redis 基础知识

Redis是什么Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。Redis能干啥?

2023-08-15 12:25:02 414

原创 ucore Lab8 文件系统

本实验依赖实验1/2/3/4/5/6/7。请把你做的实验1/2/3/4/5/6/7的代码填入本实验中代码中有“LAB1”/“LAB2”/“LAB3”/“LAB4”/“LAB5”/“LAB6” /“LAB7”的注释相应部分。说实话,本人水平有限,对于ucore很多地方确实还是不太理解,没有很好掌握操作系统的内部机理,只是大致有了一个整体框架,框架内部的细节还是没有填满,最近由于处理事情较多,过段时间写CSAPP的时候,再接再厉,希望到时候我的基础会扎实一些。顺便解释一下主要elf格式信息。

2023-08-06 15:40:14 130

原创 ucore lab7 同步互斥

管程中的成员变量信号量next和整形变量next_count是配合进程对条件变量cv的操作而设置的

2023-07-31 17:52:10 130

原创 C++11类模板

如下,和函数模板差不多都是在前面放个template里面用typename或者class定义个东东public:private:...在类外如果要实现类内函数的实现的话需要有如下写法template // 要加上这个 并且Demo写成这样Demo在类内不需要额外加东西。

2023-07-29 21:36:50 183

原创 Go-高质量编程与性能调优

上述就是想创建个新切片,但是其实底层数组用的是同一个,如果说传入参数在之后不用的,但是因为有个这个返回值只用一段数据却占用这之前的一大块数据,内存就浪费了。goimports:go语言官方提供工具,实际等于gofmt加上依赖包管理,自动增删依赖包引用,对其排序分类等。​ 后面的底层都是 []byte数组,内存扩容策略,不需要每次拼接重新分配内存。应该解释公共符号(公共的变量,常量,函数,不应该取决与代码的长度来选择注释)另一个问题就是由于工用一个数组,你改变一个切片的值,另一个也就改变了。

2023-07-29 15:09:04 381

原创 ucore lab6 调度管理机制

​ 在具体实现时,有一个需要注意的地方:stride属性的溢出问题,在之前的实现里面我们并没有考虑 stride 的数值范围,而这个值在理论上是不断增加的,在 stride溢出以后,基于stride的比较可能会出现错误。在trap中断处理函数中,当对应中断号的处理例程返回时会单独的检查need_resched的值,当发现为1时,则会触发schedule函数进行一次强制的线程调度,从而令当前时间片扣减为0的线程得以让出CPU,使其它的就绪线程能得到执行的机会。来调用调度算法的RR_proc_tick这个。

2023-07-28 20:21:56 218

原创 Go 语言入门指南

学一门语言先看看helloworld吧,感觉go结合了好多语言的方式,写起来一会像python一会像c++,java差不多。反正语法挺奇特。

2023-07-25 16:15:35 297

原创 ucore Lab5 用户进程管理

系统调用在syscall.c中给出,通过设置了个函数指针数组进行绑定系统调用与对应函数

2023-07-24 14:57:04 129

原创 ucore lab4 内核线程管理

​ tf: 中断帧的指针,总是指向内核栈的某个位置:当进程从用户空间跳到内核空间时,中断帧记录了进程在被中断前的状态。之前在第六步添加进程到列表的时候也需要有这个操作,是因为进程进入列表的时候,可能会发生一系列的调度事件,比如我们所熟知的抢断等,加上这么一个保护机制可以确保进程执行不被打乱。idleproc: ucore: 第一个内核进程,完成内核中各个子系统的初始化,之后立即调度,执行其他进程。​ context:报存的是进程运行时的上下文(各个寄存器状态),用于进程切换时,不丢失进程运行环境。

2023-07-22 17:47:01 101

原创 ucore lab3 虚拟内存管理

vma: 描述了一块连续的虚拟内存空间,保证start

2023-07-21 21:25:18 232

原创 ucore lab2 物理内存管理

总结:大致上就是链表的基本操作,不过要注意,分配释放时的标志信息要改写,感觉我的不太对在某些时候,有时候遍历输出的时候遍历链表就死循环了,但是看起来分配和回收时不影响,有些神奇。就是将空闲内存挂在空闲链表上,我看答案是一个一个都挂上去了,然后将开头设置包含后面的信息,而我是直接一把他们变成一整块挂在链表上。释放时,也是先找位置,我是直接找到该位置后面的一个位置,然后循环向前看能否合并,不能合并break就行。分配内存的时候,遍历空闲链表,遇到第一个可以用的就取下来,如果还比较大就切一下。

2023-07-19 15:56:23 337

原创 ucore lab1

ucore lab1实验总结

2023-07-19 15:06:05 304

原创 lambda 和 bind 简单使用

【代码】lambda 和 bind 简单使用。

2023-07-14 20:16:05 242

原创 Buffer Pool(cmu15445 project1)

cmu project1 可扩展哈希表 LRU-K buffer-pool

2023-06-13 22:13:59 395

原创 CMU15445 project0

cmu15445 是基于c++17 要求实现一个DBMS并且最后可以运行sql查询,再课程中Andy 也说这是可以用来在简历上写的项目,并且也可以拿到很不错的offer(但是国内写的人很多,就当一个练手的项目了,毕竟是要把基础四大件要写一遍的)

2023-06-13 20:49:11 924

原创 (allocator 4) macro

allocator 版本4

2023-02-20 18:26:07 98 1

原创 嵌入式指针(allocator3)

allocator实现3版本

2023-02-19 11:01:03 77

原创 嵌入式指针(内存管理)2.0

嵌入式指针 分配器模拟版本2

2023-02-18 17:41:19 115

原创 L2-031 深入虎穴

著名的王牌间谍 007 需要执行一次任务,获取敌方的机密情报。已知情报藏在一个地下迷宫里,迷宫只有一个入口,里面有很多条通路,每条路通向一扇门。每一扇门背后或者是一个房间,或者又有很多条路,同样是每条路通向一扇门…… 他的手里有一张表格,是其他间谍帮他收集到的情报,他们记下了每扇门的编号,以及这扇门背后的每一条通路所到达的门的编号。007 发现不存在两条路通向同一扇门。内线告诉他,情报就藏在迷宫的最深处。但是这个迷宫太大了,他需要你的帮助 —— 请编程帮他找出距离入口最远的那扇门。

2022-12-26 18:53:57 140

原创 L2-029 特立独行的幸福

对一个十进制数的各位数字做一次平方和,称作一次迭代。如果一个十进制数能通过若干次迭代得到 1,就称该数为幸福数。1 是一个幸福数。此外,例如 19 经过 1 次迭代得到 82,2 次迭代后得到 68,3 次迭代后得到 100,最后得到 1。则 19 就是幸福数。显然,在一个幸福数迭代到 1 的过程中经过的数字都是幸福数,它们的幸福是依附于初始数字的。例如 82、68、100 的幸福是依附于 19 的。而一个的幸福数,是在一个有限的区间内不依附于任何其它数字的;其就是依附于它的的幸福数的个数。

2022-12-25 22:01:49 107

原创 L2-016 愿天下有情人都是失散多年的兄妹

呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则不可通婚。本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚?

2022-12-17 14:21:24 73

原创 图(Dijkstra,Prim,Kruskal)

图的一些算法

2022-11-17 15:45:11 83

原创 二叉树(哈夫曼)

二叉树(哈夫曼)

2022-11-04 15:00:08 157

原创 二叉树(AVL树)

二叉树AVLTree

2022-11-04 14:51:07 158

原创 C++二叉树(类)

二叉树创建

2022-10-14 16:17:18 1009

原创 表达式求值(数据结构之栈)

简单栈的应用

2022-09-30 21:18:49 467

原创 c++文件操作

文件类型1、文本文件(文件以ASCLL码的形式存储在计算机上)2、二进制文件(文件以文本二进制形式存在计算机,大部分看不懂)c++对文件操作要包含头文件<fstream>操作文件三大类1、ofstream:写操作2、ifstream:读操作3、fstream:读写操作文本文件的写入步骤如下:1、包含头文件 #include<fstream>2、创建流对象 ofstream ofs;(ofs为变量...

2022-05-15 13:43:57 2137 10

原创 c++之多态

都说c++的三大特性是继承 多态封装那么什么是多态呢?1、静态多态:函数重载、运算符重载、复用函数名。2、动态多态:派生类和虚函数实现运行时的多态。其实这俩个就是地址早晚绑定的区别下面来看​​​​​​​静态多态不用细说,下面介绍动态多态。首先c++时允许父子类型转换如下#include<iostream>using namespace std;class animal{public: void speak() { cout <&lt..

2022-05-02 13:16:36 1389 9

原创 L2-044 大众情人 2022天梯赛

人与人之间总有一点距离感。我们假定两个人之间的亲密程度跟他们之间的距离感成反比,并且距离感是单向的。例如小蓝对小红患了单相思,从小蓝的眼中看去,他和小红之间的距离为 1,只差一层窗户纸;但在小红的眼里,她和小蓝之间的距离为 108000,差了十万八千里…… 另外,我们进一步假定,距离感在认识的人之间是可传递的。例如小绿觉得自己跟小蓝之间的距离为 2,则即使小绿并不直接认识小红,我们也默认小绿早晚会认识小红,并且因为跟小蓝很亲近的关系,小绿会觉得自己跟小红之间的距离为 1+2=3。当然这带来一个问题,如果..

2022-04-26 15:43:30 550 5

原创 2022天梯赛L2-041 插松枝分数 25

人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上,做成大大小小的松枝。他们的工作流程(并不)是这样的:每人手边有一只小盒子,初始状态为空。 每人面前有用不完的松枝干和一个推送器,每次推送一片随机型号的松针片。 工人首先捡起一根空的松枝干,从小盒子里摸出最上面的一片松针 —— 如果小盒子是空的,就从推送器上取一片松针。将这片松针插到枝干的最下面。 工人在插后面的松针时,需要保证,每一步插到一根非空松枝干上的松针片,不能比前一步插上的松针片大。如果小盒子中最上面的松针满足要求,就取之插好;..

2022-04-26 10:46:49 1549 11

原创 2022天梯赛 L2-042 老板的作息表分数 25

新浪微博上有人发了某老板的作息时间表,表示其每天 4:30 就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了?本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。输入格式:输入第一行给出一个正整数N,为作息表上列出的时间段的个数。随后N行,每行给出一个时间段,格式为:hh:mm:ss - hh:mm:ss其中hh、mm、ss分别是两位数表示的小时、分钟、秒。第一个时间是开始时间,第二个是结束时间。题目保证所有时间都在一天之内(即从...

2022-04-26 10:39:41 741 1

原创 L3-029 还原文件 (30 分) 测试点2分析

L3-029 还原文件 (30 分)一份重要文件被撕成两半,其中一半还被送进了碎纸机。我们将碎纸机里找到的纸条进行编号,如图 1 所示。然后根据断口的折线形状跟没有切碎的半张纸进行匹配,最后还原成图 2 的样子。要求你输出还原后纸条的正确拼接顺序。图1 纸条编号图2 还原结果输入格式:输入首先在第一行中给出一个正整数N(1<N≤105),为没有切碎的半张纸上断口折线角点的个数;随后一行给出从左到右N个折线角点的高度值(均为不超过 100 的非负整数)。随后一行给出...

2022-04-21 13:29:54 1051 3

原创 pta l练习题 重排链表 测试点2,3

给定一个单链表L1​→L2​→⋯→Ln−1​→Ln​,请编写程序将链表重新排列为Ln​→L1​→Ln−1​→L2​→⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (≤105)。结点的地址是5位非负整数,NULL地址用−1表示。接下来有N行,每行格式为:Address Data Next其中Address是结点地址;Data是该结点保存的数据,为不超过..

2022-04-16 16:17:12 611 4

原创 天梯赛练习题 之链表去重

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤105,为结点总数)。一个结点的地址是非负的 5 位整数,空地址 NULL 用 −1 来表示。随后 N 行,每行按以下格式描述一个

2022-04-15 13:32:22 471 1

原创 STL之stack

适用于先进后出的条件。 3 2 1 在顶部的先出去。后进的3先访问//不能使用数组访问的方法初始化:包含头文件#include<stack>stack<int> a;a.push(n);//向栈中放入na.pop();//删除最后一个元素a.top();//访问最后一个元素a.empty();//判断是否为空,空为1反之0a.size();//返回栈中元素数量a.swap(b);交换俩个栈...

2022-04-11 08:49:05 656 2

原创 STL之vector

学习STL第一天

2022-04-08 10:26:15 262 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除