上一页 1 ··· 15 16 17 18 19
摘要: epoll技术前两节已经阐述过了,目前主要做一下封装,很多epoll的服务器都是采用事件回调方式处理, 其实并没有什么复杂的,我慢慢给大家阐述下原理。 在networking.h和networking.cpp里,这两个文件主要实现了一些文件读写功能的回调函数 。 acceptCallBack 负责新 阅读全文
posted @ 2016-04-25 19:45 恋恋风辰 阅读(2821) 评论(0) 推荐(0) 编辑
摘要: 前一篇介绍了epoll的LT模式,LT模式注意epollout事件在数据全部写成功后需要取消关注, 或者更改为EPOLLIN。 而这次epoll的ET模式,要注意的是在读和写的过程中要在循环中写完或者读完所有数据, 确保不要丢掉一些数据。 因为epoll ET模式只在两种边缘更改的时候触发,对于读事 阅读全文
posted @ 2016-04-10 01:43 恋恋风辰 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 网络通信中socket有自己的内核发送缓冲区和内核接受缓冲区,好比是一个水池, 当用户发送数据的时候会从用户缓冲区拷贝到socket的内核发送缓冲区,然后从 socket发送缓冲区发出去, 当用户要读取数据时,就是从socket内核读缓冲区读 到用户缓冲区。所以TCP中recv, send, rea 阅读全文
posted @ 2016-04-08 12:15 恋恋风辰 阅读(1081) 评论(0) 推荐(0) 编辑
摘要: 近期学习了redis底层框架,好多东西之前都没听说过,算是大开眼界了。 先梳理下redis正常的通讯流程吧 首先服务器启动都有主函数main,这个main函数就在redis.c里 首先是initserverconfig(),在这里初始化了redisserver基本的配置信息, 接着调用loadSer 阅读全文
posted @ 2016-04-06 18:47 恋恋风辰 阅读(1221) 评论(0) 推荐(0) 编辑
摘要: redis字符串可以实现通过地址偏移找到所在结构体的首地址,struct sdshdr *sh = (void *)(s - (sizeof(struct sdshdr))) 也就是通过buf地址可以找到sdshdr的地址,这个我一直不理解,写了代码测试下 地址一次间隔4,结构体总大小为8,最后一个 阅读全文
posted @ 2016-03-28 19:43 恋恋风辰 阅读(263) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19