自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 收藏
  • 关注

原创 CSAPP Bomb lab(内含答案)

CSAPP Bomb labCSAPP的bomb lab是让你通过反汇编和gdb,找到六个相应的字符串,来拆掉炸弹。本实验一共六个阶段,每个阶段对应一个字符串。在完成这六个阶段以后,还有一个彩蛋secret_phase。彩蛋可以在反汇编的代码中看到,只能通过gdb进入,没有出现在main函数中。整个实验的整体框架可以在bomb.c文件中看到。主要是用的工具是gdb和objdump。下面的代码都是在gdb中反汇编出来的代码,通过gdb反汇编出来的代码跳转地址是用的绝对地址,比较好看。Phase_1

2020-11-22 15:51:42 3176

原创 系统调用

系统调用要讲明白系统调用,就要明白以下的几个问题:什么是系统调用?为什么会有系统调用?如何实现系统调用?1. 什么是系统调用系统调用就是操作系统提供的一些函数,可以用来访问硬件上的内容。系统调用和普通函数调用的区别就是系统调用会进入内核态,而普通的函数调用只在用户态。2. 为什么会有系统调用系统调用是为了将内核保护起来。内核中我们储存了如多重要的信息,比如用户的密码和各个用户的隐私记录等,如何应用程序可以随意的访问内核态的内存,那么计算机将没有隐私和保密可言。所以我们通过系统调用,对应用

2020-10-09 20:15:44 323

原创 8086汇编的一些知识

8086汇编的一些知识8086汇编实运行在cpu的实模式下,他的寻址方式是 物理地址=段基址<<4 + 段内偏移地址。下面一次介绍8086汇编的寄存器,寻址模式和指令。寄存器在8086的架构中,一共有14个16位的寄存器,其中ax,bx,cx,dx是通用寄存器,可以拆成8个8位的寄存器。cs,ds,es,ss是段寄存器用于寻址,具体内容后面再说。IP寄存器和cs寄存器结合指向下一条指令的地址。si,di,bp,sp用于和段寄存器结合来寻址。状态寄存器具体内容是:进位标志CF、奇偶标志PF

2020-10-09 20:14:21 375

原创 实验2:系统调用

实验2:系统调用实验2: 系统调用实验内容在 Linux 0.11 上添加两个系统调用,并编写两个简单的应用程序测试它们。1. iam()第一个系统调用是 iam(),其原型为:int iam(const char * name);完成的功能是将字符串参数 name 的内容拷贝到内核中保存下来。要求 name 的长度不能超过 23 个字符。返回值是拷贝的字符数。如果 name 的字符个数超过了 23,则返回 “-1”,并置 errno 为 EINVAL。在 kernal/who.c 中实现

2020-10-09 20:11:57 598

原创 实验1:操作系统的引导

实验1:操作系统的引导实验的准备工作操作解压源码用tar -zxvf hit-oslab-linux-20110823.tar.gz 可以使用-C来指定解压路径,tar -zxvf hit-oslab-linux-20110823.tar.gz -C [path]编译linux-0.11的源码,在linux-0.11的文件夹下运行make all或者make。在oslab文件目录下运行./run运行bochs 中的linux-0.11。访问linux-0.11里面的文件,使用sudo ./mou

2020-10-09 20:10:50 897

原创 华为云ubuntu配置nginx踩坑记

华为云ubuntu配置nginx踩坑记录服务器:华为云操作系统: ubuntu 18.04今天在华为云上配置nginx发现怎么也配置不成功,不能在浏览器上访问,同时也ping不通,不过在云服务器上的nginx是成功运行的。最后终于找到了解决办法,更改华为云的安全组配置,配置80端口,同时将它设置下面的内容,如图 ...

2020-09-06 09:43:37 411

原创 hexo博客 github改名后的一些变化

今天突然想起自己还搭建过一个博客,于是想上去看看结果就是然后用命令行执行hexo d的时候出现了报错,于是我从网上找了找原因,发现大多数都是需要更新npm,但是我的不存在这个问题。然后有折腾了半天发现原来是我github之前改过名字,所以现在需要更改配置文件_config.yml,需要更改的是deploy: type: git repo: https:///{new use name}/haohuaijin.github.io.git branch: master只要把用户名改成自己

2020-07-07 11:06:40 891 1

原创 链路层和局域网

