Java 2020版
大纲
见:[Java 2020版.xmind](Java 2020版.xmind)
基础
1.1 操作系统
定义:概念、特性、功能、分类、结构
处理机管理:概念、控制、调度、通信、同步(死锁)
参考:处理机管理
存储管理:区域划分、程序的装入与链接、内存分配与回收、虚拟存储器
参考:存储管理
设备管理:IO系统、IO控制方式、缓冲管理、设备分配、磁盘存储器的管理
参考:设备管理
文件管理:文件/文件系统、逻辑结构、外存分配方式、目录管理、文件存储管理
参考:文件管理
1.2 数据结构
概述:定义、逻辑结构和存储结构、时空间复杂度
数组和字符串
线性表:顺序表、链表(单、双、循环)
栈和队列、堆
树:二叉树、线索、二叉排序树(AVL、红黑、B、B+、2-3-4、哈夫曼(字典))、算法(前中后序遍历、层次遍历、最小生成树…)
图:表示、遍历(DFS和BFS)、最小生成树、最短路径、拓扑排序
哈希表:哈希函数、冲突处理
查找和(内)排序
外部排序:置换平衡归并排序算法、置换选择排序算法等
思想:分而治之等
推荐:https://visualgo.net/zh
推荐:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
1.3 算法
分治法
递归
回溯
贪心
动态规划
1.4 关系型数据库
1.4.1 理论
概述:介绍、功能、特点
数据模型:类型、组成、概念
组成:数据结构、数据操作、完整性约束
完整性约束:实体完整性、参照完整性、用户定义的完整性
规范化:函数依赖、范式
三级模式和两级印象
1.4.2 SQL
数据定义语言,DDL
数据查询语言,DQL
数据操纵语言,DML
数据控制语言,DCL(安全、事务等)
1.4.2 SQL(2)
数据类型:数字、字符、时间
对象:库、表 视图 索引
多表查询:连接查询(自身连接、外连接、多表连接)、嵌套查询、集合查询
函数
触发器和存储过程
1.4.3 数据库事务和并发控制
事务:定义、ACID
一致性恢复:事务撤销、事务重做
实现:日志文件。
并发控制:保证隔离和一致性,实现并发控制的调度
问题
隔离级别
解决原理:锁、MVCC
锁:XS、三级封锁协议、封锁粒度和意向锁
MVCC:读写与版本
串行化调度:2PL
1.4.4 MySQL
索引原理
SQL分析和优化:慢查询日志和explain
事务与锁
存储引擎深入
大表优化:主从复制(binlog)、分库分表(逐渐到分布式数据库)及对应解决方案
一条SQL语句如何在MySQL中执行的?
SQL执行慢的原因有哪些?
1.5 计算机网络
OSI七层结构和TCP/IP五层结构
物理层、数据链路层
网络层
传输层:TCP/UDP协议、可靠、连接管理
ARQ、滑动窗口协议(连续ARQ)
流量控制:滑动窗口协议
拥塞控制:慢开始和拥塞避免算法/AIMD、快重传算法和快恢复算法、拥塞窗口
相关概念:报文最大生存时间、最大传输单元、超时重传时间和RTT
有限状态机
会话层、表示层
应用层
DNS
HTTP:0.9 1.0 1.1 2.0
cookie
HTTPS:HTTP + SSL/TLS(加密、验证、数据完整性保护)
参考:JavaGuide 计算机网络
Java
2.1 Java SE
基础语言
OOP
异常、反射代理、注解、泛型、JDK序列化、枚举
IO/NIO
集合
多线程
Java 8
JVM
j.u.c/并发编程
Netty
编程规范 + 设计模式 + Effective Java + clean code等
2.2 Java EE
13个规范
Cookie和Session
过滤器和监听器
转发和重定向
Tomcat
参考:JavaGuide J2EE
2.3 Java Web
html css:简单了解
js + jQuery + ajax
js框架
ui框架
es规范
环境:node.js、npm、babel、webpack等