C++后端学习路径

1. C++语言基础:

经典书籍(有先后顺序):《C++ Primer》、《Effective C++》、《C++ 标准程序库》、《STL源码剖析》《深度探索C++对象模型》等

2. 编程基础“四大件”

基础四大件包括:数据结构和算法计算机网络操作系统设计模式

1、数据结构和算法

LeetCode

参考资料: 《大话数据结构》、《剑指offer》《LeetCode刷题》等

2、计算机网络

此处的计算机网络指的就是TCP/IP协议栈,可以说它是当下互联网通信的基石,无论如何一定要对TCP/IP的协议栈了如指掌,主要就是学习和掌握原理,包括:ARP协议、IP协议、ICMP协议、TCP和UDP协议、DNS协议、HTTP协议、HTTPS协议。

经典书籍: 《TCP/IP详解》、《计算计网络 自顶向下》等

3、操作系统

该部分重点包括:进程和线程的相关原理(原子性、并发、锁)、内存相关原理(内存分布、内存调度)

经典书籍:《深入理解计算机系统》、《现代操作系统》等

4、设计模式

倒不需要23种设计模式全部记住,常见的几个如:单例模式、工厂模式、代理模式、策略模式、模板方法模式建议熟练于心。

经典书籍:《大话设计模式》、《设计模式之禅》等

3.应用实践编程

1、Linux操作系统的使用

很多人初学C语言、C++(包括我)都是在Windows环境上进行的,而实际企业级开发几乎不可能,所以Linux系统必须要会,我们别无选择。先谈使用。

包括:常见的Linux操作命令、基本的Shell编程。

经典书籍:《鸟哥的Linux私房菜》《Linux命令行与Shell脚本编程大全》等

2、编译/调试工具

首先是跟编译相关的:编译工具!

我们知道很多人学C语言、C++都在类似Visual Studio这种集成IDE里进行代码编译,这个其实也用了编译器,只不过是微软自家的MS编译器,而且所有操作均可视化。而企业里开发很少会基于Windows系统,所以Linux平台上的编译器更为重要,最典型的当属 GCC,甚至有些公司有自己定制过的交叉编译工具,但没关系,只要 GCC熟悉,其他问题都不大。

其次,大家自学C语言、C++,都借助类似VS这种IDE,点按钮即可对源文件编译。而企业里实际项目的编译动作叫 make,编译的实际动作和过程都是写在 makefile文件里,所以makefile的书写规则建议学习!

最后说到调试工具,Linux平台上的 GDB调试工具要熟练使用,会借助于它进行调试。

推荐资料: GNU官网关于 GCC和 GDB的文档,《debuging with gdb》(中文版)和陈皓先生的《跟我一起写makefile》

3、Linux环境编程

还是那句话,企业里C语言和C++几乎都是基于Linux平台的,这一部分我们没办法避开

(1)Linux系统编程

众所周知,Windows系统编程里有各种各样的Windows API,同理Linux系统API的使用就更加重要。

(2)多线程编程

此处指的是多线程编程实践相关的东西,一般包括:线程、资源、信号、同步、互斥、锁等等一些具体的编程方法。

(3)网络编程

此处的网络编程主要指的是具体Linux系统上的网络编程 API和 IO函数的编程实践。

经典书籍:这三部分综合在一起,推荐必看书籍包括《Unix环境高级编程》、《Linux高性能服务器编程》、《POSIX多线程程序设计》

  • 3
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
从0到1的学习路径,通常是指从零基础开始逐步掌握计算机科学和编程技能的过程。这是一个循序渐进的旅程,可以分为以下几个阶段: 1. **基础知识**: - 计算机基础知识:了解计算机组成、操作系统、网络等基本概念。 - 数学基础:特别是离散数学(如逻辑、集合、图论)、算法和数据结构,因为这些都是编程的核心。 2. **选择一门编程语言**: - Python是一个很好的入门选择,因为它语法简洁,适合初学者。其他如JavaScript、Java或C++也是常见选择。 3. **学习编程语言**: - 学习语言的基本语法、变量、数据类型、控制结构(如循环和条语句)。 - 使用集成开发环境(IDE)或文本编辑器,并练习编写简单的程序。 4. **实践项目**: - 完成一些小型项目,例如打印“Hello, World!”、计算器、猜数字游戏等,以应用所学知识。 5. **数据结构和算法**: - 学习并实践基本的数据结构(数组、链表、栈、队列、哈希表等)和常用算法(排序、搜索等)。 6. **面向对象编程**: - 学习面向对象的概念,包括类、对象、封装、继承和多态。 - Python中的OOP(如使用`class`和`def`关键字)。 7. **Web开发**: - HTML/CSS/JavaScript(前端),或学习一门后端语言(如Python的Django或Flask)以及数据库管理。 8. **网络编程和系统设计**: - 学习网络编程原理,如HTTP协议,TCP/IP等。 - 理解软工程和系统架构设计。 9. **软工程和版本控制**: - 掌握Git或其他版本控制系统。 - 了解软开发流程,如需求分析、设计、测试和部署。 10. **深入学习与实践**: - 针对特定领域(如数据分析、人工智能、Web开发等)进行深化学习。 - 参与开源项目或个人项目,提升实际经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值