Spring Annotations

0.前言

转载自:https://github.com/Snailclimb/JavaGuide

可以毫不夸张地说,这篇文章介绍的 Spring/SpringBoot 常用注解基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个注解我都说了具体用法,掌握搞懂,使用 SpringBoot 来开发项目基本没啥大问题了!

JVM系列5 执行子系统

字节码执行引擎

概述

执行引擎是Java虚拟机非常最核心的部分,对于物理级的执行引擎是直接建立在处理器、硬件、指令集合操作系统层面,而虚拟机执行引擎则是由自行定制的指令集与执行引擎的结构体系。执行引擎在执行Java会有解释执行(通过解释器)和编译执行(通过JIT生成的本地代码)两种选择,对于Android ART又多了一种提前编译器(AOT)。

JVM系列4 类的加载

一、概述

本文主要讲述虚拟机如何把 Class文件加载到内存的过程。校验、转换解析和初始化,最终形成可被虚拟机使用的Java类型,这就是虚拟机的类加载机制。类型的加载、连接和初始化都是在程序运行期间完成,这样做的优劣势,如下:

  • 优势:提高Java程序的灵活性,Java动态扩展的语言特性就是依赖运行期动态加载和动态连接。当面向接口的应用程序,可以等到运行时指定实现类;可以通过类加载器,让程序运行时加载一个二进制流作为程序一部分。
  • 劣势:增加类加载的性能开销。

JVM系列3 字节码指令

介绍java虚拟机的指令功能,至少能阅读java代码生成的字节码指令含义

一、概述

Java虚拟机采用基于栈的架构,其指令由操作码和操作数组成。

  • 操作码:一个字节长度(0~255),意味着指令集的操作码个数不能操作256条。
  • 操作数:一条指令可以有零或者多个操作数,且操作数可以是1个或者多个字节。编译后的代码没有采用操作数长度对齐方式,比如16位无符号整数需使用两个字节储存(假设为byte1和byte2),那么真实值是 (byte1 << 8) | byte2