链路层和局域网文章目录链路层和局域网1. 差错检验和纠正1.1 奇偶校验1.2 检验和1.3 循环冗余检测2. 多路访问链路和协议2.1 信道划分协议2.2 随机接入协议2.2.1. ALOHA协议2.2.2 具有碰撞检测的载波侦听多路访问(CSMA/CD)3. MAC地址4. 地址解析协议(ARP)4.1 在子网内发送数据报4.2 发送数据报到子网外5. 以太网帧格式6. 链路层交换机6.1 交换机的转发和过滤6.2 交换机的自学习功能6.3 交换机的性质链路层协议的任何设备均称为节点。节点包括主机,

2020-06-11 09:32:53 298

原创 OSPF,BGP和ICMP

在控制平面我们关注的是,路由器转发报文的路径是怎么样的。也就是如何在路由器中配置转发表。配置转发表有一下两种方式:每台路由器控制:也是是传统的路由选择方式,每台路由器自己计算转发表。逻辑集中式控制:就是通过SDNSDNSDN的方式进行路由选择,由SDNSDNSDN计算并配置转发表。这里我们只涉及传统的路由控制方法,不涉及SDNSDNSDN。下面我们先讲两种传统的路由选择算法,然后再讲在因特网路由选择协议**OSPFOSPFOSPF和BGPBGPBGP**。文章目录1. 路由选择算法2. 因特网路

2020-05-26 20:34:23 469

原创 极限理论(概率导论第五章)

