Linux C/C++ 服务器/后端开发/后台开发学习路线

本文详细介绍了Linux C/C++ 后台开发的学习路线,涵盖后端开发概念、C/C++ 语言、操作系统、计算机网络、网络编程、系统级编程、数据库、算法和数据结构等方面。文章提供了丰富的学习资源,包括书籍、视频课程和思维导图,旨在帮助读者构建完整的知识体系,适合初学者和进阶者参考。

这一篇的主题是「Linux C/C++ 服务器/后台开发学习路线」。

这样的文章相信大家都见得不少了,写之前也非常忐忑,能不能和其它人写得不一样, 也定下了一个目标,这篇文章,不能是简单的堆砌学习资源和书单推荐,更要细化如何有效的去执行落地。

争取做到让看到的同学有一种相见恨晚的感觉哈哈哈。

所以大家可以试着看一下,帮我检查下有没有达到预想的效果哈哈,希望不要被打脸🤣

那就正式开始吧。

这篇文章会有点长有点干,可以先去冲杯咖啡,收藏关注一波慢慢看~

正文 | 干货 |收藏【文末附上学习路线思维导图】

一、后端/后台/服务器开发?

经常在各大公司招聘上看到后端、后台、服务器开发等等,有些同学经常被这些名词搞混。

其实这些名词都是相近的,但是也有点区别,这里说说我的理解:

  • 首先一般公司分为前端和后端,前端就是和用户打交道的,负责用良好的视觉效果将数据呈现给用户,广义的前端包括客户端(安卓、IOS)、Web前端、小程序等。
  • 而与之对应的后端则是负责业务逻辑处理,比如下单、支付等,重在业务流程的处理。

后台一般和后端是一个意思,而服务器开发则稍微广义一点,不仅包含了后台开发,而且也包括支撑整个后台应用的基础开发,比如搜索引擎、微服务、RPC 框架、KV、存储、MQ 等。

后台/后端重在业务处理,是偏向应用层开发,而服务器开发不仅包括应用层开发,更是囊括了整个支撑后台业务的相关组件的开发。

那 Linux C/C++ 服务器/后台开发指的什么呢,其实就是基于 Linux 上 的 C++ 编程。

但是相比 Java 系更强调 Linux 系统编程、网络编程能力,有的还会涉及到服务端底层协议和网络框架开发。

传统的 Java 、Go后台开发偏向 Web 开发,也就是接收前端请求,通过微服务互相调用,完成业务逻辑处理,然后返回给前端。

实际上在腾讯这边的 C++ 后台开发,也是类似的,本身有非常成熟的基于 C++ 的微服务体系,大多数开发也只需要关注业务逻辑就好,不过还是会要求 Linux 系统编程、网络编程等能力。

二、后台开发都考察哪些?

一般来说 Linux C/C++ 后台开发方向涉及以下这些基础知识:

  • C/C++ 语言特性和实现原理
  • 计算机网络
  • 网络编程 和 Linux 系统编程
  • 操作系统原理
  • 部分 Linux 内核原理,如内存管理、文件系统、虚拟内存等
  • Linux 常见命令使用
  • 算法与数据结构
  • 数据库使用及原理
  • 常见 NoSQL组件,如 Redis、Memcached
  • 版本控制 Git

非必选加分项:

  • 分布式相关,如一致性协议比如 Raft 算法、分布式存储等
  • docker、k8s 等虚拟化和云计算相关的
  • 系统设计能力,如短链服务、评论服务、Feed流系统、抢红包、秒杀等

由于篇幅限制,这篇文章主要介绍基础知识的学习路线和方法,其它加分项以后再单独写。

三、C/C++

首先是语言的基础知识,一些关键字和实现原理等:

  • 指针、引用、数组、内存
  • 引用与指针区别
  • C 和 C++ 的一些区别,比如 new、delete 和 malloc、free 的区别
  • 虚机制:虚函数、虚函数表、纯虚函数
  • 继承、虚继承、菱形继承等
  • 多态:动态绑定,静态多态
  • 重写、重载
  • 智能指针原理:引用计数、RAII(资源获取即初始化)思想
  • 智能指针使用:shared_ptr、weak_ptr、unique_ptr等
  • 一些关键字的作用:static、const、volatile、extern
  • 四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast
  • STL部分容器的实现原理,如 vector、deque、map、hashmap
  • 模板特化、偏特化,萃取 traits 技巧
  • 编译链接机制、内存布局(memory layout)、对象模型
  • C++11 部分新特性,比如右值引用、完美转发等

这里列出来的只是一些比较重要的部分,实际上可能只算 C++ 的冰山一角, 大家且学且珍惜吧,这不 C++11 还没整透彻,C++ 20 又出来了,生命不息,学习不止。

怎么学?

1. 《C++ Primer》

