muduo-c++日记
qq_23542345
JKHH,M,NNM
展开
-
Buffer数据结构
muduo中的Buffer为封装了的vector。vector为一块连续空间,且其本身具有自动增长的性质,它的迭代器为原始指针,使用起来较为方便。 vector另外Buffer有两个data member,指向该vector中的两个元素,这两个index为int类型。 为什么这两个index为int类型? vector自带自动扩增功能,要是index为指针的话,扩增之后指针会失效,而int类原创 2017-03-20 17:27:32 · 1726 阅读 · 0 评论 -
Buffer
Buffer其实像一个queue,从末尾写入数据,从头部读出数据。 Tcp有两个Buffer成员,input buffer与output buffer。 intput buffer,TcpConnection会从socket读取数据,然后写入input buffer(实际为Buffer::readFd()完成的),客户端代码从input buffer读取数据。 output buffer 客户原创 2017-03-20 17:14:32 · 334 阅读 · 0 评论 -
日志
“日志”有两个意思: 诊断日志 交易日志muduo没有采用标准库的iostream,而是自己写的logStream Class,这主要是出于性能原因 LogStream做到了类型安全和类型可扩展,效率也较高。 整数转换字符串是最忌写的额,用的是Matthew Wilson(http://m.blog.csdn.net/article/details?id=46524267)的原创 2017-03-18 17:04:00 · 164 阅读 · 0 评论 -
统计周期吞吐量
muduo EventLoop有三个定时器接口函数class EventLoop :boost::noncopyable { TimerId runAt(const Timestamp&time, const TimerCallback&cb); //在指定的时间调用 TimerCallback TimerId runAfter(const Timestamp&time, c原创 2017-03-21 14:21:11 · 461 阅读 · 0 评论 -
测量两台机器的网络延时
time()/time_t(秒) ftime()/struct timeb(毫秒) gettimeofday(2)/struct timespec(微秒) clock_gettime(2)/struct timespec(纳秒) muduo计时使用的是gettimeofday(2)获取当前时间此函数在用户态实现的不存在上下文切换和陷入内核的开销时间差求法客户端定时0.2秒发送一个 int6原创 2017-03-21 16:53:38 · 1346 阅读 · 0 评论 -
time_wheel
time_wheel实际就是个时间轮定时器,时间轮定时器就不多解释了看下高性能服务编程那本书的时间轮定时器就ok了,muduo的时间轮只不过是时间轮定时器的可以说一部分吧, 这里的一开始初始化定时器的一轮tick的次数,因为主要就是针对每一个用户都是在相同的一定时间内没有再次访问的服务端需要断开与客户端连接,因此添加客户端连接信息的时候不必要添加定时时间,只需要当前tick的时的添加的,当轮到下一轮原创 2017-03-24 10:58:35 · 302 阅读 · 0 评论 -
Protobuf
Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。现阶段支持C++、JAVA、Python等三种编程语言。2.protobuf相比Xml的优点•更简单 •数据描述文件只需原来的1/10至1/3 •解析速度是原来的20倍至100倍 •减少了二义性原创 2017-03-27 11:04:55 · 305 阅读 · 0 评论