面试的时候总有人问,你有优化或者重构那些东西,总是想不起来,好记性不如烂笔头啊!
同步改成异步优化
微信推送消息接口改成异步
一开始设计微信推送接口,只是为了给内部员工用的,调用量不大,真个流程就是 调用接口的时候传用户的openid,然后调用微信官方的接口进行推送,整个操作都是同步的。
后来其他组接入了,比如物流组和订单组,发货了会推送一条微信消息,订单支付了或者订单签收或者退换货各种状态都需要接入微信推送。
异步的设计是这样的,定义一个队列,所有推送请求数据都先放到队列里面,然后再异步定时插入数据库里面。最后再由推送系统扫描数据库再发送指定的数据。
同步更新改成异步更新
app消息推送接口执行定时推送的时候,都是先查询出来状态为未推送的数据,然后把这些数据的状态改成待推送,然后再调用苹果官方推送接口,然后再更新推送结果状态,成功还是失败。
真个推送流程涉及到两次更新数据库的操作,第一步更新是为了防止其他线程也查询到这些待推送的数据,防止重复推送。
第二步的更新就可以改成异步的操作,异步的
Future模式异步上传图片
缓存灵活使用
缓存使用的时候有时候需要加上本地缓存,然后再定时去异步更新本地缓存。
Android app自动化发布
异步从svn下载待发布的app jar,然后上传七牛,返回待发布的url,然后再调用推荐位。
接口返回码文案转换
底层返回的错误码不是特别友好,是给开发看的,而不是给用户看的,所以需要再次包装下。