这本书基本包括了 C++ 11 的全部特性,最好把前面三部分:C++基础、C++标准库、类设计者的工具都看一遍,我当时花了一个多月断断续续看到了第16章模板那里。

2. Effective 系列:《Effective C++》、《More Effective C++》、《Effective STL》

第一本是重点,光看《C++ Primer》缺少实践的话,大概率还写不出合格的 C++ 代码,而《Effective C++》就是通过 55 条非常具体的做法告诉你什么样才是符合 C++ 编码规范的,可以缩短你写出合格 C++ 代码的时间,减少踩坑,强烈推荐必读,后面两本优先级稍低,可以有时间再读。

3. 《STL 源码剖析》和《深度探索 C++ 对象模型》

看完 Primer 和 Effective,你应该已经能够比较熟练的使用C++了,但是还缺少对 C++ 底层实现机制的认识。比如虚函数表、成员变量布局等,同时对于 STL 库可能也仅仅停留在使用上。

推荐的这两本可以分别完善你在 C++ 底层实现和 STL 源码、原理上的认识。

主要有以下几个系列:

  • 《C++内存管理》
  • 《STL源码分析》
  • 《C++ STL与泛型编程高级》
  • 《C++11 新特性》

看完以上资料,算是 C++ 入门了,应付面试也是足够的,基本到达了正确高效地使用 C++ 这一层面。

是不是听到这有点崩溃,特么的看了这么多,才入门???

如果你想在 C++ 语言上更进一步,那么有以下的书籍推荐:

  • 《C++ 语言的设计与演化》

这本书是 C++ 之父 Bjarne Stroustrup 写的,关于 C++ 的前世今生,以及未来的演进方向,可以了解 C++ 的设计哲学。C++ 复杂的语言特性一直让人诟病,通过这本书,可以看到各种特性引入的目的,也更深入了解到了 C 和 C++ 之间关系。比如 C++ 里有个原则就是所有的实现机制都不能带来额外的运行时开销。

我也正在看这本书。

  • 《C++ 沉思录》
  • 《C++ Templates》和《C++模版元编程》

C++模板元编程属于另外一个世界了,一般公司里开发用得比较少,这个也是一个大坑,如果实在感兴趣可以去看看,感受下 C++ 的博大精深,不过这玩意我也不太会,也不推荐你去花时间在上面。

  • CppCon视频

这是 C++ 社区组织的类似开源峰会那种,每次都会讨论一些关于 C++ 的话题,没事去刷一个,还是挺有意思的。Youtube 直接搜 CppC

宋宝华嵌入式 C/C++语言精华文章集锦 C/C+语言 struct 深层探索 ............................................................................2 C++中 extern "C"含义深层探索........................................................................7 C 语言高效编程的几招...............................................................................11 想成为嵌入式程序员应知道的 0x10 个基本问题 .........................................................15 C 语言嵌入式系统编程修炼...........................................................................22 C 语言嵌入式系统编程修炼之一:背景篇 ............................................................22 C 语言嵌入式系统编程修炼之二:软件架构篇 ........................................................24 C 语言嵌入式系统编程修炼之三:内存操作 ..........................................................30 C 语言嵌入式系统编程修炼之四:屏幕操作 ..........................................................36 C 语言嵌入式系统编程修炼之五:键盘操作 ..........................................................43 C 语言嵌入式系统编程修炼之六:性能优化 ..........................................................46 C/C++语言 void 及 void 指针深层探索 .................................................................50 C/C++语言可变参数表深层探索 .......................................................................54 C/C++数组名与指针区别深层探索 .....................................................................60 C/C++程序员应聘常见面试题深入剖析(1) ..............................................................62 C/C++程序员应聘常见面试题深入剖析(2) ..............................................................67 一道著名外企面试题的抽丝剥茧 ......................................................................74 C/C++结构体的一个高级特性――指定成员的位数 .......................................................78 C/C++中的近指令、远指针和巨指针 ...................................................................80 从两道经典试题谈 C/C++中联合体(union)的使用 ......................................................81 基于 ARM 的嵌入式 Linux 移植真实体验 ................................................................83 基于 ARM 的嵌入式 Linux 移植真实体验(1)――基本概念 ...........................................83 基于 ARM 的嵌入式 Linux 移植真实体验(2)――BootLoader .........................................96 基于 ARM 的嵌入式 Linux 移植真实体验(3)――操作系统 ..........................................111 基于 ARM 的嵌入式 Linux 移植真实体验(4)――设备驱动 ..........................................120 基于 ARM 的嵌入式 Linux 移植真实体验(5)――应用实例 ..........................................135 深入浅出 Linux 设备驱动编程 .......................................................................144 1.Linux 内核模块..............................................................................144 2.字符设备驱动程序 ...........................................................................146 3.设备驱动中的并发控制 .......................................................................151 4.设备的阻塞与非阻塞操作 .....................................................................157
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值