Java性能调优实战 / 覆盖80%以上Java应用调优场景

刘超
金山软件西山居技术经理
  • 课程目录
  • 课程介绍
  • 开篇词 | 怎样才能做好性能调优?

    精选高频性能问题,透过 Java 底层源码,提炼出优化思路和它背后的实现原理,最后形成一套“学完就能用的调优方法论”。

  • 01 | 如何制定性能调优标准?

    专栏更新第1讲,我想和你聊聊好的系统是如何诞生的?性能调优都有哪些标准?

  • 02 | 如何制定性能调优策略?

    Java高性能系统诞生的前奏,总结一下就是“测试-分析-调优”三步走。

  • 03 | 字符串性能优化不容小觑,百M内存轻松存储几十G数据

    千里之堤,溃于蚁穴。不要让一个小小的字符串,影响到Java系统的整体性能。

  • 04 | 慎重使用正则表达式

    一个split()方法如何影响TPS?问题的关键都在这里。

  • 05 | ArrayList还是LinkedList?使用不当性能差千倍

    从源码角度深入了解ArrayList和LinkedList的实现原理以及各自的特点。

  • 加餐 | 推荐几款常用的性能测试工具

    熟练掌握一款性能测试工具,是我们必备的一项技能。

  • 06 | Stream如何提高遍历集合效率?

    使用合理,Stream的简洁与强大将超乎你想象。

  • 07 | 深入浅出HashMap的设计与优化

    从HashMap的底层实现讲起,带你深度了解他的设计与优化。

  • 08 | 网络通信优化之I/O模型:如何解决高并发下I/O瓶颈?

    深入了解下Java I/O在高并发、大数据业务场景下暴露出的性能问题,从源头入手,学习优化方法。

  • 09 | 网络通信优化之序列化:避免使用Java序列化

    一个优秀的序列化框架可以提高系统的整体性能。

  • 10 | 网络通信优化之通信协议:如何优化RPC网络通信?

    在系统走向微服务化的今天,服务间的通信调优就显得尤为重要。

  • 11 | 答疑课堂:深入了解NIO的优化实现原理

    深入讲解Tomcat、Netty等通信框架如何通过优化I/O来提高系统性能。

  • 12 | 多线程之锁优化(上):深入了解Synchronized同步锁的优化方法

    减少锁竞争,是优化Synchronized同步锁的关键。

  • 13 | 多线程之锁优化(中):深入了解Lock同步锁的优化方法

    充分利用Lock锁的灵活性,通过锁分离的方式来降低锁竞争。

  • 14 | 多线程之锁优化(下):使用乐观锁优化并行操作

    在高并发场景下,乐观锁没有因竞争造成的系统开销,性能相比悲观锁更胜一筹。

  • 15 | 多线程调优(上):哪些操作导致了上下文切换?

    在并发程序中,并不是启动更多的线程就能让程序最大限度地并发执行,还要考虑上下文切换带来的系统开销。

  • 16 | 多线程调优(下):如何优化多线程上下文切换?

    你有没有想过将上下文切换作为系统的性能参考指标,并纳入到服务性能监控中呢?

  • 17 | 并发容器的使用:识别不同场景下最优容器

    JDK1.1到JDK1.8,Java依据场景的变化实现了同类型的多种容器,今天我们就一一对比总结。

  • 18 | 如何设置线程池大小?

    线程数量的设置不是凭借简单的估算来决定的,今天我们就来看看究竟有哪些计算方法可以复用。

  • 19 | 如何用协程来优化多线程业务?

    协程是一种设计思想,不仅仅局限于某一门语言,Java已经可以借助协程框架实现协程了。

  • 20 | 答疑课堂:模块三热点问题解答

    今天这讲是解答模块三比较集中的一些问题,有关监测上下文切换异常的命令排查工具以及blockingQueue。

  • 加餐 | 什么是数据的强、弱一致性?

    其实在系统的很多地方都存在数据一致性的相关问题,今天我们主要讨论“并发编程中共享变量的一致性”。

  • 21 | 磨刀不误砍柴工:欲知JVM调优先了解JVM内存模型

    这讲我们深入学习最基础的内存模型设计,了解其各个分区的作用及实现原理。

  • 22 | 深入JVM即时编译器JIT,优化Java编译

    这讲介绍运行时编译如何实现对Java代码的优化。

  • 23 | 如何优化垃圾回收机制?

    这讲重点介绍不同业务场景下的垃圾回收调优策略。

  • 24 | 如何优化JVM内存分配?

    所有的调优都是有目标性的,JVM内存分配调优也一样。

  • 25 | 内存持续上升,我该如何排查问题?

    工欲善其事,必先利其器。这讲介绍几种好用且常用的监控和诊断内存工具。

  • 26 | 答疑课堂:模块四热点问题解答

    这一期答疑课堂精选了11位同学的留言,干货满满,速来围观!

  • 27 | 单例模式:如何创建单一对象优化系统性能?

    无论是在开源框架,还是在我们的日常开发中,单例模式几乎无处不在。

  • 28 | 原型模式与享元模式:提升系统性能的利器

    这讲介绍两种模式的适用场景,了解了这些你就可以更高效地使用它们来提升系统性能了。

  • 29 | 如何使用设计模式优化并发编程?

    这讲介绍几种并发编程中常用的设计模式,用好它们,如虎添翼。

  • 30 | 生产者消费者模式:电商库存设计优化

    今天介绍生产者消费者模式的几种实现方式,还有其在电商库存中的应用。

  • 31 | 装饰器模式:如何优化电商系统中复杂的商品价格策略?

    装饰器模式能够实现为对象动态添加功能,还能够实现对象的动态组合。

  • 32 | 答疑课堂:模块五思考题集锦

    希望你能从作者的答案中找到新的收获。

  • 33 | MySQL调优之SQL语句:如何写出高性能SQL语句?

    从慢SQL语句的诱因出发,找到最佳调优方法,开启高性能SQL语句的大门。

  • 34 | MySQL调优之事务:高并发场景下的数据库事务调优

    在功能业务开发时,开发人员往往会为了追求开发速度,习惯使用默认的参数设置来实现业务功能,但其实这是有弊端的。

  • 35 | MySQL调优之索引:索引的失效与优化

    你有被DBA批评的经历吗?

  • 36 | 记一次线上SQL死锁事故:如何避免死锁?

    数据库发生死锁的概率并不是很大,一旦遇到了,就一定要彻查具体原因,尽快找出解决方案,老实说,过程不简单。

  • 37 | 什么时候需要分表分库?

    当业务发展比较迅速的时候,你就要评估分表分库的必要性了。

  • 38 | 电商系统表设计优化案例分析

    以电商系统中的表结构设计为例,详解在设计表时都需要考虑哪些因素。

  • 39 | 数据库参数设置优化,失之毫厘差之千里

    MySQL提供了很多可配置参数,利用好它们就可以根据应用和服务器硬件来做定制化数据库服务了。

  • 40 | 答疑课堂:MySQL中InnoDB的知识点串讲

    InnoDB存储引擎作为最常用的存储引擎之一,充分熟悉它的的实现和运行原理,有助于我们更好地创建和维护数据库表。

  • 41 | 如何设计更优的分布式锁?

    从性能和可靠性来说,你知道分布式锁的哪种实现方式更好吗?

  • 42 | 电商系统的分布式事务调优

    论微服务下,分布式事务的重要性。

  • 43 | 如何使用缓存优化系统性能?

    从前端到服务端,系统讲解各个层级的缓存实现,分析各类缓存的优缺点以及应用场景。

  • 44 | 记一次双十一抢购性能瓶颈调优

    每年的双十一都是很多研发部门最头痛的节日,期待这一讲的内容能给你更多的启发。

  • 结束语 | 栉风沐雨,砥砺前行!

    专栏虽已完结,但更新优化不止,你有什么建议或意见想和我说说吗?

  • 期末测试 | 有关Java性能调优,你掌握了多少呢?

    等你来挑战!

