自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tanswer_

纸上得来终觉浅,绝知此事要躬行

  • 博客(9)
  • 资源 (4)
  • 收藏
  • 关注

原创 复合&继承关系下的构造和析构

继承关系下的构造和析构看一下测试代码:/* * @filename: Inheritance.cpp * @author: Tanswer * @date: 2018年01月31日 14:59:28 * @description: 测试继承关系下的构造和析构 */#includeusing namespace std;class Base

2018-01-31 16:25:55 766 1

原创 编写网络服务程序的常用编程模型

今天大概总结一下编写服务端程序常用的编程模型。参考UNP第三版第三十章和陈硕的muduo那本书,强烈建议仔细阅读。注意以下代码只是为了显式框架或者说编程模型,不是完整的程序,深夜写的比较任性,不要见怪。accept + read/write这个不是并发服务器,而是迭代服务器(iterative server)。 它一次服务一个客户。不适合长连接,适合 daytime 这种 write-

2018-01-25 02:32:20 1143 1

原创 Muduo网络库源码分析之TcpConnection Class

用于管理一个具体的 TCP 连接,比如消息的接收与发送,完成用户指定的连接回调 connectionCallback。TcpConnection 构造时接收参数有 TCP 连接的 sockfd,服务端地址 localAddr,客户端地址 peerAddr,并通过 Socket 封装 sockfd。并用 Channel 管理该 sockfd,向 Channel 注册可读、可写、关闭、出错回调函数

2018-01-17 15:04:45 871

原创 Muduo网络库源码分析之Acceptor和TcpServer

Acceptor用于 accept 一个 TCP 连接,accept 接受成功后通知 TCP 连接的使用者。Acceptor 主要是供 TcpServer 使用的,其生命期由后者控制。一个 Acceptor 相当于持有服务端的一个 socket 描述符,该 socket 可以 accept 多个 TCP 客户连接,这个 accept 操作就是 Acceptor 实现的。这里用到了一些封装好

2018-01-12 22:43:03 1016

原创 C++智能指针的分析与使用

手动管理的弊端在简单的程序中,我们不大可能忘记释放 new 出来的指针,但是随着程序规模的增大,我们忘了 delete 的概率也随之增大。在 C++ 中 new 出来的指针,赋值意味着引用的传递,当赋值运算符同时展现出“值拷贝”和“引用传递”两种截然不同的语义时,就很容易导致“内存泄漏”。手动管理内存带来的更严重的问题是,内存究竟要由谁来分配和释放呢?指针的赋值将同一对象的引用散播到程序各

2018-01-11 23:39:30 3362 3

原创 Muduo网络库源码分析之对socket及其相关操作的封装

主要涉及到的类和实现文件有:Endian.h 提供了字节序转换的函数。Socket.h/Socket.cc socketfd 的封装,提供了绑定地址、开始listen、接受连接等操作,并可设置套接字选项。InetAddress.h/InetAddress.cc 套接字地址的封装,提供了多种方式初始化一个地址,还提供方法从地址中拿到 ip 和 port。SocketsOps.h/

2018-01-09 15:14:11 1285

原创 eventfd 的分析与具体例子

eventfd 介绍Linux 2.6.27后添加了一个新的特性,就是eventfd,是用来实现多进程或多线程的之间的事件通知的。接口#include int eventfd(unsigned int initval, int flags);这个函数会创建一个事件对象(eventfd object),返回一个文件描述符,用来实现进程或线程间的等待/通知(wait/notify

2018-01-08 23:22:55 6632 1

原创 Muduo网络库源码分析之定时器的实现

muduo 的定时器功能由三个 class 实现,TimerId、Timer 和 TimerQueue。TimerId 类它唯一标识一个 Timer 定时器。TimerId Class 同时保存Timer* 和 sequence_,这个 sequence_ 是每个 Timer 对象有一个全局递增的序列号 int64_t sequence_,用原子计数器(AtomicInt64)生成。

2018-01-07 15:41:05 1262

原创 Muduo网络库源码分析之Reactor模式的关键结构

本文分析一下Reactor模式的实现,关键是三个类:Channel、Poller、EventLoop。事件分发类 ChannelChannel 是 selectable IO channel,负责注册与响应IO事件,包括注册给Poller的 fd 及其监听的事件,以及事件发生了所调的回调函数。 每个Channel对象自始至终只负责一个 fd 的事件分发,封装了一系列该 fd 对应的操

2018-01-06 18:36:02 1448 1

Unix-Linux编程实践教程(高清).pdf

Unix-Linux编程实践教程(高清) PDF版

2017-03-28

汇编编译连接调试工具

学习汇编必备的工具,包括汇编代码的编译 连接 调试工具。主要是针对linux系统下学习汇编。

2016-12-02

Huffman树的C++模板类实现

哈夫曼树的C++模板类实现

2016-10-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除