未来一年我可能会以这个为主,写博文,待全部写完后会出书一本,希望大家有所收获
第一篇性能调优专题****
第1章Jvm
1.1 JVM类加载机制
1.2 JVM内存模型
1.2.1 堆内存分代机制及对象生命周期
1.2.2 线程栈及栈帧内部结构
1.2.3 方法区(元空间)及常量池
1.2.4 程序计数器
1.2.5 本地方法栈
1.3 四种引用类型
1.3.1 强引用Reference
1.3.2 软引用SoftReference
1.3.3 弱引用WeakReference
1.3.4 软引用和弱引用的使用场景
1.3.5 WeakHashMap案例演示和解析
1.3.6 虚引用简介
1.3.7 ReferenceQueue引用队列
1.3.8 虚引用PhantomReference
1.4 JVM常用参数
1.4.1 栈内存Xss
1.4.2 元空间MetaspaceSize
1.4.3 PrintGCDetails回收前后对比
1.4.4 SurvivorRatio
1.4.5 NewRatio
1.4.6 MaxTenuringThreshold
1.5 垃圾收集机制
1.5.1 Serial垃圾收集器
1.5.2 ParNew垃圾收集器
1.5.3 Parallel垃圾收集器
1.5.4 ParallelOld垃圾收集器
1.5.5 CMS垃圾收集器
1.5.6 G1垃圾收集器
1.5.7 如何选择垃圾收集器
1.6 垃圾收集算法
1.6.1 标记清除算法
1.6.2 复制算法
1.6.3 标记整理算法
1.6.4 分代垃圾收集理论
1.7 JVM调优工具
1.7.1 JDK自带Jstat、Jinfo、Jmap、Jhat及Jstack调优命令
1.7.2 Jvisualvm、Jconsole调优工具
1.7.3 阿里巴巴JVM调优工具Arthas
1.8 日志分析工具
1.8.1 GCEasy日志分析工具使用
1.8.2 GCViewer日志分析工具使用
1.9 JVM内存模型
1.9.1 日均百万交易系统JVM堆栈大小设置策略与调优
1.9.2 亿级流量电商堆内年轻代与老年代垃圾回收参数设置与调优
1.9.3 高并发系统如何基于G1垃圾回收器优化性能
1.9.4 每秒10万并发的秒杀系统为什么会频繁发生GC
1.9.5 电商大促活动时,严重Full GC导致系统直接卡死的优化实战
1.9.6 线上生产系统OOM监控及定位与解决
1.10 线上排查
1.10.1 整机top
1.10.2 cpu查看vmstat
1.10.3 cpu查看pidstat
1.10.4 内存查看free和pidstat
1.10.5 硬盘查看df
1.10.6 磁盘IO查看iostat和pidstat
1.10.7 网络IO查看ifstat
1.10.8 CPU占用过高的定位分析
第2章Mysql
2.1 Mysql索引数据结构
2.1.1 B+树
2.1.2 Hash
2.1.3 红黑树
2.2 Mysql 执行计划与索引
2.2.1 explain工具使用
2.2.2 索引优化最佳实践
2.3 Mysql锁机制与事务隔离级别
2.3.1 Mysql锁
2.3.2 事务隔离级别
2.3.3 多版本并发控制MVCC机制
2.4 慢查询Sql调优实战
第3章Tomcat
3.1 Tomcat项目架构
3.1.1 理解Tomat启动流程
3.1.2 理解对Http请求解析与处理流程
3.1.3 核心组件认知
3.1.4 Tomcat8与Tomcat7对比
3.2 生产环境配置
3.2.1 Tomcat server.xml 配置
3.2.2 Tomcat集群与会话复制方案实现
3.2.3 Tomcat虚拟主机配置
3.2.4 Tomcat8与Tomcat7对比
3.3 Tomcat线程模型背后原理
第4章性能压测
4.1 压力测试
4.1.1 基本介绍
4.1.2 Apache JMeter安装使用
4.1.3 JMeter在windows下地址占用bug解决
4.2 性能监控
4.2.1 堆内存与垃圾回收
4.2.2 jvisualvm使用
4.3 性能测试
4.3.1 中间件对性能的影响
4.3.2 简单优化吞吐量测试
4.4 实战案例优化
4.4.1 nginx动静分离
4.4.2 模拟线上应用内存崩溃宕机
4.4.3 优化三级分类数据获取
第5章异步
5.1 线程池
5.2 CompletableFuture基本介绍
5.3 CompletableFuture启动异步任务
5.4 完成回调与异常感知
5.5 handle最终处理
5.6 线程串行化
5.7 两任务组合都要完成
5.8 多任务组合
第二篇并发编程
第6章JMM内存模型
6.1 现代计算机模型基础
6.2 什么是线程 深入理解Java线程
6.3 Volatile关键字?
6.3.1 JMM Volatile 缓存一致性协议
6.3.3 volatile是什么
6.3.3 JMM内存模型之可见性
6.3.4 可见性的代码验证说明
6.3.5 volatile不保证原子性
6.3.6 解决volatile不保证原子性问题
6.3.7 volatile指令重排案例
6.3.8 单例模式在多线程环境下可能存在安全问题
6.3.9 单例模式volatile分析
6.3.10 顺序一致性、happens-beofre as-if-serial
6.4 CAS
6.4.1 CAS是什么
6.4.2 CAS底层原理
6.4.3 CAS缺点
6.4.4 ABA问题
6.4.5 AtomicReference原子引用
6.4.6 AtomicStampedReference版本号原子引用
6.4.7 ABA问题的解决
第7章并发同步处理
7.1 Synchronized内置锁实现原理
7.2 Synchronized锁的膨胀升级过程分析
7.3 AbstractQueuedSynchronizer(AQS)
7.4 乐观锁、悲观锁、重入锁、公平锁、非公平锁及锁的粒度
7.5 ReentrantLock/ReentrantReadWriteLock、ReadWriteLock
7.6 Condition 条件队列 同步队列
第8章并发包之tools限制
8.1 CountDownLatch
8.2 Semaphore
8.3 CyclicBarrier
第9章并发包之atomic原子操作
9.1 atomic类ThreadLocal ABA JMM
9.2 cas算法乐观锁
9.3 Unsafe魔法类
第10章java锁
10.1 公平和非公平锁
10.2 可重入锁和递归锁
10.3 自旋锁
10.4 读写锁
10.5 死锁
第11章阻塞队列
11.1 简介
11.2 接口结构和实现类
11.3 抛出异常组
11.4 返回布尔值组
11.5 阻塞和超时控制
11.6 同步SynchronousQueue队列
11.7 生产者消费者传统版
11.8 锁绑定多个条件Condition
11.9 生产者消费者阻塞队列版
11.10 Synchronized和Lock
11.11 ArrayBlockingQueue 数组有界队列
11.12 ConcurrentLinkedQueue 链表有界队列
11.13 PriorityBlockingQueue 优先级排序无界队列
11.14 DelayQueue 延时无界队列
第12章并发Map、List与Set
12.1 集合类不安全之并发修改异常
12.1 HashMap与ConcurrentHashMap源码剖析
12.2 ArrayList、LinkedList与CopyOnWriteArrayList
12.3 Set与CopyOnWriteArraySet
第13章线程池
13.1 Callable接口
13.2 线程池使用及优势
13.3 线程池3个常用方式
13.4 线程池7大参数
13.5 线程池底层工作原理
13.6 线程池的4种拒绝策略
13.7 线程池实际中使用哪一个
13.8 线程池配置合理线程数
13.9 Futrue模式
13.10 ThreadPoolExecutor
13.11 ScheduledExecutorService
第14章ForkJoin框架
14.1 ForkJoin框架介绍
14.2 ForkJoin案例
14.3 ForkJoin原理解析
第三篇 分布式框架
第15章分布式消息中间件
15.1 Rabbitmq
15.1.1 Rabbitmq入门与高可用集群部署
15.1.2 Rabbitmq消息分发与主题消息分布功能
15.1.3 Rabbitmq消息路由机制
15.1.4 Rabbitmq消息确认机制
15.1.5 Rabbitmq Web监控平台使用
15.1.6 Rabbitmq镜像队列
15.2 RocketMq
15.2.1 解密RocketMq集群部署与快速入门
15.2.2 分析RocketMq模块划分与集群原理
15.2.3 普通消息、顺序消息、事务消息、定时消息
15.2.4 深入RocketMq Broker、Consumer、Producer源码
15.2.5 RocketMq监控与运维
15.2.6 RocketMq消息中间件API架构开发
15.3 Kafka
15.3.1 Kafka发展介绍与对比
15.3.2 Kafka集群搭建与使用
15.3.3 Kafka副本机制与选举原理
15.3.4 Kafka架构设计原理分析
15.3.5 基于Kafka的大规模日志系统实现原理分析
15.3.6 亿级流量生产系统Kafka性能优化最佳实践
第16章分布式事务
16.1 本地事务在分布式下的问题
16.2 本地事务隔离级别&传播行为等
16.3 分布式CAP&Raft原理
16.4 BASE
16.5 分布式事务常见解决方案
16.6 Seata&环境准备
16.7 Seata分布式事务体验
16.8 最终一致性库存解锁逻辑
第17章分布式储存中间件
17.1 Redis
17.1.2 Redis在微博和微信及电商场景实践
17.1.4 Redis主从及哨兵架构
17.1.5 Redis Cluster集群架构实战及原理
17.1.6 集群数据分片算法及动态水平扩容
17.1.7 Jedis、Redisson客户端源码剖析
17.1.8 Redis高并发分布式锁实战
17.1.9 Redis缓存穿透,缓存失效,缓存雪崩实战解析
17.1.10 Redis布隆过滤器实现
17.1.11 Redis缓存设计与性能优化
17.2 MongoDB
17.2.1 MongoDB基础概念数据库、集合、索引及文档
17.2.2 MongoDB高可用集群搭建实战
17.2.3 MongoDB性能优化最佳实践
17.3 FastDFS
17.3.1 FastDFS应用背景和原理介绍
17.3.2 FastDFS文件存储项目实战
17.3.3 FastDFS分布式部署实战
17.4 Elasticsearch
17.4.1 Elasticsearch、Logstash、Kibana快速入门
17.4.2 Elasticsearch、Logstash、Kibana集群搭建实战
17.4.3 Elasticsearch、Logstash、Kibana架构与原理分析
17.4.4 Elasticsearch高级查询
17.4.5 Elasticsearch底层原理
第18章分布式框架
18.1 Zookeeper
18.1.1 Zookeeper快速入门
18.1.2 Zookeeper多节点集群部署实战
18.1.3 Zookeeper典型应用场景实战
18.1.4 Zookeeper中znode、watcher、ACL、客户端API
18.1.5 Zookeeper客户端服务端源码剖析
18.1.6 Zookeeper迁移、扩容、监控
18.2 Dubbo
18.2.1 Dubbo企业级应用实践
18.2.2 Dubbo 调用模块
18.2.3 Dubbo容错机制与高扩展性分析
18.2.4 Dubbo RPC协议底层原理与实现
18.2.5 Dubbo设计原理分析与源码
18.2.6 Dubbo负载均衡策略分析
18.2.7 Dubbo管控后台管理与部署
18.3 ShardingSphere
18.3.1 数据读写分离及分库分表场景
18.3.2 常见数据分片算法hash、list、range、tag
18.3.3 常见数据库中间件Mycat和ShardingSphere对比
18.3.4 解密Sharding-jdbc核心概念与快速开始
18.3.5 深入Sharding-jdbc特性与模块划分
18.3.6 实战订单交易中orders和ordersItem分库分表开发
18.3.7 源码之sql解析、sql路由、sql改写、sql执行、结果合并
18.4 Netty
18.4.1 网络与IO模型基础进阶
18.4.2 BIO、NIO及AIO线程模型
18.4.3 Netty线程模型及源码剖析
18.4.4 高性能序列化协议protobuf及源码分析
18.4.5 粘包拆包现象及解决方案、编解码器源码分析
18.4.6 Netty心跳机制源码剖析
18.4.7 直接内存与Netty零拷贝
18.4.8 Netty之Http协议开发应用实战
18.4.9 Netty之WebSocket协议开发应用实战
第四****篇**** 微服务
第19章微服务架构变迁史
19.1 淘宝电商微服务架构变迁史
19.2 京东电商微服务架构变迁史
第20章Spring Boot及源码剖析
20.1 Spring boot 快速开始及核心配置
20.2 Spring boot 部署方式及热部署
20.3 Web开发模板引擎Thymeleaf及Freemarker
20.4 Spring Boot集成Mybatis,Redis,RabbitMq等三方框架
20.5 Spring Boot启动过程源码分析
20.6 Spring Boot自动装配源码分析
第21章Spring Cloud Alibaba及源码剖析
21.1 Nacos 注册中心
21.1.1 服务注册与发现
21.1.2 服务心跳与下线
21.1.3 服务健康检查
21.1.4 Nacos集群架构实战
21.1.5 Nacos集群节点间服务数据同步
21.1.6 Nacos集群架构CAP原理
21.1.7 Nacos源码高并发设计精髓
21.1.8 阿里云超大规模微服务注册中心设计架构
21.2 Ribbon 客户端负载均衡
21.2.1 Ribbon服务发现及客户端缓存
21.2.2 Ribbon客户端负载均衡
21.2.3 自定义扩展Ribbon客户端负载均衡算法
21.2.4 Ribbon框架源码设计缺陷及优化
21.3 Feign 声明式服务调用
21.3.1 Feign 方法参数拼接Http请求
21.3.2 Feign 整合Ribbon
21.4 Sentinel 限流降级熔断
21.4.1 限流
21.4.2 熔断降级
21.4.3 热点限流规则
21.4.4 系统负载限流
21.4.5 系统黑白名单授权规则限流
21.5 Gateway 统一网关
21.5.1 服务动态路由
21.5.2 服务统一限流熔断
21.5.3 服务统一缓存
21.5.4 服务统一授权认证
21.5.5 服务统一性能监控
21.5.6 服务统一灰度发布
21.6 Nacos 分布式配置中心
21.6.1 高可用分布式配置中心实战
21.6.2 多环境切换及配置共享
21.6.3 运行时配置动态刷新及服务热加载
21.7 Seata 微服务分布式事务
21.7.1 Seata全局事务注册
21.7.2 Seata分支事务客户端注册
21.7.3 Seata分支事务客户端全局锁冲突自旋设计
21.7.4 Seata分支事务服务端全局锁设计
21.7.5 Seata全局事务提交
21.7.6 Seata全局事务回滚
21.7.7 Seata分支事务第二阶段异步提交
21.7.8 Seata分支事务第二阶段生成反向Sql执行回滚
21.8 微服务的用户认证与授权
21.8.1 微服务API安全机制
21.8.2 微服务安全之Oauth2协议
21.8.3 微服务安全之传统Session的认证与授权
21.8.4 微服务安全之Token机制的认证与授权
21.8.5 JWT安全认证方案
第22章Spring Cloud Netflix
22.1 Eureka服务注册与发现
22.2 Ribbon 客户端负载均衡
22.3 Fegin 声明式服务调用
22.4 Hystrix实现服务限流,降级,熔断
22.5 Hystrix实现自定义接口降级,监控数据及监控数据聚合
22.6 Zuul统一网关,服务路由,过滤器使用
22.7 分布式配置中心Config
22.8 分布式链路跟踪Sleuth
第23章虚拟容器
23.1 虚拟服务之Docker
23.1.1 Docker的镜像,仓库,容器
23.1.2 快速开始搭建Docker环境
23.1.3 DockerFile使用
23.1.4 DockerCompose集成式应用组合
23.1.5 Docker服务编排实现
23.2 Kubernetes容器管理
23.2.1 Kubernetes介绍与快速开始
23.2.2 Kubernetes生产集群环境搭建与使用
第24章k8s
24.1 k8s入门及集群搭建
24.1.1 k8s简介
24.1.2 k8s-架构原理&核心概念
24.1.3 k8s-集群搭建-环境准备
24.1.4 k8s-集群搭建-创建三个虚拟机
24.1.5 k8s-集群搭建-NAT网络和前置环境
24.1.6 k8s-集群搭建-安装Docker、kubelet、kubeadm、kubectl
24.1.7 k8s-集群搭建-集群安装
24.2 k8s入门
24.2.1 基本操作体验
24.2.2 yaml&基本使用
24.2.3 Pod、Service等概念
24.2.4 Ingress
24.3 kubesphere安装配置以及使用
24.3.1 安装前置环境
24.3.2 安装最小化安装
24.3.3 安装定制化安装&界面介绍
24.3.4 建立多租户系统
24.3.5 创建WordPress应用-密钥
24.3.6 创建WordPress应用-创建容器
24.3.7 创建WordPress应用-外网访问
24.3.8 什么是DevOps
24.3.9 流水线创建凭证
24.3.10 流水线CICD完整体验
24.4 集群
24.4.1 集群常见的基本形式
24.4.2 MySQL常见集群形式
24.4.3 MySQL主从同步
24.4.4 ShardingSphere简介
24.4.5 Redis-Cluster基本原理
24.4.6 Redis-Cluster集群搭建
24.4.7 ElasticSearch集群原理
24.4.8 ElasticSearch集群搭建
24.4.9 RabbitMQ镜像集群搭建
24.5 k8s部署
24.5.1 k8s部署MySQL
24.5.2 k8s部署Redis
24.5.3 k8s部署ElasticSearch&Kibana
24.5.4 k8s部署RabbitMQ
24.5.5 k8s部署Nacos
24.5.6 k8s部署Zipkin
24.5.7 k8s部署Sentinel
24.5.8 k8s部署应用的流程
24.5.9 生产环境配置抽取
24.5.10 创建微服务Dockerfile
24.5.11 创建微服务k8s部署描述文件
24.5.12 理解targetPort、Port、NodePort
24.6 流水线
24.6.1 gitee拉取代码
24.6.2 参数化构建&环境变量
24.6.3 Sonar代码质量分析
24.6.4 构建&推送镜像
24.6.5 流水线编写
24.6.6 移植数据库
24.6.7 流水线细节优化&解决OOM
24.6.8 流水线部署微服务
24.6.9 Docker镜像操作
24.6.10 整合阿里云镜像仓库
24.6.11 Jenkins修改阿里云镜像仓库
24.6.12 部署gateway
24.6.13 部署auth-server
24.6.14 部署cart
24.6.15 部署coupon
24.6.16 部署&bug修改
24.6.17 修改为公有仓库
24.7 项目部署
24.7.1 部署前置nginx
24.7.2 创建网关与应用路由
24.7.3 商城系统上线
24.7.4 部署vue项目
24.7.5 测试滚动更新部署admin-vue-app
24.7.6 线上预警与监控
24.7.7 总结