基础模块:
计算机基础、JVM 原理、多线程、设计模式、数据结构和算法
应用模块:
常用工具集、常用框架、缓存、队列、数据库
综合模块:
系统架构设计、微服务架构、容器化
技术方向: 重点培养技术攻坚能力,包括疑难问题的排查、大型项目的功能拆分、技术品牌的塑造等。具体的工作包括:原理、实现、注重架构能力的培养,更深一层还有:大规模、高并发场景,高可用、可扩展措施和方案、业务的抽象、架构能力、分布式服务设计原则的理解等。
基础知识分为计算机基础和 Java 体系两大部分,包括了进程、线程管理;TCP、HTTP 网络协议;数据结构、经典算法;常用设计模式。
内存屏障、指令重拍、JIT 编译器、逃逸分析
新技术方面:Java8~11 新特性,G1、ZGC 垃圾回收算法、最新网络协议 HTTP2、QUIC;
进程与线程
1. 进程是系统资源分配的最小单位,线程是程序执行的最小单位;进程使用 独立的数据空间,而线程共享进程的数据空间。
2. 线程调度:时间片轮转调度、先到先服务、优先级调度、多级反馈队列以及高响应比优先调度
3. 线程的上下文切换,线程切换的代价。
4. 进程间通信(IPC)。上图6 种进程通信的原理和适用场景。
5. 协程:更轻量化,是用户态进行调度,切换的代价比线程上下文切换要低。(Kilima、Quasar)
Linux 常用命令:
重点:AWK、top、netstat、grep
内存分页管理和 swap 机制、任务队列与 cpu load
TCP:传输层协议,对应 OSI 网络模型的第四层传输层,特点:
· TCP协议是基于链接的,也就是传输数据前需要建立好链接,然后在进行传输。
· 链接一旦建立,就可以在链接上进行双向的通信。
· 传输是基于字节流而不是报文,将数据按字节大小进行编号,接收端通过 ACK 来确认收到的数据编号,通过这种机制,TCP协议能保证接收数据的有序性和完整性。
· TCP 还提供流量控制能力,通过滑动窗口来控制数据的发送速率。滑动窗口的本质是动态缓冲区,接收端根据自己的处理能力,在 TCP 的 Header 中动态调整窗口大小,通过 ACK 应答包通知给发送端。,发送端根据窗口大小调整发送的速度。
· 拥塞控制。慢启动、拥塞避免、拥塞发生、快速恢复。、
TCP 建连
TCP 断链:
为什么等待 2 倍最大报文段生存时间之后在关闭链接?
1. 保证 TCP 协议的全双工链接能够可靠关闭
2. 保证这次连接的重复数据从网络中消失,防止端口被重用时可能产生数据混淆。
======================仅供学习使用~
网友评论