week9- 作业二: 根据当周学习情况,完成一篇学习总结
一、数据库的基本原理
1、PrepareStatement 预编译
2、数据库架构
2.1、连接器:TCP 长连接
2.2、语法分析器
2.3、语义分析与优化器
2.4、执行引擎,执行计划
3、为什么 PrepareStatement 更好
3.1、预先提交带占位符的 SQL 到数据库进行预处理,提前生成执行计划,当给定占位符参数,真正执行 SQL 的时候,执行引擎可以直接执行,效率更好一点;
3.2、可以防止 SQL 注入攻击;
4、B+树、聚簇索引、非聚簇索引;
5、添加必要的索引优化 SQL 查询性能;
6、合理使用索引,不要盲目添加索引,尤其在生产环境中,添加索引的 alter 操作会消耗较长时间(分钟级)
7、数据库事务 ACID
8、数据库事务日志
二、JVM 虚拟机架构原理
1、JVM 组成架构
1.1、类加载器
1.2、方法区、堆、Java 栈、程序计数寄存器
1.3、执行引擎
2、Java 字节码文件
3、字节码执行流程
4、Java 字节码文件编译过程:
5、类加载器的双亲委托模型;
6、自定义类加载器;
7、堆 &栈
8、方法区 &程序计数器
9、Java(线程)栈
10、线程工作内存 & volatile
11、Java 运行环境
三、JVM 垃圾回收性能分析
1、JVM 的垃圾回收
2、JVM 分代垃圾回收
3、JVM 垃圾回收器算法
4、G1 垃圾回收内存管理机制
5、Java 启动参数-标准参数、非标准参数、非 Stable 参数;
6、JVM 性能诊断工具 JPS、JSTAT、JMAP、jstack
四、Java 代码优化技巧及原理
1、合理并谨慎使用多线程 IO 阻塞、锁等待;
2、竞态条件与临界区;
3、Java 线程安全;
4、ThreadLocal;
5、Java 内存泄漏;-长生命周期对象、静态容器、缓存;
6、合理使用线程池和对象池;使用合适的 JDK 容器类(顺序表、链表、Hash);缩短对象生命周期,加速垃圾回收;使用 I/O buffer 及 NIO;优先使用组合代替继承;合理使用单利模式;
五、系统性能优化案例-秒杀系统(上)
1、XXXX 性能现状;正常流量情况;高并发下的风险;高并发下的事故;秒杀;
2、高并发对网站性能的影响;
3、高并发实例:XXX.com 开业秒杀活动
3.1、商业需求
3.2、技术挑战
六、系统性能优化案例-秒杀系统(下)
1、XXXX.com 秒杀系统:服务器和网络准备
1.1、服务器准备(距秒杀开始仅五天时间来不及采购)
1.2、带宽准备
2、XXXX 秒杀系统:组成
2.1、秒杀商品列表,秒杀商品介绍,下单
3、XXXX.com 秒杀系统:设计原则-静态化、并发控制,防秒杀器、简化流程、前端优化;
4、三道阀门的设计;
5、秒杀器的预防;
6、秒杀静态页面优化;
7、交易系统性能优化;
8、应急预案;
9、采用更轻量/快速的服务器
10、前端优化自动化;
11、架设镜像站组建山寨 CDN
12、采用反向代理 加速核心页面
13、海量数据的透明垂直切分
评论