你将获得

  • 深入理解Java底层源码;
  • 活学活用5大主流场景;
  • 实战出发解决常见问题;
  • 学完就用的调优方法论。

讲师介绍

刘超,现任金山软件西山居(国内最早的游戏开发工作室)技术经理,主导游戏支付系统的研发工作,2018 年开始带领技术团队转型微服务架构。曾就职于魅族、平安银行等公司,负责过电商、物流、支付系统的搭建工作,主攻后端架构研发,在高并发业务系统方面,具有丰富的实战经验。

课程介绍

Java 性能调优对于每一个奋战在开发一线的技术人来说,都是老生常谈的问题了。特别当“糙快猛”的开发模式大行其道时,随着系统访问量的增加、代码的臃肿,各种性能问题便会层出不穷。比如,下面这些典型的性能问题,你肯定或多或少都遇到过:

  • 在进行性能测试时,接口响应时间长,吞吐量低;
  • 在高并发下,JVM 中 Full GC 异常,JVM 堆内存溢出;
  • 由于业务增长迅猛,大量读写操作单表单库,造成数据库死锁。

日渐复杂的系统,错综复杂的性能调优,都对Java工程师的技术广度和技术深度提出了更高的要求。那么怎样才能做好性能调优呢?

在作者看来,Java 性能调优和学一门编程语言不同,前者无法通过直线式的思维来掌握和应用。他认为,扎实的计算机基础,透过源码看技术本质的良好习惯,善于追问和总结才是做好性能调优的大前提。

因此,在这个专栏里,他将结合自己多年的从业经验,从 Java 应用服务的每一层优化实战出发,精选高频性能问题,透过 Java 底层源码,提炼出优化思路和它背后的实现原理,最后形成一套“学完就能用的调优方法论”,帮助你快速进阶。

具体内容上,专栏共分为七大模块。

模块一,概述。这个模块将为你建立两个标准。一个是性能调优标准,另一个是调优过程标准,为性能调优实战做好准备。

模块二,Java 编程性能调优。这个模块将从基础的数据类型讲起,涉及容器在实际应用场景中的调优,还有现在互联网系统架构中比较重要的网络通信调优。

模块三,多线程性能调优。如何做锁优化?如何优化多线程上下文切换?如何用协程来优化多线程业务?这些问题都会在这个模块重点讲解。

模块四,JVM 性能监测及调优。Java 应用程序是运行在 JVM 之上的,对 JVM 进行调优可以提升系统性能。这个模块将重点讲解 Java 对象的创建和回收、内存分配等问题。

模块五,设计模式调优。设计模式可以优化架构设计,这个模块将结合一些复杂的应用场景,解析设计优化案例。

模块六,数据库性能调优。数据库最容易成为整个系统的性能瓶颈,这个模块会重点解析一些数据库的常用调优方法。

模块七,实战演练场。这个模块将带你进入综合性能问题高频出现的应用场景,综合应用前面六大模块的内容,学习整体调优方法。

课程目录

特别放送

订阅须知