关于c++从入门到精通的笔记(转载)

如何系统地学习 C++ 语言?(2021年4月更新)--知乎

转自--程序员吴师兄

关注他

661 人赞同了该文章

GitHub,永远滴神!

一、C++ 快速入门指南

首先分享一个最近在 GitHub 特火的一个 C++ 项目:C++ 快速入门指南。

地址:https://github.com/Light-City/CPlusPlusThings

这是一个适合初学者从入门到进阶的仓库。

这个开源项目的作者是一名研一才接触 C++ 的同学,目前已经拿到了鹅厂后台开发的 offer。

一开始他只是在 GitHub 上建立「C++ 那些事」只是作为自己的学习笔记。但没想到,两年内,这个项目受到越来越多人的追捧,并在本月初登上了热榜,于是他对整个项目的结构做了梳理规划,细分出了「基础」、「进阶」、「实战」板块,并将所有代码开源供大家学习,此外还专门为这个项目做了网站。

地址:https://light-city.club/sc/

关于c++从入门到精通的笔记(转载)_第1张图片

它可以帮助初学者了解如何入门 C++,也可以帮助面试者如何深入 C++。

整个项目包括从入门到就业的全部环节,称得上是保姆式的编程指南。

我觉得这个项目是最符合题主要求的一个项目了。

说个题外话,想进大厂少不了学习算法,我写了三百篇算法题解,在 GitHub 上收获了 63k 的star,关于如何刷题有些话我想对你说。

写了三百篇算法题解,关于如何刷题有些话我想对你说mp.weixin.qq.com/s/Fc6_EfODhiqoQZ5AYLiuRA

关于c++从入门到精通的笔记(转载)_第2张图片

我的不少粉丝拿到腾讯字节快手offer,因为用了这套算法刷题笔记:

BAT大佬写的Leetcode刷题笔记,看完秒杀80%的算法题!mp.weixin.qq.com/s?__biz=MzA3NzM0NzMxMA==&mid=100000618&idx=1&sn=756944c7216c7636d1b229bb010d553b&chksm=1f5223eb2825aafd5713d2fbf49b84bc26db6e99c5e69228301a544d3d6c9093f82e3b1e1e27#rd

关于c++从入门到精通的笔记(转载)_第3张图片

推荐我自己搭建的一个不错的算法学习网站,讲解视频短,每个视频都精心规划过,全部都有动画过程,争取五分钟讲清楚。

AlgoMooc-一个专属于程序员的平台,和大家一起刷题www.algomooc.com

关于c++从入门到精通的笔记(转载)_第4张图片

二、写个小白的 C++ 学习路线!

参考来源: https://mp.weixin.qq.com/s/bzE9NVkYxA5qq9T-l28j5g
作者:CodeSheep

写个小白的 C++ 学习路线!

关于c++从入门到精通的笔记(转载)_第5张图片

1、C++ 的工作岗位有哪些?

C++主要还是做后台(服务端)开发比较多,包括:

通信公司后台开发

互联网公司后台开发

游戏公司后台开发

……

当然这个后台开发具体职责又有很多细分,比如:

有做数据处理和分析的

有做基础协议和通信的

有做服务端底层应用优化的

甚至还有做后台系统驱动和内核的

……

不管怎样,下面即将要介绍的这些学习路线和内容适用于以上所有情况。

2、C++ 的学习书籍推荐?

C++和C语言确实是不同的语言,但是C++确实是对C语言的延伸,可以理解为在C语言里加入了面向对象的特性。因为只有面向对象特性的加持,代码才能更好的复用扩展工程化,这是大型项目的必备要素

除了C语言所有的底子之外,还需要学习C++的面向对象(封装、继承与多态)特性、泛型、模板、STL等等

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

补充一个小建议:语言部分的学习建议不要拖太久,一定要规划好时间,一鼓作气,高强度给它压下来,否则容易把自己拖泄气。

3、编程基础“四大件”

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

