自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 使用SSH连接VMware上ubuntu20.04

连接ubuntu和下面那位作者的分享完全一致。我仅补充了一些可能遇到的坑使用SSH连接VMware上centos虚机的配置步骤本文实质上没什么创新,主要是对上面这位作者方法的补充,并记录保存。我的虚拟机是因为没有安装ssh所以一直不成功,后来执行以下两条命令之后成功了。 sudo apt-get install openssh-server service ssh restart在连接虚拟机的时候我是只能连22端口才能成功,这里显示的24我不知道什么意思,我还以为是让我连24,但是一直没成

2021-10-06 17:49:42 1430 1

原创 wsl ubuntu20.04安装《操作系统真象还原》bochs环境

wsl ubuntu20.04 和咱们平时用的ubuntu桌面不同有:少了桌面也就是图形窗口,所以整体流程大部分都和在桌面版上安装是一样的,但是最后想运行起来需要安装一个窗口。ubuntu20.04 bochs配置安装《操作系统真象还原》环境 可以直接安装这个走,当然你最后会在运行bochs的时候报错 :Cannot Connect to X display解决这个错误:解决 wsl Cannot Connect to X display 和 Message bochs cannot connect

2021-10-01 10:19:27 545

原创 wsl ubuntu20.04从0到1安装linux0.11 哈工大lab环境

咱们这篇是用windows上安装的ubuntu20.04,即wsl and ubuntu20.04 配置好哈工大的环境首先,如果你没有安装wsl的话,也很简单:wsl安装 , 我当时是跟着他安装的,现在用起来完全没什么问题。全文都是很简单的操作,大家一步步做即可:首先哈哈咱们得下载linux0.11,如果你没有的话:链接:https://pan.baidu.com/s/1obAd1dnRQ4Oxb1albjMHlQ提取码:linx下面咱们正式开始啦:把解压之后的文件复制到home里,就是安装w

2021-10-01 10:02:34 990 2

原创 解决 wsl Cannot Connect to X display 和 Message bochs cannot connect to X server localhost0.0

解决 Cannot Connect to X display Message bochs cannot connect to X server localhost0.0真象还原当时是这个报错Event Type: PANIC``Device:[GUI ]``Message: Cannot Connect to X display.linux0.11报错Message bochs cannot connect to X server localhost0.0解决这是因为wsl缺

2021-10-01 09:40:23 3151 3

原创 《操作系统真象还原》第十三章文件系统概念与建立

文章目录什么是文件系统文件是什么?如何使用文件系统文件系统在内存中所需要的数据结构文件操作所需要的关系依赖一些概念的解释细节inode.c 内存inode 和底层硬件之间的交互file.c 文件管理fs.c 这一个文件做的主要是**文件系统的创建**,和目录相关的删除,创建。查询、解析路径。dir.c 目录更底层的管理运行结果测试代码勘误总结咱们这一章的任务是建立起文件系统,这样看起来好像是只需要做一件事就可以啦,那我们大概搞明白下面几件事即可什么是文件系统?文件系统应该被建立在哪里?文件是什么

2021-09-23 16:07:00 395

原创 《操作系统真象还原》第12章malloc的实现与原理

文章目录完善堆内存管理用户调用系统调用实现的流程添加一个系统调用的具体过程系统调用的一些细节printf的实现堆内存管理内存块描述符内核和用户进程的 内存块描述符内存仓库回收内存回收页物理地址回收页虚拟地址去除映射回收虚拟页指向的物理内存回收内存malloc,free执行结果总结64位下的源代码Makefile脚本修改完善堆内存管理咱们这一章的目的是实现堆内存管理:也就是实现malloc,free,可以分成以下几个步骤系统调用的实现内存管理系统所需的数据结构实现sys_malloc的实现sys

2021-09-22 12:13:18 276

原创 《操作系统真象还原》13章编写硬盘驱动程序

文章目录创建副盘完成分区MBR、EBR、OBR、DBR是什么?怎么创建副盘和分区呢编写硬盘驱动程序咱们既然是要管理硬盘,并提供更高的接口,那么首先得设计出表示硬盘的这种数据结构描述硬盘所需要的数据结构硬盘的读写过程实现细节运行结果64位makefile一键修改这一章比较繁琐都是底层的东西,首先我们得先弄清楚这一章要做什么?创建副盘完成分区,用于安装文件系统编写硬件驱动程序,给操作系统提供硬盘的更好用的封装了的接口哈哈分析下来这一章就做了两件事而已,但是大家可别小瞧这两件事,因为硬盘太底层了,封装