极限理论文章目录极限理论1. 马尔可夫和切比雪夫不等式2. 弱大数定律3. 依概率收敛4. 中心极限定理5. 强大数定律1. 马尔可夫和切比雪夫不等式马尔可夫不等式:设随机变量XXX只取非负值,则对任意a>0a>0a>0。P(X≥a)≤E[X]aP(X\ge a)\le \cfrac{E[X]}{a}P(X≥a)≤aE[X]​切比雪夫不等式:设随机变量XXX的均值为μ\muμ,方差为σ2\sigma^2σ2,则对任意c>0c>0c>0,P(∣X−μ∣≥

2020-05-13 07:17:13 513 1

原创 连续随机变量(概率导论第三章)

连续随机变量文章目录连续随机变量1. 连续随机变量和概率密度函数1.1 关于PDFPDFPDF概率密度函数的性质1.2 连续随机变量的期望2. 分布函数3. 正态随机变量4. 多个随机变量的联合概率密度5. 条件概率5.1 以事件为条件的条件概率密度函数5.2 以另一个随机变量为条件的条件概率密度函数5.3 条件期望的性质5.4 连续随机变量的相互独立性6. 连续贝叶斯准则7. 几个特殊的连续随机变量1. 连续随机变量和概率密度函数1.1 关于PDFPDFPDF概率密度函数的性质设XXX的PDFPD

2020-05-08 21:42:22 501

原创 离散随机变量(概率导论第二章)

离散型随机变量文章目录离散型随机变量1. 离散随机变量的相关概念2. 分布列3. 随机变量函数4. 期望,均值和方差4.1 期望4.2 随机变量的函数期望规则4.3 方差4.4 随机变量的线性函数的均值和方差5. 多个随机变量的联合分布列6. 条件6.1 条件分布列小结6.2 条件期望小结7. 独立性8. 几个特殊离散随机变量的总结1. 离散随机变量的相关概念在一个试验的概率模型之下:离...

2020-05-07 11:32:46 583

原创 概率论的基本公式(概率导论第一章)

概率论的基本公式(概率导论第一章)文章目录概率论的基本公式(概率导论第一章)1. 概率模型1.1 概率模型的基本组成1.2 概率公理1.3 概率律的若干性质2. 条件概率2.1条件概率的性质2.2 乘法法则3. 全概率定理和贝叶斯准则3.1 全概率定理3.2 贝叶斯准则4. 独立性4.1 独立性4.2 几个事件的相互独立性的定义5. 计数法1. 概率模型1.1 概率模型的基本组成样本空间...

2020-05-06 10:49:59 3405

原创 一网打尽数据平面路由转发与IP报文

网络层之数据平面计算机的网络层可以分为数据平面和控制平面。数据平面执行的任务是转发功能,就是将数据从路由器的输入端口,发送到输出端口。控制平面执行的功能是路由选择功能,就是选择报文从源地址到目的地址经过的路由器的路径。这里主要讲的路由器如何转发一个报文(数据平面),然后讲一下IP报文。文章目录网络层之数据平面1. 路由器的功能1.1 输入端口1.2交换结构1.3 输出端口1.4 排队现象1.4...

2020-05-05 19:50:49 415

原创 Python list内置函数详解

list的内置函数最近学习了cs61a,记录一下学习成果。下面主要讲一下python list的一些知识。里面的代码放到pythontutor.com这个网站,然后点击Visualize Execution,之后一步步的执行就可以看到里面list的变化。1. 复制一个新的lista = [1, [2,3], 4]b = list(a)c = a[:]list(s)和s[:]复制新的列...

2020-04-25 21:30:21 1188

原创 一文搞懂K-means聚类和AP聚类

一文搞懂K-means聚类和AP聚类文章目录一文搞懂K-means聚类和AP聚类1. K-means聚类1.1 背景及发展介绍1.2 算法及公式介绍1.3 案例介绍2. Affinity Propagation (AP)聚类2.1 背景及发展介绍2.2 算法及公式介绍2.3 案例介绍3. 参考文献1. K-means聚类1.1 背景及发展介绍K−meansK-meansK−means算法的...

2020-04-21 15:31:06 2468 2

原创 一网打尽计网运输层

运输层这里主要讲的是在运输层几个比较重要的技术,即多路分解和复用,可靠数据传输原理和拥塞原理。1. 多路复用/分解先给出官方定义,将主机间交付扩展到进程间交付被称为运输层的多路复用和分解。多路分解就是在运输层接收到来自网络层数据后,根据运输层报文特殊字段的信息,将运输层报文段的数据交付到正确的套接字中。多路复用就是在运输层接受到套接字数据后,根据套接字的不同,生成运输层报文特殊字段(用于分解...

2020-04-19 15:02:22 239

原创 CS61c Fall 2019 project1

CS61c Fall 2019 project1 partA今天在做project1的partA的时候准确率一直不高,找了半天终于发现原来是数据类型的问题。只需要把u_int64_t的数据类型换成long就可以解决问题。替换后的准确率达到了99.99%。...

2020-01-30 21:07:31 1272 1

原创 相同,对称二叉树递归和非递归解法

相同,对称二叉树递归和非递归解法一、首先看相同二叉树(判断二叉树是否相同)1.递归递归解法比较简单:1.首先判断根的情况。2.递归判断左右子树。代码: bool isSameTree(TreeNode* p, TreeNode* q) { if((p == NULL && q != NULL) || (p != NULL && q...

2019-12-17 17:24:48 260

原创 树后序遍历的非递归实现

树的后序遍历非递归实现今天在刷leetcode的时候发现自己对于后序遍历非递归实现不是很了解,所以在这里记录自己的一点心得。有两种比较好的方法:第一种:通过前序遍历来然后逆序1.前序遍历的过程是:根 - > 左 - > 右2.后序遍历的过程是:左 - > 右 - > 根3.现在将前序的反转的结果是:右 - > 左 - > 根4.于是我们只需要把前序...

2019-12-17 16:50:41 686 1

原创 7-17 Hashing (25 分)

7-17 Hashing (25 分)这道题我的思路是,将得到的地址先储存下来,等处理结束后统一处理。这样做就需要多定义一个数组用来贮存每个数据对应的地址。而更好的处理方法是只用一个数组储存单当前地址的占用情况,将获得的地址随时输出,不储存。我用的是比较笨的第一种。代码:#include <iostream>#include <algorithm>#incl...

2019-11-30 17:33:46 223

原创 7-1 Maximum Subsequence Sum (25 分)

7-1 Maximum Subsequence Sum (25 分)经典的最大子列和问题。记得刚开始学数据结构时,MOOC上就是从这个题引出的。当时听的很明白,但是在做这道题目时,一直没法做出来,想了很多的办法,但是一直做不出来。最后,还是从网上找了答案才明白了怎么做。今天突然灵光 一现,两次线性扫描就可以解决了,虽然时间慢一点呢,但是很好理解。代码:#include <iost...

2019-11-12 17:09:13 247

原创 7-11 关键活动 (30 分)

7-11 关键活动 (30 分)关键路径问题。一开始我把问题想简单了,以为只要拓扑排序,然后再求最早的完成时间。再求最早时间的时候记录路径就行了。但是发现和我想的不大一样。经过我再一次的思考发现,要把最早时间,最晚时间,边的机动时间。都求出来了才可以,唉,这不就是典型的关键路径吗。大体思路如下:1、读入数据,得到每个结点的入度出度。2、用拓扑排序得到任务完成的先后顺序。3、根据拓扑排...

2019-11-09 20:06:40 1683 2

原创 7-10 公路村村通 (30 分)

7-10 公路村村通 (30 分)这个题就是简单的最小生成树的算法,可以用Prim,也可以用Kruskal。这里我用的Prim因为kruskal我换不是很熟练(haha)。这个题我主要的错误就是对权值矩阵初始化,放在了读取N,M的数据之前。这就导致了我之前的初始化完全没有效果,我换Debug了半天。代码:#include <iostream>#include <al...

2019-11-06 22:40:10 812

原创 7-11 Saving James Bond - Hard Version (30 分)

7-11 Saving James Bond - Hard Version (30 分)原题链接:https://pintia.cn/problem-sets/16/problems/673这道题本质是就是一道BFS,只不过要加上路径。 开始做的时候比较顺利,但是总是有一个测试点没过去,找了半天还是找不到错误。于是google一下,发现是没仔细看题。 题目中说,当有多条最短路径时,选择第一...

2019-11-05 17:32:08 410

原创 7-9 旅游规划 (25 分)

7-9 旅游规划 (25 分)原题链接:https://pintia.cn/problem-sets/15/problems/717这道题目主要考察的就是Dijkstra算法。只是在他的基础上有一点变形,原来只是有一个边权,但是现在有两个,一个是路径的长度,另一个是花费。所以只需要把Dijkstra算法中更新路径长度的地方再加上关于花费的更新就行了。代码:#include <io...

2019-11-04 20:18:21 516

原创 7-10 Saving James Bond - Easy Version (25 分)

7-10 Saving James Bond - Easy Version (25 分)这个题主要是审好题目。步骤:1、读入数据,计算输入点是不是可以到岸。2、对权值初始化,计算各点之间是不是有线。3、一次DFS搜索,看看是不是能从中心到岸边。#include <iostream>#include <cmath>using namespace std;in...

2019-11-01 22:15:02 387 1

原创 7-8 哈利·波特的考试 (25 分)

7-8 哈利·波特的考试 (25 分)看懂题,比较简单。用Floyd算法。1、首先将数据读入,用来初始化图2、用Floyd得到最短路径(各点到各点的全部最短路径)。3、先求出每个点到其它点的最大路径,然后取最小值。AC代码#include <iostream>using namespace std;const int INFO = 100000;struct MGr...

2019-11-01 17:30:40 375 1

原创 7-6 列出连通集 (25 分)

7-6 列出连通集 (25 分)这道题主要考察了DFS,和BFS的基本操作。考察我们对图的构建,以及运用DFS和BFS对图进行遍历。DFS是运用了递归的思想,而BFS则可以通过队列来实现。我在做题时遇到的困难,主要是在BFS的思路和队列的实现上。因为队列原来以为很熟,但现在一写很多细节都忘了。所以数据结构要经常写,要不然忘得很快。下面是代码,可能有点冗杂。#include <s...

2019-10-26 20:02:53 1769

原创 7-8 File Transfer (25 分)

7-8 File Transfer (25 分)这道题主要考查了,并查集的一些基本操作。做这道题的时候应该注意要按大小union和压缩路径。#include <stdio.h>#include <stdlib.h>#define INFO -100000int Parenet[10001]; //储存父节点int Find(int c1){ for(;...

2019-10-21 16:42:43 168

原创 7-5 Tree Traversals Again (25 分)

7-5 Tree Traversals Again (25 分)这道题给出的是利用Stack来进行中序遍历的操作,让我们根据操作来得到后序遍历的结果。我的思路是根据题目给出的操作,反向建立二叉树。 最后后序遍历得到答案。AC代码:#include <stdio.h>#include <stdlib.h>#include <string.h>type...

2019-10-17 20:08:11 256 1

原创 7-5 堆中的路径 (25 分)

7-5 堆中的路径 (25 分)就是简单的堆操作,比较简单。代码:#include <stdio.h>#include <stdlib.h>typedef struct Node *Heap;struct Node{ int Data[1001]; int Size,Capacity;};Heap CreateHeap(){ Heap...

2019-10-14 12:31:34 449

原创 7-2 Reversing Linked List (25 分)

7-2 Reversing Linked List (25 分)这道题可能看题目一头雾水,但是仔细思考就会发现并不太难。下面是我的思路:1、用类似静态链表的方法,来表示List,即一个数组存Data,一个数组存Next2、循环遍历链表,用a[]记录下标。3、根据K来转置链表,修改Next,后转置a[](顺序很重要)。#include <stdio.h>#include &...

2019-10-13 09:43:27 1013

原创 7-3 Pop Sequence (25 分)

7-3 Pop Sequence (25 分)刚开始受严蔚敏数据结构的启发,想用比较大小的方法来判断是不是出栈序列。但是发现最后一个测试点就是卡这个算法。然后看了柳神的博客,自己根据理解重新写了算法,但是第二个测试点还是过不去,下面是我的想法。步骤:循环判断数组中的每一个数,初始化temp=1 ,用temp来判断当前数组的最大值。如果数组当前值小于temp,就出栈,若大于等于temp就入栈,...

2019-10-11 16:25:41 683

原创 7-4 是否同一棵二叉搜索树 (25分)

7-4 是否同一棵二叉搜索树 (25分)开始是卡在怎么读数据上(果然还是读数据可怕,好几次都是卡在这里????????),中间有1、2天没有再碰这道题。然后今天想着不能再拖了,就硬着头皮解出来了。想法:一开始是想着不用构建树,用数组处理的,但是左思右想没有思路。然后我就构建了树的结构,用前序遍历的方法来比较树是不是相同。所以整体上来看思路比较简单。AC代码:/** * 这道题的主要思路是: ...

2019-10-06 12:21:03 641

原创 scanf()的用法总结

scanf()的用法总结最近在刷PTA数据结构时,发现自己对于scanf()的用法还不是很熟练,写下此篇做一记录。1、scanf() 读入数字如果是只用sacnf()读入数字的话比较简单。可以分为以下集中情况:1.1 在一行中,读入数字假设读入三个:用scanf("%d%d%d",&a,&b,&c);来处理就足够了。1.2 在多行中,读入数字假设读入两...

2019-10-03 20:39:10 19496 2

原创 7-20 表达式转换 (25 分)

7-20 表达式转换 (25 分)历时三个半小时终于完成。这道题的难点主要是在处理数字前的正负号上,同时还应该注意数字有小数点并且不是一位数字。因为在做题之前同学给我说过这道题,也知道几个坑,所以做题的过程比较顺利。我的步骤如下:1、先完成不考虑数字前的正负号的程序。2、考虑数字前的正负号,完善程序。通过上面的步骤,做题的过程比较的顺利,把难题变成了简单的的题目。在第二步的时候...

2019-10-03 12:02:49 2446 1

原创 7-4 List Leaves (25 分)

7-4 List Leaves (25 分)这道题在逻辑上并不难,难在我们可能树不是很熟悉上。我用了静态链表的方法构造树,用循环队列来用数组实现队列。思路:1、将数据读进来用,找到根节点。2、递归找到所有的叶子节点。3、用队列实现层次遍历,来找到树各层的元素。4、比较叶子节点和层次遍历的结果得到最终的结果。#include <stdio.h>#include <...

2019-10-02 17:40:35 393

原创 符号配对 (20 分)

符号配对 (20 分)思路:1、将数据全部都读入,然后预处理为只有(),{},[],/*/的形式。2、利用栈来判断是否相符其实本题的难点也是这两方面,读入数据.和\n比较麻烦。可以同getchar()和字符数组来处理。二就是,再利用栈判断是否相符时,需要些很多的if和else if的结构,用来分辨多种条件。由于我并没有这道题的权限,所以代码没有在OJ上跑过,但是三个例子均可成功,我也...

2019-09-28 00:00:27 1399

原创 7-3 树的同构 (25 分)

7-3 树的同构 (25 分)树的同构:这道题主要是能够读懂题意,给的数据中左右子树的编号是你输入数据时的编号,例如A 1 2他的意思是A的左子树是输入的编号为1的数据(就是输入的第二组数据)A的右子树是输入的编号为2的数据(就是输入的第三组数据)以此类推。。。下面是我的代码:我不知道为什么在我电脑的编译器上sample 1 可以正确的输出Yes,但是上交PTA就显示答案错误...

2019-09-26 21:23:58 332

空空如也

空空如也

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

TA关注的人

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