欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaEE性能优化

程序员文章站 2022-07-10 16:20:42
...
性能的优化一般可以从多方面入手,前端资源,java程序,数据传输,结果缓存,数据库,jvm的GC,甚至硬件层等。
一、前端优化
  影响页面性能的因素很多;
  1、页面请求Http数量。
    新建一个http连接需要经历tcp协议握手建立连接状态等过程,并且大部分请求和相应包含了cookie和header内容,增加网络带宽的消耗。因此、减少HTTP请求的数量能够加速页面的加载。可以通过采取合并样式和脚本文件等措施,来减少页面加载所需要请求。
设置html页面缓存方法:
静态的html页面想要设置使用缓存:
通过HTTP的META设置expires和cache-control
 <meta http-equiv="Cache-Control" content="max-age=7200" />
 <meta http-equiv="Expires" content="Mon, 20 Jul 2013 23:00:00 GMT" />

  2、是否使用CND网络。
     CDN网络能够使用户就近原则的取得所需要的资源,降低静态资源传输的网络延迟。
  3、是否使用压缩。
    对前端的js,css等静态资源文件可以去掉不要的注释和空格,空行等。使用gzip压缩来减少
网络上传输的字节数。当然,压缩是有成本的,会消耗服务器的cpu资源,但通常这种开销是值得的。
其他的规则还包括将样式放在页面首部加载,将js脚本放在底部加载,避免CSS样式,减少CDN查找等。
二、java程序优化
  java代码的优化是找到执行java缓慢的代码,想尽办法对原有的代码进行优化。如使用单例模式,减少系统开销,将单线程变多线程,提升资源利用率,采用选择就绪模式,提供并发吞吐量,对于互不影响的流程,可以使用Future模式来提升任务效率。。。通过这些措施来提高程序的性能。
  1、单例
    对于I/O处理,数据库连接,配置文件解析加载等耗资源的操作,必须对这些实例创建进行限制,或使用一个公共实例。以减少系统开销。
  2、Future模式。
   Future模式有点类似于网上购物,在你购买商品,订单生效之后,你可以去做自己的事情,等待商家通过快递给你送货上门。Future模式就是,当某一程序提交请求,期望得到一个答复。但是可能服务器程序对这个请求的处理比较慢,因此不可能马上收到答复。但是,在传统的单线程环境下,调用函数是同步的,它必须等到服务程序返回结果,才能继续进行其他处理。而Future模式下,调用方法是异步的,原本等待返回的时间段,在主调函数中,则可以处理其他的任务
package com.test.dao;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
public class FutureMain {
    private static class ChuJu{
          private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }
    private class Work implements Runnable{
        public void run() {

        }
    }
    //网上订餐
    private static class OnlineLunch  implements Callable{
        private ChuJu chuJu;
        public OnlineLunch(String name){
            chuJu = new ChuJu();
            chuJu.setName(name);
        }
        public ChuJu call() throws Exception {
            System.out.println("下单");
            System.out.println("等待发货。。。。");
            try {
                Thread.sleep(10000L);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("收到货物:");
            return this.chuJu;
        }
    }
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        //第一步网上订购午餐
        FutureTask<ChuJu> future = new FutureTask<ChuJu>(new OnlineLunch("刀"));
        new Thread(future).start();
        //模拟去购物菜
        System.out.println("走去超市。。");
        Thread.sleep(3000);
        System.out.println("选菜。。。");
        Thread.sleep(3000);
        System.out.println("买菜回家。。。");
        Thread.sleep(3000);
        if(!future.isDone()){  //如果厨具还未到,等到
            System.out.println("等待厨具。。。");
        }
        ChuJu chuJu = future.get();
        //开始做菜
        System.out.println("厨具:"+chuJu.getName()+"到了");
    }
}


结果输出:
走去超市。。
下单
等待发货。。。。
选菜。。。
买菜回家。。。
等待厨具。。。
收到货物:
厨具:刀到了

   
相关标签: java优化