C++服务器开发完整学习路线(含免费学习资料下载地址)

2023-05-16

视频资料: 微信搜索公众号“高并发学习社区
关注并且发送消息“视频” 。

C++服务器开发完整学习路线(含免费学习资料下载地址)

相信大部分同学刚毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习,于是准备参加各种培训班或者网络培训,无奈动不动成千上万元的高昂的价格另人望而却步,对于在校学生或者刚出来就业的新人无疑是沉重都打击,最后决定自学,但是却不知道从哪里下手。我写这篇文章的目的就是为了帮助更多想入行或者想转行做c++服务器的新人避免走更多的弯路,最终能够顺利的掌握相关知识找到心仪的工作。

一. 基础阶段

  1. c/c++编程语言
  2. linux基础
  3. 数据结构与算法
  4. 设计模式
  5. 脚本语言(可选)

二. 入门阶段

  1. linux系统编程
  2. linux网络编程

三. 进阶阶段

  1. 数据库mysql
  2. 分布式缓存redis
  3. 网络库

四. 项目实践阶段

  1. 编写简单FTP服务器

五. 高级阶段(可选)

  1. nginx
  2. zookeeper
  3. 消息队列
  4. skynet
  5. boost
  6. 负载均衡
  7. 容器
  8. rpc
  9. 微服务

##一. 基础阶段
###1. c/c++编程语言

  • c语言必备的入门书籍就是这本《C程序设计语言》
    在这里插入图片描述

  • 另外推荐一本比较经典的c语言书籍,可以选择性看一下《C陷阱与缺陷》
    在这里插入图片描述
    链接:http://vdisk.weibo.com/s/z1wkONlsC-2S3

  • 既然是C++的学习路线,那么《C++ Primer》这本书肯定是必学不可的
    在这里插入图片描述

  • 学了c++基础后,为了写出更高效的c++代码,那么就须要看这本书《Effective C++》
    在这里插入图片描述

  • 个人认为STL的原理非常重要,我推荐《STL源代码剖析》
    在这里插入图片描述

  • 另外推荐一本比较经典的c++书籍,可以选择性看一下《深度探索C++对象模型》
    在这里插入图片描述
    链接:https://pan.baidu.com/s/1eewVI

###2. linux基础

  • linux系统安装和命令、工具使用
    c++服务器程序基本都是运行在linux系统下面,所以对于linux的系统安装、命令工具等的使用要学会。
    推荐《鸟哥的Linux私房菜-基础学习篇》
    在这里插入图片描述

  • makefile编程
    在软件开发中,make通常被视为一种软件构建工具。该工具主要经由读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化建构。它会通过一种被称之为“target”概念来检查相关文件之间的依赖关系,这种依赖关系的检查系统非常简单,主要通过对比文件的修改时间来实现。在大多数情况下,我们主要用它来编译源代码,生成结果代码,然后把结果代码连接起来生成可执行文件或者库文件。
    推荐《跟我一起学makefile》
    链接:https://pan.baidu.com/s/18KSmdTHQhiw-Tng1RJxf1A 密码:526k

###3. 数据结构与算法

  • 入门推荐《大话数据结构》这本书,它的最大的特点是把理论讲得很有趣,不枯燥。而且每个数据结构和算法,作者都结合了生活中的例子,能让你有非常直观的感受。虽然这本书有 400 页,但是花两天时间读完应该是没问题的。所以,如果你之前完全不懂数据结构和算法,可以先从这本书看起。
    在这里插入图片描述

  • 你也可以学习《数据结构和算法分析》。国内外很多大学都拿它当作教材。因为这本书非常系统、全面、严谨,而且又不是特别难,适合对数据结构和算法有些基本了解,并且掌握了至少一门编程语言的同学。而且,这个作者也很用心,他用了三种语言,写了三个版本,分别是:《数据结构与算法分析 : C 语言描述》、《数据结构与算法分析 : C++ 描述》、《数据结构与算法分析 : Java 语言描述》。

在这里插入图片描述

###4. 设计模式
设计模式是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。
使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
在这里插入图片描述

###5. 脚本语言(可选)
做c++开发很多情况下会和其他脚本语言做混合编程,特别是游戏公司以c++配合lua脚本编程作为主流,也有一些用python, 所以建议大家学一下这两门脚本语言

  • lua书籍推荐,包括入门书籍《lua程序设计》和深入原理书籍《lua设计与实现》
    在这里插入图片描述

在这里插入图片描述

  • python书籍推荐 《python核心编程》
    在这里插入图片描述

##二. 入门阶段
###1. linux系统编程
linux下的编程你首先要学会文件和目录、标准I/O库、系统数据文件和信息、进程环境、进程控制、进程关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC等方面的内容。
推荐《unix环境高级编程》
在这里插入图片描述

###2. linux网络编程
网络编程可以编写网络通讯程序,比如聊天程序、数据传输程序、文件传输程序等到;可以让你对网络通讯有更深的理解,当你遇到网络通讯方面的问题时,会有很深入的分析;为学习涌现很多分布式应用系统打下坚实的基础。
推荐《unix网络编程》(共两卷)
在这里插入图片描述

