- 博客(13)
- 资源 (2)
- 收藏
- 关注
原创 深入理解计算机系统--第八章异常控制流
异常控制流概念:通常情况下控制流是平滑的,但是也有突变的情况。而这种有突变的控制流就是异常控制流。ECF的好处:8.1 异常8.1.1 异常处理8.1.2 异常的类型中断:中断的异常处理一般称为中断处理程序。收到中断时,会先把当前指令完成后,再讲控制流突变到中断处理程序。2.陷阱陷阱是有意执行一条命令的异常,最重要的用途是给用户程序提供系统调用。...
2021-10-10 14:54:27
711
原创 结构体对齐
1.为何要对齐计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的起始地址的值是某个k值的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数。这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。比如有这么一种处理器,它每次读写内存的时候都从某个8倍数的地址开始(64位系统,每次读写内存都能操作8字节数据,因此地址也是8的倍数),一次读出或写入8个字节的数据,假如软件能保证一个基本类型的数据都从8倍数地址开始,那么读或写一个数据就只需要一次内
2021-08-26 10:45:33
168
原创 二维数组作为形参
首先需要理解编译器对于二维数组是如何寻址的:对于数组 int p[m][n];如果要取p[i][j]的值(二维数组p中的第i行第j列的值),编译器是这样寻址的:先找到数组名为p的地址(p),根据数组每行有多少列(n)和所需寻址的第i行,得出所需寻址的行偏移(p+i*n),即所在行的首地址;再根据所需寻址的第j列,得出最终寻址的地址值(p + i*n + j)。因此如果想要采用数组下标的形式作为形参,则必须给定n值(该即二维数组一行有多少列),否则无法定位出所寻址行的首地址,则无法进行正常的寻址。
2021-08-26 10:42:39
6030
转载 linux进程间的通信
进程间通信的6种方式在linux中进程间通信的方式一共有六种:管道、消息队列、共享内存、信号、信号量、socket。每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。1.管道如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。$ ps auxf | grep mysql上面命令行里的「|」竖线就是一个管道,它的功能是将前一个命令(ps auxf)的输出,作为后一个命令(grep mysql)的输入,从这功能描述,
2020-08-02 14:28:38
1004
原创 LeetCode(力扣)3. 无重复字符的最长子串。C语言解法
整数反转1.题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串
2020-07-11 15:39:54
1099
原创 LeetCode(力扣)7.整数反转。C语言解法
整数反转1.题目给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-in
2020-06-14 21:46:31
545
原创 LeetCode(力扣)2.两数相加。C语言解法
两数相加1.题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807来源:力扣(LeetCode)链接:https://
2020-06-14 16:47:06
1156
原创 LeetCode(力扣)1.两数之和。C语言解法
两数之和1.题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum
2020-06-13 16:52:04
1480
4
原创 C语言自定义打印宏函数
在调试大型项目中,打印信息分级和指出打印所在处,更方便于解决问题。查阅网上的文章并加上自己的修改,实现了个简单的宏打印函数来达到目的。宏函数实现在头文件中,加上了打印级别来控制打印是否输出,打印级别的设定需在调用的.c文件中自定义(这样做是为了能实现不同文件的打印级别能不一样,在调试指定文件或模块的问题是,能起到屏蔽其他无关代码打印的作用)。typedef.h源码:#ifndef _TYP...
2018-08-27 22:29:14
7135
原创 ubi文件系统升级报错“please,frist detach mtd2 form ubi0”
解决方法,执行命令#ubidetach -m 2 再升级便可。原因,mtd2已经被使用挂载成ubi格式。
2017-04-06 18:03:24
3327
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人