Linux C++ 后台开发:进BAT的学习路线

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: C++相较于其他编程语言而言,学习门槛略高,主因在于其学习路径不够明确,缺乏像Java那样丰富的学习资源。然而,在众多大型企业中,如腾讯、百度、阿里云、网易和华为等,C++岗位的需求量与Java相仿。以下是我个人的C++与Linux后端学习路线和阅读方法的分享,希望能为大家提供一些参考。

1.png

C++相较于其他编程语言而言,学习门槛略高,主因在于其学习路径不够明确,缺乏像Java那样丰富的学习资源。然而,在众多大型企业中,如腾讯、百度、阿里云、网易和华为等,C++岗位的需求量与Java相仿。以下是我个人的C++与Linux后端学习路线和阅读方法的分享,希望能为大家提供一些参考。

让我们C++起飞!

C++基础知识学习

对于初学者,建议通过B站的C++教学视频辅助《C++ Primer 第五版》进行学习。

  • 在B站搜索C++学习视频,推荐黑马程序员的教程。

  • 《C++ Primer 第五版》是学习的好书。

当涉及到选择《C++ Primer 第五版》和《C++ Primer Plus 第六版》时,如果只能选择一本,我个人推荐《C++ Primer 第五版》。

  • 《C++ Primer 第五版》对于初学者而言可能稍难,因为某些章节知识点跳跃。但其讲解深入透彻,配合视频学习效果更佳。读完一遍后,该书可作为参考书或工具书,遇到不懂的问题时查阅总能找到启发。

  • 《C++ Primer Plus 第六版》讲解较为连贯,不太跳跃。主要基于C++98/03讲解,C++11相关内容大多放在附录中,且介绍不够深入。我个人在阅读完此书后,又重新购买并阅读了《C++ Primer 第五版》,才真正入门C++。

选择任何一本书都建议与视频教程结合,因为仅靠阅读书籍可能会感到枯燥。如果时间紧张,建议根据自己的基础跳过某些章节直接学习C++部分。

C++11及以上版本

C++11是对C++进行的重大更新,不仅使使用C++更安全、更便捷,也是校招中的重点考查内容。推荐阅读以下三本书来学习C++11及以上版本的新特性:

  • 《深入理解C++11:C++11新特性解析与应用》

  • 《Effective Modern C++》

  • 《Modern C++ Tutorial》

如果时间有限,建议优先阅读重要知识点,然后再补充其他细节。

C++进阶学习

为了提升C++内功,推荐以下三本书:

  • 《深度探索C++对象模型》:尽管这是一本较旧的书籍,但内容依然适用,能显著提升C++的内功。如果时间紧张,可以仅阅读前四章。

  • 《Effective C++》和《More Effective C++》:这两本书能帮助你了解如何正确且更好地使用C++。

  • 《STL源码剖析》:建议阅读,可以深入了解STL的实现原理,不仅涉及各种数据结构的实现,还包括一些设计模式和模板知识。

这些书籍内容可能偏硬核,均由侯捷翻译。如果感觉枯燥,可以配合侯捷的视频教程一起学习。

操作系统(OS)与Linux

推荐两本书《深入理解计算机系统》和《程序员的自我修养-链接、装载》,它们能帮助你从编译器的视角理解C/C++语言规则。如果准备时间有限,可以选择不阅读《程序员的自我修养-链接、装载》。

进入Linux后端开发之前,需要学习Linux系统编程和网络编程。无疑,《UNIX环境高级编程》和《UNIX网络编程》是必读的书籍。但这两本书篇幅较长,对初学者不太友好。我的学习方法是:

  • 首先阅读列出的重点章节,其余章节在需要时再看。

  • 结合视频学习,推荐黑马程序员的Linux全套视频及Linux网络编程视频,可以选择性观看。

对于搭建Linux环境,有两种方法:

  1. 在Windows中安装WSL2,并在VSCode中安装Remote-WSL插件,直接在WSL环境下使用VSCode,非常便捷。

  2. 如果需要调试网络功能,如tcpdump等,可以使用虚拟机,并通过VSCode的Remote SSH插件远程连接。

后端开发

具备了C++和Linux后端开发的基础后,可以开始学习服务器开发相关知识:

  • 《Linux高性能服务器编程》:游双老师的这本书深入剖析了服务器设计的各个要点,很多面试题也会涉及到这些内容,强烈推荐。

  • 开源项目《Muduo》及其讲解视频:陈硕老师的Muduo项目在设计上遵循了《Linux高性能服务器编程》的原则,B站有逐行代码讲解视频,虽然音质可能稍差,但内容非常丰富。

后端进阶

  • RPC:如果你对RPC感兴趣,可以从jsonrpc开始学习,进一步了解brpc的设计,如协程设计等。

  • Redis:如果时间允许,可以深入学习Redis的源码。《Redis设计与实现》和《Redis 5设计与源码分析》是推荐的学习资源。

数据结构与算法

  • 推荐《算法》一书和清华大学邓俊辉老师的《数据结构与算法》课程。

  • LeetCode刷题:建议至少完成前300道题目,重点是《LeetCode精选TOP面试题》。

  • 剑指Offer:至少复习2遍,熟悉其中的题目,这对于获取offer至关重要。

计算机网络

  • 如果时间允许,可以阅读《TCP/IP 卷一》。但如果时间紧张,可以跳过,因为上述推荐的书籍和代码中已包含了必要的TCP/IP知识。

工具使用

  • 学会使用cmake和gdb,这对于开发和调试非常有帮助。

最后的建议:学会使用Markdown进行笔记记录,这对于学习过程中的知识整理非常有用。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
17天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
40 6
|
1月前
|
Linux 编译器 程序员
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
【Linux 调试秘籍】深入探索 C++:运行时获取堆栈信息和源代码行数的终极指南
69 0
|
1月前
|
消息中间件 Linux 调度
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
【Linux 进程/线程状态 】深入理解Linux C++中的进程/线程状态:阻塞,休眠,僵死
70 0
|
1月前
|
监控 Linux 编译器
Linux C++ 定时器任务接口深度解析: 从理论到实践
Linux C++ 定时器任务接口深度解析: 从理论到实践
70 2
|
1月前
|
存储 Linux 程序员
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
【Linux C/C++ 堆内存分布】深入理解Linux进程的堆空间管理
79 0
|
1月前
|
存储 算法 Linux
深入理解Linux内存管理brk 和 sbrk 与以及使用C++ list实现内存分配器
深入理解Linux内存管理brk 和 sbrk 与以及使用C++ list实现内存分配器
37 0
|
1月前
|
存储 监控 Linux
Linux 使用getrusage系统调用获取cpu信息:一个C++实例分析
Linux 使用getrusage系统调用获取cpu信息:一个C++实例分析
50 0
|
1月前
|
Unix Linux C++
【C/C++ 造轮子】Linux异步计时器:深入探讨和应用 (Linux Asynchronous Timers: An In-depth Exploration and Application)
【C/C++ 造轮子】Linux异步计时器:深入探讨和应用 (Linux Asynchronous Timers: An In-depth Exploration and Application)
60 1
|
1月前
|
缓存 Linux iOS开发
【C/C++ 集成内存调试、内存泄漏检测和性能分析的工具 Valgrind 】Linux 下 Valgrind 工具的全面使用指南
【C/C++ 集成内存调试、内存泄漏检测和性能分析的工具 Valgrind 】Linux 下 Valgrind 工具的全面使用指南
66 1
|
1月前
|
网络协议 Linux 网络架构
如何在Linux c/c++ 进行多播(组播)编程
如何在Linux c/c++ 进行多播(组播)编程
23 0