30天自制C++服务器

如访问慢,可以到这里观看:csblog

教程的配套网络库:pine,star and fork!

先说结论:不管使用什么语言,一切后台开发的根基,是面向Linux的C/C++服务器开发。

几乎所有高并发服务器都是运行在Linux环境的,笔者之前也用Java、node写过服务器,但最后发现只是学会了一门技术、一门语言,而并不了解底层的基础原理。一个HTTP请求的过程,为什么可以实现高并发,如何控制TCP连接,如何处理好数据传输的逻辑等等,这些只有面向C/C++编程才能深入了解。

本教程模仿《30天自制操作系统》,面向零经验的新手,教你在30天内入门Linux服务器开发。本教程更偏向实践,将会把重点放在如何写代码上,而不会花太多的篇幅讲解背后的计算机基础原理,涉及到的地方会给出相应书籍的具体章节,但这并不代表这些理论知识不重要,事实上理论基础相当重要,没有理论的支撑,构建出一个高性能服务器是无稽之谈。

本教程希望读者:

学完本教程后,你将会很轻松地看懂muduo源码。

C/C++学习的一个难点在于初学时无法做出实际上的东西,没有反馈,程序都在黑乎乎的命令行里运行,不像web开发,可以随时看到自己学习的成果。本教程的代码都放在code文件夹里,每一天学习后都可以得到一个可以编译运行的服务器,不断迭代开发。

在code文件夹里有每一天的代码文件夹,进入该文件夹,使用make命令编译,会生成两个可执行文件,输入命令./server就能看到今天的学习成果!然后新建一个Terminal,然后输入./client运行客户端,与服务器交互。

day01-从一个最简单的socket开始

day02-不要放过任何一个错误

day03-高并发还得用epoll

day04-来看看我们的第一个类

day05-epoll高级用法-Channel登场

day06-服务器与事件驱动核心类登场

day07-为我们的服务器添加一个Acceptor

day08-一切皆是类,连TCP连接也不例外

day09-缓冲区-大作用

day10-加入线程池到服务器

day11-完善线程池,服务器成型,写测试程序

day12-将服务器改写为主从Reactor多线程模式

day13-C++工程化、代码分析、性能优化

day14-支持业务逻辑自定义、完善Connection类

day15-macOS、FreeBSD支持

day16-完善业务逻辑自定义

todo list

定时器

日志系统

HTTP协议支持

webbench测试

文件下载断点续传

静态资源存储

Contribute

能力一般、水平有限,如果发现我的教程有不正确或者值得改进的地方,欢迎提issue或直接PR。

欢迎大家为本项目贡献自己的代码,如果有你觉得更好的代码,请提issue或者直接PR,所有建议都会被考虑。

贡献代码请到pine项目,这是本教程开发的网络库,也是最新的代码版本。

