概述
Java性能优化个人觉得是Java进阶的必经之路。很多Java工程师对于执行代码后,底层运行的Java虚拟机可能一知半解。Java相比C/C++最大的区别是,少了内存管理。让工程师可以专注于应用主体逻辑,而不用去管理内存的使用,但这是一把双刃剑,如果让程序达到最佳的性能,是Java性能优化的初衷。
性能调优
关于Java性能调优或者是关于性能调优,有诸多的影响因素,JVM只占了整体性能的一小部分。不单单是Java虚拟机本身,还有数据库连接,网络开销等等。我们今天就专注于应用本身。
更好的算法
了解数据结构和算法的人,是非常清楚一个好的算法和一个差的算法的差距是多么大。对于应用编码本身也是一样。好方法的封装,往往可以节省更多的内存空间和时间,并且对于异常处理很到位,而不是像刚接触编程语言的小白,目的是一股脑先实现具体的功能。对于应用的编码要具有工匠精神,保证可读性的基础上去追求更好的性能。
更少的代码
同样的一个功能,更少的代码的小程序会比大程序的运行速度要快,需要编译的代码越多,等待程序启动所耗费的时间就越长,要创建和销毁的对象越多,垃圾收集的工作量就越大;要分配和持有的对象越多,GC的周期就越长;要从磁盘装载进JVM的类越多,程序启动所花费的时间就越长;要执行的代码越多,机器硬件缓存的效率就越低;而执行的代码越多,花费的时间就越长。
同样的,当引入的小功能,造成性能的小衰减,但是当应用越来越大时,累计的小衰减,会积少成多造成应用性能的显著下降。
过早优化
原话是“我们不应该把大量时间都耗费在那些小的性能改进上;过早考虑优化是所有噩梦的根源”,在应用的功能初期就需要编写可读性高,结构清晰的代码。这里所指的过早优化,并不包括避免那些已经知道对性能不好的代码结构。每行代码,如果有两种简单、直接的编程方式,那就应该选择性能更好的那种。
性能优化原则
借助性能分析来优化代码,重点关注性能分析中最耗时的操作。然而请注意,这并不意味着只看性能分析中的叶子方法,
利用奥卡姆剃刀原则诊断性能问题。性能问题最可能的原因应该是最容易解释的:新代码比机器配置更可能引入性能问题,而机器配置比JVM或者操作系统的bug更容易引入性能问题。
为应用中最常用的操作编写简单算法。以估算数学公式的程序为例,用户可以决定他所期望的最大容许误差为10%或1%。如果10%的误差适合多数用户,那么优化代码就意味着即便误差范围缩小为1%,但是速度变慢了
**最近小编刷到这份高效存储让项目性能起飞的性能优化的资源库,包含Redis,MongoDB,Mysql性能优化,解决你在项目开发过程中的困惑以及面试时的焦虑。
第一份笔记:MySQL高级调优笔记
关于这份性能优化的资源库,我只能在文章中展示部分的章节内容和核心截图

第一部分 : MySQL 常用对象
Linux系统安装
MySQL
素引
视图
存储过程和函数
触发器


第二部分 : MySQL体系结构,存储引擎及SQL优化
Mysq的体系结构概览
存储引擎
优化SQL步骤
索引的使用
SQL优化


第三部分 : MySQL缓存,参数调整及锁
应用优化
Mysq|中查询缓存优化
Mysq|内存管理及优化
Mysq|并发参数调整
Mysq|锁问题
常用SQL技巧


第四部分 : MySQL 常用工具、主从复制及综合案例
Mysql中常用工具
Mysql日志
Mysq|复制
综合案例


第二份笔记:Redis:核心原理和应用实战


基础部分
Redis基础数据结构
容器型数据结构的通用规则

应用部分
分布式锁
延时队列
位图
布隆过滤器
简单限流
漏斗限流

原理部分
线程 IO模型
通信协议
持久化
管道
事务
PubSub
小对象压缩
主从同步

集群部分
Sentinel
Codis
Cluster

拓展部分
Stream
Info 指令
再谈分布式锁
过期策略
LRU
懒惰删除
优雅地使用 Jedis
保护 Redis
Redis 安全通信

源码部分
** 「字符串」内部结构**
** 「字典」内部**
「压缩列表」内部
「快速列表」内部
「跳跃列表」内部结构
「紧凑列表」内部
** 「基数树」内部**

第三份笔记:MongoDB入门到熟练笔记
MongoDB快速上手
MongoDB相关概念
单机部署
基本常用命令,查看当前正在使用的数据库命令
索引
文章评论实战案例

MongoDB-集群安全
副本集-Replica Sets
分片集群Sharded Cluster
安全认证

文章探讨了Java性能优化的重要性,强调了算法优化和减少代码量对提升性能的影响。同时,提到了数据库如MySQL、Redis和MongoDB的性能调优,包括索引使用、内存管理和复制策略等。

被折叠的 条评论
为什么被折叠?



