GithubHelp home page GithubHelp logo

flowerlove / 30daymakecppserver Goto Github PK

View Code? Open in Web Editor NEW

This project forked from yuesong-feng/30daymakecppserver

0.0 1.0 0.0 404 KB

30天自制C++服务器,包含教程和源代码

Makefile 2.00% C++ 97.48% C 0.52%

30daymakecppserver's Introduction

30天自制C++服务器

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

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

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

本教程希望读者:

  • 熟悉C/C++语言
  • 熟悉计算机网络基础,如TCP协议、socket原理等
  • 了解基本的操作系统基础概念,如进程、线程、内存资源、系统调用等

学完本教程后,你将会很轻松地看懂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-改写线程模式为one_loop_per_thread

(进行中)macOS支持

todo list:

定时器

日志系统

拷贝控制

智能指针

性能优化-移动语义

HTTP协议支持

用户特例化

webbench测试

使用CMake

......

Contribute

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

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

贡献代码时,请使用最新一天的代码为基础。

30daymakecppserver's People

Contributors

yuesong-feng avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.