摘要:
1. 回顾 上一篇我们主要讲了InnoDB的存储引擎,其中主要的一个组件就是缓存池Buffer Pool,缓存了磁盘的真实数据,然后基于缓存做增删改查操作,同时配合了后续的redo log、刷磁盘等机制和操作。如下图: 这一篇,深入该组件内部,学习一下其设计思想。 2. Buffer Pool数据结 阅读全文
摘要:
1. 架构回顾 上一篇我们讲解了MySQL的逻辑架构,重新回顾一下,用一张新的图来认识一下该架构。 整体架构分为service层与存储引擎层,请求交给连接池后,由后台线程处理,并将请求转发给SQL接口,随后交给解析器执行,如果解析器发现命中缓存,直接从缓存读数据返回,如果没有,依次往下执行,直到从存 阅读全文
摘要:
1. 背景 刚入行时,大部分Java工程师对MySQL停留在一个黑盒的认识,包括我自己。最近一段时间,这几年通过项目实践与不断反思,对MySQL的新认知提升到一个新层次,供大家分享。 下图是初始阶段的认识,就是对数据库建库、建表、建索引,然后执行增删改查操作。 2. 数据库驱动 大家都知道,我们如果 阅读全文
摘要:
1. 背景 首先抛出一个问题,如果在一台机器上,数据库是如何解决事务问题的?很容易想到,数据库的ACID四个特性来保证的,原子性、一致性、隔离性和持久性。 原子性(Atomicity):一个事务内的所有操作看成一个原子操作,要么全部执行,要么都不执行。 一致性(Consistency): 指在事务开 阅读全文
摘要:
1.概述 目前我们知道,spring创建bean有多种方式,比如xml方式创建,比如@Component,@Service,@Controler,@Repository注解创建,比如@Autowired依赖注入创建,后续还有通过springboot方式的配置注解@Configuration与@Bea 阅读全文
摘要:
##1. 前言 越是简单的东西,在深入了解后发现越复杂。想起了曾在初中阶段,语文老师给我们解说《论语》的道理,顺便给我们提了一句,说老子的无为思想比较消极,学生时代不要太关注。现在有了一定的生活阅历,再来看老子的《道德经》,发现那才是大智慧,《论语》属于儒家是讲人与人的关系,《道德经》属于道家讲人与 阅读全文
摘要:
1. 概述 Java 内存模型即 Java Memory Model,简称 JMM。从抽象的角度来看,JMM 定义了线程和主内存之间的抽象关系,线程之间的共享变量存储在主内存中,每个线程都有一个私有的工作内存,工作内存中存储了该线程以读/写共享变量的副本。工作内存是 JMM 的一个抽象概念,并不真实 阅读全文
摘要:
1. 概述 缓存与数据库的强一致性,也称线性一致性,核心要求是:数据库中的值发生变更,缓存数据要实现同步复制,并且一旦操作完成,随后任意客户端的查询都必须返回这一新值。以下图为例,一旦写入b完成,必须保证读到;而写入过程中,认为值的跳变可能发生在某一瞬间,因此读到a或b都是可能的。数据库与缓存作为一 阅读全文
摘要:
1. 概述 缓存设计是应用系统设计中重要的一环,是通过空间换取时间的一种策略,达到高性能访问数据的目的;但是缓存的数据并不是时刻存在内存中,当数据发生变化时,如何与数据库中的数据保持一致,以满足业务系统要求,本篇将给出具体分析。 2. 强一致与最终一致性 所谓强一致,就是指系统在对外提供服务的过程中 阅读全文
摘要:
以“冬奥之光,多彩冰灯”为主题的第四十一届全国专业冰雕比赛在冰城哈尔滨市进入第二天,60名冰雕高手在哈尔滨冰灯艺术游园会园区展开激烈的竞技比拼。 冰雕艺术 1. 概述 Bean的销毁是Bean的生命周期中最后一步,比如在Tomcat等容器关闭的时候会调用Bean的销毁方法,下面逐步分析。 2. 源码 阅读全文