上一篇文章对muduo的入门做了介绍。

http://www.cnblogs.com/LCCRNblog/p/5668035.html

  base文件夹下这么多代码,该如何入手呢?对于我这种第一次接触大型项目的小白来说是相当棘手的问题啊,缺乏经验导致无从下手;路虽难但也要继续走啊,先列出base文件夹下的所有文件目录,如下所示:

 \-- base
|-- AsyncLogging.{h,cc} 异步日志 backend
|-- Atomic.h 原子操作与原子整数
|-- BlockingQueue.h 无界阻塞队列(消费者生产者队列)
|-- BoundedBlockingQueue.h 有界阻塞队列
|-- Condition.h 条件变量,与 Mutex 一同使用
|-- copyable.h 一个空基类,用于标识 (tag) 值类型
|-- CountDownLatch.{h,cc} “倒计时门闩”同步
|-- Date.{h,cc} Julian 日期库(即公历)
|-- Exception.{h,cc} 带 stack trace 的异常基类
|-- Logging.{h,cc} 简单的日志,可搭配 AsyncLogging 使用
|-- Mutex.h 互斥器
|-- ProcessInfo.{h,cc} 进程信息
|-- Singleton.h 线程安全的 singleton
|-- StringPiece.h 从 Google 开源代码借用的字符串参数传递类型
|-- tests 测试代码
|-- Thread.{h,cc} 线程对象
|-- ThreadLocal.h 线程局部数据
|-- ThreadLocalSingleton.h 每个线程一个 singleton
|-- ThreadPool.{h,cc} 简单的固定大小线程池
|-- Timestamp.{h,cc} UTC 时间戳
|-- TimeZone.{h,cc} 时区与夏令时
\-- Types.h 基本类型的声明,包括 muduo::string

  面对如此多的文件,可以从多方面入手,比如从第一个文件开始阅读,当引入(#include)其他文件时,调到被引用文件进行阅读,这样一步一步往下将所有的文件串联起来;或者从这样一个文件开始,它引用的其他文件数最少或者没有,这样在阅读该文件的时候,不用调到别的文件中去阅读。

  在此,我将结合两种方法一起使用。

一、copyable类

  这是一个空类。会被用作其他类的基类。正如其名字一样,这个基类是可以被copy的。在《Effective C++》条款6中介绍了如何声明Uncopyable的类。

二、Types类

  目录中描述Types是基本类型的声明,里面包括两个函数,这两个函数的作用目前还不清楚。

 template<typename To, typename From>
inline To implicit_cast(From const &f);
template<typename To, typename From> // use like this: down_cast<T*>(foo);
inline To down_cast(From* f);

三、Date类

  将时间设置为一种叫Gregorian calendar的格式;Date.h文件中有一个定义struct tm;不清楚这一行到底是什么意思,因为没有找到其具体的定义,但又被使用到了。

四、Timestamp类

  该类包含一个64位长的整数表示微秒数,继承了boost::less_than_comparable<Timestamp>这个不知道是什么意思;

五、Timezone类

  没看懂;

六、Exception类

  Exception类继承自标准的std::exception;

七、Singleton

  单例模式。设计模式中单例模式是比较常见的,如果只考虑一般情况,单例模式的实现就比较简单了,如果需要考虑多线程运行时的线程安全问题,则需要通过加锁操作来避免多个线程同时创建该类对象,从而破坏其单例模式。http://www.cnblogs.com/LCCRNblog/p/5671854.html

注意:由于base中的文件太多,逐个阅读导致目的性不强,阅读起来也很乏味。目前看了上面几个,暂时搁置。进入net文件的阅读;

最新文章

  1. Java连接SqlServer2008数据库(转)
  2. 使用BCrypt算法加密存储登录密码用法及好处
  3. FZU-2075 Substring(后缀数组)
  4. 64位系统如何导入excel
  5. spring schedule
  6. 批发网加盟页面轮播Jquery jcarousellite插件效果
  7. centos安装——usb安装技术问题整理
  8. VS中的波浪线
  9. Android自定义组合控件
  10. 【Android】应用启动画面
  11. 缓存,spring
  12. 设置代码ios 6添加日历事件No calendar has been set.错误
  13. java复习(5)---接口、继承、多态
  14. SAP Gateway简介
  15. mui点击加载,下拉刷新,上下整合代码
  16. Navicat连接阿里云服务器Linux下的Mysql
  17. 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】
  18. WPF实现只打开一个窗口,并且重复打开时已经打开的窗口置顶
  19. 剑指offer(15)
  20. Web API 2 对于 Content-Length 要求严格

热门文章

  1. 一篇搞定微信分享和line分享
  2. 关于 HashMap 随笔
  3. Fix “Could not flush the DNS Resolver Cache: Function failed during execution” When Flushing DNS
  4. 关于修改extmail附件大小限制的位置
  5. Oracle Database 10g Express Edition系统文件损坏的解决办法
  6. C#综合揭秘——细说多线程(二)
  7. WPF DataGrid绑定一个组合列
  8. 一个scrapy框架的爬虫(爬取京东图书)
  9. RN 常见问题
  10. ubuntu6.04下安装Eclipse for C/C++ Development