从根儿上理解 MySQL - 缓冲池 & log Buffer Pool MySQL 在获取数据时, 是以页为单位. 每次读取一个页的数据放在内存中, 内存的哪里, 其实就是 Buffer Pool.我们对页的所有处理都是在内存中处理, 至于刷盘时机, 在后续讲解中 Buffer Pool 是 MySQL 启动是申请的一块连续内存, 默认 128M, 最小为 5M free链表 free 链表是把所有空闲的缓存页对应的控制块作为一个节点放到一 2020-01-29 中间件 > MySql #MySql
从根儿上理解 MySQL - 页总结 页结构 由于 MySQL 的真实数据是存储在磁盘, 因此在读写数据是会涉及磁盘 IO, 为了更高效率的读取, MySQL 设计页结构, 每次交互以页为单位读取到内存. 页的大小一般为 16KB 一个数据页可以被大致划分为7个部分 File Header,表示页的一些通用信息,占固定的38字节。Page Header,表示数据页专有的一些信息,占固定的56个字节。Infimum + Supremum 2020-01-28 中间件 > MySql #MySql
@MapperScan和@Mapper的坑 今天和大佬一起解决个问题. @Autowired 注入的对象和预期不一致. 结果是因为 Mybatis 扫描的问题 @Mapper 此注解是 Mybatis 自动配置时, 默认扫描的注解类 MybatisAutoConfiguration.AutoConfiguredMapperScannerRegistrar#registerBeanDefinitions1234567891011121 2020-01-02 源码 > MyBatis #MyBatis
Spring事务部分源码解析(四) - TransactionSynchronization注册 通过之前的文章我们已经知道对于一个事务执行多个业务,是通过实现TransactionSynchronization,当提交和回滚是回调完成.那么什么来注册TransactionSynchronization呢 TransactionSynchronizationManager 我们需要看一下registerSynchronization()方法的调用方,我们通过调用就可以知道第三方厂商实现调用 2019-09-18 源码 > Spring #源码 #Spring
Spring事务部分源码解析(三) - TransactionSynchronization 接下来阅读触发时间相关源码 AbstractPlatformTransactionManager 可以看到触发事件有四个. commit前后,completion前后,我们看下方代码比较直观 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545 2019-09-17 源码 > Spring #源码 #Spring
Spring事务部分源码解析(二) - 事务管理器 按照上篇流程详解 获取方法的Transaction配置 按照上篇对于几个实体类的描述,可以发现注解@Transactional的属性的字段和TransactionDefinition大致比较相似,但又不完全一致. 从@Transactional开始讲起 这个显然很常见,就是我们平时需要事务时用到的注解.可是spring如何去解析?我们看一下使用到这个注解的地方,排除掉在test和comm 2019-09-16 源码 > Spring #源码 #Spring
Spring事务部分源码解析(一) 方便谈扩展,项目引用Jdbc和RabbitMQ源码版本spring 4.3.x 从TransactionInterceptor开始继承关系 方法总览 从方法可以看出,我们关注点放在invoke()即可 invoke方法 图中可以看出具体实现是调用父类TransactionAspectSupport的方法 TransactionAspectSupport继承图 子类(可以发现子类不用多说 2019-09-15 源码 > Spring #源码 #Spring
HashMap源码分析 此源码分析JDK版本为1.7,只是简单分析,算是个人看源码的一点小总结,随意性比较强,专业的还需百度。先简单介绍一下HashMap,HashMap数据结构为数组加链表,时间复杂度为O(1)(最理想状态下)。HashMap源码中,需要推敲的代码非常的多,个人觉得比ArrayList、LinkedList等要有营养很多。个人觉得HashMap最主要关注的几个点:1.put()方法,2.hash()方法 2018-04-04 源码 > jdk #源码 #jdk
LinkedList源码分析 此源码分析JDK版本为1.7,只是简单分析,算是个人看源码的一点小总结,随意性比较强,专业的还需百度。先简单介绍一下LinkedList,LinkedList为直线型的链表结构,时间复杂度为O(n)。ArrayList内部存储为数组,LinkedList内部存储为节点Node。以下所有表达LinkedList的内容统称为链表。#简介 123public class LinkedList<E& 2018-04-03 源码 > jdk #源码 #jdk
ArrayList源码分析 此源码分析JDK版本为1.7,只是简单分析,算是个人看源码的一点小总结,随意性比较强,专业的还需百度。先简单介绍一下ArrayList,ArrayList为线性数据结构,时间复杂度为O(1),内部存储为数组。以下所有表达ArrayList的内容统称为数组。ps:ArrayList和Vector的区别就是ArrayList是线程不安全的,Vector是线程安全的。Vector底层核心方法都为sync 2018-01-16 源码 > jdk #源码 #jdk