Java代码的一些优化点整理

    一个程序功能的运行与执行,快与慢,客户的体验是否良好,除了感知页面的体验外,一直以来,效率方面也显得特别重要,想要获得大量的流量,客户的体验感是非常重要的,其实在软件上做的很多东西,基本面向的都是我们大众的客户,客户是上帝,想要提供最好的服务,除了追求质量外,效率也是我们一直追求的理想,下面整理一些java代码的优化,除了个人的总结接触外,当然也借鉴了一些网上的文章来整理的,学习的,可能还有很多没有整理到的内容,所以此文章的优化整理会持续添加在后面,持续更新,敬请关注:

优化目标:一,减少代码量(通俗来讲);二,提高运行效率(最终结果)

下面的优化点,一点点来概括列出:

1,ArrayList适用于查询(数据结构,查询时不必移动指针),LinkedList(链表结构,只需要引用对象即可)适用于增删操作,请看前面文章介绍:https://blog.csdn.net/Kinglon17/article/details/86570098

2,尽量使用HashMap,ArrayList(基于效率和类型,应尽可能使用array,但是无法确定数组大小的情况时使用ArrayList),StringBuilder(字符串连接时使用,不要用String对象,避免JVM又花时间去生成对象和垃圾回收),使用这三者:Hashtable、Vector、StringBuffer会因为同步机制的原因导致性能开销,但可用于非线程安全

3,尽量指定类和方法的final修饰符,final修饰不允许继承和重写,编译器内联查找全部final修饰的方法,提升运行效率

4,避免随意使用静态变量static,gc通常不回收此修饰对象的内存,直到程序终止

5,数组切勿声明为public static final,数组内容可改变,声明毫无意义,且声明为公共类,外部类可改变引用,存在安全漏洞

6,常量声明为static final,以大写命名放入常量池中,避免运行期间生成常量值,也方便区分出常量与变量

7,尽量重用对象(减少内存占用),尽量使用局部变量(临时变量存在栈中,速度快,堆中,速度慢),减少变量的重复计算(减少消耗),使用懒加载模式(需要用时才创建),及时关闭流和会话(释放资源),使用缓冲流进行IO操作(提高IO效率)

8,对于异常,循环中不用try catch,直接放外层,慎用异常(对性能不利,会创建对象,jvm调整堆栈),异常内的多个close()操作,建议分开异常try catch close()操作,避免其他colse操作为得以关闭,未来得及回收,就已经抛了异常

9,乘法和除法改用移位操作(提高性能,不利于阅读),循环内忌创建对象引用,当复制大量数据时,使用System.arraycopy()命令

10,单例模式的适合使用场景:线程同步控制资源并发访问,控制创建实例,不相关的进程间的数据共享

11,使用同步代码块替代同步方法(略过不需要执行的代码),public方法多参数的情况直接用实体封装形参

12,使用数据库连接池和线程池(重用对象,避免频繁操作打开与创建等操作)

13,常量与字符比较,常量写前面(避免空指针)如:“10”.equals(a) 

14,序列化实体类中加入实体的toString方法,方便调试测试数据,map遍历的最有效率方法,推荐使用keyset或者entrySet+Iterator来遍历

15,删除无用类与无用对象,公共集合类不使用的数据,及时remove(不断增大,有内存溢出隐患),减少反射的使用(可在加载类中实例化对象,存入内存再使用)

16,转字符串的三种方式效率(从快到慢): Integer.toString()(直接调用) - > String.valueOf() (调用了底层 Integer.toString() 方法并做空判断) - > i+""(先拼接,再toString())

17,一般运行时异常(RuntimeException)处理方法:

ArithmeticException---通过判断除数是否为空;  NullPointerException---通过判断对象是否为空;

IndexOutOfBoundsException---通过判断数组/字符串长度;  ClassCastException---通过instanceof关键字;

ConcurrentModificationException---有人说用迭代器处理,但是好像也会异常,看情况,个人建议用普通for循环处理;

18,获取随机数,可用JDK7版本后的ThreadLocalRandom,避免Random实例被多线程使用(线程安全),因竞争同一seed 导致的性能下降

19,静态类、单例类、工厂类将它们的构造函数置为private(不需要外部将它们new出来的情况下,保证了这些类不会产生实例对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值