int size = v.size(); for(int I=0; I++;Isize)
虽然这是一个简单的改动,但它仍旧赢得了性能 。毕竟 , 每一个CPU周期都是宝贵的 。
15、当复制大量数据时,使用System.arraycopy()命令 。
int[] src=https://www.04ip.com/post/{1,3,5,6,7,8};
int[] dest = new int[6];
System.arraycopy(src, 0, dest, 0, 6);
src:源数组; srcPos:源数组要复制的起始位置;
dest:目的数组; destPos:目的数组放置的起始位置;
length:复制的长度.
注意:src and dest都必须是同类型或者可以进行转换类型的数组.
16、代码重构:增强代码的可读性 。
public class ShopCart {
private List carts ;
…
public void add (Object item) {
if(carts == null) {
carts = new ArrayList();
}
crts.add(item);
}
public void remove(Object item) {
if(carts. contains(item)) {
carts.remove(item);
}
}
public List getCarts() {
//返回只读列表
return Collections.unmodifiableList(carts);
}
//不推荐这种方式
//this.getCarts().add(item);
}
17、不用new关键词创建类的实例
用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用 。但如果一个对象实现了Cloneable接口,我们可以调用它的clone()方法 。clone()方法不会调用任何类构造函数 。
在使用设计模式(Design Pattern)的场合 , 如果用Factory模式创建对象,则改用clone()方法创建新的对象实例非常简单 。例如,下面是Factory模式的一个典型实现:
public static Credit getNewCredit() {
return new Credit();
}
改进后的代码使用clone()方法 , 如下所示:
private static Credit BaseCredit = new Credit();
public static Credit getNewCredit() {
return (Credit) BaseCredit.clone();
}
上面的思路对于数组处理同样很有用 。
18、乘法和除法
考虑下面的代码:
for (val = 0; val100000; val +=5) {
alterX = val * 8; myResult = val * 2;
}
用移位操作替代乘法操作可以极大地提高性能 。下面是修改后的代码:
for (val = 0; val100000; val += 5) {
alterX = val3; myResult = val1;
}
修改后的代码不再做乘以8的操作,而是改用等价的左移3位操作 , 每左移1位相当于乘以2 。相应地 , 右移1位操作相当于除以2 。值得一提的是,虽然移位操作速度快 , 但可能使代码比较难于理解,所以最好加上一些注释 。
19、在JSP页面中关闭无用的会话 。
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)这样的语句时才被创建,注意如果JSP没有显示的使用关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历 。由于session会消耗内存资源 , 因此,如果不打算使用session,应该在所有的JSP中关闭它 。
对于那些无需跟踪会话状态的页面,关闭自动创建的会话可以节省一些资源 。使用如下page指令:%@ page session="false"%
20、JDBC与I/O
如果应用程序需要访问一个规模很大的数据集 , 则应当考虑使用块提取方式 。默认情况下,JDBC每次提取32行数据 。举例来说,假设我们要遍历一个5000行的记录集,JDBC必须调用数据库157次才能提取到全部数据 。如果把块大小改成512,则调用数据库的次数将减少到10次 。
21、Servlet与内存使用
许多开发者随意地把大量信息保存到用户会话之中 。一些时候,保存在会话中的对象没有及时地被垃圾回收机制回收 。从性能上看,典型的症状是用户感到系统周期性地变慢,却又不能把原因归于任何一个具体的组件 。如果监视JVM的堆空间,它的表现是内存占用不正常地大起大落 。
推荐阅读
- java代码中定义接口,java接口里定义的变量和方法
- sap反记账,sap反记账规则
- 升级ios13怎么样,苹果升级13系统
- 冬装高领连衣裙直播间卖货,今日主播品牌连衣裙
- mysql怎么装成服务器 mysql数据库怎么装
- 如何搜索营销词,搜索营销推广的五个步骤是什么?
- asp.netjava接口,aspnet web api
- 室外直播素材图片,室外直播间图片
- php上传数据库 php上传文件导入数据库