Chinaunix首页 | 论坛 | 博客
  • 博客访问: 265238
  • 博文数量: 52
  • 博客积分: 1287
  • 博客等级: 少尉
  • 技术积分: 581
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-01 13:53
文章分类

全部博文(52)

文章存档

2012年(48)

2011年(4)

分类: Java

2012-01-09 21:46:27

代码回顾:

 

业务场景:查询聚划算所有商品的信息,其中包括商品的名称描述,还有商品所在地的经纬度等信息,并以xml方式返回。以下是查询城市经纬度信息的代码。

代码功能:查询商品所在城市的经纬度

1.       通过google服务来查询相应的信息

代码不足点:

1)没有设置连接超时

2)最后没有关闭连接。

 

不设超时,线程会过长时间被占有,系统会被堵塞在这。不关闭连接,会损耗IO的性能。

2 . 改进后的代码问题:代码的执行时间还是过长,因为查询的城市过于多。

 

   改进的方法:减少查询的次数,对于已经查询过的城市应该保留副本,避免第二次的重复查询

 

   代码说明(左边为得到商品城市(getCity())就根据此城市名查询相应的经度纬度;右边代码为 所有已经查询过的城市的经度纬度都放到map中,下一次查询就直接从这里取)

3 . 改进后的代码问题:代码的执行时间还是过长

 

   改进的方法:让查询在线下执行,这样就可以进一步缩短执行时间,减少对外部依赖

 

   代码说明(右边代码:查询城市调用queryLatLngByMap来查询,所有需要的信息都已经事先放在properties中,只要读取这个文件信息就可以了)

4 .  进一步改进:由于聚划算一天的商品是不变的。所以在一天之中,返回的数据是不变的。

 

所以只要在一天中的第一次调用前缓存返回的XML,然后今天的所有调用只要返回此XML就可以了,这样就不必考虑查询过慢这个问题了。

 

(如果一天有多拨的开团,只要在某一时间点去取开团时间列表,然后设定下次重新生成XML的时间既可。)

 

阅读(2821) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~