Optimization_JAVA

Optimization_JAVA

  • 代码优化
    • Class-类级别
    • Method-方法级别
    • Data Object-数据 实例级别
    • Operation-运算级别
    • Exception-异常级别
    • Thread-线程级别
    • Concurrent
    • Socket-通信级别
    • Index优化
    • SQL优化

代码优化

目的
	[1]减小代码体积    [空间复杂度]
	[2]提高运行效率    [时间复杂度]

Class-类级别

Stream			流			及时关闭、释放资源		DB连接、IO、NIO
Session			会话			及时清除、释放资源		超时30min,HttpSession.invalidate()	
Resource		资源			多资源关闭、分别操作	xxx.close(),yyy.close()异常抛出,后续不执行
Annotation		注解		保留@overrider		???
Reflaction		反射		程序启动时实例出对象,替代运行时实例出对象	反射效率低下

String		[1]缓存:StringBuilder、StringBuffer		重用对象
			[2]转换:toString()>String.valueOf()>+"">
IO			缓冲:NIO替代IO

Method-方法级别

[0]修饰符	private final static 	
[1]输入		输入对象封装形参			防止传值调用错误
[2]输出		输出对象结果处理			空集、null
[3]construct()	new创建对象,自动调用构造函数链中的所有构造函数
				[]Object = null
				[]float\double = 0.0
				[]boolean = false
[4]finalize()		避免使用			回收Young代,导致程序暂停

Data Object-数据 实例级别

单引号: 基础类型拓宽,转换成整型值 
双引号: 字符串处理 

[1]常量		编译期	
	修饰static、final		位置在常量池
[2]变量		运行期	减少重复计算	[调用方法: 创建栈帧,调用方法时保护现场, 调用完毕后恢复现场]
	局部变量		尽量使用		位置在栈,速度快	
	静态变量		减少使用		位置在堆,速度慢	生命周期与类同步,常驻内存直至终止
	实例变量		减少使用		位置在堆,速度慢	
	
[3]基本类型		数据产生、处理在栈
	[1]向下转型		精度范围
	[2]代替对象
	[3]字符输出		基本类型.toString()			直接调用		空值判断
					>	String.valueOf(基本类型)
					>	基本类型+""
[4]包装类型		实例产生、处理在堆

[5]String类
	创建		初始化,替代构造方法			使用String string = ,不用 new String()
	拼接		StringBuffer.append,替代""	避免生成对象,垃圾回收
	查找		string.index()
	判断		常量.equals(变量)		
	方法		StringUtils.split(string,char),替代split()
	包装类	StringBuffer创建时指定大小	避免自动增长,默认16字符数组,超过重新分配,复制分配过程
[6]集合类		
	[]初始长度	预估内容,指定长度
	[]失效移除	使用数据,失效remove()
	[1]Array
			一维数组		代替对象
			二维数组		避免使用			内存为一维数组的10倍以上
			查询		查询元素
			复制		System.arraycopy(),代替循环
			禁止		toString()、public static final
Object-实例对象
	[1]创建		懒加载策略、需要时创建,初始化重用、基本类型
	[2]循环		循环外部创建,循环内部引用			禁止内部创建,导致内存过多	

Operation-运算级别

[0]比较		常量在前,变量在后			防止变量为null、空指针
			1 == i 、"".equals(string) 
[1]计算		
			位移运算,替代乘除运算		乘法:<<		除法:>>
			异或运算,替代幂级运算
[2]遍历
			[1]for:     随机访问-RandomAccess	
			定义列表数量:int length = list.size();
	 		[2]foreach: 顺序访问-Iterator
[3]赋值			
			[1]三元运算,替代if...else		

Exception-异常级别

[1]try..catch...finally			
	try			置于循环外层
	finally		释放资源			
[2]RuntimeException		运行时异常,通过代码规避
	ArithmeticException				除数,判断0值
	NullPointException				对象,判断null值
	IndexOutBoundsException			数组、字符串,判断长度	      
	ClassCastException				使用instanceOf      
	ConcurrentModificationException	使用迭代器  

Thread-线程级别

关键字	
	synchronized	同步代码块 ,替代同步方法		粒度细化
	threadLocal		使用后关闭线程,remove()		关闭资源
集合类
	线程安全			StringBuffer、Vector、HashTable、TheadLocalRandom>Random
	线程不安全		StringBuilder、ArrayList、HashMap
锁	同步对象等待		避免死锁
池化
	ThreadPool		线程池				避免频繁创建、销毁线程	
	DBCP			数据库连接池		避免频繁打开、关闭连接		

Concurrent

Socket-通信级别

DBCP			数据库连接池		避免频繁打开、关闭连接		
ThreadPool		线程池				避免频繁创建、销毁线程

Index优化

索引				
	[1]定义		是一个表中所含值的列表。注明此值所在行的存储位置
	[2]流程		首先,从索引对象获得相关列的存储位置
				然后,直接从存储位置查找信息

索引列
	[1]避免操作		计算、函数、数据类型转换、赋值Null、数值判断[not、<、>、!=、IS NULL、IS NOT NULL]、查询全表SELECT *
	[2]采用操作		表别名Alias

SQL优化

[1]联接查询代替子查询	Join Replace SubQueries
	子查询		创建临时表		多步骤、避免事务、表锁死
	联接查询		没有创建临时表
[2]联合查询代替临时表	Union Replace XXX?
	联合查询
Oracle	自下而上解析Where子句
		[1]Where条件过滤之前		进行表联接
		[2]Where条件过滤之后		进行最大数量记录过滤
模糊查询		like  %xxx%
	[1]首位%		全表扫描
	[2]末位%		

你可能感兴趣的:(Java,java,spring,开发语言)