muduo网络库net篇:写在进一步阅读之前

socket

sockets命名空间封装linux API
InetAddress封装sockaddr_in*赋值
Socket封装socket操作

Buffer类

关于Muduo 中输入输出缓冲区的设计与实现的原理,陈硕已经写的很详细了,可参考[Buffer 类的设计][1] 。在这里,我主要关注代码数据方面。
Buffer类成员数据如下:

public:
  static const size_t kCheapPrepend = 8;
  static const size_t kInitialSize = 1024;
private:
  std::vector<char> buffer_;
  size_t readerIndex_;
  size_t writerIndex_;

  static const char kCRLF[];

一图胜千言(拷贝陈大的图):

http://hi.csdn.net/attachment/201104/17/0_1303014373FZQM.gif

只有一个是涉及到文件描述符的函数,即:

ssize_t readFd(int fd, int* savedErrno)

写在进一步阅读之前

阅读➕写博客,学习muduo网络库将近一周了。
原本没有写博文的打算,直到把base部分看完,回想到底读了些什么时,竟然有些茫然。便有了把阅读过程写下来的打算。
实际上,一直到现在,代码看了大半,仍旧有些糊涂。在进一步阅读之前,停下来,扯扯淡吧。

我发现自己在阅读代码时,有很严重问题:
一、过度关注于细节,忽视了逻辑
在读代码时,一旦发现不知道的Linux API 、C++特性、boost库等细节,总会想着去查。固然,这样的确会陆续学到一些东西,却也中断了读代码的节奏。个人认为还是应该以逻辑为主,细节应该在逻辑明了再去查资料,大部分细节并不影响阅读。
二、不重视测试案例
测试案例是能够迅速明白逻辑的有效手段,我在阅读时却不管不顾。这不但会加长理解时间,同时也会忽视应用或根本不明白如何应用。
三、不动笔
我所说的不动笔,是指不画代码流程图,类关系图。如果自己不尝试把代码逻辑或类之间调用关系画出来,一来记忆不会深刻,二来不能有效的理解。
四、不动脑
我基本上是根据各个类的API去学习,一个个去看代码。为什么我不能够记住对外提供哪些API呢?因为我自己没有想过,这个类应该实现哪些API,那个API如何实现之类的问题。

总之,阅读时,要先结合测试案例动脑想应该实现哪些功能,动笔画出类图。在不影响阅读代码的情况下,先忽略细节。阅读完一部分后,要动笔把代码串起来。最后再去查不知道的细节。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值