分类: Java
2012-01-09 21:25:25
代码回顾:
业务场景:查询聚划算所有商品的信息,其中包括商品的名称描述,还有商品所在地的经纬度等信息,并以xml方式返回。以下是查询城市经纬度信息的代码。
代码功能:查询商品所在城市的经纬度
1. 通过google服务来查询相应的信息
代码不足点:
1)没有设置连接超时
2)最后没有关闭连接。
不设超时,线程会过长时间被占有,系统会被堵塞在这。不关闭连接,会损耗IO的性能。
2 . 改进后的代码问题:代码的执行时间还是过长,因为查询的城市过于多。
改进的方法:减少查询的次数,对于已经查询过的城市应该保留副本,避免第二次的重复查询
代码说明(左边为得到商品城市(getCity())就根据此城市名查询相应的经度纬度;右边代码为 所有已经查询过的城市的经度纬度都放到map中,下一次查询就直接从这里取)
3 . 改进后的代码问题:代码的执行时间还是过长
改进的方法:让查询在线下执行,这样就可以进一步缩短执行时间,减少对外部依赖
代码说明(右边代码:查询城市调用queryLatLngByMap来查询,所有需要的信息都已经事先放在properties中,只要读取这个文件信息就可以了)
4 . 进一步改进:由于聚划算一天的商品是不变的。所以在一天之中,返回的数据是不变的。
所以只要在一天中的第一次调用前缓存返回的XML,然后今天的所有调用只要返回此XML就可以了,这样就不必考虑查询过慢这个问题了。
(如果一天有多拨的开团,只要在某一时间点去取开团时间列表,然后设定下次重新生成XML的时间既可。)