2021-09-22 09:18:40 595

原创 《操作系统真象还原》第十章输入输出系统

本章主要讲述了锁、缓冲区、与键盘的交互控制。基本概念本章涉及的基本概念如下:公共资源:所有任务共享的一套资源临界区:访问公共资源的指令代码组成的区域互斥:公共资源在任意时刻只能被一个任务访问,即只能有一个任务在自己的临界区中执行。竞争条件:多个任务以非互斥的方式同时进入凝结去信号量:就是一个整形变量,可以被增加或减少信号量的增加和减少都必须是原子性的锁:就是一个二进制信号量,值为0表示上锁了不能访问,为1表示可以访问。阻塞:由线程自己发起,被加入阻塞(all)队列中唤醒:由另一

2021-09-14 16:23:16 188

原创 《操作系统真象还原》第七章中断

中断中断向量号是由外部设备8259A发给CPU的,我们要做的就是要让CPU能根据这个向量找到中断处理程序。中断发生时,CPU会自动保存一部分的环境到栈中。如果发生特权级转移,会把ss和esp保存到栈中压入标志寄存器eflags压入返回地址和eip压入错误码 , 没有则不压,但是我们为了方便处理,会手动压入0中断处理的框架中断处理其实就只需要搞定下面两件事,CPU就能工作了。构造好IDT提供中断向量号在介绍中断执行过程时,先介绍一下中断描述符表:IDT,IDT存放

2021-09-13 19:52:34 206

原创 《操作系统真象还原》第九章多线程调度

线程的创建实现可以分成上层条件和底层数据结构和算法,那么创建一个线程是什么意思呢?创建一个线程实际上就是让一个函数能够成为一条执行流供CPU直接执行。因此线程最重要的就是要执行的函数及其参数,又因为线程涉及调度等问题,所以需要优先级和名字下面便是创建一个线程所需要传递的条件。线程名字线程的优先级线程要执行的函数此函数所需要的参数咱们已经知道了创建线程的上传需求了:把一个函数变成一个可供CPU直接执行的执行流。那么函数和执行流之间的差别是什么呢?是上下文!上下文是什么?上下文就是

2021-09-13 19:40:06 265

原创 64位《操作系统真象还原》makefile文件一键修改

