Linux
文章平均质量分 88
Flying clouds
穷且益坚,不坠青云之志。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
项目---基于TCP的高并发聊天系统
基于tcp的聊天系统,主要用到的知识点:生产者消费者模型、多路转接IO、MFC框架、TCP、线程池、mysql。原创 2023-04-10 16:34:58 · 2824 阅读 · 26 评论 -
Linux网络篇之---网络理论基础入门
在网络中的数据不仅仅只有数据本身,还需要有协议的内容,协议的内容帮助要传输的数据正确的在网络当中传输到对方的主机当中。因为ip地址是会动态变化的,不会永远绑定一台机器,ip地址和机器的关系并不是全球唯一的。网络协议栈封装的时候,是增加了协议的内容,为了在网络当中能够正确传输的。:这里的封装和分用指的是网络协议的内容,和应用层数据没有关系。网络完成的事情是:将数据从A主机的a进程传递到B主机的b进程。应用层数据经过网络传播的时候,需要经过网络协议栈的。,产生的数据,称之为应用层数据。距离一般不超过10km。原创 2022-12-23 16:53:33 · 224 阅读 · 0 评论 -
多路转接IO模型---epoll
linux平台性能最好的IO多路转接模型。没有之一,也是现在服务端都在使用着的。原创 2023-03-12 14:32:21 · 216 阅读 · 3 评论 -
多路转接IO模型---poll
IO多路转接poll的详解。原创 2023-03-12 09:36:36 · 277 阅读 · 1 评论 -
五种IO模型以及select多路转接IO模型
高并发的基础:多路转接。 对selectIO模型进行了详细的总结。原创 2023-02-24 22:44:56 · 1033 阅读 · 1 评论 -
以太网协议、arp协议、NAT协议、DNS协议
数据链路层的以太网协议、arp协议, 以及其他协议中的NAT协议、DNS协议原创 2023-02-17 23:21:21 · 1250 阅读 · 0 评论 -
IP协议格式、IP地址管理、路由选择
对网络层中IP协议的IP协议格式、IP地址管理、路由选择 进行讲解原创 2023-02-17 23:20:04 · 918 阅读 · 0 评论 -
TCP的协议格式 --- 20字节固定长度 + 40字节可选数据
TCP的协议格式 --- 20字节固定长度 + 40字节可选数据原创 2023-02-12 17:03:55 · 1930 阅读 · 0 评论 -
TCP协议 ---可靠传输的各种机制
发送方发送了大量的窗口数据(滑动窗口当中的分组数据),被接受方接收了之后,是先缓存在tcp维护的接收缓冲区当中的,由于缓存了大量的数据,会导致接收缓冲区当中的空间急剧减少,所以说,接收方就通过应答当中的窗口大小,去控制发送方的发送数据量。和早期的不同也就是网络拥塞的处理办法,因为早期的网络比较差,而现在的网络拥塞很多只是因为网络闪断而已,不需要降低到那么低就可以了。TCP的设计者觉得,一个。如果收到中间某个分组的确认,即使前面的确认没有收到,也直接按收到处理(确认序号的含义)因为发送的越多, 传输的越多。原创 2023-02-12 17:09:36 · 2593 阅读 · 2 评论 -
网络---TCP协议(一)三次握手、四次挥手
tcp维护了发送缓冲区和接收缓冲区,send函数发送的内容, 会先放到tcp的发送缓冲区当中,tcp自己择机发送 (tcp自己选择发送的时机, 自己选择发送的数据量)。接收方告诉发送方,期望下一次发送方从哪个序号开始发送数据,引申含义就是:接收方告诉发送发,确认序号之前的内容都收到了。结论:TCP要保证可靠和有序,TCP的发送方在发送数据的时候,针对发送的数据,进行了序号的编号。,发送方发送的数据是有顺序的,接收方接收数据的时候也是有顺序的。不一定,只要满足后续发送的数据,按照之前的序号进行编号就行了。原创 2023-02-09 13:26:20 · 545 阅读 · 0 评论 -
网络基础2-3 ---传输层的UDP协议:DP的特点,UDP的协议格式,UDP的应用
传输层是负责端对端之间的传输,端指的是端口(port);TCP协议和UDP协议都是传输层的协议传输层当中就需要约定源端口和目的端口了。原创 2023-02-02 15:30:23 · 574 阅读 · 0 评论 -
网络基础2--HTTP协议详解
TTP协议的概念,格式,版本,请求方法,状态码及其解释,Header,对HTTP协议中URL的理解;TCP粘包问题原创 2023-01-30 22:49:33 · 692 阅读 · 0 评论 -
socket 2---TCP编程
首先,第二个客户端的代码能够执行到提示输入语句处,说明此时该客户端与服务端已经建立了连接。eg: 服务端使用socket创建的套接字描述符, 相当于是 “拉皮条的“ 侦听套接字,就在侦听是否有新连接到来。返回的新连接的套接字,是为了和客户端进行通信的,只不过这个套接字没有进行监听功能,同时有客户端的地址信息。服务端使用accept创建出来的新连接套接字,相当于 “接客”的小红,新连接套接字,就是在同客户端通信的。的是: 三次握手成功之后,相当于客户端和服务端建立了tcp连接。原创 2023-01-19 19:44:30 · 2037 阅读 · 1 评论 -
socket 1---UDP编程
端口号是一共2字节16位整数,范围是[0,65535];端口号用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理,注意:一共端口号只能被一个进程所占用,一个进程可以占用多个端口号(在同一台机器当中)范围内的端口已经被一些知名的协议所使用,我们在编写代码的时候不要使用该范围内的数据作为端口号。原创 2023-01-14 21:15:27 · 1053 阅读 · 1 评论 -
Linux线程安全之---同步
假设一个线程拿到的时间片是200ms,在这个时间片范围内,他会先判断,面人如果当前碗里没有面那么他就continue退出这一次循环,但是这时候还没200ms,所以他就会一直在这里重复这个判断和continue,也可能他在刚加完锁时间片就到了,这时候他退出了,然后做面人来了,但是因为锁是加着的,所以做面人也访问不到碗,那么在这个时间片范围内就是在做无用功,时间白白给浪费掉了。这就是同步要去解决的问题。我们在吃面的生活,不可能我们边吃碗里的面,厨师边往碗里做面,防止这样的事就是互斥的原理,但是还有一个。原创 2022-12-21 19:24:33 · 160 阅读 · 0 评论 -
Linux线程之----信号量&线程池&读写锁&单例模式
如果读写锁已经在读模式打开了,有一个线程A想要以写模式打开获取读写锁,则需要等待,如果在等待期间,又来了读模式加锁的线程,那读模式的线程要等待写线程先执行完再说,因为如果这时读取的线程可以获取这把锁,读写锁本来就是大量读少量写的使用场景,那么就会导致写的线程一直拿不到这把锁,这是不合理的。线程A已经创建了一个对象,那么线程B,线程C,线程D、、、在获取这个对象的时候,就需要先等待锁,那就太复杂了,因为我们要知道,先前加锁是为了只创建一个对象,但现在已经有唯一的对象了,再去加锁就太复杂了,所以我们要。原创 2022-12-13 17:18:46 · 521 阅读 · 0 评论 -
Linux线程安全之----生产者消费者模型
目录一、生产者和消费者模型:1.1、123规则:1.2、应用场景:1.3、优点:二、代码实现比如说微信的后台程序:在不同的场景下一个进程可以是消费者也可以是生产者1.忙闲不均:在一时刻可能接收消息的线程不忙而处理消息的线程一直处于工作状态2.生产者与消费者解耦:生产者和消费者不是串型的执行(串行的处理就是当一个进程接收到消息后才可以处理消息,然后处理完之后才可以发送消息,是一个串行的过程),而我们这里将消费者和生产者解耦,接收消息的一辈子就做接收消息的事情,而处理消息的只做处理消息的事情,发送消息的只做发送原创 2022-12-08 12:20:14 · 313 阅读 · 0 评论 -
Linux 多线程安全之----死锁问题
这时候我们来通过pstack来查看下调用堆栈我们可以看到创建出来的两个线程只剩下了一个,并且他在死等锁2.接下来我们来模拟一个线程将锁锁上没有释放,再次去申请锁,导致死锁的情况: 我们再来看看调用堆栈,可以发现和上面一样,同样是在死等锁吃着碗里的,看着锅里的 这两个线程A和B都阻塞在自己的加锁逻辑当中去了我们来写代码模拟一下这个过程,创建一个线程A和线程B 这时候查看调用堆栈,发现两个线程都在等待着锁,导致卡死了先使用gdb attach 【pid】命令进入gdb调试状态 这时候再使用 thread ap原创 2022-12-07 11:45:38 · 1428 阅读 · 1 评论 -
Linux之线程安全
假设一个线程拿到的时间片是200ms,在这个时间片范围内,他会先判断,面人如果当前碗里没有面那么他就continue退出这一次循环,但是这时候还没200ms,所以他就会一直在这里重复这个判断和continue,也可能他在刚加完锁时间片就到了,这时候他退出了,然后做面人来了,但是因为锁是加着的,所以做面人也访问不到碗,那么在这个时间片范围内就是在做无用功,时间白白给浪费掉了。这就是同步要去解决的问题。我们在吃面的生活,不可能我们边吃碗里的面,厨师边往碗里做面,防止这样的事就是互斥的原理,但是还有一个。原创 2022-11-24 20:39:29 · 584 阅读 · 0 评论 -
Linux之多线程概念&线程控制
1、线程入口函数传递参数的时候,传递堆区空间。在之前的概念里,scanf()没有完成的时候,就不能printf(),但现在让两个不同的线程分别进行这两个操作,那么效率就提高了不少。,表现是,多个线程现在访问的i的空间是非法访问,因为i是临时变量,出了for循环的作用域之后就被销毁了。,当调度时一定会有其他线程被切出,而寄存器就是用来保存当线程进行切换的时候,它独有的内容。我们每次打印的都是同一个变量的四字节空间,这肯定就会和我们的预期发生冲突的。这时候,我们再来加上一个sleep,有意思的就来了。原创 2022-11-14 19:52:20 · 584 阅读 · 0 评论 -
Linux之进程信号
对信号的剖析原创 2022-11-03 17:31:18 · 1420 阅读 · 0 评论 -
进程间通信之消息队列
消息队列的原理,接口及代码测试原创 2022-10-29 10:40:20 · 705 阅读 · 0 评论 -
进程通信之共享内存
共享内存原创 2022-10-26 15:48:14 · 473 阅读 · 0 评论 -
进程间通信之管道
进程通信之管道原创 2022-10-20 17:47:12 · 1328 阅读 · 1 评论 -
Linux之静态库&动态库
静态库&动态库原创 2022-10-15 17:55:59 · 575 阅读 · 1 评论 -
Linux之基础IO
文件描述符,文件流指针,重定向原创 2022-10-14 23:45:36 · 270 阅读 · 0 评论 -
c语言的文件接口
c文件接口和系统调用文件接口原创 2022-10-13 15:34:49 · 1901 阅读 · 0 评论 -
进程控制二之waitpid,进程程序替换,bash的简单模拟实现
从waitpid到简单模拟实现bash,fork,程序替换原创 2022-09-29 17:26:58 · 687 阅读 · 1 评论 -
进程控制1 (从进程创建到进程等待wait)
学习Linux进程很苦,但总会成功的!原创 2022-09-28 18:16:07 · 286 阅读 · 1 评论
分享