性能优化
文章平均质量分 79
Survivor001
这个作者很懒,什么都没留下…
展开
-
API性能监控 【ApiHelp】-- 组件Monitor 核心功能实现
该方法会记录当前方法中该http请求时间。methodException方法:该方法用于记录方法异常处理,因为方法结束处理正常结束,也有可能是抛出了异常,在Enhance组件中我们已经对入口方法进行了异常捕获操作,当该方法被调用时,旧意味着当前请求抛出了异常,也意味着请求调用结束。before方法:用于记录请求进入API是日志信息,在记录日志之前,会优先判断当前请求是否为新请求,如果为新请求则先清除缓存,在进行日志记录,同时记录当前方法的入口方法名称,以及请求线程到缓存中。当请求结束,则进行日志写处理。原创 2023-06-20 09:25:22 · 336 阅读 · 0 评论 -
API性能监控 【ApiHelp】-- 组件Monitor核心功能设计
Java Agent实现性能监控程序原创 2022-10-27 14:17:35 · 766 阅读 · 1 评论 -
API性能监控 【ApiHelp】-- 组件Enhance 代码实现 ~ ASM字节码增强
ApiHelp工具 Enhance组件核心代码实现,通过ASM框Tree Api 进行字节码实现各种增强设计和代码实现工作。原创 2022-10-19 16:34:02 · 430 阅读 · 0 评论 -
API性能监控 【ApiHelp】-- 组件Enhance 核心功能设计
自主研发工具 【ApiHelp】-- 组件Enhance 核心功能设计 -- API性能监控核心设计原创 2022-10-17 17:47:32 · 346 阅读 · 0 评论 -
API性能监控 【ApiHelp】-- 架构设计 和 技术方案
【ApiHelp】-- 架构设计 和 技术方案原创 2022-10-12 17:46:16 · 461 阅读 · 0 评论 -
API性能监控 【ApiHelp】-- 自主研发API性能监控工具-介绍
自主研发开发环境 API性能监控分析工具,配合辅助API性能优化工作原创 2022-10-12 15:47:17 · 789 阅读 · 0 评论 -
【Mysql】 InnoDB引擎深入- 内存结构之ChangeBuffer | Log Buffer
ChangeBufferChangeBuffer是InsertBuffer 的升级版本,InsertBuffer主要是针对insert 操作进行缓存,而ChangeBuffer是针对 insert、update、delete 操作都进行缓存。ChangeBuffer是InnoDB引擎中比较关键的特性功能。它是一种特数据的数据结构。通过之前的学习,我们知道,当DML数据时,并不是直接去写入磁盘,而是先判断再缓冲池中判断是否有该页,如果有则直接修改(后续通过checkpoint刷新到磁盘中)。如果缓冲池中不存在原创 2022-06-24 16:56:22 · 273 阅读 · 0 评论 -
【Mysql】 InnoDB引擎深入- 内存结构之Buffer Pool缓冲池
缓冲池是InnoDB内存结构中比较重要的结构,主要目的就是解决CPU速度与磁盘速度之间的鸿沟,从而提高整体的性能。缓冲池其实就是一块内存区域,在数据库进行数据读取时,会将从磁盘读取到的数据页缓存到缓冲池中,下一次再读取到相同的页时,首先就先判断缓冲池中是否有命中的缓存页,如果有就直接读取,没有再去磁盘读取。所以缓存页的命中率也是优化的一个手段。 当数据发生改变时,首先会修改缓存池中的页,然后通过Master Thread线程以一定的频率刷新到磁盘中,需要注意的是,并不是修改了一个页就会刷新到磁盘中,这里需原创 2022-06-24 16:52:26 · 358 阅读 · 0 评论 -
【Mysql】 InnoDB引擎深入- InnoDB后台线程
下图是简单的一个InnoDB体系架构图,InnoDB存储引擎有多个内存快组成的内存池,负责如下工作:维护所有进程|线程需要访问的多个内部数据结构。缓存磁盘上的数据,方便快速的读取,同时在对磁盘文件的数据进行修改之前在这里进行缓存。重做日志..... 后台线程的主要目的就是负责刷新内存池中的数据,保证缓冲池中的缓存数据时最近的数据。此外将已经修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常情况下InnoDB能恢复到正常状态。核心线程如下:Master原创 2022-06-24 16:47:19 · 393 阅读 · 0 评论 -
【Mysql】 InnoDB引擎深入- 行溢出
知识点介绍:ascii字符集: n/1 (一个字符代表一个字节)gbk字符集: n/2utf8字符集: n/3 对于可变长度列最大存储长度为65535个字节(64kb),也就是说一行数据最大长度就是65535个字节,但是由于上面介绍过行格式中还存在其他相关信息的存储,例如null值、回滚指针的信息,所以最大长度为65535-2 个字节。 如果在ascii字符集下,也就是一行最多可以存储65532个字符; 在gbk字符集下65532/2字符; 在utf8字符集下65532/3字符; 根据数据页了解我们原创 2022-06-24 16:35:50 · 610 阅读 · 0 评论 -
【Mysql】 InnoDB引擎深入- 行格式
前面已经介绍了InnoDB的数据页结构,我们已经了解了InnoBD种数据和索引的存储结构以及页的概念。现在我们知道了数据库数据是以行存储在页种user record中的,那么现在就来了解下表的行格式。存储引擎支持四种行格式:、、 和,默认DYNAMIC表 14.9 InnoDB 行格式概述当前引擎中默认行格式为DYNAMIC(动态的),几种行格式基础格式差异不大,根据官网描述:那我们就直接看下COMPACT 行格式:我们向数据库插入一条数据,那么这条数据在磁盘上的存储格式是什么样的呢?大致介绍下相关内容:1原创 2022-06-24 16:30:23 · 357 阅读 · 0 评论 -
【Mysql】 InnoDB引擎深入- 二级索引、联合索引、回表、索引覆盖
接着上面文章内容对数据页的详细介绍以及聚集索引原理的了解【Mysql】 InnoDB引擎深入 - 数据页 | 聚集索引,有了这个知识前提,对了解二级索引、联合索引等相关内容的理解就变得非常简单了。二级索引(又名辅助索引、普通索引、非聚集索引),叶子节点不包含行记录的全部数据。叶子节点除了键值(索引建)之外,每个叶子节点中还包含了一个书签,该书签就是用来告诉引擎哪里可以找到该条记录的所有行数据,在InnoDB中该书签就是聚集索引建一般来说也就是聚集索键。 通俗来说,二级索引跟聚集索引有着一样的树原创 2022-06-24 16:19:53 · 696 阅读 · 0 评论 -
【Mysql】 InnoDB引擎深入 - 数据页 | 聚集索引
【Mysql】 InnoDB引擎深入 - 数据页 | 聚集索引原创 2022-06-24 16:12:45 · 658 阅读 · 1 评论 -
JAVA程序性能优化研究 - 集合初始化容量一定能提高效率 ?
相信大家都知道集合存在扩容机制,所以使用时进行初始化容量从而达到减少其扩容操作,来实现提高性能的目的。但是集合初始化容量后就一定能提交效率码?答案当然是否定的,不合理的使用初始化容量反而会降低性能,因为内存的不合理申请,必然会影响GC过程,都知道尤其FULL GC一定要避而远之。研究开始:先看示例:下面是一段简单的循环体代码,在循环内使用向ArrayList集合添加数据。 public static void outsideLoop() { List<String>原创 2022-05-18 18:22:09 · 342 阅读 · 0 评论 -
JAVA程序性能优化研究 - 循环内对象性能优化内容
接着上篇文章的分析的结果,在业务需求下这种循环内创建集合对象的使用,优化空间几乎没有了,因为循环内创建map对象,申请空间是避免不了的。所以没有必要将优化目标放到这了。 public static void outsideLoop() { List<Map> list = new ArrayList<>(); int i = 0; while (++i < 10000000){ Map<String原创 2022-05-18 16:35:38 · 2288 阅读 · 0 评论