30天自制C++服务器相关推荐

  1. 好教程推荐系列:张小方的《高性能服务器开发》以及《30天自制C++服务器》

    张小方的<高性能服务器开发> 首先感谢技术达人张小方的原创资料分享!!!欢迎关注[高性能服务器开发]微信公众号 1.张小方整理的优质的C++后端开发进阶学习资料 CppGuide: 优质的 ...

  2. 为什么《30天自制操作系统》封面中的猫是两只尾巴

    刚刚在一社区,发了一贴,被指出一问题,询一高人,得一答案.这便是我没有关注到的封面上的那只猫,我想这也是很多读者没有关注到的.因为在我微博的200转发贴中,并没有人提到封面中的猫为何有两只尾巴.于是咨 ...

  3. 发布在《30天自制操作系统》之前的帮助阅读贴

    说明:这是8月15日即将上市的一本新书,本文的摘选也可以命名为<30天自制操作系统>上市之前必读.本书幽默,有趣,可以说是技术书里的幽默书,让您读起来绝对不会感到乏味.在本书上市之前,您一 ...

  4. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!

    <30天自制操作系统>笔记(01)--hello bitzhuwei's OS! 最初的OS代码 1 ; hello-os 2 ; TAB=4 3 4 ORG 0x7c00 ; 指明程序的 ...

  5. 写在《30天自制操作系统》上市之前

       这本<30天自制操作系统>马上就要在各大书店和网上商城全面上架了,作为本书的4位译者之一,我负责翻译了本书约三分之二的内容.这是我参与翻译的第一本译著,我感到很激动也很紧张,因为我知 ...

  6. 《30天自制操作系统》笔记(04)——显示器256色

    <30天自制操作系统>笔记(04)--显示器256色 进度回顾 从最开始的(01)篇到上一篇为止,已经解决了开发环境问题和OS项目的顶层设计问题. 本篇做一个小练习:设置显卡显示256色. ...

  7. 《30天自制操作系统》学习笔记--第好多天

    之前看<30天自制操作系统>,参考而成,和书中系统并不完全一致,是在原有基础上按照自己的习惯而成,由于水平和工作原因,未完成内存管理和文件系统,有兴趣者可以通过以下网址https://gi ...

  8. 由《30天自制操作系统》引发的漫画创作

    大家可还记得<30天自制操作系统>的封面上的那只猫吗?记得当时,在果壳网有人问,为何这只猫长了两只尾巴呢,延着这条线,我把这本书捧上了展示的舞台.事隔四个多月,我又重提此书. 这本经我手宣 ...

  9. 30天自制操作系统——第二十三天窗口操作

    窗口及输入切换 我们先来实现用键盘切换窗口,按下F11键,将最下面的窗口移动到最上面,这里F11按键的编码为0x57. bootpack.c节选: void HariMain(void) {(略)fo ...

  10. 30天自制操作系统-初体验

    最近在图书馆翻阅关于操作系统的书籍,看到川和秀实的自制操作系统决定也动手尝试一下,这本书书名就叫做30天自制操作系统.首先还是附上光盘镜像的获取地址吧.30天自制操作系统光盘镜像ISO完整版下载 - ...

最新文章

  1. 在WEBSERVICE学习中遇到的问题
  2. 表达不同与构建不同: 对计算机的唯一真正的要求 (TrustNo.1 ) -- 待修改!!!...
  3. 老板和员工是什么关系?
  4. Win64 驱动内核编程-10.突破WIN7的PatchGuard
  5. opencv 直线检测 java_OpenCV实现图像的直线检测
  6. enspac启动失败代码2_电脑蓝屏代码0x000024
  7. 【Linux笔记(000) 】-- 系统启动过程
  8. 选redis还是memcache,源码怎么说?
  9. 子网ip和子网掩码不匹配_【详解】你知道什么是IP路由查找的“最长匹配原则”吗?...
  10. 利用正则按固定长度分割字符串
  11. codeIgniter3 学习笔记二(基于 MVC 开发模式实现小案例)
  12. dosbox进行debug调试教程
  13. 最早设计计算机的目的是进行科学计算,其主要计算的问题面向,北京师范大学计算机试题1答案...
  14. Java多线程编程-(17)-多线程异步调用之Future模式
  15. 2020软考软件设计师--基础知识实战培训视频-任铄-专题视频课程
  16. js 动态添加标签元素并赋值
  17. Flutter listview下拉刷新 上拉加载更多 功能实现
  18. 4699. 如此编码
  19. 345.反转字符串中的元音字母(Reverse Vowels of a String)
  20. js中字符串截取函数及其方法

热门文章

  1. InfluxDB使用HTTP的API编写数据
  2. 一键查询 | 2020年最新SCI期刊影响因子报告
  3. spdep | 如何在R语言中计算空间自相关指数
  4. Leetcode 120. Triangle 三角形问题(动态规划经典) 解题报告
  5. Java实现视频通话
  6. 帆软按钮控件变查询_JS使用填报页面的控件查询
  7. Windows 10安装labelImg(有压缩包链接)标注弹孔,生成.xml文件。
  8. 用Angular实现图片上传问题
  9. 移动端input提起数字键盘如何设置小数点?
  10. 安装create-react-app教程及简单配置