muduo2.0源码阅读记录

花了20天的时间读了陈硕先生的《Linux多线程服务端编程》一书的前8章。当然,每天阅读的时间并不算多,中间有些部分也反反复复看了几遍,最后也算是能勉强接受作者传授的知识。配合书把muduo2.0网络部分的代码和日志库代码细读了一遍,这也算是个人第一次较为深入地去读取一个开源项目源码。通过书和源码的阅读,确实是对不少东西加深了理解。

本来想按自己的理解来写源码阅读笔记的,但考虑到网上关于muduo代码的解析文章已经很多并且写的很好了,就放弃了这个想法。摘录几个自己在源码阅读过程中参考的网页:

muduo网络库学习

muduo学习

muduo定时器

muduo定时器

原文地址:https://www.cnblogs.com/zhougb3/p/10259409.html

时间: 2024-11-08 15:49:34

muduo2.0源码阅读记录的相关文章

AFNetworking 3.0源码阅读 - AFURLSessionManager

这次来说一下AFURLSessionManager 从头文件的英文注释可以看出AFURLSessionManager类创建并管理着NSURLSession对象,而NSURLSession又是基于NSURLSessionConfiguration的.同时该类也是AFHTTPSessionManager的父类,下一篇来讲. AFURLSessionManager实现了四个协议 1.NSURLSessionDelegate URLSession:didBecomeInvalidWithError: U

seajs 3.0.0 源码阅读笔记

写笔记的时候才注意到我看的源代码是 3.0.0 的,但是官方发布的最新版本是 2.3.0.相信大部分是相同的,所以先把这个记完,再看一次 2.3.0 的代码. seajs 的源代码可以在 github上获取.seajs 在文档"如何参与开发"中说明了阅读顺序,当然为了便于阅读,在了解了目录结构之后,我直接阅读了合并好的 sea-debug.js. 整个seajs采用的是2空格缩进,避免分号的写法,我不是很习惯,但不影响阅读. 文件/目录结构 文档中各个源文件所包含的内容大致如下: in

seajs3.0.0源码分析记录

自己边读变加了一些注释,理解了一下seajs3.0.0工作的流程.正则没有一个个去理解,插件模块也没看, 以后有时间了可以补充完整~ 事件系统中事件队列的获取&定义方法 var list = events[name] || (events[name] = []) 以前自己写都是 if(!events[name]){ events[name]=[]; } var list=events[name]; 囧 加载模块文件的方法 webworker环境下加载模块文件 获取seajs的加载路径: var

Vue2.0源码阅读笔记--生命周期

一.Vue2.0的生命周期 Vue2.0的整个生命周期有八个:分别是 1.beforeCreate,2.created,3.beforeMount,4.mounted,5.beforeUpdate,6.updated,7.beforeDestroy,8.destroyed. 用官方的一张图就可以清晰的了解整个生命周期: Vue最新源码下载:地址 二:源码分析 1.先看new Vue实例的方法 创建Vue实例的文件是: src/core/instance/index.js function Vue

underscore源码阅读记录

这几天有大神推荐读underscore源码,趁着项目测试的空白时间,看了一下. 整个underscore包括了常用的工具函数,下面以1.3.3源码为例分析一下. _.size = function(obj) { return _.isArray(obj) ? obj.length : _.keys(obj).length; }; 整个underscore源码基本上都是以上这种方式写的,所以弄懂上面这段源码,整个underscore的源码就大概清楚了六七成了,剩下的源码用些时间,也就迎刃而解. 因

spark1.1.0源码阅读-taskScheduler

1. sparkContext中设置createTaskScheduler 1 case "yarn-standalone" | "yarn-cluster" => 2 if (master == "yarn-standalone") { 3 logWarning( 4 "\"yarn-standalone\" is deprecated as of Spark 1.0. Use \"yarn-clu

AFNetworking 3.0源码阅读 - AFURLRequestSerialization

AFURLRequestSerialization模块主要做的两样事情: 1.创建普通NSMUtableURLRequest请求对象2.创建multipart NSMutableURLRequest请求对象此外还有比如:处理查询的URL参数 也就是说这主要实现了请求报文构造器的功能 在AFURLRequestSerialization.h文件中声明了三个类来帮助开发者构造请求报文 1.AFHTTPRequestSerializer 2.AFJSONRequestSerializer 3.AFPr

spark1.1.0源码阅读-dagscheduler and stage

1. rdd action ->sparkContext.runJob->dagscheduler.runJob 1 def runJob[T, U: ClassTag]( 2 rdd: RDD[T], 3 func: (TaskContext, Iterator[T]) => U, 4 partitions: Seq[Int], 5 callSite: String, 6 allowLocal: Boolean, 7 resultHandler: (Int, U) => Unit

[thinkphp 5.0源码阅读] 缓存(一)

保存缓存: user表数据: cache()方法保存缓存: 访问 http://mythinkphp.com/index/index/cache ,两个缓存被保存(runtime/cache目录下): 来看其中一个缓存文件:\runtime\cache\7e\58d63b60197ceb55a1c487989a3720.php <?php //000000003600a:2:{i:0;a:4:{s:2:"id";i:1;s:4:"name";s:2:"