
Linux编程
MrSun丶
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
“粘包”问题的起因与解决
本文参考于:徐晓鑫女士的《后台开发》 (1)因为nagle算法。什么是nagle算法,简而言之是为了避免浪费资源,将包合并发送的算法。就好比你一个人打车必然不划算,可以约几个和你一道的人一起打车,宾主尽欢。但是随之而来的问题是,因为一起发送,故接收方不知道一个包的骑士==起始和截止位置。 (2)因为我们网络编程时,其实是将接受到的数据置入缓冲区,待应用层读取,但若应用层阻塞于其他事情而归期未至...原创 2019-04-14 20:37:12 · 956 阅读 · 0 评论 -
大小端定义及判断
大端,小端又名网络字节序,主机字节序。高位高存,低位低存是小端,复合人们的视觉体验,不用改变位置,如0x0102,在内存的存储位置也是 01 02。而大段相反,复合逻辑,为02 01。如今网络传输,keli5c等使用大端,x86系列使用小段。 unp中有一个程序用来判断大小端: //endian_check.cpp #include<iostream> using namespa...原创 2019-04-14 20:46:08 · 384 阅读 · 0 评论 -
网络I/O模型
本文参考于analogous_love大神的linux网络专栏,以及徐晓鑫女士的《后台开发》一书,十分感谢两位。 网络I/O模型,在unp中,斯蒂夫先生将它归为五种: (1)阻塞式I/O (2)非阻塞式I/O (3)多路复用式I/O (4)信号驱动式I/O (5)异步I/O 而在徐晓鑫女士的《后台开发》一书中,并没有提及信号驱动式。 其中阻塞式是入门级的,就不多讲述了。 (2)...原创 2019-04-17 19:25:27 · 173 阅读 · 0 评论 -
Reactor模式,Proactor模式,半同步/半异步模式
一:Reactor是这样一种模式:它要求主线程监听文件描述符上是否有事件发生,有的话交由工作线程处理,读写数据,工作连接请求等都交由工作线程完成,主线程不再参与。(以epoll为例) 1.主线程向epoll内核事件表中注册socket上的读就绪事件 2.主线程使用epoll_wait等待socket上是否有数据可读 3.有事件可读时epoll_wait通知主线程,主线程将之放入请求队列 4...原创 2019-04-22 21:20:37 · 1129 阅读 · 0 评论 -
多线程详解
当进程为执行任务而多次切换时,必然会产生额外的开销。这时引入一个更小的单位——线程。 一个进程里面有多个线程,这些线程也可能会服务于其他进程。 例如酷狗播放器的声音处理线程,与爱奇艺的声音处理线程可能为同一线程。 线程共享进程的所有信息。 线程共享的进程环境包括: 进程代码段 进程的公有资源(如全局变量,利用这些共享的数据,线程很容易的实现相互之间的通信) 进程打开的文件描述符 消...原创 2019-04-19 11:14:02 · 270 阅读 · 0 评论 -
web服务器开发
#http_conn.h //负责状态码,读写缓存区等的定义声明。 #ifndef HTTPCONNECTION_H_ #define HTTPCONNECTION_H_ #include<unistd.h> #include<iostream> #include<sys/types.h> #include<fcntl.h> #includ...原创 2019-06-06 20:39:56 · 795 阅读 · 0 评论