1.
尽量指定类的final修饰符。带有final修饰符的类是不可派生的。如果指定一个类为final,
则该类所有的方法都是final。此举能够使性能平均提高50%。
2.
尽量重用对象。特别是String对象的使用中出现字符串连接情况时应用StringBuffer代替。
3.
尽量使用局部变量。调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack
)中速度快。其他变量、实例变量等,都在堆(Heap)中创建,速度慢。
4.
不要重复初始化变量。默认情况下,调用类的构造函数时java会把变量初始化成确定的值,
所有对象设置成null,整数变量(byte、short、int、long)设置成0,float和double设置成
0.0,逻辑值设置成false。当一个类从另一个类派生时,这一点尤其应该注意,因为用new关
键词创建一个对象时,构造函数链中所有构造函数都会被调用。
5.
在java+Oracle的应用中系统开发中,java中内嵌的SQL语句尽量使用大写的形式,以减轻
Oracle解析器的解析负担。
6.
Java编程编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,及时关闭以
释放资源。
7.
由于JVM的其自身的GC机制,不需要程序开发者过多考虑,从一定程度上减轻了开发者负担,
但同时也遗漏了隐患。JVM回收垃圾的条件是:对象不再被应用;然而,JVM的GC并非十分的
机智,即时对象满足了垃圾回收的条件也不一定会被立即回收。所以建议在对象使用完毕后
,手动设置成null。
8.
在使用同步机制时,尽量使用方法同步代替代码块同步。
9.
减少对变量的重复计算。
例如:
for(int i = 0; i < array.length; i++) {
…
}
应替换为:
for(int i = 0, len = array.length; i < len; i++) {
…
}
10.
尽量使用lazy loading的策略,在需要的时候才开始创建。
例如:
String str = "aa";
if(i == 1) {
list.add(str);
}
应替换为:
if(i == 1) {
String str = "aa";
list.add(str);
}
11.
慎用异常,异常对性能不利。抛出异常首先要创建一个对象。Throwable接口的构造函数调用
名为fillInStackTrace()的本地方法,fillInStackTrace()方法检查栈,收集调用跟踪信息
。只要有异常被抛出,VM就必须调整调用栈,因为在处理过程中创建了一个新的对象。异常
只能用于错误处理,不应该用来控制程序流程。
12.
不要再循环中使用Try/catch语句,应该把其放置在最外层。
13.
StringBuffer的使用,StringBu表示可变的、可写的字符串。有三个构造方法。
new StringBuffer();
//默认分配16个字符的空间
new StringBuffer(int size);
//分配size个字符的空间
new StringBuffer(String str);
//分配16个字符+str.length()个字符空间
当StringBuffer达到最大容量是,它会将自身容量增加到当前2倍再加2,也就是(2*旧值+2)
。无论何时,只要只要StringBuffer达到最大容量,它就不得不创建一个新的字符数组,然
后重新将旧字符和新字符复制一遍——这也太昂贵了点。所以应给StringB设置一个合适的初
始化容量,这样会带来立竿见影的效果。
14.
合理使用Java类java.util.Vector。简单的说,一个Vector就是一个java.lang.Object实例
的数组。Vector与数组相似,它的元素可以通过整数形式的索引访问。但Vector类型的对象
在创建之后,对象的大小依元素的增加或者删除而定。Vector的初始存储能力是10个元素,
如果新元素加入是的存储能力不足,则以后存储能力每次加倍。Vector类就像StringBuffer
类一样,每次扩展存储能力时,所有的元素都要复制到新的存储空间中。
15.
当复制大量数据时,使用System.arraycopy()。
16.
代码重构:增强代码的可读性。
17.
不用new关键字创建类的实例。用new关键字创建类的实例时,构造函数链中的所有构造函数
都会被自动调用。但如果实现了Cloneable接口,我们就可以调用它的clone()方法。clone()
方法不会调用任何类的构造函数。
18.
乘法和除法
用位移操作代替乘法除法可以大大的提高性能。每左移一位等于乘2,右移一位等于除2.。但
是虽然位移操作速度快,但这使代码的教较难理解,所以最好加上注释。
19.
不要将数组声明为:public static final。
20.
讨论HashMap的遍历效率。
使用这种方法效率更高
Map<String, String[]> paramap = new HashMap<String, String[]>();
for(Entry<String, String[]> entry : paramap.entrySet()) {
String appid = entry.getKey();
String[] value = entry.getValue();
}
21.
array(数组)和ArrayList的使用。array([]):最高效;但是其容量固定而且无法动态改变;
ArrayList:容量可动态增长;但牺牲效率。
基于效率和类型的检验。应尽可能使用array,无法确定数组大小时,才使用ArrayList。
22.
尽量使用HashMap和ArrayList,除非必要,否则不推荐使用HashTable和Vector,后者由于使用
同步机制,而导致了性能的开销.
23.
StringBuffer和StringBuilder的区别在于:java.lang.StringBuffer线程安全的可变字符序
列。一个类似于String的字符串缓冲区,但不能修改。StringBuilder与该类相比,通常应该
优先使用java.lang.StringBuilder类,因为它支持所有相同的操作,但由于它不执行同步,
所以速度更快。为了获得更好的性能,在构造StringBuffer和StringBuilder时应尽可能指定
它的容量。如果字符长度不超过16个字符就不用了.相同情况下StringBuilder比使用
StringBuffer仅能获得10%~15%左右的性能提升,但也冒多线程不安全的风险。除非你能确定
你的系统瓶颈在StringBuffer上,并且确定你的模块不会再运行在多线程模式下,否则还是
使用StringBuffer。
分享到:
相关推荐
分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME...
数据库优化,代码优化数据库,超简单,java初级程序员专用。
该代码并非完全复现该文献,而是参照文献 《基于目标级联分析法的多微网主动配电系统自治优化经济调度》 的目标级联分析法(ATC)的算法部分,采用初级的拉格朗日算法,主网与配网部分模型较为简化。 代码结构完整,...
适合初级开发者对代码的编写
教程名称: Thinkphp新版初级博客项目教程最新版ThinkPHP5.0博客项目实战视频教程,包含项目所有源代码、数据库,带你轻松入门最新版ThinkPHP 5.0。ThinkPHP5.0版本是一个颠覆和重构版本,官方团队历时十月,倾注了...
不好意思,本人发的"北大青鸟ACCP 6.0 软件开发初级程序员:c#语言和数据库技术基础"和 "北大青鸟ACCP 6.0 软件开发初级程序员:使用C#语言开发数据库应用系统" 文件搞反了,如果一起下载不影响的。呵呵 ACCP...
最优化潮流计算的matlab程序代码,可以试用于初级学者
15.3 初级优化 15.4 高级优化 15.5 Android高效开发 15.6 AndroidUI优化 15.7 其他优化 15.7.1 zipalign 15.7.2 图片优化 15.8 小结 第五部分 扩展篇 第16章 Android NDK开发 16.1 AndroidNDK...
初级程序员Java简历资源描述: 熟悉Java编程语言,具备基本的面向对象编程能力 熟悉基本的数据结构和算法,能够解决简单的编程问题 了解常用的Java开发工具和框架,如Eclipse、Spring等 具有良好的团队合作和沟通...
本书中所论述的技术不仅填补了初级与高级编程技术之间的空白,而且也为程序员们提供了一个有关编程技巧的信息来源。本书适合经验丰富、自学成才的程序员阅读,也适合于那些几乎不懂什么编程技巧的新程序员阅读.
16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制 Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员...
matlab建模基础知识,适用于初级阶段
Qt/C++中国象棋人机对战 1、实现象棋规则 ...这是一个初级版本的人机对战,主要实现n步判断,剪枝优化,个人而言需要有一定基础的才能看懂代码,我自己也是看了好几遍教学视频才弄明白,读懂了对于学习很有帮助
最多也就是优化点代码、添加点注释,应该不会再出新的版本了。 :)***********************************V0.92 Date : 2002-8-13 * 修改了在切换菜单时的两个 Bug 。 * 根据...
结合配焦椭流线法和梯度算子,提出了一种针对LED 扩展光源的自由反射曲面优化设计...光学仿真结果表明,优化前初级照度均匀度约为0.77,而优化后达到0.98,效果良好,并具有向非轴对称自由反射曲面设计拓展的可能性。
内容概要:webpack 做过哪些优化,开发效率方面、打包策略方面等、优化 Webpack 的构建速度、优化 Webpack 的打包体积、speed-measure-webpack-plugin、Babel 的编译过程、Git 常用命令、如何使用Git管理项目、项目...
初级 这是我个人博客的Jekyll模板,我一直在对其性能,可访问性,可用性,可读性和简单性进行优化。 我个人不赞成个人博客充斥着数百KB的跟踪器和分析代码,因此,这是在尝试创建自己可以在自己的网站上使用的东西...
XP画面修改工具