1. 避免字符串相加
这是个老生常谈的问题,但是在写servlet的时候,很多人在输出html时,
这样写
String a = "<html> ";
String b = "</html>";
String c = a + b;
应该使用StringBuffer,
String a = "<html> ";
String b = "</html>";
StringBuffer sb = new StringBuffer(a);
sb.append(b);
String c = sb.toString();
最好使用StringBuffer的带参数构造来代替默认的构造函数,因为StringBuffer的append()方法返回
一个StringBuffer实例,最好的写法是这样:
StringBuffer sb = new StringBuffer(256);
StringBuffer sb = new StringBuffer();
sb.append("<html> ").append("</html>");
2.不要使用StringTokenizer
例如解析字符串
import java.util.StringTokenizer;
public class TestStringTokenizer
{
public static void main(String[] args)
{
String s = "a,b,c,d";
StringTokenizer st = new StringTokenizer(s, ",");
while (st.hasMoreTokens())
{
String token = st.nextToken();
System.out.println(token);
}
}
}
可以使用String.indexOf()完成相同的功能
public class TestIndexOf
{
public static void main(String[] args)
{
String s = "a,b,c,d";
int begin = 0;
int end = s.indexOf(",");
while (true)
{
String token = null;
if (end == -1)
{
token = s.substring(begin);
}
else
{
token = s.substring(begin, end);
}
System.out.println(token);
// End if there are no more delimiters
if (end == -1) break;
begin = end + 1;
end = s.indexOf(",", begin);
}
}
}
3.一般不要log输出
一般不要使用System.out.println()作为日志输出,最好使用log4j,更易于打开和关闭输出
if(logger.isDebugEnabled()){
logger.debug("logging method handleRequestInternal()....");
}
4.避免不必要同步
servlet容器是个多线程的系统,java的关键字synchronized.避免某些情况的程序死锁,但是性能确实大大的降低了。
除非特别必要,否则不要使用synchronized。
5.尽量使用PreparedStatement
多次使用相同的查询语句,PreparedStatement的效率很高,而且避免了sql注入。
6.尽量使用连接池
使用连接池,可以减少建立连接的时间,而且可以减轻数据库的连接压力。
7.大量的使用cache
对于经常查询相同数据的网站程序,使用cache是优化的不二法门,oscache是个廉价的方案。
8.优化servlet容器
关闭容器的logging,加大他的File read cache size,加大容器的线程数,禁止servlet的重新加载。
9.优化jvm,加大heap的初始化字节数,降低虚拟机的垃圾回收频率,
posted on 2006-03-02 14:02
badboy 阅读(337)
评论(0) 编辑 收藏 所属分类:
Java基础