【JAVA】论一次从技术优化中学到的东西

最近公司要求在系统中的所有接口响应时间必须低于500ms,第一次处理这种任务,也没啥经验,只能无脑干了,干完后,总结一下本人处理的过程:

接口大部分慢的原因有以下几点:

1.索引未添加或者添加了索引没用生效

2.SQL语句写得过于垃圾

3.代码逻辑的先后顺序执行有问题

4.代码中采用了很多循环CURD

5.对于处理时间长的接口未才有最好的方案解决

6.代码没写好,采用了速度慢的方法进行处理

7.系统中有调用其他第3方接口,第3方接口响应慢

针对以上问题,我们给出了处理方法

1.第一个和第二个问题,我们可以在mybatis的配置文件中增加拦截器,将其接口中执行的sql语句所耗费的时间打印在控制台上,然后找到耗时长的sql,对其进行优化,具体的sql优化方法就不多说了,自己可以百度一下

第3个问题,针对那些代码中的逻辑,只限制于不需要回滚的代码,要是几个方法没有依赖关系,我们可以采用多线程处理,最好是自己写一个多线程处理的类,封装起来,不过多线程处理对服务器的资源有要求,所以线程的初始化要结合服务器的资源来定

第4个问题就很简单了,能批量处理的尽量改成批量处理,数据量不大的话可以采用缓存一次把全部查出来,然后在从缓存中获取

第5个问题,对于处理时间长的,比如下载文件,上传文件啊,我们可以采用异步的方式实现,当然具体怎么异步,我们有2个解决方法,一个异步是直接返回结果,然后处理完成后将下载链接显示在一个专门下载的页面里面,让用户去这个页面下载,第2种的话,前端可以做一个等待的图标,请求服务器后,服务器返回一个轮询的等待时间,前端后面根据这个时间每隔多久去查询一次

第6个问题,则需要我们对代码的编写有一定的基础了,比如,SET集合中匹配一个元素的速度是要远远大于List中匹配的,jdk8的多线程循环处理是比基本的for循环快的(和数据量有关),并且采用了多线程,集合也必须改为线程安全的集合

第7个问题,这个就只能和第3方的人说了,让他们优化,毕竟不是我们自己的,代码改不了咯

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天空~华

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值