这跟学什么编程语言、后续从事什么编程方向均无关,只要做编程开发,这四个计算机基础就无法避开。可以这么说,这基础四大件真的比编程语言重要!!!

具体介绍可以看我之前写的一篇回答。

计算机基础知识对程序员来说有多重要?897 赞同 · 29 评论回答

关于c++从入门到精通的笔记(转载)_第6张图片

4、应用实践编程

这部分会涉及到一些工具、编程环境、和具体编程实践,应该说这一部分学完,自己应该能做点东西出来、或者说能看懂一些实际项目的代码。

实践这部分,我也是结合我之前在通信公司的实际工作经历和所听所见,来聊一聊。

1、Linux操作系统的使用

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

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

推荐书籍:《鸟哥的Linux私房菜》

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多线程程序设计》

三、书籍推荐

下载链接:链接: https://pan.baidu.com/s/1MrfDkPF9aaoRTT3jL60bYw 密码: ufh5

手册类:

《C++程序设计语言(The C++ Programming Language)》

《C++标准程序库(C++ Standard Library Tutorial and Reference) 》

《The C++ IO Streams and Locales》

《The C++ Standard (INCITS/ISO/IEC 14882-2011)》

《Overview of the New C++ (C++11/14) 》

《The Standard C Library》

初级:

《C++ Primer》

《Accelerated C++》

《C++编程思想(Thinking in C++) 》

《C++程序设计原理与实践 (Programming: Principles and Practice Using C++ )》

《C++初学者指南》

《C++ Primer Plus》

《Visual.C++.2008入门经典》

《面向对象程序设计—C++语言描述》

《数据结构(C++语言版)第三版_邓俊辉》

实用:

《Effective C++ 》

《Effective STL》

《深入浅出设计模式》

《设计模式:可复用面向对象软件的基础》

《HeadFirst设计模式》

《大话设计模式》

中级:

《More Effective C++ 》

《Exceptional C++ 》

《More Exceptional C++》

《Exceptional C++ Style》

《C++编程规范(C++ Coding Standards) 》

《C++ 模板完全指南(C++ Templates: The Complete Guide)》

《Beyond the C++ Standard Library(Boost)》

《C和C++安全编码》

《深入理解C++11》

高级:

《C++设计新思维-泛型编程与设计模式之应用(Modern C++ Design ) 》

《C++模板元编程(C++ Template Metaprogramming)》

《C++ Concurrency In Action》

《Advanced c++ Programming Styles and Idioms 》

《Real-Time C++ Efficient Object-Oriented and Template Microcontroller Programming》

《Advanced_Metaprogramming_in_Classic_C 》

经典古老:

《C++的设计与演化(The Design and Evolution of C++ )》

《C++沉思录(Ruminations on C++) 》

《大规模C++程序设计(Large Scale C++ Software Design)》

《深度探索C++对象模型 (Inside the C++ Object Model )》

计算机网路:

《TCP/IP卷一》

《计算机网络:自顶向下》

《图解HTTP和图解TCP/IP》

《计算机网络》

操作系统:

《深入理解计算机系统》

《现代操作系统》

《Linux内核设计与实现》

《Unix网络编程》

数据结构与算法:

《算法导论》

《数据结构与算法(Java版)》

《算法图解》《啊哈算法》

《剑指offer》

LeetCode教科书式刷题网站

数据库:

《数据库原理》

《SQL必知必会》

《深入浅出MySQL》

《MySQL技术内幕:innodb存储引擎》

《高性能Mysql》

《Redis实战》

《Redis设计与实现》

分布式:

《分布式应用》

《大型网站技术架构》

《大型分布式网站架构设计与实践》

《分布式服务框架原理与实践》

《大型网站系统与Java中间件开发实践》

《从Paxos到Zookeeper分布式一致性原理与实践》

《大规模分布式存储系统》

云计算:

《OpenStack设计与实现》

《docker入门与实践》

《Kubenetes权威指南》

大数据:

《大数据技术原理与应用》

《Hadoop实战》

《Hadoop权威指南》

你可能感兴趣的:(学习方向,c++)