摘要:
在介绍临界区互斥问题的时候,提到了忙等待和让权等待的概念。 在解决临界区互斥问题的硬件解决方案中有一种利用TSL指令实现互斥的方案,里面提到了加锁的概念,查阅资料发现加锁有自旋锁和互斥锁两种。 首先,什么是忙等待?什么是让权等待? 忙等待:可以与自旋锁、轮询等同,进程不断申请进入临界区,直到被允许。 阅读全文
摘要:
题目:洛谷爬楼梯 思路很简单,主要是复杂度和高精的问题 首先,最初的递归,这效率谁用谁知道 #include <stdio.h> long long fun(int n) { if (n < 3) return n; else return fun(n - 1) + fun(n - 2); } in 阅读全文
摘要:
提供两种思路,分别是用字符数组存储每一位进行计算(2种代码)和用int数组存储每一位进行计算(1种代码) 常见的做法是用int数组存储计算,这种方法比字符数组可以少考虑几个麻烦,推荐用int数组存储计算 当时看到可以用字符串存储大整数,就一直用字符数组存储计算,计算过程中需要进行字符‘n’和数字n的 阅读全文
摘要:
目前已有fork、getpid、exec,持续更新~ fork 作用:可以理解为,复制父进程的资源,创建子进程。父子进程的数据、堆栈段相同,代码段共享。 (实际操作上,由于fork常与exec连用,导致之前的复制是无用功,所以采用写时复制技术COW) 这句话讲的是子进程的数据和代码运行情况,子进程会 阅读全文
摘要:
C语言的局部变量在超出作用域后会自动销毁,但是被销毁的局部变量还是有可能读取原来的值的, 先说一下环境,VS2017, 下面的操作是寻址调用子函数里被释放的int局部变量的值并打印, 发现可以通过寻址找到局部变量被销毁前的值,但是第二次寻址发现值改变了。 为什么局部变量被销毁后,还可以通过寻址找到变 阅读全文
摘要:
这篇文章包括题目、思路、代码、时间复杂度分析几部分。 题目:洛谷 求第k小的数 这里的k可以取0,也就是有第0小的数(最小的数),所以,实际上相当于平常说的求第k+1小的数 想到了几种做法, 首先,排序,输出num[k]; 其次,用一个辅助数组保存前(k+1)个最小的数,遍历原数组的时候更新辅助数组 阅读全文
摘要:
https://blog.csdn.net/qq_40061421/article/details/81915838 阅读全文
摘要:
洛谷P1017 这个题难点在于对于负数进制的理解, 我们知道这种进制转换可以用短除法,然后将余数倒序输出,这是对于模为正数而言, 那么,模为负数时,怎样处理呢?如果被除数和模都为负数,怎么处理呢? 对于模为负数的除法,不同语言的处理方式不同, 请问上面那种处理方式是正确的? 对于模负数的计算,可以简 阅读全文
摘要:
本文包括堆排序的代码、例子(图示)、时间复杂度分析 #define MAXSIZE 10000 /*全局变量,需要排序的数组*/ long long int num[MAXSIZE]; /*对非叶子结点和它的孩子结点进行调整,使其重新成为大根堆,用于堆排序*/ void NodeSort(long 阅读全文
摘要:
相关概念 OF和CF的判断 OF和CF的例子 总结 几个概念: 真值:十进制的,我们常说的数字,一般指不同进制对应的十进制数 原码:把真值写成二进制,有时还要根据数据的宽度补0,原码没有负数的概念,不能表示负数 反码:正数的反码等于它的原码,负数的反码:先写出正数的原码,然后按位取反,最高位置1 补 阅读全文