最近跟一些粉丝交流,发现很多程序员对一些基础问题只停留在“听说过”或者“使用过”,没有深入到技术细节里。很多现成的技术非常容易上手,会让我们产生自己很“厉害”的错觉,但是却忽略了其底层原理。这个其实是很危险的,技术的高低和掌握程度决定了我们的工资以及是否会被公司“优化”。
在我的上一家公司,系统研发部门曾经来了一位前阿里的大神。
为什么叫他大神?因为他来公司一年,只做了一件事情——性能调优:把公司服务器的数量缩减到了原来的一半,结果系统的性能指标,反而还提升了很多!
一个好的系统性能调优不但给公司省钱,还能提高系统的性能。公司省了钱,老板肯定高兴,项目奖金翻倍,要知道,当时他的年薪是我的5倍还要多!
我这边分享一下大神总结的一些性能优化经验,一般是以下几个步骤:
- 目前现象;
- 提出猜想;
- 验证猜想;
- 定位到问题;
- 解决问题;
性能调优流程
同样的服务器,同样的业务代码,别人完成功能后,并发量只有500,而你是2000。老板不给你加薪,给谁加?在一线互联网公司,面试问的内容,往往也是围绕着这个展开的。
但是大家实际做性能优化中的难点是卡在哪里呢?一看技术点,好像我也懂一些,但是我怎么还是不会性能优化呢?
仔细梳理下,其实不难发现,存在以下几个问题:
第一:提不出猜想。
为什么你提不出猜想,那是因为你的知识面不广,基础知识不牢固。知识面不够,就导致针对现象,提不出问题。
第二:定位问题难;
这个的问题就是不会使用工具,我们在佐证我们的猜想时需要一些辅助工具。不会使用工具,就导致不能佐证猜想。
这两步都做不好,性能优化工作就根本无法展开了。
性能优化是一个很大的领域,对应用进行性能优化,还有前端优化、架构优化(分布式、缓存使用等)、数据存储优化、代码优化(如设计模式优化)等。怎样能够更好的掌握性能优化技能呢,在这份一份Java性能优化学习文档,从基础代码性能优化,到JVM深度调优、设计模式优化,再到数据库调优、并发编程性能优化,带你在实战中解决遇到的各种问题,不仅学技术,更要学习解决问题的思路!
本文档共分为6部分,为了不影响阅读,在这以截图形式展示目录与部分内容
第一部分:Java性能调优概述
主要包括:性能的概述、性能调优的层次、1.3 基本调优策略和手段
第二篇:设计模式调优
第三篇:Java 编程性能调优
主要包括:字符串优化处理、核心数据结构、使用NIO提升性能等等
第四篇:并发性能调优
主要包括:并行程序设计模式、JDK多任务执行框架、JDK并发数据结构、并发控制方法、 “锁”的性能和优化、无锁的并行计算、协程
第五篇:JVM 性能监测及调优
主要包括:Java虚拟机内存模型、JVM内存分配参数、垃圾收集基础、常用调优案例和方法、实用JVM参数、实战JVM调优
第六篇:Java性能调优工具
性能调优文档总目录