• 简单的代码优化(后端)


    上一篇谈了谈简单的前端的优化,这次就以下几点谈谈后端的优化。

    书写时常见的。

    1. 循环里面不要走IO流。
      走IO,是要对硬盘进读写操作的。就结论而言,硬盘的读写速度是低于内存的,比如说硬盘上读一次数据,需要1秒,内存里读一次数据需要0.1秒。那么如果对应的步骤执行10次、100次,从硬盘读取数据的时间就会成倍的增加。
      常见的IO操作如:Excel的编辑、mysql的读取。
    2. 善用多线程。
      这是由上述的情况延伸出来的。实际的开发工作中,确实有不得不进行循环中读写IO的情况发生。而硬盘的读写,会导致当前的线程阻塞,从而影响接口的执行,最后导致前端因为等待接口的返回而卡死。
      这里我们不去管前端对于接口超时怎么处理。如果说因为读写IO导致当前线程阻塞,把这个需要耗费大量时间的任务,单独分一个线程去处理,让主线程继续执行并反馈结果是一种常见的解决方式。
    3. 循环的嵌套不要太多。
      这个大家都知道,比如我有两个长度为100的数组A和B。如果循环是这样。
    int[] a = new int[100];
    int[] b = new int[100];
    for(int i = 0 ; i < a.length; i ++){
      for(int j = 0; j < b.length; j ++){
      	System.out.println("");
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这相当于打印执行了10000次。但是如果换成这么写

    int[] a = new int[100];
    int[] b = new int[100];
    for(int i = 0 ; i < a.length; i ++){
      
    }
    for(int j = 0; j < b.length; j ++){
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    两个循环加起来的处理也不过200次。
    4. 编写时尽量小循环套大循环
    这种情况多见于遇上条件处理的情况。比如

    int[] a = new int[10];
    int[] b = new int[100];
    for(int i = 0 ; i < a.length; i ++){
      for(int j = 0; j < b.length; j ++){
      	if(j == 10){
      	  break;
      	}
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    如上述例子,如果j等于10 的时候,结束当前的循环。这样实际执行的循环次数会小很多。

    实际工作中常见的。

    1. 结合公司的技术架构和业务做出取舍。
      很多公司,实际的并发量并不大,服务器也只是单台。但是这种情况下有一种为了技术而技术的情况发生,例如:只有一台服务器,还要整什么分布式、负载均衡。这种说实话,多余的依赖反而会增加硬件的负担。因此,本着够用就行、留量应急的原则,应该去掉那些不必要的依赖。
    2. 多思考,尽可能把手头的技术在业务中用到极致。
      很多东西的设计,都是在过程中才发现不是很适合。这种情况下应该好好分析一下业务。比如说大数据看板,在需求上看大致上是有实时性要求或者没有实时性要求的。这里用没有实时性要求的来举例。
      一般来说,一个b/s架构的软件服务都是客户端发起请求到服务端,然后服务端去数据库里面逛一圈拿到数据,最后在响应到客户端。但是如果对实时性要求并不高的又不方便直接存在前端的,完全可以提前把这种数据存一份。需要的时候去取,并根据具体的业务,比如定时器每天24:00执行一次更新。
  • 相关阅读:
    Python绘图系统21:导出数据
    appium用例参数化
    RabbitMQ安装与配置
    macOS下更改默认的Python版本
    WTG Windows系统安装到U盘/移动硬盘
    小程序map组件一——使用腾讯地图个性化地图组件、腾讯云可视化大屏展示
    栈和堆什么意思,Rust所有权机制又是什么
    mindspore将parameter转为tensor时报错
    华为机试真题 Java 实现【最大平分数组】【2022.11 Q4新题】
    获取医疗器械板块的个股列表
  • 原文地址:https://blog.csdn.net/weixin_41994930/article/details/133977457