课程目标
● 熟练掌握Java数据结构及集合库底层实现
● 熟练掌握java io底层设计及设计原理
● 熟练掌握Java多线程、线程调优并掌握Java并发编程
● 熟练掌握java网络通讯、RPC及网络通讯优化知识
● 熟练掌握JVM执行机制、内存模型、内存分配机制、垃圾回收机制
● 熟练掌握JVM的调优技巧及方法并熟练使用常用的JVM分析和监控工具
● 熟练掌握Java编码性能及性能调优
课程时长
2天(6小时/天)
课程大纲
课程主题 | 课程内容 |
第一部分 深入Java核心库及性能调优
| 内容一、集合操作 1.ArrayList类、LinkedList类操作技巧及源码分析 2.HashSet、TreeSet操作技巧及源码分析 3.HashMap、TreeMap操作技巧及源码分析 4.其它常用集合类介绍 内容二、IO流 1.java编码问题 2.常用字节流操作技巧 3.常用字符流操作技巧 4. 序列化及其性能 5.IO专题的设计思想 |
第二部分: 深入JAVA多线程以及并发编程 | 内容一、深入多线程原理 1.线程和进程(并发与并行、线程上下文切换、线程状态) 2.线程安全问题 3.多线程并发的3个特性(原子性、有序性、可见性) 4.有序性案例:指令重排序 5.可见性案例:JAVA内存模型(JMM) 内容二、线程同步及通讯 1.如何解决可见性问题 2.同步原理剖析 3.什么是Monitor 4.锁机制优化 5.线程间的通讯 内容三、volatile 1.解决内存可见性问题 2.volatile实现原理剖析 3.volatile缺陷:原子性bug 4.volatile使用场景 5.synchronized和volatitle比较 内容四、并发编程 1.JUC简介 2.原子类与(Atomic包,CAS介绍,CAS原理详解、CAS缺陷) 3.Loc锁与AQS(锁简介、与Synchronized对比、ReentrantLock锁、AQL原理、读写锁等) 4.并发容器(ConcurrentHashMap,CopyOnWriteArrayList,并发队列等) 5.线程池 6.ThreadLocal 7.Future和FutureTask |
第三部分 深入网络通讯原理及优化 | 一、网络编程核心原理 1.网络通讯协议 2.TCP与UDP协议(三次握手、四次挥手) 3.输入URL地址到显示网页经历了哪些过程,会使用到哪些协议 4.HTTP1.0与HTTP1.1的区别 5.URI与URL的区别 6.HTTP与HTTPS的区别
二、深入IO模型 1.BIO 2.NIO(文件IO、网络IO、案例) 3.AIO编程 4.RPC及RPC优化
三、网络层优化 1.性能好,效率高的一对多通讯如何实现 2.事件驱动:C10M是如何实现 3.如何提升TCP三次握手的性能 4.如何提升TCP四次未收的性能 5.如何修改TCP缓冲区才能兼顾并发数量与传输速度 6.如何调整TCP拥塞控制性能 7.实战案例 |
第四部分 深入jvm及调优
| 内容一、JVM内存分配机制 1.JVM基本常识(JVM架构图) 2.类加载子系统(加载时间、过程、类加载器、双亲委派) 3.运行时数据区(堆、JVM栈、本地方法栈、方法区、字符串常量、程序计数器、直接内存) 4.对象的创建流程与内存分配 5.对象内存布局 6.如何访问一个对象 内容二、JVM垃圾收集机制 1.GC基本原理(垃圾回收、什么垃圾、如何寻找垃圾、如何清除垃圾) 2.串行收集器(年轻串行、老年串行) 3.并行收集器(Parallel Scavenge收集器、Parallel Old收集器、ParNew收集器、CMS收集器) 内容三、JVM相关工具的使用 1.JDK工具包使用(jps,jstat,jinfo,jmap,jhat,jstack,VisualVm) 2.第三方工具的使用(GCEasy,MAT,GCViewer,Arthas) 内容四、JVM参数 1.标准参数 2.非标准参数 3.不稳定参数 内容五、JVM调优 1.JVM调优三问 1.1.为什么JVM需要调优 1.2什么时候进行JVM调优 1.3JVM调优是调什么内容 1.4.JVM调优原则 1.5.JVM调优主要步骤 2.GC日志详解 2.1GC参数配置 2.2GC日志解读 2.3GC可视化分析(内存占用、关键性能指标、GC统计、GC原因) 3.堆内存与元空间优化 3.1监控分析(内存占用、GC统计) 3.2判断 3.3 确定目标 3.4对比差异 4.线程堆栈优化 5.垃圾回收器优化:吞吐量优先 6.垃圾回收器优化:响应时间优先 内容六、JVM调优实战 1.内存溢出的定位与分析 2.检测死锁 内容七、其它 1. JVM 问题排查分析的常用手段、性能调优的最佳实践经验 2. JVM 疑难问题分析 |
第五部分 常见应用性能问题解析 | 1.常见代码相关性能问题及解析 2.常见CPU负载性能问题及解析 3.常见内存相关性能问题及解析 4.常见磁盘IO、网络IO性能问题及解析 |