- 博客(38)
- 收藏
- 关注
原创 【Linux】事件处理模式
文章目录服务器框架Reactor模式Proactor模式同步I/O模拟Proactor模式服务器框架I/O处理单元:处理客户连接、读写网络数据逻辑单元:接收数据后应该做什么例如解析数据、封装响应数据请求队列:各个单元的中介即通信方式服务器通常要处理三类事件:I/O事件、信号事件(signal/sigaction)以及定时事件(alarm/setitimer),结合I/O多路复用和多线程/多进程,有两种高效的事件处理模式分别是应用于同步的Reactor模式和应用于异步的Proactor模式Re
2024-06-13 18:55:50
319
原创 【Linux】多进程基础
管道中有数据则read返回实际读到的字节数,若管道中无数据:若写端全部关闭则read返回0相当于读完若写端没有完全关闭则read阻塞管道读端全部被关闭,则进程异常终止若管道读端没有全部关闭:管道已满则write阻塞管道未满则write将数据写入并返回实际字节数。
2024-06-03 19:04:33
744
原创 【Linux】静态库和动态库
动态库在程序链接阶段代码不会复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用,不同程序使用动态库可以直接使用加载到内存的动态库中即可,实现进程间资源的共享。静态库在程序链接阶段把静态库中的代码直接复制到了程序中,每个程序需要使用到该静态库时都要链接一次。程序加载快,但是很消耗资源,部署麻烦。
2024-06-02 19:53:50
551
原创 【Linux】GNU编译器基础-GDB
告诉编译器在编译时加入调试信息,这样gdb才能调试这个被编译的文件,同时使用。GDB调试:gdb调试的是可执行文件,在编译时加入。显示所有的警告信息。
2024-06-02 13:37:50
345
原创 【Linux】GNU编译器基础
常见的GNU编译器是GCC其包含gcc以及g++等,适用于C/C++中,在Windows系统中通常使用IDE进行程序的编写和编译、链接等操作,但在Linux系统中通常使用GNU编译器来进行,对于C/C++等高级语言需要进行预编译、编译、汇编、链接最后才能生成可执行文件使用。命令进行自动编译,当前目录下使用make命令会自动进入Makefile文件并按照其中规定的规则进行编译。所以使用Makefile文件对编译的规则进行封装,指定不同源文件的编译顺序以及编译规则,最后使用。依赖则是生成目标所需要的文件例如。
2024-06-02 00:25:35
654
原创 【Linux】Linux基础(目录结构、基本权限、基本命令)
对于文件a.text为用户组添加写权限,同时也有数字法更改权限。表示所属的用户u和用户组g且该用户和用户组的权限都是。即可写可读可执行,其他用户o的权限为。只可读和执行不可写,5月30 23:24。
2024-05-31 15:13:36
1473
1
原创 【Linux】MySQL的安装及配置(Ubuntu-18.04)
2.通过系统的默认配置先登录MySQL,密码输入系统分配的默认密码J9fhynK7XZBjqwXA,登陆进入后再进行密码的修改、权限的更新及刷新。1.查看默认配置文件,此处的user和password为默认提供的,后边需要进行修改。分别安装MySQL服务器、MySQL客户端、C/C++开发库。3.重启后用新用户名和新密码登录查看更改是否成功。
2024-04-21 23:08:04
503
原创 【Linux】虚拟机与Xshell及VS Code的连接
1.在使用Xshell以及VS Code时,都需要使用SSH协议,同时需要获取虚拟机的IP地址,进入系统后IP地址可以通过设置中的网络详细信息来获取,同时保证虚拟机的虚拟网络编辑器NAT模式的子网与当前IP地址在同一个网段,若不在一个网段则需要更改。2.配置好插件重启后点击远程资源管理器,点击SSH的设置按钮,选择默认的config文件进行配置,HOST 名称、HOSTNAME IP地址、USER 用户名,保存刷新后输入密码连接即可。虚拟机:VMware Workstation Pro。
2024-04-21 18:35:00
2213
原创 【C++】STL函数对象适配器的使用
如果函数对象仅有一个输入但是需要多个输入,例如可采用函数适配器bind1st和bind2nd绑定要输入的参数即可,同时。需要我们自己的函数对象继承binary_function(二元函数对象)或者 unary_function(一元函数对象)。函数指针适配器ptr_fun( )可以把一个普通的函数指针适配成函数对象,从而使用。
2024-04-18 23:57:40
211
原创 【C++】C++11新特性
无需再拷贝一份,大大提升效率。例如某个函数返回对象时,寄存器需要有临时对象来接受,此时会调用一次拷贝构造函数,此时该临时需要赋值给新的接受对象则需要再调用一次拷贝构造,效率低下,使用右值引用寄存器中的临时对象进行语义转化,新对象接受时不用调用拷贝构造函数。,auto_ptr、unique_ptr、shared_ptr这三个智能指针模板类都定义了类似指针的对象,可以将new获得的地址赋给这种对象,当智能指针过期时,的方式,当引用计数为0时才进行析构,很好的解决了该问题,旧指针和新指针都可以使用。
2024-04-18 14:22:35
1947
1
原创 【C++】vector、list、set、map容器在自定义类型时进行排序以及map按照实值排序
【代码】【C++】vector、list、set、map容器在自定义类型时进行排序以及map按照实值排序。
2024-04-14 11:51:16
195
1
原创 【C++】vector容器概述
vector的数据安排以及操作方式,与数组非常相似,两者的唯一差别在于空间的运用的灵活性。数组是静态空间,一旦配置了就不能改变,vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素。
2024-04-11 20:53:59
461
1
原创 【C++】STL概述
STL提供六大组件:容器(Container)、算法(Algorithm)、 迭代器(Iterator)、仿函数(Function object)、适配器(Adaptor)、空间配制器(Allocator)。STL是一个标准模板库,广义上分为:容器、算法、迭代器,STL几乎所有代码都采用模板类或者模板函数,容器和算法之间通过迭代器进行无缝衔接。容器通过空间适配器获得数据存储空间,算法通过迭代器存储容器中的内容,仿函数协助算法完成不同策略的变化,适配器可以修饰仿函数,而又无需暴露该容器的内部表示方式。
2024-04-11 10:51:08
346
1
原创 【C语言】拓扑排序——求图所有顶点入度及拓扑序列
设置入度数组记录各个结点入度,遍历图中的所有结点,若当前结点有邻结点,则更新其邻结点入度数组。利用栈将所有入度为0的结点进栈。最后判断输出个数和图中的结点个数即可。顶点表示活动,弧表示活动间关系的有向无环图。
2024-03-27 14:34:19
486
原创 【C语言】归并排序——分治思想的典型应用
归并排序是分治思想的典型应用,其主要思想为不断的将相邻的两个有序的子序列合并从而得到一个完全有序的序列。具体实现为先分后治,其将输入的待排序列分割为若干个子序列,直至每个子序列只有一个元素,此时每个子序列默认有序,再不断的将相邻的两个有序的子序列合并从而得到一个完全有序的序列。
2024-03-27 02:11:18
260
原创 【C语言】插入类排序之直接插入排序、折半插入排序、希尔排序分析及输出每趟排序的结果
【C】插入类排序之直接插入排序、折半插入排序、希尔排序分析及代码输出每趟排序的结果
2024-03-26 00:11:20
983
原创 【思想】B树的性质、定义以及插入删除
B树中所有结点的子树高度相同(平衡二叉树则规定左右子树高度差最大为1)若根节点不为终端结点则至少有两颗子树除根节点外所有的非叶结点至少有m/2-1个关键字即至少有m/2颗子树(分叉)所有叶结点均在同一层(叶结点为失败结点,实际不存在,而含实际数据的最下层结点称为终端结点)所有关键字左侧的子树值均小于该关键字,右侧的子树值均大于该关键字。
2024-03-23 15:52:54
411
1
原创 【C语言】图的深度优先遍历(递归、非递归、邻接矩阵、邻接表实现)
图的深度优先遍历类似于树的先序遍历,可以利用递归不断地访问当前结点的首个未被访问的邻结点,同时需要设置访问数组来标志每个结点的访问情况,防止被多次访问。
2024-03-22 23:17:45
929
1
原创 【C语言】图的广度优先遍历算法
图的广度优先遍历算法类似与树的层序遍历,都需要借助队列来完成,但不同的是因为图中的数据元素之间的关系是多对多的,所以需要设置访问数组来表示每个数据元素是否被访问过,防止二次访问。即不断遍历访问当前节点及其所有未被访问的邻接点,直至无未被访问结点,再从这些邻接点开始出发遍历。
2024-03-21 22:16:18
896
1
原创 【C语言】PTA-L1-003 个位数统计
要统计输入数的个位数出现次数,即要对该数的每一位都进行比较操作,可以将该数看作字符串存在数组中,方便对每位数进行对比,同时需要存放不同个位数的具体数目,借助一个数组即可。最后根据要求打印其内容。:输入一个K位的数,编写程序统计每种不同的个位数字出现的次数。
2024-03-21 21:29:17
537
3
原创 【C语言】灵活内存管理方式(动态分配):malloc、free、calloc、realloc
灵活内存管理方式(动态分配):malloc、free、calloc、realloc
2023-03-28 23:59:12
192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人