文章目录
Love 6’s C++ High-Performance WebServer(这一路想说的话)
这个
从零自制高性能多线程的WebServer
博客系列呢 刚开始我写之初 其实也就是想记录一下 一个linux后端开发者 以此作为 网络编程的起点 以及多线程编程的起点的博客记录而已
因为刚开始 对于很多后台开发的前辈啊 所给出的后端学习的路啊 就比如写一个WebServer 其实这个项目就个人而言 真的肯定是 作为后台开发最好的入手的一个项目了 这个WebServer 不是写一个 就只能支持HTTP协议的服务器 而是从零开始写一个能够具有超级高的复用性的网络库 以此的基础上来实现一个高性能的HTTP服务器
记录之初 只是刚开始学习的时候太迷茫了 不知道从哪里入手 从什么地方开始 从哪里作为起点 都不知道… 在网上搜寻良久 也没有找到解决办法 我相信如果有之后想从事后台开发的初学者的话 又刚好想写一个这样类似的项目的话 看到有一位在这条路已经走过一遍的前者 把自己的学习轨迹记录下来 我相信还是会走更少的弯路的
本项目 所基于的书籍 最主要是两本
《Linux高性能服务器编程》
----(游双)(现在快绝版了)
《Linux多线程服务器编程》使用muduo C++网络库
---- 陈硕
本项目 所平时参考的网络库的源码 是muduo 网络库
也就是陈硕大佬所写的网络库 耦合性非常低 代码没有一点冗杂 相当精干
项目的网络库 底层实现逻辑 是基于muduo网络库的实现逻辑 以此为基础上 借鉴实现的网络库
大概muduo库源码 我应该是会看好几遍的 然后书籍的话 第一本是入门 相当好的入门书籍 没有第一本书籍所做的知识铺垫 模型铺垫 我相信我在阅读第二本书 muduo源码 书籍中的实现模型 相信会是相当相当吃力的
我发现 网络上面 对于一个从零实现WebServer
那种边学习边记录的博客太少 花时间写下这一系列博客 也算是有些许意义吧
–2022/3/26 正在写第六篇系列博客时 心中有感而发所写 13:23 笔者留
写到现在目前第十五篇 目前也就是今天晚上就可以把 这个项目最后一个功能 日志库给完结了 想到现在一路走来 不过也就接近40天的时间 尽管写到现在 也有些许疲倦 写这个项目也没有像上面写第六篇 或者写第一篇 《万丈高楼平地起…》那样有动力 但仔细想想 也属实不易
这一路走来 遇到了各种形形色色的问题 自己也在其中 不断地巩固自己的一些薄弱的编程基础 也学习到了很多新的实践的工具 自己对于稍微大型一点的项目编程 也有了更多的经验了
如果把之前的Tiny_OS
Tiny_Regex
都不算做正式项目的话(Tiny_OS
应该还是算的)那这个这个High-Profomance WebServer
就算作第一个我的正式项目了
其中有过开心喜悦 也有过困顿迷惑 有忽然发现解决棘手问题的方法的那种欢呼雀跃 也有因为一个小问题连续苦闷五天的难过时间
总之还是坚持下来了 可能在编写这段话的时候 再过个几天就要完结这个项目了 我也要进入下一个阶段了 哈哈 希望早点完结吧
–2022/4/19 正在写第十五篇系列博客 18:41留
这是最后我对这个项目 也是算是对我启蒙意义最重的一个项目 留下的可能是最后一段话了
我在这个项目 开始于3/15
今天是4/24
已经过去了45天了
原本我的计划是在一个月内完成这个项目 显然现在发现是不行的 除非之前就做过类似的项目
我在这个项目中 收获了太多太多 这个项目我认为 对于后台开发的同学 应该算是必做项目 因为可以收获的太多太多了
在真的这个项目要结束时 之前总觉得有好多好多话想说 现在却一句都说不出了
最后给一点意见吧 早点使用Git
在这个项目多去用用一些小工具 多去探索一些平时根本没有用上的Tool
尽量自己尝试去解决问题 尤其是自己编写的东西出现了问题 遇到困难与挫折 永远保持一颗坚持下去的心 不要放弃 保持学习Keep Learning
当你学的东西越多的时候 你会发现 你不会的东西也越多
stay hungry stay humble
祝各位 我们江湖再见~
还是用这个可爱的表情结束我们的文章吧ヾ( ̄▽ ̄)Bye~Bye~
2022/4/24 18:48留
1、全流程实现博客链接
友情提示:
博客中有部分代码编译时用的是g++-9.x
到后面的时候才更换回了低版本g++-4.8
对于低版本编译器更友好 但并无大碍 如果在复制代码时 编译出现问题是由于编译器版本过低 无法识别的话 稍加修改代码即可
从零开始自制实现WebServer(一)---- 万丈高楼平地起 步子得一步一步慢慢走
从零开始自制实现WebServer(二)---- 勿在浮沙筑高层 摸谈初试进程/线程池与高效并发模型
从零开始自制实现WebServer(三)---- 华山论剑剑指线程池 大刀阔斧终开始阅读源码
从零开始自制实现WebServer(四)---- 长望漫漫路觉应先积跬步 不论精致粗糙先砌小砖小瓦
从零开始自制实现WebServer(五)---- 浅沿芳草鲜花小路静心踱步 拨云见雾终见多线程ThreadPool
从零开始自制实现WebServer(六)---- 跌跌撞撞奔向HTTP状态机 学习途中拾慧纠正过往细节偏差
从零开始自制实现WebServer(七)---- 进入首次压力测试开始调优 休整不牢地基开始大整改
从零开始自制实现WebServer(八)---- 花费两天解决性能瓶颈问题 介绍一路调试历程以及推荐各种好用的工具
从零开始自制实现WebServer(九)---- 目前总览代码如下 得继续脚步前行
从零开始自制实现WebServer(十)---- 费时五天研究性能瓶颈 对整个服务器代码大改造 最后发现gcc优化竟是最终问题
从零开始自制实现WebServer(十一)---- 花费数天完善代码寻找瓶颈 修修改改代码初具规模 罗列目前全部代码
从零开始自制实现WebServer(十二)---- 剑指定时器小根堆处理 给EventLoop定时任务处理一个温暖的家
从零开始自制实现WebServer(十三)---- 定时器实现踢掉服务器空闲连接功能 让服务器不再被长连接强行霸占
从零开始自制实现WebServer(十四)---- 终最后迈向日志库 解决流输出重载前端基本框架搭建 为异步日记库做好准备
从零开始自制实现WebServer(十五)---- 日志库部分完结啦 实用小件DOUBLE-BUFFERING优化异步写入性能
从零开始自制实现WebServer(十六)---- 学习新工具CMake自动编写MakeFile 分门别类整理源文件心情愉悦
从零开始自制实现WebServer(十七)---- 重新阅读Muduo服务器编程书籍 做最后的小改小动 项目终究要迎来终声了
从零开始自制实现WebServer(十八)---- 对服务器做最后的压力测试 WebBench压测小工具 项目迎来终章
从零开始自制实现WebServer(十九)---- 正式系统的学习一下Git 捣鼓捣鼓github以及一些其他的小组件
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Util核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Base核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Http核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Timer核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Logging核心代码部分)
2、源码仓库链接
GITHUB
源码仓库链接:Love 6’s Github 源码仓库
C++ High-Performance WebServer
Github链接:Love 6’s C++ High-Performance WebServer
最后项目代码(博客链接)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Util核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Base核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Http核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Timer核心代码部分)
从零开始自制实现WebServer(二十)---- C++ High-Performance WebServer源码实现(Logging核心代码部分)
来源地址:https://blog.csdn.net/qq_37500516/article/details/123754194