GitHub标星86k+的Redis/MongoDB/Mysql性能优化宝典,令人叹服

本文探讨了Java性能优化的重要性,指出良好的算法和简洁的代码对于提升应用性能的关键作用。同时,强调不应过早优化,而应关注代码的可读性和结构。文章还提到了MySQL的调优,包括索引、存储过程、内存管理和并发参数的调整。此外,还涵盖了Redis的基础数据结构、分布式锁等应用场景和MongoDB的常用操作及集群安全。
摘要由CSDN通过智能技术生成

概述

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
  • 安全认证

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值