从零开始,以C语言和C++分别实现类似Muduo网络库的服务器。应用层采用Http协议,打造出B/S架构模型,能处理浏览器请求。课程详细剖析每个环节,无论是初学
* 00 资料/
* 01 项目模块-xmind.pdf
* 02 Http高并发服务器 概述.pdf
* 03 Http Web 服务器.pdf
* 04 图解HTTP-彩色版.pdf
* 05 项目代码.zip.zip
* 01 1. 项目概述以及要求
* 02 2. 项目效果展示
* 03 3. 关于项目业务层的说明
* 04 4. 多反应堆模型结构概述
* 05 5. 在VS中创建基于Linux的项目
* 06 6. 初始化服务器端用于监听的套接字
* 07 7. epoll 工作模型的雏形
* 08 8. 和客户端建立新连接
* 09 9. http的get请求数据块的格式
* 10 10. http的post请求数据块的格式
* 11 11. http响应消息的数据格式
* 12 12. http的状态码和如何指定content-type
* 13 13. 接收客户端的http请求消息
* 14 14. sscanf 函数的使用
* 15 15. 解析请求行
* 16 16. 发送文件的两种方式
* 17 17. 组织http响应的数据块头
* 18 18 通过http响应消息发送文件
* 19 19. Linux 中遍历目录的两种方式
* 20 20. 发送目录-上
* 21 21. 发送目录-下
* 22 22. 代码的补充和编译
* 23 23. 程序测试和部分bug的修改
* 24 24-非阻塞模式下关于sendfile函数的说明
* 25 25. 解决浏览器无法访问带特殊字符的文件的问题
* 26 26. 添加多线程处理
* 27 27. 第2阶段模块功能概述
* 28 28. Channel 模块的实现
* 29 29. ChannelMap 模块的实现 - 上
* 30 30. ChannelMap 模块的实现 - 下
* 31 31. Dispatcher 模块的实现思路
* 32 32. Dispatcher 的定义
* 33 33. EpollDispatcher 的实现 - 上
* 34 34. EpollDispatcher 的实现 - 中
* 35 35. EpollDispatcher 的实现 - 下
* 36 36. PollDispatcher 的实现 - 上
* 37 37. PollDispatcher 的实现 - 下
* 38 38. SelectDispatcher 的实现
* 39 39. EventLoop 模块的剖析
* 40 40. EventLoop 的初始化
* 41 41. 启动 EventLoop
* 42 42. 在 EVentLoop 中处理被激活的文件描述符的事件
* 43 43. 往 EventLoop 的任务队列中添加新任务
* 44 44. 主线程给子线程添加任务以及如何处理该任务
* 45 45. 处理任务队列中的任务
* 46 46. 将任务队列中的任务添加到 Dispatcher 的检测集合中
* 47 47. 任务队列中节点在 Dispatcher 中的删除和修改
* 48 48. 子线程 WorkerThread 的实现
* 49 49. 线程池 ThreadPool 的初始化
* 50 50. 线程池的启动和从线程池中取出一个反应堆实例
* 51 51. Buffer 的创建和销毁
* 52 52. Buffer 的扩容
* 53 53. Buffer 的数据写入-直接写
* 54 54. 通过 Buffer 接收套接字数据
* 55 55. 创建并初始化 TcpServer 实例
* 56 56. 启动 TcpServer
* 57 57. 主线程反应堆模型的事件添加和处理详解
* 58 58. 创建一个 TcpConnection 实例
* 59 59. 在 TcpConnection 接收客户端数据
* 60 60. HttpRequest 的定义和初始化
* 61 61. HttpRequest 资源重置和销毁
* 62 62. 添加和查找 HttpRequest 请求头
* 63 63. 解析请求行(通过指针方式解析非 sscanf 方式)
* 64 64. 优化解析请求行的代码
* 65 65. 解析请求头并存储
* 66 66. 解析完整的 http 请求协议
* 67 67. 处理 http 请求 - 上
* 68 68. HttpResponse 的定义和初始化
* 69 69. HttpREsponse 添加响应头和内存释放
* 70 70. 组织 HttpResponse 响应消息
* 71 71. 处理 Http 请求 - 下
* 72 72. 修改发送目录和文件的函数
* 73 73. 在 TcpConnection 中接收并解析 Http 请求消息
* 74 74. 给客户端回复数据的两种方式-上
* 75 75. 给客户端回复数据的两种方式 - 下
* 76 76. 内存资源的释放
* 77 77. 程序的编译和错误的修改 - 上
* 78 78. 程序的编译和bug的修改 - 下
* 79 79. 启动服务器和添加日志功能
* 80 80. 程序的调试和bug修改 - 上
* 81 81. 程序的调试和bug修改 - 下
* 82 82. 使用CPP重构项目-前言
* 83 83. 重构 Channel 类
* 84 84. 重构 Dispatcher 类
* 85 85. 重构 EpollDispatcher 类
* 86 86. 重构 PollDispatcher 类
* 87 88. 重构 EventLoop 类 - 1
* 88 87. 重构 SelectDispatcher 类
* 89 89. 重构 EventLoop 类 - 2
* 90 90. 重构 EventLoop l类 - 3
* 91 91. 重构 EventLoop 类 - 4
* 92 92. 重构 EventLoop 类 - 5
* 93 93. 重构 ThreadWorker 类
* 94 94. 重构 ThreadPool 类
* 95 95. 重构 TcpServer 类
* 96 96. 重构 Buffer 类 - 上
* 97 97. 重构 Buffer 类 - 下
* 98 98. 重构 HttpRequest 类 - 1
* 99 99. 重构 HttpRequest 类 - 2
* 100 100. 重构 HttpRequest 类 - 3
* 101 101. 重构 HttpRequest 类 - 4
* 102 102. 重构 HttpResponse 类
* 103 103. 重构 HttpResponse 类 - 续
* 104 104. 重构 TcpConnection 类 - 上
* 105 105. 重构 TcpConnection 类 - 下
* 106 106. 多反应堆服务器事件处理流程梳理
* 107 107. 程序的编译和语法上的bug修改
* 108 108. 测试和bug修改
* 109 109. 内容更正
* 110 110. 答疑-1 线程死锁
* 111 111. 答疑2 项目中如何使用互斥锁保护任务队列
* 112 112. 答疑3 关于阻塞的唤醒
* 113 113. 答疑4 关于子线程的阻塞问题





![[衡天云]爆款云服务器 低至12元/月](/hty.png)