文章目录64位《操作系统真象还原》makefile文件一键修改cm.cpp代码64位《操作系统真象还原》makefile文件一键修改我在学习《操作系统真象还原》的时候到了需要makefile那里,因为是64位系统所以需要改的地方还是蛮多的,大概要改个三、四处,很是麻烦啊,后来makefile多了起来,实在是不能再手动改了,太麻烦,就写了一个程序。首先在bochs/bin下创建cm.cpp这个程序的功能是这样:用户输入文件夹路径程序将文件夹中的makefile改成我们想要的样子(可直接在64位

2021-09-13 19:28:25 394

原创 《操作系统真象还原》源代码

《操作系统真象还原》源代码因为CSDN直接分享会变成需要积分的形式,所以就分享网盘了。链接:https://pan.baidu.com/s/1AM61wJNDB_53HB98w2MdGw提取码:linx

2021-09-07 14:50:14 1235

原创 ubuntu20.04 bochs配置安装《操作系统真象还原》环境

文章目录ubuntu20.04 bochs配置安装操作系统真象还原环境一些前置配置:ubuntu20.04安装和vmtools,vscode安装,配置清华源ubuntu20.04安装[vmtools 和 vs code 一并安装](https://editor.csdn.net/md?not_checkout=1&articleId=120155847)将linux默认镜像改为清华镜像源配置所需的环境安装bochs1.下载bochs2.执行./configure 配置文件,自动生成Makefile3

2021-09-07 14:39:33 2944 5

原创 将linux默认镜像改为清华镜像源 并解决wsl证书错误问题

文章目录将linux默认镜像改为清华镜像源在命令行按如下输入将这些全部覆盖到这个文件中复制保存输密码即可然后在命令行输入将linux默认镜像改为清华镜像源在命令行按如下输入code 是vs code 的命令,如果没有安装vs code 用vim也挺好的code /etc/apt/sources.list 将这些全部覆盖到这个文件中# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.c

2021-09-07 13:41:35 1635

原创 vmware15 ubuntu20.04 vscode和vmtools 安装

文章目录ubuntu20.04 vscode和vmtools 安装vs code安装如果要安装vs code 直接点击skip 然后一直next然后点击vs code点击installvmtools安装双击光盘双击这个gz将里面唯一的一个文件夹拖到home/desktop上即可打开vmtools 就可以在电脑上拖过去,或者拖进去双向传输都行啦。ubuntu20.04 vscode和vmtools 安装vs code安装这是刚安好ubuntu的页面,在这个时候可以顺便安装一下vs code ,之后安装也

2021-09-07 13:26:06 336

原创 什么是CPU?什么是计算机?

这里写自定义目录标题符号扩展: 高位全部补上符号位比如 1101 0000 - >1111 1111 1111 1111 1111 1111 1101 0000 8位到32位的符号扩展时钟周期开始 :第一个下降沿

2021-07-15 20:49:23 1301

原创 2021第十二届蓝桥杯省赛第二场 C/C++ 大学 B 组

文章索引试题 A: 求余 1试题 B: 双阶乘 59375试题 C: 格点 15698试题 D: 整数分解 691677274345试题 E: 城邦 4046试题 F: 特殊年份试题 G: 小平方试题 H: 完全平方数试题 I: 负载均衡试题 J: 国际象棋大家好呀,下面是我自己参加蓝桥杯的思路和代码,emm不一定对(十分欢迎指出错误,和提供新思路哇~~),选择题在群里对过答案了。有不一样的告诉下我呀,再验证下哈哈、一起学习。试题 A: 求余 1本题总分:5 分【问题描述】在 C/C++

2021-05-09 16:30:00 1115

原创 2018蓝桥杯算法c++/javaA、B、C组 题解 省赛题目在线测评 解题思路

字母阵列https://www.lanqiao.cn/problems/621/learning/主要思路 找到’L’ 然后 八个方向迭代即可。(emm 一定得是八条射线遍历,不是八皇后那种随机八个方向,所以在dfs中用for即可)#include<string>#include<algorithm>#include<iostream>using namespace std;const int N = 110;string s[N];const str

2021-05-07 18:17:52 528

原创 二叉搜索树的介绍以及c/c++实现(重要的查找结构!!!)

文章索引二叉搜索树的定义和构建1.定义2.构建二叉树搜索树特有的查找、插入和删除1、查找(Find)2、插入3、删除二叉搜索树的定义和构建性质: 中序遍历是正序的(由小到大的排列)1.定义二叉搜索树:一棵二叉树,可以为空;如果不为空,满足以下性质:非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。 简而言之:就是此结点的右子树所有结点的健值>此结点的健值>此结点的右子树所有结点的健值 的二叉树2.构建1.c构建二叉搜

2020-08-01 15:59:37 359

原创 c/c++实现二叉树的创建和(前序、中序、后续dfs)、层序(bfs)遍历

文章索引写在前面二叉树的创建1.如何创建二叉树二叉树的遍历1、二叉树的遍历一般可分为 前序遍历,中序遍历,后序遍历,层序遍历。2、前序中序后序的实现原理3.递归实现先、中、后序遍历4.栈实现先中后序5.二叉树的层序遍历二叉树的创建和遍历代码1. c实现2. c++实现二叉树遍历的算法分析1.时间代价2.空间代价写在前面本文主要描述二叉树的创建和遍历,并以此加深对dfs和bfs的理解。二叉树的创建一般分为从根开始插入(多用于创建搜索树及其分化),和不断连接子树多用于创建一般树。不论怎么遍历二叉树,都是

2020-07-30 16:20:52 1222

原创 二叉树的简介、特点及二叉树存储结构’

文章索引一.前言二. 二叉树的概念1.二叉树的定义2.几种特殊的二叉树3. 二叉树的特点三.二叉树的存储1.链式存储2.顺序存储一.前言本文主要介绍二叉树的一些定义和特性及存储二叉树是数中一种特殊且重要的数据结构。二. 二叉树的概念1.二叉树的定义:二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。如图,每一个结点中最多拥有一个左结点和一个右结点,并没有多余的结点,这是很明显的二叉树的特征②

2020-07-28 19:19:44 2890

原创 队列的基本描述,及c和c++分别顺序队列和链式队列实现,利用队列处理农夫过河问题

文章索引写在前面一:队列的概述二.C实现顺序循环队列三。C++实现链式队列四:队列的应用之解决农夫过河**写在前面:**在开始前,请牢记这句话:队列是一个先进先出的数据结构。即类似于通了水的水管一样的结构定义:队列是一个线性的数据结构,规定这个数据结构只允许在一端进行插入,另一端进行删除,禁止直接访问除这两端以外的一切数据。队列的用处只要满足先来先服务特性的应用均可采用队列作为其数据组织方式或中间数据结构• 调度或缓冲– 消息缓冲器– 邮件缓冲器– 计算机硬设备之间的通信也需要队

2020-07-15 21:38:01 624 3

原创 栈的介绍以及c和c++中数组栈和链表栈的实现 及利用c++中stack的计算后缀表达式的值

文章索引一:栈的介绍二顺序栈的c实现三.链式栈的c++实现四.c++上应用stack实现后缀表达式的计算写在前面在开始前,请牢记这句话:栈是一种后进先出的数据结构,也可简单的理解为一个只能访问顶部的逆序容器。栈(stack)是限定仅在表的一端进行操作的数据结构,设想一个头插法的单链表且我们只能够对其链表的头结点进行操作,而操作也只能够进行插入(头插法)一个头结点和删除头结点(表中最后一个进去的结点)的数据结构就是栈。由于栈只能对一端就行操作,因此栈最重要的操作 也就是push(添加元素),top(返

2020-07-13 19:49:45 582 4

原创 单链表和双链表的c和c++的分别实现(详解),c++中list的使用方法

文章索引一.链表的简单介绍二:c中单链表的实现三.(1)C++中单链表的实现(2)c++中双链表的实现四c++中list和forward的一般使用规则写在前面:在我看来链表就是对指针操作的练习,能很好的实现和使用链表将能更好地使用指针,并且链表也是重要的数据结构。(1)链表的优势,插入和删除任意结点都很快(2)劣势:随机访问能力较差链表的注意事项链表的分类一.链表的简单介绍链表就是通过指针把它的一串存储结点链接成一个链以单链表为例:存储结点由两部分组成:(2)数据域 + 指针域(后继

2020-07-12 16:19:05 1371

原创 c++中forward_list,list,deque,vector,string,等顺序容器的使用简则

文章目录:一 :容器的类型和使用规则一 :容器的类型和使用规则@[toc]二:迭代器概念@[toc]三:容器的定义和初始化@[toc]四:容器的大小操作**@[toc]五:向顺序容器添加元素的操作@[toc]六:在顺序容器访问元素的操作@[toc]七:顺序容器中的删除操作@[toc]八:forward_list独有的操作@[toc]九:顺序容器大小的操作@[toc]十:迭代器失效的情况@[toc]十一:string的用法补充@[toc]十二:容器共有的适配器**@[toc]一 :容

2020-07-12 16:04:20 277

原创 c++中的优先级、结合律和求值顺序☆(处理复合表达式)

以下是优先级和结合律在复合表达式中的关系:复合表达式(compound expression):是指含有两个或多个运算符的表达式。求复合表达式的值需要首先将运算符和运算对象合理地组合在一起,优先级与结合律决定了运算对象组合的方式。也就是说,它们决定了表达式中每个运算符对应的运算对象来自表达式的哪一部分。表达式中的括号无视上述规则(不确定优先级时加括号是一个好办法),程序员可以使用括号将表达式的某个局部括起来使其得到优先运算。一般来说,表达式最终的值依赖于其子表达式的组合方式。高优先级运算 符的运

2020-05-30 18:24:48 1297

原创 c++中的const限定符和 数组与*const 的关系

const 可意为不变的、不能改变的、常量、只读简单分为以上4种应用:const int(double,float ,bool…) 。const int&const int *,int *const p;constexpr(c11)和常量表达式先分析几个例子吧:在此之前我们先弄懂初始化和赋值的区别:初始化的含义是创建变量时赋予其一贯初始值,而赋值的含义是把对象的当前值擦除,而以一个新值替代对于1:int get(){return 10;}const int f=get();

2020-05-27 20:17:15 356

原创 对数组和链表和结构体直接插入排序算法(详细版)

对数组和链表直接插入插入排序算法插入排序分为 直接插入排序(本文基本描述),折半插入排序,希尔插入排序算法基本思想:将无序子序列中的一个或几个记录"插入"到有序子序列中,从而增加有序子序列的长度。例如下面这个例子:首先把9当做一个有序序列,后面都是无序序列,然后逐渐把无序序列的元素插入到有序序列。因此实际上可以把插入排序分为三个部分:定位 ,挤空,插入直接插入排序排序过程:整个排序过程为n-1趟插入,即先将序列中第1个记录看成是一个有序子序列,然后从第2个记录开始,逐个进行插入,直

2020-05-14 22:46:52 1027 6

空空如也

空空如也

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

TA关注的人

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