1、ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现,既兼顾安全,又保证高并发,HashMap的升级版本,建议使用。
2、List中的三种循环方法:迭代循环、for-each循环、for循环,其中for循环效率最高,迭代循环其次,这下你应该知道选择哪一个了吧。
3、使用二元操作替代if-else,代码简洁,如:
int number >= 20 ? 20 : (number > 1) ? Integer.highestOneBit((number - 1) << 1) : 1;
4、慎用String.split()方法,效率极其低下,可以考虑indexOf()、substring()组合,效率高不止多少倍。
5、new ConcurrentHashMap<K,V>(int capacity),new ArrayList<K,V>(int capacity),如果事先知道多少元素,加个初始参数,减少集合内部的移位操作,提高性能。
6、最后不要用反射,太耗内存,而且效率也不高,如果非要使用,建议用开源commons-beanutils-1.7.0.jar包里面的PropertyUtils类。
7、数据库表数据不经常修改的,用缓存机制,不需要每次都进行数据库连接,节省时间,可以加定时刷新功能,来同步数据库表数据。
8、如果要经常操作字符串,建议StringBuffer(线程安全)和StringBuilder(线程不安全)取代String。
9、尽量减少对象的创建,考虑使用单例模式,资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如日志文件,应用配置,还有就是控制资源的情况下,方便资源之间的互相通信。如线程池等。
10、程序中使用到的资使用完之后要记得释放。这最好在finally块中去做。不管程序执行的结果如何,finally块总是会执行的,以确保资源的正确关闭。
11、使用'system.arraycopy ()'代替通过来循环复制数组。
12、简单的getter/setter方法应该被置成final,这会告诉编译器,这个方法不会被重载,所以,可以变成”inlined” 。
13、如果只是查找单个字符的话,用charat()代替startswith() 。
14、使用移位操作来代替'a / b'操作 。
15、把try/catch块放入循环体内,会极大的影响性能,如果编译jit被关闭或者你所使用的是一个不带jit的jvm,性能会将下降21%之多。
16、如果一个变量需要经常访问,那么你就需要考虑这个变量的作用域了。static? local?还是实例变量?访问静态变量和实例变量将会比访问局部变量多耗费2-3个时钟周期。
17、在java+Oracle的应用系统开发中,java中内嵌的SQL语言应尽量使用大写形式,以减少Oracle解析器的解析负担。
19、过分的创建对象会消耗系统的大量内存,严重时,会导致内存泄漏,因此,保证过期的对象的及时回收具有重要意义。 JVM的GC并非十分智能,因此建议在对象使用完毕后,手动设置成null。
20、不要重复计算,特别是size()方法。
比如:
for(int i=0;i
应修改为
for(int i=0,len=list.size();i
21、采用在需要的时候才开始创建的策略
例如:
String str="abc";if(i==1){ list.add(str);}
应修改为:
if(i==1){String str="abc"; list.add(str);}
22、HaspMap的遍历。
MapparaMap = new HashMap ();for( Entry entry : paraMap.entrySet() ){ String appFieldDefId = entry.getKey(); String[] values = entry.getValue();}
利用散列值取出相应的Entry做比较得到结果,取得entry的值之后直接取key和 value。
23、数据转换成列表:Collections.addAll(aa, bb);
//aa:表示list<String>对象,bb表示数组对象