自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 HTTP请求模块

类简介用于管理HTTP连接和解析HTTP请求报文。主要成员:文件描述符、读\写缓冲区、定时器指针和报文解析状态。核心代码解析请求报文bool HttpRequest::parseRequest(){ bool ok = true; bool hasMore = true; while(hasMore) { if(state_ == Expe...

2020-05-04 16:39:38 318

原创 HTTP协议详解

HTTP工作过程地址解析:DNS解析域名,得到目标IP地址。封装HTTP请求数据包封装成TCP包,建立TCP连接客户机发送请求命令:请求格式为统一资源定位符、协议版本号、MIME信息(请求修饰符、客户机信息和可能内容)。服务器响应:状态行(协议版本号和状态码)、MIME信息(服务器信息、实体信息和可能内容),实体信息是服务器像浏览器发送头信息后,他会发送一个空白行来表示头信息的发送结束...

2020-05-04 15:41:42 149

原创 线程池模块

类简介构造函数初始化并创建空闲线程。向任务队列添加任务,并唤醒空闲线程。核心代码1.构造函数ThreadPool::ThreadPool(int numWorkers) : stop_(false){ numWorkers = numWorkers <= 0 ? 1 : numWorkers; for(int i = 0; i < numWork...

2020-05-03 11:25:52 210 2

原创 Epoll模块

类简介Epoll类封装了epoll的常用接口,如epoll_ctl和epoll_wait。具有添加、删除、修改和处理监听事件的功能。核心代码处理监听事件void Epoll::handleEvent(int listenFd, std::shared_ptr<ThreadPool>& threadPool, int eventsNum){ assert(...

2020-05-03 11:06:09 109

原创 定时器模块

类简介定时器包含两个类Timer和TimerManager,其中Timer类是内部类,不对外开放,外部直接使用TimerManager类。TimerManager类用小根堆管理Timer,根据超时时间排序。TimerManager的关键函数是addTimer、delTimer、handleExpireTimers和getNextExpireTime。核心代码1.添加定时器void ...

2020-05-02 14:09:36 598

原创 应用层缓冲区模块

设计目的当调用write/send时,会向缓冲区中写入数据,内核和tcp协议栈负责将缓冲区中的数据发送到指定地址的目标位置。当有数据到达内核的tcp缓冲区中,如果开启了对套接字可读事件的监听,那么内核会让套接字变为可读状态,从而从poll函数中返回,调用read/recv进行读操作。如果调用write/send时,内核缓冲区已满,那么阻塞在IO函数上直到内核缓冲区有足够的空间容纳要写入的数...

2020-05-01 22:57:24 341

基于gmock实现的cppmockfree的使用方法总结

C++单元测试中,我们常常需要使用到gmock,但是gmock只能mock虚函数,如果要mock非虚成员函数、静态成员函数、全局函数、重载函数、模板函数以及其他依赖库的函数时,gmock就很难实现。而cppmockfree可以支持这些函数的mock。cppmockfree是基于gmock实现的,相较于gmock更容易使用,并且支持更多场景下的函数mock。本文介绍了cppmockfree的相关使用语法,并针对不同测试场景给出了测试样例,以及如何引入cppmockfree。

2023-08-30

空空如也

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

TA关注的人

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