逼自己一把!
一、数据结构与算法
算法:动态规划、回溯算法、查找算法、搜索算法、贪心算法、分治算法、位运算、双指针、排序、模拟、数学、……
数据结构:数组、栈、队列、字符串、链表、树、图、堆、哈希表、……
数据结构学习
算法学习
链表类(链表反转类题目)
二叉树类(二叉树的遍历类型题,最大公祖先类题目)
字符串操作题目
dfs/bfs
动态规划(这个考的基本都是 leetcode 上的或者是背包问题,对于动态规划问题其实有很多种类,比较见到的就是一维动态和二维动态),另外还有区间调度类型的题目(贪心算法,也属于动态规划的一种特殊情况。
二、计算机组成原理
入门学习
深入学习
第一章:计算机抽象以及相关技术,这个章节主要是介绍了计算机组成的思想,可以简单快读看,不用重点读;
第二章:指令,大体上讲的是计算机是如果识别和运行指令的,以及代码到指令的过程;
第三章:计算机的算数运算,介绍的是计算机是如何进行加减乘除法的,以及浮点数的运算;
第五章:层次化存储,讲的是计算机的存储层次结构,而且重点讲的是 CPU Cahe。
信息表示(如何使用二进制表示整型、浮点数等);
C 和汇编语言的学习(通过汇编语言更深入地理解C语言是什么);
计算机体系结构(存储层次结构、局部性原理、处理器体系结构);
编译链接(C语言如何从文本变成可执行文件、静态链接、动态链接);
操作系统的使用(异常控制流、虚拟内存、多个系统调用介绍);
网络及并发编程(并发的基本概念、网络相关的系统调用的介绍)。
《计算机组成与设计:硬件 / 软件接口》讲的指令格式是 RISC 的;
《深入理解计算系统》讲的指令格式是 x86 的;
三、操作系统
Super Man
,它为了我们做了非常厉害的事情,以至于我们根本察觉不到,只有通过学习它,我们才能深刻体会到它的精妙之处,甚至会被计算机科学家设计思想所震撼,有些思想实际上也是可以应用于我们工作开发中。入门系列
深入系列
9.8
分,这本书严格来说不算操作系统书,它是以程序员视角理解计算机系统,不只是涉及到操作系统,还涉及到了计算机组成、C 语言、汇编语言等知识,是一本综合性比较强的书。四、计算机网络
4
层,其中需要我们熟练掌握的是应用层、传输层和网络层,至于网络接口层(数据链路层和物理层)我们只需要做简单的了解就可以了。入门系列
深入学习
白嫖站点:http://www.tcpipguide.com/free/t_TCPSlidingWindowAcknowledgmentSystemForDataTranspo-6.htm
TCP 协议的 RFC 文档:https://datatracker.ietf.org/doc/rfc1644/
实战系列
五、MySQL
基本语法:select/delete/insert/update、limit、join等
索引:B+树,聚族索引,二级索引,组合索引,最左匹配原则,索引失效、慢查询
事务:事务四大特性ACID,事务隔离级别,MVCC
锁:全局锁、表级锁、行级锁、快照读、当前读、乐观锁、悲观锁、死锁
日志:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)
架构:读写分离、主从架构、分库分表、数据库和缓存双写一致性
六、Redis
七、看书心得
带着程序是如何在计算机里跑起来的问题,去学计算机组成原理;
带着输入一条 url 到网页显示, 期间发生了什么的问题,去学习计算机网络;
带着进程、内存、磁盘是如何被操作系统管理点,去学习操作系统;
带着如何实现一个高并发网络模型,去学习网络编程;
…