排序
漫画七种排序算法
快速排序:
1、选取基准值;
2、将比基准值小的放左边,大的放右边;
3、递归调用快速排序。
JVM类加载
JVM类加载机制详解
不会执行类初始化的情况:
- 通过子类引用父类的静态字段,只会触发父类的初始化;
- 定义对象数组;
- 常量在编译期间会存入调用类的常量池中;
- 通过类名获取Class对象;
- 通过Class.forName加载指定类时,如果指定参数initialize为false;
- 通过ClassLoader默认的loadClass方法。
类加载器
- 启动类加载器
- 扩展类加载器
- 应用程序类加载器
JVM通过双亲委派模型进行类的加载
NIO
代理模式
Java的三种代理模式
通过代理对象访问目标对象,可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。
- 静态代理
- 动态代理
- Cglib代理
CGLib动态代理原理及实现
观察者模式
定义了对象间的一种一对多的依赖关系,当一个对象(目标对象)的状态发生改变时,所有依赖于它的对象(观察者对象)都得到通知并被自动更新。
推模型
主题对象向观察者推送主题的详细信息,不管观察者是否需要,推送的信息通常是主题对象的全部或部分数据。
拉模型
主题对象在通知观察者时,只传递少量信息。如果观察者需要更具体的信息,由观察者主动到主题对象中获取。主题对象自身通过update()方法传递给观察者。