记录关于C/C++的自学路线
Posted Charles梦想家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记录关于C/C++的自学路线相关的知识,希望对你有一定的参考价值。
一、前言
博主,一名小硕。写这篇博文目的其一是为了记录下自己的学习经历,其二是为了与大家分享和交流心得。以下就分享下个人的部分学习过程。
二、C/C++语言学习
1.C/C++语言
C语言的学习,应该学习如下内容:编译四步骤(预处理、编译、汇编、链接)、变量、条件循环、结构体、字符串、函数、指针和内存管理等。其中最为重要的是指针和内存管理。尤其是做linux软件开发必须掌握的。个人的学习书籍:《C Primer Plus》、《C 和指针》、《C陷阱与缺陷》、和《C语言开发从入门到精通》。
C++语言我个人认为是一门学了几年还感觉算入门的编程语言。其语言的细腻度相当的高。除了和C语言一样的基础内容外,还应该重点再重点学习的内容为:对象与类、封装、继承、多态、泛型编程(模板)、智能指针(shared_ptr等)、C++的STL(IO、容器、泛型算法、内存)等。个人强烈推荐书籍:《C++ Primer Plus第6版超清中文版》、《More Effective C++中文版》、《More Exceptional C++ 中文版》、《STL源码剖析》、《C++标准程序库(中文版)》《C++ STL程序员开发指南》、《C++沉思录》。其中最为经典的是第一本,看几遍都不为过。STL源码剖析杀伤性极强,可以悠着点,可以先尝试C++标准库程序去理解STL。另外这两本**《More Effective C++中文版》、《More Exceptional C++ 中文版》**是C++提高篇,细细品可以提高综合能力。
图片来自于:https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic3.zhimg.com%2F50%2Fv2-083ae60dedbdca9e4b85247bd54ad8fb_hd.jpg&refer=http%3A%2F%2Fpic3.zhimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1622963388&t=cbadcb0d7fe3f666eca9d0f3a8b26d9a
三、编程四大件
1.数据结构与算法
个人最为感兴趣的是数据结构与算法。相比于编程四大件,我认为数据结构与算法考验的不仅仅是一个人的思维能力,更是编程的核心基础。其中应该学习的内容为:数组、链表、栈、队列、散列表、二叉树、B+树、红黑树、堆、图等;算法有:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法等。其内容相当盘大。个人学习的书籍有:《剑指offer》、《跟我学数据结构(清华出版社)》、《数据结构(C++语言版)第三版_邓俊辉》、《C++数据结构与算法(第4版)》、《啊哈!算法》等,其中需要细读的是《C++数据结构与算法(第4版)》,看多少遍都不为过,其次就是需要动手多实践多思考。
2.计算机网络
学习计算机网络个人仅涉及到了TCP/IP协议栈。其中包括的学习内容有:TCP/IP模型,OSI模型、物理层到应用层原理及概念、IP地址报文以及相关协议概念与原理,如ARP协议、IP协议、ICMP协议、TCP和UDP协议等。学习书籍有:《计算机网络自顶向下中文第6版》、《TCP_IP Sockets编程C语言实现 第2版》以及b站谢希仁的计算机网络(讲得相当好)。针对计算机网络的学习若以后从事通信方面可深入去学习。
3.操作系统
操作系统的相对较深,学习相当费时枯燥。对于操作系统的学习,需要了解操作系统、计算机软硬件知识、进程与线程、内存管理、文件管理、IO管理、锁和相关CPU算法等。就目前正学习Linux系统,其中需要知道的内容有:Linux常用命令、Linux系统编程、Linux网络编程等。个人推荐学习书籍:《Linux就该这么学》、《鸟哥的Linux私房菜》、《深入理解计算机系统》、《天勤操作系统》、《Ubuntu_Linux从入门到精通》等。
4.设计模式与SQL数据库编程
针对23种设计模式,可根据需求进行相应的学习。个人觉得不能局限于固有的框架。根据特殊需求、特殊目的,才能有效地使用设计模式。其中设计模式学习有:单例模式、工厂模式、代理模式、策略模式、模板方法模式等23种,建议部分常用模式还是需要深入并记住的。个人建议b站或者博客学习设计模式更佳,这个因人而异且目前还在学习阶段。学习书籍有:《java 23种设计模式》、《设计模式之禅》。基础的视频有b站的C++设计模式-免费课程。
数据库(以mysql为例)的基础是CURD增删改查。其学习内容为:MYSQL基础知识,数据库的CURD、表的CURD、各类指令和相关函数、多表查询和表的约束、底层原理(如hashmap 的JDK1.8底层用红黑树+链表)等等;个人数据库学习主要是通过视频学习,感觉效果更佳,且目前还在学习阶段。
四、总结
以上就是今天的内容,主要是记录了个人的学习过程和学习路线。知识和技术日新月异,个人学习有限,目前就根据需求进行相关编程的学习。故而,在这篇博文仅罗列了目前编程基础的学习,其他相关编程内容如人工智能、深度学习等日后再进行深度的学习。
以上是关于记录关于C/C++的自学路线的主要内容,如果未能解决你的问题,请参考以下文章