MySQL 事务的隔离级别的实现

多版本并发控制-MVCC

多版本并发控制(Multi-Version Concurrency Control, MVCC)以乐观锁为理论基础,和基于锁的并发控制最大的区别和优点是:读不加锁,读写不冲突

事务版本号

每次事务开启前都会从数据库获得一个自增长的事务 id,可以从事务 id 判断事务的执行先后顺序。

阅读更多

MySQL 锁

数据库锁的分类

按照锁的粒度划分:

  • 表级锁
  • 行级锁
  • 页级锁

按照锁的级别划分:

  • 共享锁
  • 排它锁

按照使用方式划分:

  • 乐观锁
  • 悲观锁

行级锁、表级锁、页级锁

1. 行级锁

行级锁是 MySQL 中锁定粒度最细的一种锁,表示只针对当前行进行加锁。行级锁分为共享锁和排他锁。

阅读更多

Java JVM 虚拟机

一、运行时数据区域

5778d113-8e13-4c53-b5bf-801e58080b97

程序计数器

记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。

阅读更多

Java IO

一、概览

Java 的 I/O 大概可以分成以下几类:

  • 磁盘操作:File
  • 字节操作:InputStream 和 OutputStream
  • 字符操作:Reader 和 Writer
  • 对象操作:Serializable
  • 网络操作:Socket
  • 新的输入/输出:NIO

二、磁盘操作

File 类可以用于表示文件和目录的信息,但是它不表示文件的内容。

阅读更多

Java 并发

一、使用线程

有三种使用线程的方法:

  • 实现 Runnable 接口;
  • 实现 Callable 接口;
  • 继承 Thread 类。

实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以理解为任务是通过线程驱动从而执行的。

实现 Runnable 接口

需要实现接口中的 run() 方法。

阅读更多

享元模式

一、前言

享元模式解决的问题是:共享对象

享元模式(FlyweightPattern)是池技术的重要实现方式

二、基本概念

1.定义

使用共享对象可有效地支持大量的细粒度的对象

阅读更多

解释器模式

一、前言

解释器模式解决的问题是:语法分析

解释器模式(InterpreterPattern)是一种按照规定语法进行解析的方案,在现在项目中使用较少.

二、基本概念

1.定义

给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。

阅读更多

Java 中只有值传递

形参&实参

方法的定义可能会用到 参数(有参的方法),参数在程序语言中分为:

  • 实参(实际参数,Arguments):用于传递给函数/方法的参数,必须有确定的值。
  • 形参(形式参数,Parameters):用于定义函数/方法,接收实参,不需要有确定的值。
1
2
3
4
5
6
7
String hello = "Hello!";
// hello 为实参
sayHello(hello);
// str 为形参
void sayHello(String str) {
System.out.println(str);
}
阅读更多

状态模式

一、前言

状态模式解决的问题是:状态变更引起行为变更

二、基本概念

1.定义

当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。

Allow an object to alter its behavior when its internal state changes.The object will appear to change its class.

阅读更多

访问者模式

一、前言

访问者模式解决的问题是:功能集中化

二、基本概念

1.定义

封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.

阅读更多