一、知识模块

我在学习时关注的计算机知识模块如下:

基础知识模块

编程语言(C++)、数据结构和算法、操作系统、计算机网络、数据库

扩展知识模块

网络编程、设计模式、linux、脚本语言等

二、各模块学习路线

1、C++

  1. C++ Primer
  2. 深入探索 c++ 对象模型
  3. STL 源码剖析
  4. Effective C++、More Effective C++

2、算法

  1. 大话数据结构
  2. 算法第4版
  3. 剑指offer + 算法导论

3、操作系统

  1. 现代操作系统

4、计算机网络

  1. 《计算机网络》第七版 和 《计算机网络:自顶向下方法》一起学,比较一下。
  2. 网络是怎样连接的
  3. 图解HTTP
  4. 《TCP/IP详解卷1:协议》

5、数据库

基础
  1. 看 W3Schools 的 SQL 教程,掌握基础语法,会编写 SQL 语句
  2. 看书《MySQL必知必会》, 边学边用,动手实操。
  3. 看书《数据库系统概念》
进阶
  1. 《高性能MySQL(第3版)》、《深入理解MySQL》、Mysql官网等。丰富的经验

6、系统编程

  1. 深入理解计算机系统
  2. 程序员的自我修养

7、网络编程

  1. TCP/IP网络编程
  2. Linux高性能服务器编程
  3. Linux多线程服务器编程
  4. Unix网络编程
  5. Unix环境高级编程

三、学习感悟

因为学习后如果不及时整理和复习很快就会忘记,隔一段时间后就好像没看一样,会感觉自己白看了,做了无用功。所以在开始学习这一系列计算机知识后,我努力让自己静下心来做笔记。

一般我会在看完某一章后尽快做一下这章的笔记,有时可能会连续看了许多章后再做,但尽量避免整理笔记的时间和学习的时间相隔太久。

我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点,并且要能在笔记中快速找到并迅速理解。因此在整理笔记时力求全面与简洁。

在此基础上,我所做的笔记中,已整理的内容是对书中内容的提炼,包括了我在学习时所认为的书中所有有用的知识点,因此每章的笔记内容都比较多。

对于这些经典的计算机书籍来说,书中有用的知识点太多了,因此做笔记的过程是很慢的。在我学习整理的过程中,平均来看,学习一章内容和整理一章内容的时间比大概在 1:1.5 左右,也就是整理笔记的时间实际上要比学习一遍还要更久。

但是对我来说,整理笔记是十分有用并且必须要做的事情。一方面,整理笔记相当于对学习的内容的一次复习,并且因为整理笔记时需要筛选有用内容并对其尽量提炼、简化,所以相比于第一遍看书学习,整理笔记也可以看作是更为细致的第二遍的学习。另一方面,在日后需要查找书中某个知识点时,笔记可以代替原书成为查找知识点的参考。而因为笔记是自己整理的,所以相比原书,对笔记中的知识点进行查找和理解的速度都更快。

但是并非所有的书都要全部整理成笔记,不同的书需要整理的详细程度也不同。如我对《鸟哥的Linux私房菜》的整理内容较为简略,因为这本书中对 Linux 的讲解十分详细,但并非所有知识都常用,并且其整理成本非常高,而整理的收效又不大。因此我只选择其中比较重要、常用的知识进行了整理。

四、书籍笔记索引

下面是到目前已发出的各模块书籍学习笔记的索引。

C/C++

《C++ Primer》学习笔记整理

《C标准库》学习笔记整理

《Effective C++》部分内容学习笔记整理

《C++编程思想》部分章节学习笔记整理

算法

《剑指offer》刷题笔记

计算机网络

《计算机网络(谢希仁)》学习笔记整理

《图解HTTP》部分章节学习笔记整理

数据库

《SQL必知必会》学习笔记整理

《MySQL必知必会》学习笔记整理

系统编程

网络编程

《TCP/IP网络编程》学习笔记整理

Python

《Python编程:从入门到实践》基础知识部分学习笔记整理

Linux

《鸟哥的Linux私房菜》部分章节学习笔记整理

 补充

还有一些已整理但比较零碎的笔记没有发到博客上,经过梳理后后续都会补充上来。

04-23 02:11