public class Paging extends AbstractList<String> {
private List<String> list;
private int size = 0;
public Paging(WebApp application) {
//判断WebApp中是否已经存在了要调用的数据
if(application.getAttribute("list")==null){
list=getList();
application.setAttribute("list", list);//加入WebApp中
}else{
//判断数据是否过期
if(application.getAttribute("data_flag").equals("true")){
list=(List)application.getAttribute("list");
}else if(application.getAttribute("data_flag").equals("false")){
//过期数据就重新调用一次,并把对象保存在WebApp中
list=getList();
application.setAttribute("list", list);
}
}
size=list.size();
}
//生成1000条测试数据
public List<String> getList() {
if (list == null)
list = new ArrayList<String>();
for (int i = 0; i < 1000; i++) {
list.add("" + i);
System.out.println(i);
}
return list;
}
@Override
public String get(int arg0) {
// TODO Auto-generated method stub
return list.get(arg0);
}
@Override
public int size() {
// TODO Auto-generated method stub
return size;
}
如果用paging分页的话,我想大家也对大数据量读取敢感到空或,要是自己去写分页又很麻烦,所以我就想到了这个解决办法,这样可以减少数据的读取次数
也能加快访问速度,应为保存在WebApp中的对象是在内存当中,所以在第二次读取的时候就可以从内存中取,而不是在去读取数据库数据了。这样就可以大大
的优化paging的性能了。
为了保证不读取过期数据,所以在读取WebApp中的存放的Object时,加了一个判断。
只要大家在update,insert,delete操作中把data_flag改为false,让数据重新读取一次就可以了。
毕竟update,insert,delete操作比起select要少的多。要是数据量很大的话,为了不消耗太多的内存,也可以把对象序列化到磁盘上。
要是很注重性能的话,最好还是动态的去添加页面数据。
我很喜欢zk希望可以和大家一起分享。
paging的性能优化
最新推荐文章于 2024-06-14 16:47:12 发布