摘要: 快慢指针和链表的环 相信用快慢指针确定链表是否有环大家并不陌生,但是如何确定这个链表环起点的位置是一个问题。 为了深入了解,我画了个图方便理解。 下图表示了快慢指针的流程,现在假设(有环): 快慢指针都从起点B开始,快慢指针最终相交于点C,环的起点位于S。 我们假设慢指针走了 k 的距离,那么快指针 阅读全文
posted @ 2020-09-25 15:25 WoodInEast 阅读(117) 评论(0) 推荐(0) 编辑
摘要: tcpserver: 说明: 之前说的acceptor负责接收连接,tcpconnection负责对这个连接进行操作。 那么这两个合起来就有一个tcpserver的基本架构了 tcpserver使用acceptor来接受一个连接,使用tcpconnection来对这个连接进行处理。 tcpserve 阅读全文
posted @ 2020-09-02 19:30 WoodInEast 阅读(159) 评论(0) 推荐(0) 编辑
摘要: tcpconnection类: 说明: 之前我们提到了acceptor类负责socket(),bind(),listen()和accept()一个连接。 但是accept()之后的操作,例如和这个连接套接字的读/写,关闭连接等操作都没有实现。 这些操作都将由tcpconnection这个类来实现。 阅读全文
posted @ 2020-09-02 19:24 WoodInEast 阅读(174) 评论(0) 推荐(1) 编辑
摘要: acceptor类: 说明: 之前reactor模型他们的主要任务是封装了while(1){poll();handleEvent();} 这肯定是有问题的,因为我们socket API构建服务器的步骤不可能是这三步啊,应该是创建socket() >绑定套接字地址bind() >监听listen() 阅读全文
posted @ 2020-09-02 12:38 WoodInEast 阅读(138) 评论(0) 推荐(0) 编辑
摘要: eventloopthread类: 说明 封装了eventloop线程也就是IO线程有一个好处,就是使用这个线程可以保证one eventloop one thread eventloopthread会启动自己的线程,并在里面运行eventloop::loop() 流程:主线程内创建eventloo 阅读全文
posted @ 2020-09-02 00:27 WoodInEast 阅读(228) 评论(0) 推荐(0) 编辑
摘要: timerqueue类: 说明: 为什么要引用timerqueue类? 再来看一下现在reactor模型的时序图 eventloop::loop() { eventloop::poller::poll() { ::poll();获取发生了网络事件的套接字 poller::fillActiveChan 阅读全文
posted @ 2020-09-01 23:59 WoodInEast 阅读(165) 评论(0) 推荐(0) 编辑
摘要: channel类: 说明: 为了更好地管理channel,在channel中添加一些额外的成员变量/函数。使其和muduo源码一致 channel.h: #ifndef CHANNEL_H #define CHANNEL_H #include"base/noncopyable.h" #include 阅读全文
posted @ 2020-09-01 20:43 WoodInEast 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 简介: 用eventloop,poller和channel共同完成一个最简单的reactor模型。 注意本文超级长(介绍了三个类,channel,poller和eventloop,用他们实现一个最基本的reactor模型) //这是一个正常的IO复用模型结构,以poll为例子while(1) { p 阅读全文
posted @ 2020-09-01 19:09 WoodInEast 阅读(175) 评论(0) 推荐(0) 编辑
摘要: eventloop类: 作用: 我们在利用IO复用例如epoll构建服务器的时候,最基本的做法: epoll_create(); while(1) { epoll_wait(); handleEvent(); } 如果向上面那样写的话,随着服务器功能要求增多,那个循环体肯定越来越大,代码难以理解与维 阅读全文
posted @ 2020-09-01 15:26 WoodInEast 阅读(198) 评论(0) 推荐(0) 编辑
摘要: buffer类: 说明: 一个buffer类,400行的一个类要看吐了,不过还好有很多相似功能的成员函数参考:https://blog.csdn.net/Shreck66/article/details/49618331 先说一下buffer的目的作用: 在这里仅考虑 非阻塞 套接字模式,阻塞模式在 阅读全文
posted @ 2020-08-29 15:49 WoodInEast 阅读(188) 评论(0) 推荐(0) 编辑