- 博客(81)
- 收藏
- 关注
原创 Linux学习:进程通信(管道)
什么是进程间的通信两个进程之间可以直接进行"数据"的直接传递吗,这显然是不行的,显然会违背进程本身的独立性。可是,进程在创建子进程的过程中,子进程不是会继承父进程内核数据结构中的各种信息吗,父进程正可以通过这一方式实现对子进程数据的传递。虽然父子进程数据与代码共享,会写时拷贝,但它们之间也是独立的(拥有独立的内核数据结构)。单次数据的传递不能被称之为通信,而且也没有实际的应用价值,一个进程能把自己的数据交给另一个进程,反之亦然,多次可重复双向的数据交换我们才称之为进程间的通信。进程间通信的价值和意义。
2025-03-26 16:09:42
699
原创 Linux学习:动、静态库
回顾库是一种编程语言用来屏蔽底层差异的方法手段,库中会提供各种常用的基础方法,来实现对系统调用的封装。Linux操作系统一般会默认安装动态库,Linux云服务器默认不安装静态库(C标准库),因此,当需要使用使用静态库时需要进行下载。在Linux操作系统下,动态库文件后缀.so,静态库文件后缀为.a。我们使用gcc/g++编译器对.c/cpp文件进行编译时,默认调用动态库采用动态链接,要使用静态链接时指令中需要添加-static选项。动态链接指令:gcc -o 可执行程序名 代码文件。
2025-03-12 20:41:11
962
原创 Linux学习:文件系统
Linux操作系统下一切皆文件,因此,程序我们也可以将其理解为一种文件,进程是被加载进入内存调度运行的程序,所以之前对于进程的学习我们也可以理解为是针对被打开文件的学习。可是,操作系统中并非所有的文件都是被打开的,反而,大部分的文件都是没有被打开的状态,这些大量的未打开的文件都存储在磁盘上,因此,未被打开的文件我们也可以称之为磁盘文件。
2025-03-09 00:18:07
1032
原创 Linux学习:C语言缓冲区与文件接口简单模拟实现
/刷新模式宏定义1<<11<<21<<3//刷新模式宏定义 # define NONE_FLUSH(1 << 1) # define LINE_FLUSH(1 << 2) # define FULL_FLUSH(1 << 3) //FILE类型 # define SIZE 4096 typedef struct _myFILE {//输入缓冲区 char outbuffer [ SIZE ];//输出缓冲区 int cap;//容量 int pos;
2024-12-19 14:55:03
250
1
原创 C语言:函数栈帧的创建与销毁
不同的开发环境对于函数栈帧的创建与销毁,实现细节上是不同的,但思路上大体相同,我们接下来对函数栈帧的刨析都是基于vs2013这一个集成开发环境的结果。观察所用示例代码,如下:1int z = 0;z = x + y;return z;int b = 20;int c = 0;return 0;接下来我们会配合编译生成的汇编代码,监视窗口,内存窗口等工具,在调试模式下,来具体观察函数栈帧创建于销毁的每一步骤。
2024-11-11 14:41:17
1055
1
原创 C++进阶:哈希(1)
在C++库中,除开map与set这两个关联式容器外,还存在着另外两个此类容器,unordered_set,unordered_map。unordered中文释义为无序的,这也正是这一对容器使用时的表征特点,这一对容器分别对应set与map,即K模型与KV模型的存储数据结点。那么,除开使用迭代器遍历时,其内存储数据无序外,这一对容器与map与set容器有何不同,为什么要在已有map与set的情况下,再向库中加入这一对乍看功能冗余且劣于原本map与set的容器呢?我们来看下面的一组对照试验。
2024-05-13 22:27:08
1164
原创 C++进阶:map与set简单自实现
/结点结构Red,BlackT _kv;,_kv(kv),_col(Red){}//树结构public://查找//插入private:KeyOfT con;
2024-05-09 19:34:37
547
原创 Linux学习:文件描述符fd
从上面我们新学习到的Linux系统文件相关系统调用接口,可以看出其对文件进行的一系列操作都是通过open接口的返回值fd来实现的,通过fd来找到对应的文件进行写入,读取,关闭等操作。fd是一个整形数据,其被称作文件描述符,可是这一个整形数据是如何标识表明不同文件的呢,打开不同文件时其的值又有什么不同吗?close(fd1);close(fd2);close(fd3);close(fd4);close(fd5);return 0;
2024-04-23 16:55:04
1030
原创 Linux学习:进程(5):进程控制
在前面的学习中,我们所创建的子进程其数据与代码都继承于父进程,只能通过fork返回值pid分流的方式可以让父子进程执行不同的代码块,那么,有没有一种方式让子进程可以执行不同父进程其他程序的代码呢?接下来,就让我们学习一种新的进程控制方式,进程替换,它通过将其他程序的代码与数据替换入子进程代码段于数据区,来让子进程可以执行其他程序的代码。Linux操作系统中,通过exe*系列的函数接口来实现进程替换,此类进程替换的函数与接口一共有7个。
2024-04-17 11:58:48
696
1
原创 Linux学习:进程(3):环境变量
在现实生活中,各种事物的优先级代表着这些事物所要被执行的先后顺序。而在计算机中对于进程来说,也是如此,进程的优先级决定了其被CPU执行的先后顺序。当我们去谈论优先级的概念时,就代表有了需要我们去讨论优先级的前提与场景,进程的优先级决定着进程被CPU的执行顺序。而当我们提及到进程的优先级时,就一定代表着CPU不能够第一时间内处理所有需要被进行的进程,或者可以说CPU的资源无法满足支持可以第一时间处理每个进程,所以,此时就需要将各个进程进行排队等待。
2024-03-28 23:48:06
781
原创 Linux学习:进程(1):进程的概念
程序:存储在磁盘(外设)中的二进制文件程序想要运行就必须加载到内存中让CPU执行,程序只是一段段二进制指令,操作系统如何识别不同的程序,如何对各种加载到内存中需要运行的程序进行管理。单纯只有程序是无法正常运行,不能被称之为程序的。操作系统对整个计算机的管理都是采用了先描述再组织的方式,程序也要有其对应的属性信息,操作系统通过对其属性信息的管理从而达到间接管理程序的目的。
2024-03-24 20:39:58
755
原创 C++初阶:string类相关练习题
题目信息:字符串最后一个单词的长度int main()string str;//遇到' '字符不停读取,一次读取一行int i = 0;cur--;i++;cout
2024-03-19 13:31:27
511
原创 Linux学习:基础开发工具的使用(2)
Makefile为我们在项目所在创建的一个文件,这个文件用来记录需要编译项目文件间的依赖关系与依赖方法。make为一条指令,当我们执行此条指令时,就会在当前目录中检索Makefile文件中的内容,按照从上向下的顺序,根据编辑好的依赖关系执行文件间的依赖方法。
2024-03-17 16:19:11
901
原创 C++初阶:模板初阶
我们在之前类与对象的学习中,学习过类的默认成员函数,其中构造函数的函数名为类的名称,那么类模板的构造函数的函数名应该是什么呢。构造函数的名称为类名,而类模板[类名]为类型名,因此,构造函数名与普通类相同。类模板的成员函数声明与定义分离方式: 必须在同一文件下,否则报错 分离出的定义部分,必须也要加声明模板参数的声明,声明类域时要使用类型名,具体如下class [类名]public://函数声明[返回值] [函数名]();
2024-03-15 11:11:31
1085
原创 C++初阶:内存管理
new/delete开辟自定义类型的动态空间,会自动调用自定义类型的构造与析构函数class Aprivate:int _a;return 0;开辟自定义类型空间的初始化方式A aa1;A aa2;A aa3;
2024-03-13 23:05:44
887
原创 算法练习:二分查找
题目信息:在排序数组查找元素的第一个与最后一个位置思路:向符合条件位置不断推进public://数据为空,特殊处理//左端点//落到左区间left = 0;//右端点//落到右区间left = mid;
2024-03-12 22:21:14
983
原创 Linux学习:基础开发工具的使用(1)
补充:打开文件时,光标会在上一次关闭文件时光标停留位置。(切换到替换模式,此模式下输入均视为替换操作)
2024-03-12 13:28:53
1068
原创 C++初阶:类与对象(尾篇)
执行结果:使用成员变量_a初始化成员变量_b时,_a还没有被初始化。支持上述操作的原因,是因为数据或者变量。类域::静态成员函数。
2024-03-12 00:01:33
1006
原创 算法练习:同向双指针(滑动窗口)
1> 获得子串使用string的substr接口,hash.count(字符) 判断hash表中是否有这个字符,对照表中没有,那么记录表中不创建。注:循环逻辑顺序链条,滑动窗口区间(开闭)优化1:(判断方式改为两个哈希表)优化2:(计数:判断优化)
2024-03-10 14:33:07
769
原创 C++初阶:类与对象(中篇)
构造函数在整个对象的声明周期中会自动调用,且调用一次构造函数只负责初始化不会开辟空间构造函数的形式: 函数名与类名相同 无返回值 实例化对象会自动调用相应的构造函数 构造函数可以重载默认生成的构造函数class Datepublic:int _year;int _month;int _day;Date d1;d1.Print();_top = top;
2024-03-09 19:25:27
973
原创 Linux学习:权限
在使用操作系统时,我们是以用户的身份登录的,不同的用户有在操作系统享有不同的权限和资源,以此为标准用户可以分为两类: root(超级用户,管理源) 普通用户权限不能凭空而存在,必须依托于已有的事物与其功能,当我们凭借权限做出某个操作时,提及权限的前提便是这个操作,动作已经存在,而权限是划分能或者不能的指标。当某个事物有着某些功能时,也往往表示着它会有哪些权限,文本文件是存储信息的文件,它可以进行信息的读,写,查看这也就意味着它存在着读,写,看的权限。
2024-03-09 11:51:46
1250
原创 C++初阶:类与对象(初篇)
定义方式:类名(关键字Class + 类名)+ 类体(成员变量 + 类方法 + 访问限定符)class [这个类的名称]public://类的成员变量private://类方法补充:C++中成员变量命名方式注:类的内部方法可以直接访问类的成员变量class Dateprivate:int year;int month;int day;public://无法正常赋值上述操作会导致命名冲突,编译器无法识别,发生错误,所以建议类的成员变量前都加下划线class Date。
2024-03-08 10:01:55
960
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人