功能优化
从功能设计上,避免一次性加载大量数据。遇到一次性加载大量数据的,通过以下问题寻找功能优化方式:
1. 设置默认查询条件,仅加载部分数据。如对于监测数据的查询分析,可默认仅查询当天或当月的数据;
2. 将数据展示使用类似TAB的元素分开,根据用户操作,采用AJAX分步加载数据
3. 实时性要求不高的数据,不要实时查询,可缓存或者放到Session中
代码调优
SQL优化
1. 尽量使用join,不要使用子查询
2. 可能的情况下,尽量使用UNION ALL来代替UNION
小窍门:
可使用PL/SQL 或者 SQLServer Management Studio查看SQL的执行计划,进而对SQL进行优化。
缓存的使用
关于EhCache、Redis的使用,请自行百度。
耗时操作的处理
需求:对某事项进行审批,审批通过后发邮件给提交人。
发邮件即为一个耗时操作,如果审批通过后,在当前线程中执行发邮件的操作,则会阻塞当前线程,直到邮件发送结束。
经验分享:
耗时操作可以启动一个新的线程执行,避免阻塞当前线程(request)。
或者将耗时操作仅仅设置一个未执行的状态,后台跑一个QZ任务,定时批量执行。
代码逻辑调优
1. 避免for 多层嵌套
2. 避免对大数组的迭代对比,考虑使用Arrays.binarySearch()