
JAVA知识交流
Ehine_N
付出总会有回报...
展开
-
JDK动态代理和CGLIB动态代理简单区别介绍--实例
静态代理的缺点很明显:一个代理类只能对一个业务接口的实现类进行包装,如果有多个业务接口的话就要定义很多实现类和代理类才行,而且,如果代理类对业务方法的预处理、调用后操作都是一样的(比如:调用前输出提示、调用后自动关闭连接),则多个代理类就会有很多重复代码。 JDK动态代理所用到的代理类,在程序调用到代理类对象时才由JVM真正创建,JVM根据传进来的业务实现类对象以及方法名,动态地创建了一个代理类...原创 2019-03-03 22:57:17 · 382 阅读 · 0 评论 -
Java类初始化顺序
静态代码块:用staitc声明,jvm加载类时执行,仅执行一次,静态代码块是由类调用的,类调用时先执行静态代码块,然后才执行主函数的,静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的,一个类中可以有多个静态代码块 构造代码块:类中直接用{}定义,每一次创建对象时执行,构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的...原创 2019-03-18 14:37:17 · 188 阅读 · 0 评论 -
synchronized与lock的区别
synchronized: synchronized关键字最主要有以下3种应用方式: 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁 修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码块前要获得给定对象的锁 Java对象头和monitor是实现synchronized...原创 2019-03-18 17:02:11 · 142 阅读 · 0 评论 -
HashMap、HashTable、ConcurrentHashMap简述
HashMap: JDK1.7中使用一个Entry数组来存储数据,用key的hashcode取模来决定key会被放到数组里的位置,如果hashcode取模结果相同,那么这些key会被定位到Entry数组的同一个格子里,这些key会形成一个链表 JDK1.8中使用一个Node数组来存储数据,但这个Node可能是链表结构,也可能是红黑树结构,如果插入的key的hashcode取模结果相同,那么这些...原创 2019-03-18 17:26:53 · 196 阅读 · 0 评论 -
强引用、软引用、弱引用和虚引用
在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用 Java中提供这四种引用类型主要有两个目的:第一是可以让程序员通过代码的方式决定某些对象的生命周期;第二是有利于JVM进行垃圾回收 强引用:强引用就是指在程序代码之中普遍存在的,比如下面...原创 2019-03-25 17:10:01 · 169 阅读 · 0 评论 -
java反射简述
java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性,这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制 Class是一个类,封装了当前对象所对应的类的信息 Class类是一个对象照镜子的结果,对象可以看到自己有哪些属性,方法,构造器,实现了哪些接口等等 对于每个类而言,J...原创 2019-03-25 17:32:18 · 262 阅读 · 0 评论