最近的最近学习了muduo网络库,阅读了网络部分90%的源码并自己实现了一遍。略有感触的是阅读源码往往是不足以真正理解其含义和实现的。在我真正重新写了一遍以后,即使大部分时候是参考着敲了一遍以后才算是掌握了其实现。在自己手敲的过程中自然而然地使你会想着它的实现流程以及这行代码的意义。古人诚不欺我,读 ...
分类:
其他好文 时间:
2020-04-12 22:30:50
阅读次数:
81
日志的使用方式: LOG_INFO << "AAA"; LOG_INFO是一个宏,展开后为: muduo::Logger(__FILE__, __LINE__).stream() << "AAA"; 构造了一个匿名对象Logger,在这个对象构造的时候其实已经写入了文件名和行号。 匿名对象调用.st ...
分类:
其他好文 时间:
2020-03-03 01:16:57
阅读次数:
85
https://blog.csdn.net/adkada1/article/details/54342275 简析 https://blog.csdn.net/amoscykl/article/details/83043790 分析 https://blog.csdn.net/qq_38345430 ...
分类:
其他好文 时间:
2019-06-09 09:28:51
阅读次数:
102
花了20天的时间读了陈硕先生的《Linux多线程服务端编程》一书的前8章。当然,每天阅读的时间并不算多,中间有些部分也反反复复看了几遍,最后也算是能勉强接受作者传授的知识。配合书把muduo2.0网络部分的代码和日志库代码细读了一遍,这也算是个人第一次较为深入地去读取一个开源项目源码。通过书和源码的 ...
分类:
其他好文 时间:
2019-01-12 14:24:44
阅读次数:
188
“different,but not less. 不同,但也不差!” 前记 出现内存错误,查问题是一方面,更多的是需要考虑,以后写代码如何不出现内存错误。总结很关键。 《Linux多线程服务端编程使用muduo网络库》这本书说的是RAII技术(后期研究下,做一些实践)。 自己的总结:new 出的内存 ...
分类:
其他好文 时间:
2018-12-24 02:57:56
阅读次数:
994
模板类中,或模板函数中,若限定模板参数为数值类型,可以使用如下方式进行判断. 以上代码节选自muduo. 其中主要推断方式是通过调用std::is_arithmetic<T>. 若 T 为算术类型(即整数类型或浮点类型)或其修饰类型(添加注入const等),则提供等于 true 的成员常量 valu ...
分类:
编程语言 时间:
2018-11-03 21:55:26
阅读次数:
198
四处寻觅开源代码学习,适合的代码非常稀少,不适合的原因却千奇百怪。 不是使用语言特性过于老旧(c++03) 就是使用的冷僻语法(template<T> enable_share_from_this<T> 居然还搞个继承) 要么就是需要强大的系统背景知识(图形引擎,加密代码等) 或者无法但不调试,不能 ...
分类:
Windows程序 时间:
2018-09-04 10:38:42
阅读次数:
1549
C++智能指针,指针容器原理及简单实现(auto_ptr,scoped_ptr,ptr_vector). [TOC] 前言 最近再写一个muduo的异步日志接触了很多智能指针,但是又不打算用boost库,只好模一个来用用了. 智能指针本身是一个对象,它在栈上创建,构造的时候分配堆上资源,析构的时候释 ...
分类:
编程语言 时间:
2018-08-09 22:00:49
阅读次数:
224
模拟单线程情况下muduo库的工作情况 muduo的源代码对于一个初学者来说还是有一些复杂的,其中有很多的回调函数以及交叉的组件,下面我将追踪一次TCP连接过程中发生的事情,不会出现用户态的源码,都是库内部的运行机制。下文笔者将描述一次连接发生的过程,将Channel到加入到loop循环为止。 监听 ...
分类:
其他好文 时间:
2018-06-16 19:13:26
阅读次数:
200
一个设计良好的定时器在服务端的应用程序上至关重要,muduo定时器的实现陈硕大牛在书中已经详细的谈过,笔者尝试从源码的角度解读定时器的实现,如果理解不对,欢迎指正。 在muduo的定时器系统中,一共由四个类:Timestamp,Timer,TimeId,TimerQueue组成。其中最关键的是Tim ...
分类:
其他好文 时间:
2018-06-16 19:12:20
阅读次数:
239