在并发量稍高的情况下提高程序执行效率的举措。

前言:我们做的app其实也谈不上高并发,压测的时候是用的自己家的测试服务器。标准差不多是10s/2000并发,平均执行时间应该控制在200ms。但是测出来好多不合格接口,这些接口的逻辑,包括sql都再简单不过了。可是测出来的平均执行时间都在5000以上。

优化方案:

1.for嵌套循环尽量(jianjue)不用。特别影响效率。访问量达到一定级别会奔溃。

2.单次请求减少与数据库交互次数。尽量(yiding)把数据集中到一块查询一次。

3.自定bean的时候属性类型尽量和数据库数据类型一致。这个很重要,很致命。由于逆向生成的实体bean不能动,但还要把id加密,这个时候就需要自定义bean了。于是将所有属性类型定义成String。数据库数据在映射到实体的时候还要判断类型是否一致然后不一致还要进行类型转换,消耗了大量时间。后来想了一个办法,不直接映射到实体,先封装到map,这里虽然也涉及到类型查找,但不至于直接映射那么慢。然后转json,然后转实体bean。

List<Map> validTaskListTemp = new ArrayList<Map>();
......装上数据......
String jsonTaskList = JSON.toJSONString(validTaskListTemp);
validTaskList = JSON.parseArray(jsonTaskList, TaskBean.class);

4.sql语句的where后的条件尽量不要加1=1,除非有非必传条件出现,否则坚决不用1=1。

5.where后面先将带索引的必要条件放到前面缩小范围,像deleted,state等等这种不带索引的标记字段往后放。

6.查询数量的时候外连接就别用了,内连接能省则省。

总结:做佛系程序猿。因果循环谁都逃不掉。挖下的坑迟早是要填的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
线程池是一种常用的并发编程技术,可以提高程序并发性和效率。它通过预先创建一定数的线程并维护一个任务队列,将任务分配给空闲的线程执行,避免了频繁创建和销毁线程的开销。 使用线程池可以带来以下好处: 1. 提高并发性:线程池可以根据系统资源和需求情况,控制线程的数,合理利用系统资源,提高程序并发性。通过合理配置线程池的大小,可以避免线程过多导致的资源竞争和上下文切换开销。 2. 提高效率:线程池可以重用线程,避免了频繁创建和销毁线程的开销。线程的创建和销毁过程是比较耗费资源的,通过线程池可以减少这部分开销,提高程序执行效率。 3. 控制资源:线程池可以限制系统中活动线程的数,避免资源被过多消耗。通过设置线程池的大小和任务队列的容,可以控制同时执行的任务数,避免系统资源被过度占用。 4. 提供任务排队和调度:线程池通过任务队列来管理待执行的任务。当线程池中的线程正在执行任务时,新的任务可以被放入任务队列中等待执行,这样可以避免任务因为没有可用线程而被阻塞,提高了任务的调度灵活性。 总之,线程池是一种有效的并发编程技术,可以提高程序并发性和效率,同时还能对系统资源进行合理的管理和调度。在多线程编程中,合理地使用线程池可以帮助我们更好地利用系统资源,提高程序的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值