动态代理

代理模式代理模式是一种比较好理解的设计模式。 简单来说就是:我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的能力,实现功能的增强。 生活中的代购、租房中介、售票黄牛、婚介、经纪人、快递、事务代理、非侵入式日志监听等,都是代理 模式的实际体现。 使用代理模式主要有两个目的: 一是保护目标对象 二是增强目标对象功能(比如说在目标对象的某个方法执行前后增加一些自定义的操作)

💧 Posted on Java设计动态代理

接口 vs 抽象类的区别?

在面向对象编程中,抽象类和接口是两个经常被用到的语法概念,是面向对象四大特性,以及很多设计模式、设计思想、设计原则编程实现的基础。 比如:我们可以使用接口来实现面向对象的抽象特性、多态特性和基于接口而非实现的设计原则,使用抽象类来实现面向对象的继承特性和模板设计模式等。

💧 Posted on Java接口抽象

类加载器

类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。 注意:JVM主要在程序第一次主动使用类的时候,才会去加载该类,也就是说,JVM并不是在一开始就把一个程序就所有的类都加载到内存中,而是到不得不用的时候才把它加载进来,而且只加载一次。

💧 Posted on JavaJVM类加载器

JVM 类加载机制

类加载子系统主要包含如下几项功能: 负责从文件系统或是网络中加载.class文件,class文件在文件开头有特定的文件标识。 把加载后的class类信息存放于方法区,除了类信息之外,方法区还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件中常量池部分的内存映射)。 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。 如果调用构造器实例化对象,则该对象存放在堆区。 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。

💧 Posted on JavaJVM类加载机制

JVM 内存管理

JVM 整体架构根据 JVM 规范,JVM 内存共分为: 程序计数器、虚拟机栈、本地方法栈、堆、方法区 这五个部分。 名 称 特征 作用 配置参数 异常 程 序 计 数 器 占用内存小,线程私有,生命周 期与线程相同 大致为字节码行号指示器 无 无 虚 拟 机 栈 线程私有,生命周期与线程相 同,使用连续的 内存空间 Java 方法执行的内存模 型,存储局部变量表、 操作栈...

💧 Posted on JavaJVMJava 虚拟机内存管理

JVM 基础知识

什么是JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 主流的JVM 虚拟机名称 介绍 HotSpot Oracle/Sun JDK和OpenJDK都使用HotSPot VM的相同核心 J9 J9是IBM开发的高度模块化的J...

💧 Posted on JavaJVMJava 虚拟机