Linux
文章平均质量分 94
附带网络和协议
penguin_bark
坚持写好文
展开
-
【Linux】第十八章 Reactor模式
在读取完毕后,我们需要在协议里面定义一个根据应用层协议字段来分离报文的函数(避免 tcp 的粘包问题),最终会得到一个 string 的数组,每个数组成员都是一个完整的报文;主要使用单 Reactor 单线程,相当于请求到来时,判断请求是各种事件,然后将请求和事件和回调方法结合存放到红黑树当中,当时间就绪的时候回调对应事件的处理方法。最后,我们直接一个 for 循环,通过该 tcpserver 对象在初始化时候设置的 cb_函数回调指针,来处理每一个报文。有关套接字初始化,绑定,监听,接收。原创 2024-08-26 13:46:54 · 985 阅读 · 0 评论 -
【Linux】第十七章 多路转接(select+poll+epoll)
答:ET模式只有在变化的时候才会通知用户,如果是阻塞模式,客户端通知服务器取数据,然后服务器只取部分数据,剩下缓冲区中数据没有取出,文件描述符不会返回给客户端,客户端没有收到应答而不会继续发送数据,所以必须要采用。处理旧连接,调用read函数读取客户端发来的数据,调用read函数失败则poll服务器也直接关闭对应的连接,并将该连接对应的文件描述符从fds数组当中清除。处理新连接,调用accept函数将底层建立好的连接获取上来,调用epoll_ctl函数将获取到的套接字添加到epoll模型当中。原创 2024-08-26 13:45:28 · 723 阅读 · 0 评论 -
【Linux】第十六章 高级IO (五种IO模型+fcntl)
让IO变得高效,最核心的办法就是尽量减少“等”的时间。原创 2024-08-26 13:43:51 · 1009 阅读 · 0 评论 -
【Linux】第十五章 多线程(线程池)
存放任务记录线程池中创建的线程数互斥锁队列为空时的条件变量public :} //加锁 void lockQueue() {} //解锁 void unlockQueue() {} //判空 bool IsEmpty() {} //等待 void Wait() {} //唤醒 void WakeUp() {//线程池是否开始 int threadNum_;//线程池中线程的数量 queue < T > taskQueue_;原创 2022-11-23 18:26:06 · 967 阅读 · 17 评论 -
【Linux】第十四章 多线程(生产者消费者模型+POSIX信号量)
以单生产者、单消费者为例进行实现队列: 使用STL中的queue来实现容量: 阻塞队列的容量,由用户给定,我们也可以提供一个默认的容量互斥量: 为了实现生产者和消费者的同步,我们需要使用条件变量和互斥量来实现同步的操作生产者唤醒和等待的条件变量: 当队列满了,生产者等待条件满足,应该挂起等待,等待消费者唤醒消费者唤醒和等待的条件变量: 当队列为空,消费者等待条件满足,应该挂起等待,等待生产者唤醒框架:blockqueue.hpp。原创 2022-11-23 18:18:45 · 1634 阅读 · 10 评论 -
【Linux】第十三章 多线程(线程互斥+线程安全和可重入+死锁+线程同步+条件变量)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-11-21 14:15:58 · 877 阅读 · 16 评论 -
【Linux】第十二章 多线程(线程概念+线程控制)
线程是OS能够进行运算调度的基本单位。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更轻量化。透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。Linux下没有真正意义上的线程,线程是通过进程来模拟实现的。原创 2022-11-17 20:05:57 · 867 阅读 · 16 评论 -
【Linux】第十一章 进程信号(概念+产生信号+阻塞信号+捕捉信号)
信号是进程之间事件通知的一种方式。原创 2022-11-09 21:07:07 · 663 阅读 · 14 评论 -
【Linux】第十章 进程间通信(管道+system V共享内存)
进程间通信(IPC,Interprocess communication)是一组编程接口,让不同进程相互传递、交换信息。原创 2022-11-06 15:59:29 · 738 阅读 · 11 评论 -
【Linux】第九章 动态库和静态库(生成原理+生成和使用+动态链接)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-11-02 19:04:25 · 563 阅读 · 10 评论 -
【Linux】第八章 基础IO(open+write+read+文件描述符+重定向+缓冲区+文件系统管理+软硬链接)
Linux介绍原创 2022-11-01 19:06:34 · 594 阅读 · 11 评论 -
【Linux】第七章 进程控制(进程创建+进程终止+进程等待+进程替换+min_shell)
l(list):使用可变参数列表v(vector):用数组传参p(path):自动在环境变量PATH中搜索e(env):表示自己维护环境变量。原创 2022-10-22 16:41:44 · 1594 阅读 · 12 评论 -
【Linux】第六章 进程地址空间(程序在内存中存储+虚拟地址+页表+mm_struct+写实拷贝+解释fork返回值)
🏆 🌈⭐️⚡若有帮助可以【关注++】,大家一起进步!原创 2022-10-21 15:23:30 · 1138 阅读 · 15 评论 -
【Linux】第五章 环境变量(概念补充+作用+命令+main三个参数+environ+getenv())
mian 函数可以带参数,argc (命令个数,执行该可执行文件时传入的几个命令)、 char * argv[] (指针数组,存放了每一个命令的常量字符串)、char* env[](环境变量),其中char* env[]也是指针数组,每个程序会收到一个环境表,他就是这个指针数组,每个指针指向一个 ‘\0’ 结尾的环境字符串介绍前两个参数应用。原创 2022-10-20 16:06:53 · 921 阅读 · 11 评论 -
【Linux】第四章 进程(冯诺依曼体系+操作系统+进程概念+PID和PPID+fork+运行状态和描述+进程优先级)
对应的是我们电脑中的内存其中由运算器和控制器两个部分构成包括键盘、硬盘、鼠标等硬盘、显示器等(输入设备和输出设备统称为外设)外设并不是直接和CPU进行交互,而是先与内存进行交互,再与CPU进行交互,因为外设运行速度比较慢,CPU的运算速度是很快的,为了平衡二者之间的速度,会让CPU与介于二者运行速度之间的内存先进行交互读入数据时,输入设备将数据写入到中介内存中,然后内存把数据写入到CPU中,让CPU进行数据的处理,处理完后,CPU将数据写回到内存中,最后由内存把数据写入到输出设备中。原创 2022-10-19 19:52:41 · 1829 阅读 · 30 评论 -
【Linux】第三章Linux环境基础开发工具使用(yum+rzsz+vim+g++和gcc+gdb+make和Makefile+进度条+git)
Linux的几种安装方式源码安装:源码安装会带来交叉编译的问题,源码在不同的环境下可能会有不同的效果,导致安装十分麻烦。这种安装方式用的比较少。rpm安装:rpm安装相对上面的方式比较友好,这些软件会被提前编译好,然后打包成一个软件包放在服务器上,然后通过指令就可以安装。它最大的缺陷就是不会解决依耐性的问题,一旦遇到依耐性问题,它会把问题反馈给用户,让用户自己解决。原创 2022-10-15 16:37:19 · 2956 阅读 · 21 评论 -
【Linux】第二章常见指令和权限理解
【Linux】第一章环境搭建和配置原创 2022-07-11 10:53:07 · 416 阅读 · 0 评论 -
【Linux】第一章环境搭建和配置
🏆个人主页:企鹅不叫的博客 🌈专栏C语言初阶和进阶C项目Leetcode刷题初阶数据结构与算法C++初阶和进阶《深入理解计算机操作系统》《高质量C/C++编程》⭐️ 博主码云gitee链接:代码仓库地址⚡若有帮助可以【关注+点赞+收藏】,大家一起进步!💎前言本文可参照大佬文章💎一、购买云主机并配置🏆1.购买云服务器🧡我用的是腾讯云,当然也可以用别的🧡首先在百度搜索腾讯云——进入之后搜索校园计划——之后选择云+校园特惠套餐选择合适的云服务器即可🧡之后设置密.原创 2022-05-14 12:00:57 · 302 阅读 · 1 评论