性能调优概括
- 设计调优处于所有调优手段的上层,它往往需要再软件开发之前进行。设计优化是对系统在宏观层面上“质”的优化。
- 代码调优是从微观上对性能进行调整。
- JVM调优,对jVM的运行原理和基本内存结构有一定了解。(堆内存,GC)
- 数据库调优
设计优化
善用设计模式
单例模式
- 单例模式的核心在用通过一个接口返回唯一的对象实例。
/**
* @description:使用内部类的方式实现单利,既可以做到延迟加载,也不必使用同步关键字,是一种比较完善的实现
* @author: Mr.zms
**/
public class StaticSingleton {
private StaticSingleton(){
System.out.println(" StaticSingleton is create ");
}
private static class SingletonHolder{
private static StaticSingleton instance = new StaticSingleton();
}
public static StaticSingleton getInstance(){
return SingletonHolder.instance;
}
}
代理模式
- 使用代理模式实现延迟加载,从而提升系统的性能和反应速度。
- 延迟和加载的核心思想是:如果当前并没有使用这个组件,则不需要真正地初始化它,使用一个代理对象替代它的原有位置,只有在真正需要使用的时候,才对它进行加载。
- 动态代理大幅度地减少代码数量,并提高系统灵活性。
- 动态代理 JDK,CGLIB动态代理,javasssit代理(CGLIB为例)
public static IDBQuery createCglibProxy(){
Enhancer enhancer = new Enhancer();
//指定切入点,定义代理类逻辑
enhancer.setCallback( new CglibDbQueryInterceptor());
//指定实现接口
Class [] classes = {IDBQuery.class};
enhancer.setInterfaces(classes);
//生成代理类的实例
return (IDBQuery) enhancer.create();
}
- 动态代理是AOP实现的一种重要方式,通过InvocationHandler接口进行方法的拦截并利用反射机制执行一定的代码正是AOP中织入代码的重要手段,理解动态代理的原理对于我们理解更好的理解hibernate和spring等框架具有重要意义。_
以上内容都是整理JAVA程序性能(葛一鸣)