##三. 进阶阶段
###1. 数据库mysql

  • 入门推荐《MySQL必知必会》这是最好的数据库入门书,在Amazon上长期排在数据库销售榜首,建议想快速了解数据库原理和MySQL的新手阅读。快餐性质,简洁明快,小开本,而且很薄,比较好读。
    在这里插入图片描述

  • 怎么说,每个行业都有几本被翻来翻去的“街书”,而《mysql技术内幕》就是MySQL的“街书”。从源代码的角度深度解析了InnoDB的体系结构、实现原理、工作机制,并给出了大量最佳实践,能帮助你系统而深入地掌握InnoDB

在这里插入图片描述

  • 《高性能mysql》作者推荐的工具、实战案例及经验过的诊断技术,可大大提高性能急救技能,以及加深对MySQL本质的理解。而且本书将数据库结构的客观方面纳入思考,此外还增补了MySQL高可用性及云特性

在这里插入图片描述

###2. 分布式缓存redis

  • 《Redis 设计与实现》一书全面而完整地讲解了 Redis 的内部运行机制, 对 Redis 的大多数单机功能以及所有多机功能的实现原理进行了介绍, 展示了这些功能的核心数据结构以及关键的算法思想。 通过阅读本书, 读者可以快速、有效地了解 Redis 的内部构造以及运作机制, 从而学会如何更高效地使用 Redis。
    在这里插入图片描述

  • 《redis实践》本书深入浅出地介绍了Redis的5种数据类型,并通过多个实用示例展示了Redis的用法。除此之外,书中还讲述了Redis的优化方法以及扩展方法。
    在这里插入图片描述

###3. 网络库
linux c/c++网络库比较多,有boost.asio、libevent、libev、libuv、muduo、ace等, 建议找一个代码比较少够精简的来反复学习,琢磨内部原理,有效提升网络编程能力。我自己反复研究了muduo网络库几遍收获不少,你们可以选libevent、libev、libuv、muduo中的一个学习即可,其中libev和muduo最为精简,容易学习。

  • libevent学习资源
    Libevent源码分析专栏:https://blog.csdn.net/luotuo44/column/info/libevent-src/2
    libevent-book:https://pan.baidu.com/s/1h-x1OrfiB-Jvb-YUvEghfg 密码:18wg

  • muduo学习资源
    在这里插入图片描述

##四. 项目实践阶段
###1. 编写简单FTP服务器
###2. 未完待续 … (后面更新请关注公众号“高并发之路”)

##五. 高级阶段(可选)
###1. nginx

  • Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
    推荐书籍《深入理解nginx模块开发与架构解析》
    在这里插入图片描述

###2. zookeeper

  • ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
    在这里插入图片描述

###3. 消息队列

  • 当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等, 我推荐两本kafka的书籍, 入门书籍《kafka权威指南》和深入的书籍 《Kafka技术内幕:图文详解Kafka源码设计与实现》
    在这里插入图片描述

在这里插入图片描述

###4. skynet

  • Skynet是一个基于C跟lua的开源服务端并发框架, 现在很多游戏公司都在用它,特别是中小型的公司,棋牌公司,越来越多公司采用, 想往游戏方面发展建议认真学一下原理。
    skynet wiki:https://github.com/cloudwu/skynet/wiki
    skynet作者博客:https://blog.codingnow.com/eo/skynet/
    skynet框架应用文章:https://blog.csdn.net/qq769651718/article/category/7480207

###5. 未完待续 … (后面更新请关注公众号“高并发学习社区”)

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++服务器开发完整学习路线(含免费学习资料下载地址) 的相关文章

