我的编程空间,编程开发者的网络收藏夹
学习永远不晚

从零开始自制实现C++ High-Performance WebServer 全流程记录

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

从零开始自制实现C++ High-Performance WebServer 全流程记录

文章目录


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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

从零开始自制实现C++ High-Performance WebServer 全流程记录

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录