MySQL架构学习回顾

逻辑架构

了解MySQL的架构有助于深入理解MySQL服务器,下图是MySQL的三层逻辑架构图(图片来自于网络)。
image

第一层用于对客户端的连接处理、安全认证、授权等。每个客户端连接都会在服务端拥有一个线程,每个连接发起的查询都会在对应的单独线程中执行。

第二层包含了MySQL的核心服务功能,包括查询解析、分析、查询缓存、内置函数、存储过程、触发器、视图等。当客户端发起请求时,如果是SELECT操作,MySQL会先检查是否命中查询缓存,命中则直接返回查询缓存中的数据;否则,MySQL会解析查询并创建对应的内部数据结构(解析树),执行各种优化,然后执行。

第三层包含了存储引擎,存储引擎负责数据的存储和提取。MySQL中有很多种不同类型的存储引擎,每个存储引擎各不相同,MySQL服务器通过API与存储引擎通信,屏蔽了各种存储引擎之间的差异。

TCP/IP协议理解

什么是TCP/IP模型?

TCP/IP模型是一系列网络协议的总称,这些协议的目的,就是使计算机之间可以进行信息交换。
所谓”协议”可以理解成机器之间交谈的语言,每一种协议都有自己的目的。TCP/IP模型一共包括几百种协议,对互联网上交换信息的各个方面都做了规定。

TCP存在之于”互联网“的意义有三点: - 让数据进行”可靠“,”高效“,”安全“的传输

transient关键字

transient关键字是开发中用的比较少的一个关键字,它在序列化和反序列化中比较重要,通常面试时会考察它的作用和它的使用场景,还有它在什么情况下会失效。

1、集合框架概览

集合解决的问题

在编程中,需要管理很多对象集,因为任何数据必不可少的就是该数据是如何存储的。比如某班全部同学,某个公司所有人员资料等。

要管理这些对象的存储,java必须提供某种数据结构支持。
由于时间、空间、安全的考虑,有各种不同的实现。比如ArrayList、Vector、HashMap、LinkedList、TreeMap、HashSet等多种实现。

为了屏蔽实现差异,java提供了一个Collection(集合)接口,规定必须实现一些公用的方法。

比如 add、remove、size等等这样,不管底层如何实现,我都知道他们至少拥有上面方法。

一句话java集合就是提供一组通用接口的,以一定的方式组织、存储数据、管理数据的数据结构实现。

对于集合,我认为关注的点主要有四点:

  1. 是否允许空
  2. 是否允许重复数据
  3. 是否有序,有序的意思是读取数据的顺序和存放数据的顺序是否一致
  4. 是否线程安全

根据数据结构这一课程定义的ADT 抽象数据类型结构,其实Java中集合的数据结构类型也可以做为类比学习。

1
2
3
4
5
ADT 集合抽象数据类型名 {
数据对象: <数据对象的定义>
数据关系: <数据关系的定义>
基本操作: <基本操作的定义>
}

结构

集合框架总览

集合框架总览

Collection接口

Collection接口

List接口

List接口

Set接口

Set接口

Map接口

Map接口

集合遍历

迭代器Iterator

多线程安全

concurrent包下的并发集合工具、Collections下的包装方法。

操作集合的工具

Arrays、Collections

问题

快速迭代失败

参考文档

源码专题:http://blog.csdn.net/column/details/collection.html