随机推荐

  • AR VR MR 到底有啥区别?

    本文首发于公众号 xff1a 计算机视觉life 原文链接 xff1a AR VR MR 到底有啥区别 xff1f 介绍关于AR xff08 Augmented Reality xff0c 增强现实 xff09 的一系列内容 xff0c 我
  • 从零开始一起学习SLAM | 为什么要学SLAM?

    在 零基础小白 xff0c 如何入门计算机视觉 xff1f 中我提到过 xff0c 计算机视觉的研究目前主要分为两大方向 xff1a 基于学习的方法和基于几何的方法 其中基于学习的方法最火的就是深度学习 xff0c 而基于几何方法最火的就是
  • 从零开始一起学习SLAM | 学习SLAM到底需要学什么?

    SLAM涉及的知识面很广 xff0c 我简单总结了 SLAM知识树 如下所示 xff1a xff08 公众号菜单栏回复 树 可获得清晰版 xff09 可以看到涉及的知识面还是比较广的 这里放出一张SLAM圈子里喜闻乐见的表达悲喜交加心情的漫
  • 从零开始一起学习SLAM | SLAM有什么用?

    SLAM是 Simultaneous Localization And Mapping的 英文首字母组合 xff0c 一般翻译为 xff1a 同时定位与建图 同时定位与地图构建 同时定位与地图构建 这几个词 xff0c 乍一听起来非常拗口
  • 什么是多模态机器学习?

    首先 xff0c 什么叫做模态 xff08 Modality xff09 呢 xff1f 每一种信息的来源或者形式 xff0c 都可以称为一种模态 例如 xff0c 人有触觉 xff0c 听觉 xff0c 视觉 xff0c 嗅觉 xff1b
  • 从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

    首发于公众号 xff1a 计算机视觉life 旗下知识星球 从零开始学习SLAM 这可能是最清晰讲解g2o代码框架的文章 理解图优化 xff0c 一步步带你看懂g2o框架 小白 xff1a 师兄师兄 xff0c 最近我在看SLAM的优化算法
  • 快看,那个学SLAM 的崩溃了!

    点 计算机视觉life 关注 xff0c 置顶更快接收消息 xff01 本文列举了当前优秀SLAM方案 xff0c 点出了SLAM学习者的困境 xff0c 最后打算搞点大事 请把此文转发给你认识的SLAM大神 xff0c 愿你头发浓密 xf
  • 进程保护--CrossThreadFlags标志位

    原理 xff1a 1 将进程的所有线程的线程CrossThreadFlags标志位设置成Terminated或者System 效果 xff1a 任务管理器 xff0c WSYSCheck xff0c ICESWORD无法结束进程 但PCHu
  • SLAM方向国内有哪些优秀公司?

    本文作者 张磊涛 xff0c 公众号 xff1a 计算机视觉life xff0c 编辑成员 计算机视觉life为读者整理了国内几十家涉及SLAM的优秀公司 xff0c 涵盖自动驾驶 仓储机器人 服务机器人 无人机 AR 芯片相机等领域 一
  • 解放双手——相机与IMU外参的在线标定

    本文作者 沈玥伶 xff0c 公众号 xff1a 计算机视觉life xff0c 编辑部成员 一 相机与IMU的融合 在SLAM的众多传感器解决方案中 xff0c 相机与IMU的融合被认为具有很大的潜力实现低成本且高精度的定位与建图 这是因
  • 目标检测综述

    本文作者 刘畅 xff0c 公众号计算机视觉life编辑成员 前言 图片分类任务我们已经熟悉了 xff0c 就是算法对其中的对象进行分类 而今天我们要了解构建神经网络的另一个问题 xff0c 即目标检测问题 这意味着 xff0c 我们不仅要
  • uC/OSII 和 uC/OSIII 系统特性对比

    1 uC OS系列的发展历史 uC OS Micro Controller Operating System 是一个可以基于ROM运行的 可裁剪的 抢占式 实时多任务操作系统 xff0c 具有高度可移植性 xff0c 特别适合于微处理器和控
  • 学了python,要不要再学c++

    学习笔记 学了python xff0c 要不要再学c 43 43 建议兼学c 43 43 xff0c 可以提升职业的天花板
  • Spring 的优秀工具类盘点,第 2 部分: 特殊字符转义和方法入参检测工具类

    Spring 不但提供了一个功能全面的应用开发框架 xff0c 本身还拥有众多可以在程序编写时直接使用的工具类 xff0c 您不但可以在 Spring 应用中使用这些工具类 xff0c 也可以在其它的应用中使用 xff0c 这些工具类中的大
  • 学生认证免费领取——使用阿里云服务器的Ubuntu版本,并进行图形化

    一 前言 我们学习和工作中经常需要使用Linux系统来跑程序 我们可以使用虚拟机装一个Ubuntu镜像 当然我们为了方便也可以使用阿里云的服务器 二 获取服务器 1 到阿里云官网 没有账号的同学注册一个就OK 2 搜索框搜索 学生优惠 3
  • 如何从一个小项目学习三种构建系统:glog的 CMake,Bazel,configure Makefile

    一个小项目的构建系统 glog CMake Bazel 和 configure Makefile 一 xff0c CMake 1 1下载源代码 最新的源代码主页为 xff0c 构建系统已经改为 Bazel和CMake 可从如下代码学习 xf
  • Linux内核升级全过程 手把手教你一次成功(2.4.20-8到2.6.18)

    导读 xff1a 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61 时间 xff1a 2007 01 08 作者 x
  • 树莓派 arduino 电池供电方案(适用包括STM32 CC 系列所有单片机)

    很多刚入手智能单片机的朋友只会使用官方的MicroUSB口供电 xff0c 但这样在很多场合下很不方便 本文以树莓派为例 xff0c 介绍一下电池供电的方法 一 电池选择 包括树莓派在内的所有单片机都需要使用3 7V锂电池供电 xff0c
  • C语言中字符串结束符

    C语言中字符串结束符 39 0 39 39 0 39 就是8位的00000000 xff0c 为字符NULL 因为字符类型中并没有对应的这个字符 xff0c 所以这么写 39 0 39 就是字符串结束标志 1 字符串变量str 在C语言中没
  • C++服务器开发完整学习路线(含免费学习资料下载地址)

    视频资料 微信搜索公众号 高并发学习社区 关注并且发送消息 视频 C 43 43 服务器开发完整学习路线 xff08 含免费学习资料下载地址 xff09 相信大部分同学刚毕业或者想转行做c 43 43 服务端开发的时候都很迷茫不知道从哪里开