2022年4月2日记:Linux服务器开发,Mark,redis,memcached,nginx网络组件(重要)

────────────────────────────────────

┌————————————┐
│▉▉♥♥♥♥♥♥♥♥ 99% │ ♥❤ 鱼沈雁杳天涯路,始信人间别离苦。
└————————————┘
对你的感情正在充电中,请稍侯…

────────────────────────────────────
推荐一个 零声学院 免费公开课程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习]
https://ke.qq.com/course/417774?flowToken=1042807

────────────────────────────────────

前言

今天主要是遇到了学习迷茫的情况,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模型有了新的认识,虽然以前都学,但是感觉这次的收获和提升也是最为明显的。
家中温暖,心中温暖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屯门山鸡叫我小鸡

加油

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值