zoukankan      html  css  js  c++  java
  • 常见的代码优化

    1. 尽量重用对象,不要循环创建对象,如:for 字符串拼接

    2. 容器类初始化时指定长度
        new List<>(5); new Map<>(5); 防止运行过程中扩容问题

    3. ArrayList随机遍历快 / ListedList添加删除快

    4. 集合遍历尽量减少重复计算
        for(i = 0;j=aa.size();i<j;i++) 不用把aa.size()写进来

    5. 使用Entry遍历Map
        for(Map.Entry<String, String> entry : map.entrySet()){
            entry.getkey/getvalue 一次获取不用遍历
        }

    6. 大数组复制用System.arraycopy
        小数组就无所谓了

    7. 尽量使用基本类型 而不是 包装类型
        Interger i =100; 1 push100 、2 Integer.valueOf()
        low -128 high 默认127 超出范围不在缓存中会new Integer 内存和地址问题

    8. 不手动调用System.gc()

    9. 及时消除国企对象的引用,防止内存泄漏
        如:类似pop 获取对象后 置为null

    10. 尽量使用局部变量,减少变量作用域

    11. 尽量减小同步作用范围 synchronized方法 与 同步块 细化

    12. ThreadLocal缓存线程不安全的对象 SimpleDateFormat
        可放到ThreadLocal中就不用每次都去new
        ThreadLocal<SimpleDateFormat> dateFormatHolder = new ThreadLocal<SimpleDateFormat>(){
            initialValue() { new SimpleDateFormat("yyyy-MM");
        };
        直接 dateFormatHolder.get().format(date); 即可

    13. 尽量使用延迟加载
        如:单例的内部类 就属于延迟加载
        public class Singleton{
            private Singleton(){}
            private static clss SingletonHolder{
                private static Singleton instance = new Singleton();
            }
            public static Singleton getInstance(){
                return SingletonHolder.instance;
            }
        }

    14. 尽量减少使用反射,加缓存
        反射相当于一系列解释操作,通知jvm要做的事情,性能比直接的java代码要慢很多
        可以通过反射把对象放到内存缓存,使用的时候直接内存中取,而不要用到的时候再去反射获取 否则效率会底一些

    15. 尽量使用池。如:连接池,线程池,对象池、缓存。

    16. 及时释放资源,io流、socket、数据库链接
        比较消耗系统资源

    17. 慎用异常 不用抛异常来表示正常的业务逻辑。这个看具体业务不做重点
        异常比较重的对象 如果出现异常 栈纪录下来 比较耗时

    18. 日志输出注意使用不同级别

    19. 日志中参数拼接使用占位符
        log.info("hello:" + name); // 2个字符串拼接 不推荐
        log.info("hello:{}" , name);

    群交流(262200309)
  • 相关阅读:
    ZOJ 2158 Truck History
    Knight Moves (zoj 1091 poj2243)BFS
    poj 1270 Following Orders
    poj 2935 Basic Wall Maze (BFS)
    Holedox Moving (zoj 1361 poj 1324)bfs
    ZOJ 1083 Frame Stacking
    zoj 2193 Window Pains
    hdu1412{A} + {B}
    hdu2031进制转换
    openjudge最长单词
  • 原文地址:https://www.cnblogs.com/webster1/p/12598800.html
Copyright © 2011-2022 走看看