────────────────────────────────────
┌————————————┐
│▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈雁杳天涯路,始信人间别离苦。
└————————————┘
对你的感情正在充电中,请稍侯…
────────────────────────────────────
推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]
https://ke.qq.com/course/417774?flowToken=1042807
────────────────────────────────────
redis,memcached,nginx网络组件
前言
今天主要是遇到了学习迷茫的情况,mysql再有学习,但是似乎想换一换口味,对象模型再有条不紊的推进,不过似乎都是一个简单的开头。希望自己不要浅尝辄止,半途而废,绝对要坚持把这两项学习内容学的清楚明白。而每天一篇csdn的习惯一直是我坚持最好的,希望继续保持!
一、reactor网络编程
int clentfd=accept(listenfd,addr,sz);
clientfd==-1 && errno==EWOULDBLOCK
//说明全连接队列为空
int connectfd=socket(AF_INET,SOCK_STREAM,0);
int ret=connect(connectfd,(struct socaddr *)addr,sizeof(addr));
- errno = EINPTOGRESS 正在建立连接
- errno = EISCONN 连接正在建立
read()函数与write()函数返回值问题。read()函数读取的长度和缓冲区大小可能不相同,而write()函数返回值也有可能为-1,但是写入数据往往与成功发送数据值相同。
检测IO
IO函数本身可以检测IO的状态,但是只能检测一个fd对应的状态。
IO多路复用可以同时检测多个IO的状态,IO函数检测具体状态,IO多路复用可以检测可读、可写、错误断开等笼统事件。
剖析图
关键是要理解 struct epoll_event
一个事件在红黑树上只有一个节点,这是知识点已经不是第一次听到了。
epoll_ctl操作红黑树,网卡驱动程序会和linux内核协议栈建立回调关系。当我们事件被触发,红黑树节点拷贝到就绪队列。
二、编程细节
reactor模型=IO多路复用+非阻塞IO
将对IO的处理转化为对事件的处理
三、redis、memcached、nignx具体使用
一个reator进行管理。
注册事件->事件触发->回调函数->IO
总结
今天对reactor模型有了新的认识,虽然以前都学,但是感觉这次的收获和提升也是最为明显的。
家中温暖,心中温暖。