- 博客(27)
- 收藏
- 关注
原创 文件系统中的魔数
文件系统的魔数(Magic Number)是一个特殊的数字,它用于标识文件系统的类型。魔数通常存储在文件系统的超级块中,当操作系统挂载文件系统时,它会检查超级块中的魔数,以确定文件系统的类型。不同类型的文件系统有不同的魔数。例如,ext2 文件系统的魔数是 0xEF53,而 XFS 文件系统的魔数是 0x58465342。魔数可以帮助操作系统正确地识别和挂载文件系统。
2023-04-08 19:52:10
1027
1
原创 Linux下VS code 报错“检测到 #include 错误,请更新 includepath”
1.使用ms-vscode.cpptools而不是ms-vscode.cmake-tools。2.在CMakeLists.txt中定义头文件。
2023-04-06 17:05:47
1412
原创 C++中“.“和“->“的区别
C++中".“和”->"的区别C++中"."和”->"主要是用法上的不同1.A.B则A为对象或结构体2.A->B则A为指针,->是成员提取,A->B是提取A中的成员B,A只能是指向类、结构、联合的指针
2022-05-21 19:50:01
811
1
原创 Segmetation fault错误
Segmetation fault错误维基百科的解释如下: 存储器区块错误 ( 英语:Segmentation fault,经常被缩写为segfault),又译为存储器段错误,也称访问权限冲突(access violation),是一种程序错误。. 它会出现在当程序企图访问CPU无法定址的 存储器区块 时。. 当错误发生时,硬件会通知操作系统产生了存储器访问权限冲突的状况。. 操作系统 通常会产生 核心转储 (core dump)以方便程序员进行调试。. 通常该错误是由于调用一个地址,而该地址为空(NUL
2022-05-21 19:41:49
889
原创 C++中的重难点看这一篇就够了
sizeof()是一个运算符,不是一个函数看程序效率的快慢,可以直接看其汇编语言程序的多少扩展名:c语言:cc++:cppJava:先有类,再有方法c++完全兼容c语法getchar()等待键盘输入(如果敲回车,就会读取键盘输入)函数重载(overload)c语言不支持函数重载两个函数的函数名完全相同,但是函数参数类型,个数,顺序不同返回值类型不同,不能构成重载隐式转换(小转大)也可在函数参数类型中适用,但要注意隐式转换有可能产生二义性。本质:采用了na.
2022-02-12 09:10:48
2964
原创 浅析二分查找
二分查找法1.含义:二分查找算法,也叫折半查找算法。二分查找的思想非常简单,有点类似分治的思想。二分查找针对的是一个有序的数据集合,每次都通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为02.使用条件:题目强调数组中为有序数组,且无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的。3.注意要点:边界条件的控制,二分查找涉及的很多的边界条件,逻辑比较简单,但有些东西容易混乱。例如到底是while(left<right)还是whi
2022-01-19 21:14:03
393
原创 leetcode刷题 15.三数之和
分析:1.特判,对于数组长度 nn,如果数组为 null 或者数组长度小于 33,返回 []。2.对数组进行排序。3.遍历排序后数组: 若 nums[i]>0:因为已经排序好,所以后面不可能有三个数加和等于 0,直接返回结果。 对于重复元素:跳过,避免出现重复解 令左指针 L=i+1,右指针 R=n−1,当 L<R 时,执行循环: 当nums[i]+nums[L]+nums[R]==0,执行循环,判断左界和右界是否和下一位置重复,去除重复解。并同时将 L,.
2022-01-11 14:04:08
101
原创 leetcode刷题 82.删除排序链表中的重复元素Ⅱ
题目解析:因为本题是使用链表,且题目要求删除连续重复数字,由此可以想到我们应该使用双指针的方法。代码实现:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} *.
2022-01-08 21:51:30
360
原创 leetcode刷题 162.寻找峰值
题目分析:通过题目,我们发现这题的本质是寻找一段数组范围内的最大值,我们可以通过不断的缩小数组范围来寻找目标值,由缩小数组范围我们可以联想到二分查找,但是此二分查找有一不同点,就是中值不是同左右界值进行比较,而是和中值相邻的数值进行比较,究其原因是因为峰值的特点是大于相邻值。代码:class Solution {public: int findPeakElement(vector<int>& nums) { int left=0,right=nu.
2022-01-08 11:10:32
213
原创 leetcode刷题 153.寻找旋转排序数组中的最小值
题目分析:解法一:该题是用来寻找最小值,我们可以直接用数组求最小值的方法来进行求解,但是我们观察到此题数组是一个旋转数组,只要除第一位外后面每一位比第一位小,那么它就是最小值,否则第一位就是最小值class Solution {public: int findMin(vector<int>& nums) { for(int i=0;i<nums.size();i++) { if(nums[i]&.
2022-01-08 10:32:58
150
原创 leetcode刷题 74.搜索二维矩阵
题目分析这是一道简单的查找二维矩阵的题目,所以解决这题有一个最简单的解法就是遍历二维数组即可;但是我们应该注意到题目中的每行整数从左到右是按升序排列的,第一个整数大于前一行的最后一个整数,介于此,我们可以想到使用二分查找。解法1:class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { for(auto i:matrix).
2022-01-06 10:26:50
538
原创 Leetcode刷题 33.搜索旋转排序数组
分析:首先看到这题的第一印象是题目很长,感觉很复杂,但仔细看下来之后发现题目中间一段对解题没有任何的帮助,重点在最后一句,大概意思就是在目标数组中找到目标数据,并传出对应位置,否则传出-1清楚了目的,由此想到了第一种解法:即直接循环数组,与目标数据匹配。顺利通过测试。int search(vector<int>& nums, int target) { int temp=0,flag=-1; //flag用来记录是否找到目标数据,temp用来记录位置.
2022-01-05 18:43:08
3903
原创 Leetcode刷题 34.在排序数组中查找元素的第一个和最后一个位置
解法1:class Solution {public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> temps; int i=0;//i记录位置 int temp=0;//用来区分初始位置和结束位置 for(auto m:nums)//遍历数组 { .
2022-01-04 10:34:23
3105
原创 leetcode刷题 2.两数相加
解法/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(n.
2022-01-04 09:42:15
700
原创 试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点
瀑布模型瀑布模型一直是唯一被广泛采用的生命周期模型,现在仍然是软件工程中应用的最广泛的过程模型。特点:a,阶段间具有顺序性和依赖性 含义:1.必须等前一阶段的工作完成之后,才能开始后一阶段的工作;2.前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果...
2021-12-18 20:29:38
5599
原创 结构化泛化和面向对象泛化
结构化泛化结构化泛化(传统方法学、生命周期方法学),采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。特点: 把软件生命周期的全过程依次划分为若干个阶段,然后顺序的完成每个阶段的任务。 每个阶段的开始和结束都有严格标准,对于任何两个相邻的阶段而言,前一阶段的结束标准就是后一阶段的开始标准。 在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审。 审查的一条主要标准就是每个阶段都应该交出和所开发的软件完全一
2021-12-16 23:27:14
616
原创 如何用软件工程消灭软件危机?
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发处高质量的软件并有效地维护它
2021-12-16 23:06:14
2317
原创 计组 寻址方式
寻址方式寻址方式分为指令寻址和数据寻址两大类。指令寻址分为顺序寻址和跳跃寻址顺序寻址:通过程序计数器PC加1,自动形成下一条指令的地址。跳跃寻址:通过转移类指令实现。数据寻址指令的地址码字段通常都不代表操作数的真实地址,故把它称为形式地址,记作A;操作数的真实地址称为有效地址,记作EA,它是由寻址方式和形式地址共同来确定的。为了便于研究各类寻址方式,假设指令字长=存储字长=机器字长1.立即寻址特点:操作数本身设在指令字内,即形式地址A不是操作数的地址,而是操作数本身,又称之为立即数。
2021-07-03 20:51:30
1126
原创 Cache--主存地址映射
直接映射将主存分为若干个和Cache大小相等的区,每个区当中包含的字块数和Cache中的字块数相等,主存中某个区的任一给定块,只能映射到或者只能装载到某一个给定的Cache块中。每个缓存块可以和若干个主存块对应,每个主存块只能和一个缓存块对应全相联映射主存当中任何一个区的任一个块可放入到Cache的任一块中。组相联映射先将Cache分成Q组,每个组包含若干个块(2,4,8……),将主存分区,区的大小和Cache的组数相同,映射时,主存每个区的第0块可放到Cache第0组的任一位置。某一主存块按
2021-07-03 17:09:41
227
原创 动态RAM的刷新
动态RAM的刷新刷新的过程实质上是先将原存信息读出,再由刷新放大器形成原信息并重新写入的再生过程。规定在一定的时间内,对动态RAM的全部基本单元电路必做一次刷新,一般取2NS
2021-07-02 15:48:21
3413
原创 一篇看懂系统总线
一篇看懂系统总线1.总线的基本概念计算机系统的五大部件之间的互连方式有两种,一种是各部件之间使用的单独连线,称为分散连接;另一种是将各部件连到一组公共信息传输线上,称为总线连接。1.1双总线结构:一组总线连接CPU和主存,称为存储总线(M总线);另一组用来建立CPU和各I/O设备之间交换信息的通道,称为输入输出总线(I/O总线)。1.2单总线结构:将CPU、主存和I/O设备(通过I/O接口)都挂到一组总线上。2.总线的分类2.1系统总线2.1.1数据总线用来传输各功能部件之间的
2021-07-01 22:30:39
1595
1
原创 MIPS、CPI、MFLOPS
MIPS 、CPI、MFLOPSMIPSMillion Instruction Per Second,即每秒执行百万条指令数,如每秒能执行300万条指令,则记为3MIPS。CPICyele Per Instruction,即执行一条指令所需要的时钟周期数(时钟频率的倒数)。FLOPSFloating Point Operation Per Second, 即每秒浮点运算次数。...
2021-06-30 17:32:59
309
原创 计算机组成原理
一文搞懂编译程序、解释程序、汇编程序、链接程序编译程序解释程序汇编程序链接程序将高级语言程序翻译成机器语言程序的软件称为翻译程序翻译程序包括编译程序、 解释程序编译程序将用户编写的高级语言程序(源程序)的全部语句一次全部翻译成机器语言程序,而后执行机器语言程序。因此,只要源程序不变,就无须再次进行翻译。解释程序将源程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句,接着翻译翻译源程序的下一条语句,并执行这条语句,如此重复直至完成源程序的全部翻译任务。汇编程序将汇编语言书写的程
2021-06-30 17:14:49
115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人