摘要: 磁盘 I/O 性能指标 性能工具 从 I/O 角度来分析,最开始的分析思路基本上类似,都是: 先用 iostat 发现磁盘 I/O 性能瓶颈; 再借助 pidstat ,定位出导致瓶颈的进程; 随后分析进程的 I/O 行为; 最后,结合应用程序的原理,分析这些 I/O 的来源。 阅读全文
posted @ 2022-01-31 10:02 hochan_100 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 回顾本例springmvc-config.xml的配置: <context:component-scan base-package="com.spring"/> <mvc:annotation-driven /> component-scan:扫描指定包下被@Component,@Service,@ 阅读全文
posted @ 2021-08-16 14:57 hochan_100 阅读(342) 评论(0) 推荐(0) 编辑
摘要: DispatcherServlet的类继承图。 DispatcherServlet是一个Servlet,那么它就遵循Servlet的生命周期。如上图所示,DispatcherServlet还实现了Spring IOC的Aware接口,了解Aware接口的人都知道,Spring在创建对象的时候,会自动 阅读全文
posted @ 2021-08-16 14:19 hochan_100 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 同 CPU、内存一样,磁盘和文件系统的管理,也是操作系统最核心的功能。 磁盘为系统提供了最基本的持久化存储。 文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构。 那么,磁盘和文件系统是怎么工作的呢?又有哪些指标可以衡量它们的性能呢? 索引节点和目录项 文件系统,本身是对存储设备上的文件,进 阅读全文
posted @ 2021-08-13 14:43 hochan_100 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 在Mybatis中,执行insert操作时,如果我们希望返回数据库生成的自增主键值,那么就需要使用到KeyGenerator对象。 需要注意的是,KeyGenerator的作用,是返回数据库生成的自增主键值,而不是生成数据库的自增主键值。返回的主键值放到哪儿呢?放到parameter object的 阅读全文
posted @ 2021-08-12 17:08 hochan_100 阅读(636) 评论(0) 推荐(0) 编辑
摘要: Mybatis中的TypeHandler有两个功能: 一个是完成javaType至jdbcType的转换, 另外一个是完成jdbcType至javaType的转换。 public interface TypeHandler<T> { void setParameter(PreparedStateme 阅读全文
posted @ 2021-08-12 16:36 hochan_100 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 内存性能指标 为了分析内存的性能瓶颈,首先你要知道,怎样衡量内存的性能,也就是性能指标问题。 首先,你最容易想到的是系统内存使用情况,比如已用内存、剩余内存、共享内存、可用内存、缓存和缓冲区的用量等。 已用内存和剩余内存很容易理解,就是已经使用和还未使用的内存。 共享内存是通过 tmpfs 实现的, 阅读全文
posted @ 2021-08-12 15:38 hochan_100 阅读(134) 评论(0) 推荐(0) 编辑
摘要: 在内存资源紧张时,Linux 通过直接内存回收和定期扫描的方式,来释放文件页和匿名页,以便把内存分配给更需要的进程使用。 文件页的回收比较容易理解,直接清空缓存,或者把脏数据写回磁盘后,再释放缓存就可以了。 而对不常访问的匿名页,则需要通过 Swap 换出到磁盘中,这样在下次访问的时候,再次从磁盘换 阅读全文
posted @ 2021-08-12 15:01 hochan_100 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 系统的内存资源紧张时,系统又会如何应对呢? 这其实会导致两种可能结果,内存回收和 OOM 杀死进程。 我们这里重点看第一个可能的结果,内存回收,也就是系统释放掉可以回收的内存,比如我前面讲过的缓存和缓冲区,就属于可回收内存。它们在内存管理中,通常被叫做文件页(File-backed Page)。 文 阅读全文
posted @ 2021-08-12 09:54 hochan_100 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 1. Properties variables的作用 通常,我们会单独配置jdbc.properties文件,保存于variables变量中,而Xml文件内可以使用${driver}占位符,读取时可动态替换占位符的值。 2. 扫描package <typeAliases> <typeAlias al 阅读全文
posted @ 2021-08-11 18:19 hochan_100 阅读(54) 评论(0) 推荐(0) 编辑