java

代码回顾:

 

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

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

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

代码不足点:

1)没有设置连接超时

2)最后没有关闭连接。

 

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

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

 

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

 

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

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

 

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

 

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

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

 

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

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值