先给大家讲个故事吧。多年前我加入了一家大型互联网公司,刚进入就以 996 标准,参与新品研发。公司业务发展急需互联网产品,因此我们的时间很紧张,4 个月新产品就上线了。

开始还算顺利,但不久后的一天晚上,系统突然就瘫痪了,重启之后,问题仍然无规律地重现。当时运维同事马上写了一个重启脚本,定时排队重启各个服务,但也只能做到“治标不治本”。

作为主力开发,我和公司的系统架构师一起排查问题。架构师轻车熟路地通过各种 Linux 命令在线上环境查看性能指标,也 dump 出日志文件,走查代码,最后定位到了问题,后面就是分析原因、制定解决方案、更新版本等一系列操作。那是我第一次深刻感受到性能调优的重要性。

这就是我和大佬的差距吗?看看别人是怎么做性能调优的_性能调优

后来的几年里,我又陆续参与过物流、电商、游戏支付系统的研发,这些项目都存在一个共性,就是经常会运营一些大促以及抢购类活动。活动期间,系统不仅要保证处理请求业务的严谨性,还要历经短时间内高并发的考验。我也一直处于性能调优的一线。

正所谓“实践出真知“。这些年在生产环境中遇到的事故不少,很多坑一点点踩平,就走出了一条路,这个过程中我收获了很多实打实的经验,希望能分享给更多的人,我们一起学习、交流和探讨。

关于性能调优,我先来说说的我的感受。Java 性能调优不像是学一门编程语言,无法通过直线式的思维来掌握和应用,它对于工程师的技术广度和深度都有着较高的要求。

互联网时代,一个简单的系统就囊括了应用程序、数据库、容器、操作系统、网络等技术,线上一旦出现性能问题,就可能要你协调多方面组件去进行优化,这就是技术广度;而很多性能问题呢,又隐藏得很深,可能因为一个小小的代码,也可能因为线程池的类型选择错误…可归根结底考验的还是我们对这项技术的了解程度,这就是技术深度。

显然,性能调优不是一件容易的事。但有没有什么方法能把这件事情做好呢?接下来跟你分享几点我的心得。

本次分享总共分为六个点,小册内容从如何制定性能调优与策略开始,把 Java 编程、多线程、JVM、设计模式、数据库等几个方面的性能优化细节陈述得清清楚楚,​​有需要可以点击这里下载完整版文档​​:

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

这就是我和大佬的差距吗?看看别人是怎么做性能调优的_java_02

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

这就是我和大佬的差距吗?看看别人是怎么做性能调优的_数据库_03

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

这就是我和大佬的差距吗?看看别人是怎么做性能调优的_性能优化_04

04 | 慎重使用正则表达式

这就是我和大佬的差距吗?看看别人是怎么做性能调优的_重启_05

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

这就是我和大佬的差距吗?看看别人是怎么做性能调优的_性能调优_06

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

这就是我和大佬的差距吗?看看别人是怎么做性能调优的_数据库_07

本次分享总共分为六个点,小册内容从如何制定性能调优与策略开始,把 Java 编程、多线程、JVM、设计模式、数据库等几个方面的性能优化细节陈述得清清楚楚,​​有需要可以点击这里下载完整版文档​​。