- 博客(28)
- 问答 (1)
- 收藏
- 关注
原创 C++ STL容器使用
在应对算法问题时,我想到了解决问题的思路,但发现实现起来有一定的难度。在查阅了相关资料后,发现C++封装了一些很有用的数据结构。hash中的一种,第一个参数代表key的类型,第二个参数代表value的类型。lower_bound(value): 找到小于或等于给定值的第一个元素。2.set<int> st,set是一个有序数据结构,按照大小排序。end():找到最后一个地址的后一个地址(虚拟位置,表示非法访问)find(value) ,返回指向该元素的指针(迭代器)begin ():找到第一个地址。
2023-10-13 23:33:35
152
原创 并发性编程——线程API
创建线程A→线程A创建完成→进入循环,完成加法,并且创建线程B→线程B创建完成,但此刻A循环的加法尚未完成,因此二者并发执行→在某一刻,循环终止。创建线程A→线程A创建完成→进入循环,完成加法,并且创建线程B→线程B创建完成→进入B循环,完成加法。在线程A完成num++操作时,线程B同样用这个被修改后的num来执行while比较。因此,两个线程共同执行这一个累加操作,它的结果一定小于等于一个线程执行的结果。并发编程一定会涉及到数据的共享,而一旦这二者结合,就会丢失许多重要的特性。
2023-08-05 18:46:14
125
原创 kernel mode和user mode
在使用trap指令从user mode进入kernel mode以后,在OS完成一系列操作的时候,同时也会生成对应的数据(PC寄存器,reg寄存器),将会以 return-from-trap 的形式返回数据,为了正确的返回这些数据,OS在内核开辟了一个新的stack来保存这些数据。当程序发出一些“敏感指令”时,例如:发出I/O请求,申请更多的内存资源orCPU资源,如果不加以限制,哪么一个简单的程序就有可能“吃掉”所有的计算机资源来使得其崩溃。一个简单的想法是,不加任何限制的允许用户态的程序调用资源。
2023-08-02 15:25:45
321
原创 LINUX进程接口测试
我们阅读该手册不难发现,wait和waitpid的区别同样在函数参数上面,waitpid可以传入一个pid作为实参,以pid所指向的哪个子进程的结束为flag来控制父进程。waitpid系统调用将会中止调用该指令的线程,直到一个被用pid作为waitpid函数实参来确认的子进程终止为止。至于为什么exec有一个六成员的函数族,我目前不知道为什么要如此,也许在这方面的细分是为了更好的应对复杂的环境。,子进程和父进程各自拥有独立的内存空间,因此在子进程中关闭标准输出,不影响父进程。execvp和execv。
2023-08-01 10:08:39
220
原创 OS学习——并发性编程初探
父进程修改x的值后,不影响子进程的x,充分体现了OS的virtualization的特性。由于子进程和父进程拥有独立的内存空间,因此当我们分别修改各自的x的值时,他们互不影响。而fork的另一个有趣的特性时,子进程几乎是父进程的“copy”。我猜测,子进程没有关掉父进程访问file权限的能力,即子进程关掉的仅仅只是子进程的fp,而不是父进程的fp,因为他们具有各自独立的内存空间。有两条,这验证了我的猜想,即在先抢到资源的进程关掉其他进程对资源的访问权限之前,其他进程可能已经完成了访问。
2023-07-31 16:16:38
85
原创 OS学习日志————1
问题8:Now run with some randomly generated processes: -s 1 -l 3:50,3:50 or -s 2 -l 3:50,3:50 or -s 3 -l 3:50,3:50. See if you can predict how the trace will turn out. What happens when you use the flag -I IO RUN IMMEDIATE vs. -I IO RUN LATER?这里我们测试 -S指令。
2023-07-29 12:07:31
84
原创 面向对象 C++ 01
内存条被分为四个不同的区 代码区的特点 全局区的特点 对于上述的验证,有代码:运行结果为: 多次运行后,观察结果可得,在内存中存储的地址明显不一样,且相差比较大。
2022-06-27 23:09:41
230
原创 C++实现排序的几个简单实验
1.使用直接插入排序算法对序列{49,38,65,97,76,13,27,49}进行从小到大排 序,并且输出每一趟排序的结果。2. 使用冒泡排序算法对序列{49,38,65,97,49,13,27,76}进行从小到大排序, 并且输出每一趟排序的结果。3. 使用快速排序算法对序列{49,38,65,97,49,13,27,76}进行从小到大排序, 并且输出每一趟排序的结果。4、使用折半插入排序算法对数据进行排序(根据分数进行排序),输出每一趟排序的结果。typedef struct{char name[5];
2022-06-09 20:03:41
996
原创 查找————C++实现两个小实验
题目要求:建立顺序表(有序表),分别对其进行顺序查找和折半查找,顺序查找实现的思路比较简单,从前到后遍历比较关键字即可(可以引入哨兵方便一些操作),折半查找的核心就是“分为区间块”,从中间往两头出发(需要注意一下下标,这里仔细一点就行),折半查找的前提和顺序查找不同,对于顺序查找而言,只需要顺序表,在物理上(内存中)满足线性关系即可完成遍历,但是对于折半查找而言,需要的不仅仅是顺序表,而要对顺序表按照大小进行排序形成有序表,因此在实现折半查找时,要先实现顺序表的排序算法(此处实验中没有要求,可以自己键入有顺
2022-06-07 21:23:36
135
原创 C++实现二叉树的构建和基本操作
#include <iostream>using namespace std;typedef struct BiNode { int data; //本次采用整数 struct BiNode* lchild, * rchild; //左孩子 右孩子} BiNode, * BiTree;//先序遍历void Xianxu(BiTree T){ if (T) { cout << T->data; Xianxu(T->lchild); X.
2022-05-25 20:14:17
1091
原创 C++ 实现串及相关操作
#include<iostream>#include<string>using namespace std;#define Maxsize 100 //串的最大长度typedef struct { string list[Maxsize]; int listsize;}Sqlist;//显示操作菜单void showmenu(){ cout<<"位置对应:0 1 2 3 4 5 . 。 。 。(输入) "<<endl; cout&l.
2022-05-18 22:24:34
476
原创 C++实现栈和队列
using namespace std;#include<iostream>#define Maxsize 100 //顺序栈初始分配量#define OK 1#define ERROR -1;typedef struct { int* base;//本题要求整数,可以更换为其他类型 int* top; int stacksize;}Sqtack;//顺序栈的初始化int InitStack(Sqtack& S){ S.base .
2022-05-18 14:44:29
211
原创 数据结构作业001
1、创建一个长度为n的顺序表,顺序表的长度以及元素由用户输入。对该顺序表进行插入和删除,并输出插入和删除后的顺序表。例:输入线性表la的元素个数n:5请输入线性表la的n个元素:1 2 3 4 5顺序表为0 11 22 33 44 5请输入要插入的元素的位置和插入的值3 7插入后的顺序表为0 11 22 73 34 45 5请输入要删除的元素的位置2the dele data is 2删除后的顺序表为0 ...
2022-05-06 19:53:35
807
原创 C++小作业001
#include<iostream>#include<string>using namespace std;#define MAX_SIZE 1000 typedef struct { string m_Name;//姓名 string m_Sex;//性别 int m_Age;//年龄 string m_Num;//电话号码 string m_Addr;//地址}Person;typedef struct { Pers.
2022-04-17 10:30:18
905
原创 C++day01
上学期进行了C语言的学习,但在深入的了解了程序及其算法以后,我发现仅用原本的知识是不足以解决更多复杂的问题,因此现在开启C++的学习,作为对C的一个补充。——第一个C++程序,输出一串字符#include<iostream>using namespace std;int main(){ cout<< "Hello,world." << endl; system("pause"); return 0;}与C当中使用printf...
2022-03-17 18:38:55
1374
原创 11.1结构类型之枚举
————常量符号化 实验11.1.1#include<stdio.h>const int blue = 0;const int yellow = 1;const int red = 2;int main(){ int color = -1; char* colorname = NULL; printf("请输入你最喜欢的颜色代码"); scanf_s("%d", &color); switch (color) { case ...
2021-12-26 21:13:06
277
原创 10.2字符串函数(第二回)
————strcpy函数char *strcpy(char *dest, const char *src) //函数的声明,这里所传递的参数是数组。因为我们是要把src的内容复制到dest,所以在此过程中src的内容是不需要也不应该改变的,加上const修饰。该函数的返回值是指向dest的指针(可以拿它来做些小事情)实验10.2.1 验证strcpy函数运行结果使用时要注意,如果目标数组不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况(程序会崩溃),因此在使用的时.
2021-12-23 19:53:07
535
原创 10.2字符串函数(第一回)
在上一节中介绍了字符串和字符数组的辨析,那么到底怎样对字符串进行处理呢?C的标准库给了我们答案,在下面的文章中我们会介绍在C语言中常用的针对字符串的函数。————标准库 string.h在string.h这个“工具箱”里装了很多的“工具”,如果想要使用这些“工具”,我们在前面的学习中就已经知道,要在代码的开头给出 #include<string.h> 来调用。——strlen函数strlen函数的作用,认为是计算得到某个字符串函数的长度,那么和我们之前所学到的sizeof相比有什
2021-12-20 20:27:10
87
原创 10.1 字符串
————字符数组和字符串char word[]={'A','B','C'}; //这不是一个字符串,它无法用字符串的方式做计算#include<stdio.h>int main(){ char word1[] = { 'a','b','c' }; printf("char1的长度=%d\n", sizeof(word1)); char word2[] = { "abc" }; printf("char2的长度=%d\n", sizeof(w...
2021-12-18 10:42:42
110
原创 9.2指针的计算(第一回)
————指针变量和常数的运算前提条件:指针指向一片连续分配的空间,例如数组。分析:以数组为例#include<stdio.h>int main(){ int arr[9] = { 1,2,3,4,5,6,7,8,9 }; int* p = arr; printf("p=%d\n", *p); printf("p+5=%d\n", *(p + 5)); return 0;}打印出的结果应当是: p=1 ...
2021-12-13 20:48:50
615
原创 9.1指针
————运算符 & * ,两者进行的是互逆过程。 进行: int a=1;int *p; p=&a; 则有: *p==ap叫做指针变量,在c语言中,数据是储存在内存中的,p里面储存的是变量a的地址。地址是一个特殊的值,它既包括大小,也包括指针所指变量数据的类型,也就是说在不同编译器环境下,地址不一定是一个整数。————变量的值是内存的地址普通变量的值是实际的值,而指针变量的值是具有实际值变量的地址。如果要看某个变量的地址,可以采取:printf(...
2021-12-06 20:30:22
284
1
原创 学习日记 day2
1. 变量的作用域及其生命周期 变量分为局部变量和全局变量,其作用域和生命周期也有所不同。 局部变量的作用域:就是变量所在的局部范围。 全局变量的作用域:整个工程。 其中对于整个工程的理解是,在不同的.c文件中,一个.c文件中的全局变量可以在另一个.c文件中使用(目前学到的使用方法是打印)。但是需要声明。 声明的方法:使用声明函数, extern 变量的生命周期:变量的创建和销毁之间的时间段 局部变量的生命周期:入局部范围开始而出局部范围结束...
2021-10-10 22:20:40
76
原创 学习日记 day1
主函数(main函数)是入口,一个工程中可以有多个.c文件,但是多个.c文件中只有一个主函数,主函数是有且仅有一个的。 代码编写过程:声明要使用的“工具箱”,也就是头文件, 在主函数内部编写。 数据分为变量&常量 变量分为: 全局变量 局部变量 当局部变量与全局变量重名时,服从“局部优先”原则,但是在实际操作中要避免这种情况,因为这样没有意义。 加法计算器的编写: 其中的注意点: 1、在VS编译器中,scanf函数会被认为是不安全的,可以在第一行...
2021-10-05 09:47:05
176
空空如也
出现“不允许使用不完整类型该如何解决”(标签-IDE|关键词-int)
2022-03-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人