Muduo阅读笔记--base(二)
上一篇文章对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文件的阅读;
Muduo阅读笔记--base(二)的更多相关文章
- Hadoop阅读笔记(二)——利用MapReduce求平均数和去重
前言:圣诞节来了,我怎么能虚度光阴呢?!依稀记得,那一年,大家互赠贺卡,短短几行字,字字融化在心里:那一年,大家在水果市场,寻找那些最能代表自己心意的苹果香蕉梨,摸着冰冷的水果外皮,内心早已滚烫.这一 ...
- Linux协议栈代码阅读笔记(二)网络接口的配置
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...
- Apollo源码阅读笔记(二)
Apollo源码阅读笔记(二) 前面 分析了apollo配置设置到Spring的environment的过程,此文继续PropertySourcesProcessor.postProcessBeanF ...
- [置顶] Linux协议栈代码阅读笔记(二)网络接口的配置
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_io ...
- 《大象Think in UML》阅读笔记之二
Think in UML阅读笔记(二) 上一次读到面向对象和面向过程的区别和各自的优势,结合实例分析了面向过程在面对大数据的时候,已经不足以满足人们的需求,所以引入了面向对象,面向对象的方法把世界看做 ...
- 【unix网络编程第三版】阅读笔记(二):套接字编程简介
unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这 ...
- 《梦断代码Dreaming In Code》阅读笔记(二)
这段时间一口气读了5章,所以想着现在一块写阅读笔记. 在阅读的这段时间,我一直是晚上进行阅读,很多时候都是读完一看已经一个小时了,效果还不错.闲话不表,说说阅读心得. 关于底层语言或是低级语言,我之前 ...
- Head First HTML与CSS阅读笔记(二)
上一篇Head First HTML与CSS阅读笔记(一)中总结了<Head First HTML与CSS>前9章的知识点,本篇则会将剩下的10~15章内容进行总结,具体如下所示. div ...
- 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification
Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...
随机推荐
- spring实例化dataSource使用jndi和jdbc两种方式
一.使用jndi的方式 这种方式方便测试人员不需要改代码,直接改变tomcat的server.xml就可以更改数据库连接 spring创建bean <bean id="dataSour ...
- angular directive知识
一般来讲 directive名字遵循一下规则: 1.忽略以x-和data-为元素/属性的前缀 2.转化“:”,“-”,“_”命名为驼峰命名 如下所示 <div ng-controller=&qu ...
- 修改yum源
安装 centos 之后,修改 yum 源到其它国内源 1. 备份原文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Ba ...
- Python扩展方法一二事
前言 跟着一个有强迫症的老板干活是一件极其幸福的事情(你懂的).最近碰到一个问题,简单的说就是对一个对象做出部分修改后仍然返回此对象,于是我就写了一个方法,老板看了之后只有一句话:不雅观,改成直接对此 ...
- maven编译时错误:无效的目标发行版
(转)Maven 将依赖打进一个jar包 博客分类: maven maven配置 <?xml version="1.0" encoding="UTF-8&quo ...
- jsp base路径
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- windows 2008 R2 断电重启进入修复模式
windows 2008 R2 意外断电重启进入修复模式 现在出现一个问题,就是当机房停电的时候,计算机自动进入到修复模式,当人不在机房的时候,容易造成服务器无法访问,我相信正常启动应该没什么问题吧, ...
- Java Socket通信以及可能出现的问题解决
Java中基于TCP协议实现网络通信的两个类:客户端的Socket和服务器端的ServerSocket. Socket通信模型如图所示: 不管Socket通信的功能有多复杂,任何socket通信过程的 ...
- ESLint可共享配置发布,团队自定义ESLint规则新鲜出炉
ESLint于2013年6月份推出,至今4个年头,最新版本v4.8.0.它是目前主流的用于Javascript和JSX代码规范检查的利器,很多大公司比如Airbnb和Google均有一套自己的Java ...
- java 虚拟机与并发处理几个问题简要(二)
六.两个重要的概念性问题: 1.同步:要保持数据的一致性,就需要一种保证并发进程正确执行顺序的机制.这种机制就是 进程同步(Process Synchronization). 竞争资源的多个进程按着特 ...