0%

概述

执行引擎是Java虚拟机核心的组成部分之一。

“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。

在《Java虚拟机规范》中制定了Java虚拟机字节码执行引擎的概念模型,这个概念模型成为各大发 行商的Java虚拟机执行引擎的统一外观(Facade)。

阅读全文 »

无关性的基石

各种不同平台的Java虚拟机,以及所有平台都统一支持的程序存储格式——字节码(Byte Code) 是构成平台无关性的基石

在Java技术发展之初,设计者们就曾经考虑过并实现了让其他语言运行在Java虚拟机之上的可能性,他们在发布规范文档的时候,也刻意把Java的规范拆分成了《Java语言规范》(The Java Language Specification)及《Java虚拟机规范》 (The Java Virtual Machine Specification)两部分。

实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java虚拟机不与包括Java语言在内的任何程序语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机 指令集、符号表以及若干其他辅助信息。

阅读全文 »

update的加锁流程

加锁规则总结

因为间隙锁在可重复读隔离级别下才有效,以下规则基于可重复读隔离级别。(RC级别下,去掉间隙锁这块逻辑就可以了)

  • 加锁的基本单位是next-key lock。next-key lock是前开后闭区间。
  • 查找过程中访问到的对象才会加锁。
  • 索引上的等值查询,给唯一索引加锁的时候,next-key lock退化为行锁。
  • 索引上的等值查询,向右遍历时且最后一个值不满足等值条件的时候,next-key lock退化为间隙锁。
  • 唯一索引上的范围查询会访问到不满足条件的第一个值为止。
阅读全文 »

CUP

多级缓存

为了解决计算机系统中主内存与 CPU 之间运行速度差问题,会在 CPU 与主内存之间添加一级或者多级高速缓冲存储器( Cache )。这个 Cache 一般是被集成到 CPU 内部的,所以也叫 CPU Cache。

阅读全文 »

CompletableFuture

从JDK 8开始,在Concurrent包中提供了一个强大的异步编程工具CompletableFuture。在JDK8之前,异步编程可以通过线程池和Future来实现,但功能还不够强大。CompletableFuture的出现,使Java的异步编程能力向前迈进了一大步。

CompletableFuture主要用处是将多个任务进行编排

阅读全文 »

写在最前面

设计模式其实并没有想象中的高大上,不必死记硬背,重点是结合自己的编码实践,思考背后的设计原则(开闭原则、单一职责原则等)。

设计模式在使用的时候,不是死板的一个一个模式套用,更多的是多个设计模式混合起来。最终的目的是写出解耦的、易扩展的、可读性好的代码。

设计模式说白了就是为某种代码的写法,提供一种通用语言,降低程序员沟通之间的成本。

阅读全文 »

七大软件架构设计原则

开闭原则

开闭原则(Open-Closed Principle,OCP)指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。

所谓开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节,可以提高软件系统的可复用性及可维护性。开闭原则是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统,例如版本更新,我们尽可能不修改源码,但是可以增加新功能。

阅读全文 »