Muduo分析及总结(六)TcpConnection

一、类关系图 首先看TcpConnection在整个Muduo结构中的关系,如下图 图1 TcpConnection是整个网络库的核心,封装一次Tcp连接,注意它不能发起连接。 TcpServer和TcpClient都用到了TcpConnection。 二、源码分析 TcpConnectio...

2019-07-14 12:09:34

阅读数 9

评论数 0

Muduo分析及总结(五) EventLoop

一、EventLoop 反应器,每个线程一个。用法 muduo::InetAddress listenAddr(9981); muduo::EventLoop loop; muduo::TcpServer server(&loop, listenAddr); se...

2019-06-29 11:54:15

阅读数 31

评论数 0

Muduo分析及总结(四)应用层Buffer

一、应用层为什么需要Buffer 非阻塞IO的核心思想是避免阻塞在read()或write()或其它IO系统调用上,这样可以最大最大限度的复用 thread-of-control,让一个线程服务于多个socket连接。IO线程只能阻塞在IO Multiplexing函数上,如select/poll...

2019-06-09 17:29:03

阅读数 21

评论数 0

Mudu分析及总结(三)Poller、PollPoller

Poller是基类,PollPoller和EPollPoller是子类,本文只介绍Poller和PollPoller。 Poller操作Channel对象,但是不拥有Channel对象。 PollPoller是基于poll实现,EPollPoller是基于epoll实现。 一、类关系图 二、...

2019-05-27 22:36:30

阅读数 9

评论数 0

Muduo分析及总结(二)Channel

Channel类 每个Channel对象自始至终只属于一个EventLoop,因此每个Channel对象都只属于某一个IO线程。 每个Channel对象自始至终只负责一个文件描述符(fd)的IO事件分发,但它并不拥有这个fd,也不会在析构的时候关闭这个fd。 Muduo用户一般不直接使用Ch...

2019-05-22 23:04:38

阅读数 12

评论数 0

Muduo分析及总结(一)定时器(TimerQueue、TimerId、Timer)

类关系图 TimerId :表示一个定时器的整体,有定时器和序列号。 Timer:就是一个定时器的封装。 TimerQueue:定时器的处理流程封装。 时序图 定时器的使用 TimeQueue被封装在EventLoop中,定时器的使用要通过EventLoop /在时间戳为time的时间执行,0...

2019-05-22 23:03:13

阅读数 16

评论数 0

VS2015 C++嵌入python运行时报R6034错误解决办法

最近在用C++封装python接口,封装完调试过程中遇到了vs2015提示runtime error问题,解决这个问题花了点时间,这里记录下,希望对其他人有点帮助。 现象: ...

2018-04-14 10:53:17

阅读数 392

评论数 0

IP、TCP、UDP首部详解

一、IP首部 IP数据报文格式及首部中各字段 图1-1 首部各字段意义 4位版本: 协议版本号,IPv4是0100,IPv6是0110...

2018-03-27 23:34:54

阅读数 399

评论数 0

static变量的初始化和赋值的区别

事实胜于雄辩,啥也别说,code说明问题: int add(int a, int b) { static int result = a + b; return result; } int _tmain(int argc, _TCHAR* argv[]) ...

2018-02-04 16:17:19

阅读数 3321

评论数 0

基于linux下的epoll服务端和客户端编程实例

epoll概念及基本函数介绍: 对epoll的详细介绍说明可查看此链接: http://blog.csdn.net/h514434485/article/details/78151090epoll服务端代码实例:#include <stdio.h> #include <str...

2017-10-02 22:55:48

阅读数 920

评论数 0

【Linux学习】epoll详解

什么是epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说...

2017-10-02 15:06:35

阅读数 582

评论数 0

FFMEPG函数avformat_find_stream_info作用

现象:FFMPEG打开媒体文件并查看媒体文件相关信息流程如下: avformat_open_input; avformat_find_stream_info; av_dump_format; 针对同一个媒体文件,不调用与调用avformat_find_stream_info函数获取的媒体文件相关信...

2017-09-02 17:12:47

阅读数 1382

评论数 0

FFMPEG的AVFormatContext、AVStream、AVPacket、AVFrame时间戳分析

这里FFMPEG版本用的3.3.3时间戳描述 AVFormatContext /** * Duration of the stream, in AV_TIME_BASE fractional * seconds. Only set this value if you know no...

2017-08-27 13:13:20

阅读数 2242

评论数 0

通过-Xlinker、-Wl给链接器传递链接选项

最近调试遇到了如何给链接器ld传递多个参数问题,写此文便于记录: -Xlinker -Xlinker -rpath-link -Xlinker <dir> 多个目录如下:-Xlinker -rpath-link -Xlinker <dir> -Xlinker <dir...

2017-07-05 22:01:03

阅读数 387

评论数 0

用vs查看c++类内存布局

书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。 工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他...

2017-07-02 18:47:05

阅读数 400

评论数 0

strcmp段错误引发的思考

最近在解bug的时候,涉及到strcmp导致的偶现段错误问题。对于strcmp,自己在linux环境下进行了个简单的测试, 测试代码如下:                        代码很简单,但我代码中只写strcmp(),这一行时然后分别在linux环境和windows环境中的vs编...

2017-01-21 23:15:12

阅读数 1826

评论数 0

TCP/IP协议之struct sock结构体

注:TCP/IP系列协议分析都是基于linux 1.2.3版本。 ————————————转载内容分割线——————————— sock结构体是我们在网络编程中遇到的第一个庞大的结构体: struct sock { struct options opt;/*IP选项缓存于此处...

2016-11-09 17:41:48

阅读数 718

评论数 0

情景分析“C语言的const关键字”

C语言中的const一直是C语言初学者心中的痛,这是因为const在不同位置有不同作用,在不同情景有不同角色。 这让初学者摸不清头脑。今天,和大家一起研究一下const,让它的每个角色都“深入人心”! 情景一:最简单的const用法 #include int main() {   int co...

2016-10-27 10:41:29

阅读数 221

评论数 0

用两个队列实现一个栈

void initQueue(Queue **Q) { if(Q==NULL) { return; } *Q=(Queue *)malloc(sizeof(Queue)); if((*Q)==NULL) { return; } (*Q)->front=(*Q)-...

2016-09-29 18:47:55

阅读数 370

评论数 0

去块效应滤波器介绍

所谓的块效应就是在视频编码中人眼察觉到的小块边界处的不连续。通过下面的图有个直观的感受。                     可以感受到(a)中的左上角有一些明显的小块,而(b)看上去比较平滑一些。 一、块效应产生的原因:         1)在对图像进行编码的时候,图像被分成16x16...

2016-08-19 17:12:13

阅读数 4629

评论数 3

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