个人简介

Echo Blog


江湖无名 安心练剑
  • Java Immutable-Java 设计模式之不可变对象
    不可变对象 定义 如果某个对象在被创建后其状态就不能被修改,那么这个对象就称为不可变对象。 线程安全 线程安全性是不可变对象的固有属性之一,它们的不变性条件是由构造函数创建的,只要它们的状态不改变,那么这些不变性条件就能得以维持。 不可变对象一定是线程安全的。 当满足以下条件时,对象才是不可变的: 1) 对象创建以后其状态就不能修改。 2) 对象的所有域都是 final 类型...
    2018-10-08 09:55:28 | Pattern
  • Java 线程安全之 ThreadLocal 详解及源码分析
    ThreadLocal 典型的使用场景 典型使用场景: 每个线程都有一个独享的对象 通常是工具类 典型需要使用的类simpleDateFormat和Random每个thread内有自己的实例副本不共享 教材只有一本 每个人都抢着看 那么这终究会有线程安全问题 模拟场景 1000个线程都需要去打印日期 simpleDateForma...
    2018-10-08 09:55:28 | Java
  • JVM-13-runtime optimize 运行时期优化
    概述 JIT 即时编译器(JIT=just in time compiler)定义:为了提高热点代码的执行效率,在运行时,虚拟机将把这些代码编译成与 本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译器称为即时编译器; 事实上,现在许多主流的商用虚拟机,都同时包含有解释器与编译器,解释器与编译器两者各有优势。与解释器相比,编译器会将常运行到的代码编译成本地代码区实现,可以获...
    2018-10-08 08:04:16 | JVM
  • JVM-13-compile optimize 编译时期优化
    JVM编译器优化 JVM的编译器可以分为三个编译器: 1、前端编译器:把.java转变为.class的过程。如Sun的Javac、Eclipse JDT中的增量式编译器(ECJ)。 2、JIT编译器:把字节码转变为机器码的过程,如HotSpot VM的C1、C2编译器。 3、AOT编译器:静态提前编译器,直接将*.java文件编译本地机器代码的过程。 Javac编译器 Javac...
    2018-10-08 08:04:16 | JVM
  • JVM-12-远程执行代码
    整体思路 如果远程系统需要执行一段代码,但是我们现在又没有入口。 可以通过这种方式。 实际上对于日志信息,可能某个调用信息没有打印,也可以通过这个方式。 代码实现 核心代码 ByteUtils.java package org.jvm; /** * Bytes数组处理工具 */ public class ByteUtils { public static int ...
    2018-10-08 08:04:16 | JVM
  • JVM-11-字节码类加载实战
    类加载 OSGI 学习类加载机制 jboss 源码学习 JEE 标准 Tomcat 学习经典的类加载机制 动态字节码 以前使用 spring aop 最多使用的就是动态代理和动态字节码。 CBLIB AMS 不同 jdk 版本之间的转换 Retrotranslator 可以将 1.5 版本的 jdk 转换为以前的 jdk 版本。 参考资料 《深入理解 jvm》 ...
    2018-10-08 08:04:16 | JVM
  • JVM-10-虚拟机字节码执行引擎
    Java虚拟机的执行引擎 输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。 本章主要是从概念模型的角度讲解虚拟机的方法调用和字节码执行。 帧栈 帧栈是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。 每一个帧栈中都包括以下信息:局部变量表(Local Varable Table)、操作数栈(Operand Stack...
    2018-10-08 08:04:16 | JVM
  • JVM-09-classloader 类加载
    ClassLoader 官方概念,看一下即可。 类定义 public abstract class ClassLoader extends Object 概念 类装入器是负责装入类的对象。类类装入器是一个抽象类。给定类的二进制名称,类装入器应该尝试定位或生成构成类定义的数据。 典型的策略是将名称转换为文件名,然后从文件系统中读取该名称的“类文件”。 每个类对象都包含对定义它的...
    2018-10-08 08:04:16 | JVM