在一个好的项目中代码优化是永远离不开的话题,如果有充足的时间开发和维护代码,必须考虑每个可以优化的细节,日积月累,项目的质量才会上升,代码优化是绝对有必要的工作。代码优化的主要目的是减少代码块,提升代码运行效率。

1.采用懒加载策略,在需要时Create,代码如下:String yd = “www.yoodb.com”;

List list = new ArrayList<>();

if(true){

list.add(yd);

}

替换为

if(true){

String yd = “www.yoodb.com”;

List list = new ArrayList<>();

list.add(yd);

}

2.使用数据库连接池和线程池

两者都是重用对象的,连接池可以避免频繁打开或关闭连接,线程池可以避免频繁创建或销毁线程。

3.使用位移替换乘除法for(int i=1;i<100;i++){

int a = i * 8;

int b = i / 2;

Sysout.out.println(a + “-----” + b);

}

替换为

for(int i=1;i<100;i++){

int a = i <

int b = i >> 1;

Sysout.out.println(a + “-----” + b);

}

位移操作方便快捷,可以极大的提高性能

4.循环内避免不断的创建对象for(int i=1;i<100;i++){

Object ob = new Object();

}

替换为

Object ob = null;

for(int i=1;i<100;i++){

ob = new Object();

}

替换之后内存中只有一个Object对象引用,从而执行不同的Object对象,其实内存中只有一个,节省了内存消耗。

5.慎用异常

1)抛出异常首先创建一个新的对象,Throwable接口调用fillInStackTrace()的本地同步方法,检查堆栈收集调用跟踪信息。只要异常被抛出,Java虚拟机就会调用堆栈,异常适用于处理错误,不适用于控制程序流程。

2)避免在循环中使用try{….}catch(Exception e){}处理异常,尽量在循环外处理

6.I/O流

Java对数据库进行连接或读取文件时,操作I/O流在使用完之后一定要及时关闭以释放资源

7.减少对变量的重复计算for(int i=1;i

}

替换为

for(int i=1,length = list.size();i

}

8.static final常量声明,并以大写命名

编译时放入常量池中,从而避免在运行程序时再计算生成常量的值,以大写命名方便区分常量与变量,习惯写法。

9.避免创建不使用的对象或导入的类

在导入类时有个黄色小灯泡显示“The value of the local variable i is not used”,此时的类是没有用的建议删除掉,删除所有引入但是没有使用的类快捷键 Shift+Ctril+O

10.参数判断,”if (ia== 1){…}”和”if (1== a){…}”是没有区别的,个人习惯建议使用if(a==1){…}

11. 使用带缓冲的输入输出流进行IO操作

带缓冲的I/O流为BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,可以极大地提升IO效率

12. 单例模式优缺点以及在合理的场合使用单例模式

【优点】

1)实例控制

单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。

2)灵活性

因为类控制了实例化过程,所以类可以灵活更改实例化过程。

【缺点】

1)开销

虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。

2)可能的开发混淆

使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。

3)对象生存期

不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C++),其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

使用场合情况:

1)限制创建示例(读取配置文件),节约资源

2)限制资源使用情况,通过线程同步来控制资源的并发访问

3)限制共享数据,在未建立直接关联的条件下让多个不相关的进程或线程之间实现通信

java程序优化快捷键_Java 代码中针对性能优化的总结方案相关推荐

  1. java异常统一处理_Java 代码中的全局异常处理

    最近接手一个新项目,写用例的时候去翻看代码,发现部分代码里缺少基本的异常处理,包括对参数异常以及业务异常的处理.对照之前负责过的异常处理做得比较好的项目,给开发提了几点建议,顺便又去翻看了之前项目的代 ...

  2. java 不要使用魔法值_Java代码中的魔法值

    所谓魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义. 1. 前言 重构老代码中遇到了不少类似下面这种写法: public void attend(String ...

  3. java元素符号是什么_Java 代码中 @ 符号是什么意思?

    展开全部 annotation. Annotation,是Java5的新特性,下面是Sun的Tutorial的描述,因为是英文,这里我翻译下,希望能够比较清晰323131333532363134313 ...

  4. java程序 部署服务器_Java代码如何布署到云服务器

    Java代码如何布署到 前两种方式的优点是方便快捷,缺点是要花几元到几十块钱.手动部署方式正好与前两种方式相反,它的优点是免费,同时修炼了你的技术,缺点就是比较费事. 如果不差钱或者时间紧迫的话,你可 ...

  5. java 程序找错_java代码找错

    展开全部 你试一下这个行不行,输入的时候是数字e69da5e6ba903231313335323631343130323136353331333335313138,数字,数字;数字,数字.....的格 ...

  6. java ip 白名单_Java代码中对IP进行白名单验证

    public classipUtil {//IP的正则,这个正则不能验证第一组数字为0的情况//private static Pattern pattern = Pattern//.compile(& ...

  7. JAVA面试要点004_JAVA编程过程中为了性能优化_应该注意到的地方

    最近的机器内存又爆满了,出了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源和总结一些在ja ...

  8. java vo转map_Jython:在 Java 程序里运行 Python 代码 4.5

    彭翌 彭翌,网易游戏资深运维开发工程师,从事大数据相关的基础架构平台研发工作,业余时间也关注分布式系统等相关领域. 前言 众所周知,JVM 在大数据基础架构领域可以说是独占鳌头,当我们需要开发大数据处 ...

  9. oracle 中某张表备份,张表系统流程(java程序备份及恢复SQL2000中数据库中的某张表)...

    java程序备份及恢复SQL2000中数据库中的某张表 你可以现在数据库里面建立一张视图,视图里面的SQL语句就是查询该数据库中的表明,这就是访问系统表的内容,只提供单独一个列,然后展示给客户,当客户 ...

最新文章

  1. 【POCO】POCO学习总结(三)——交叉编译
  2. 一文看懂机器学习中的常用损失函数
  3. 带你理清Node.js 的Web框架的3个层次
  4. 家庭NAS搭建实战之samba共享
  5. 【JUC系列】Java的锁机制
  6. 【C++】 C++标准模板库(一) Vector
  7. 【最优解】Leecode 594. 最长和谐子序列——Leecode每日一题系列
  8. 数据结构与算法之七归并排序
  9. 尚学堂科技_王勇_JAVA视频教程_Hibernate
  10. C#获取实体类属性名和值 | 遍历类对象
  11. 说说vue-cli中使用flexible和px2rem-loader
  12. SQL:MySQL创建、删除事件
  13. 迅捷屏幕录像工具录制视频使用方法
  14. 【手持式微波频谱分析仪】真正便携且功能强大的仪器 - 欧洲制造
  15. 网络安全学习笔记-入侵检测系统IDS
  16. Django博客项目(一)—— 注册和登录页面
  17. GitLab CI/CD 初体验
  18. C++青少年编程课程体系与教案
  19. 【C++】Placement New
  20. 论文笔记:Large-Scale Embedding Learning in Heterogeneous Event Data(HEBE)

热门文章

  1. xenserver6.2 内存leak故障处理
  2. 源代码加密-防泄密解决方案-SDC沙盒
  3. 真实的程序员是什么样子的!
  4. 对于销售,什么是你应该考虑的最重要事情?
  5. 叫做 Nanshan即时通讯 贪婪型
  6. 老板想okr,员工想kpi
  7. 父组件给子组件传值方法_【Vue】小学生都能看懂的子父组件传值
  8. 学术谱系树:来看看你导师的师承
  9. 你的数据也可以-三篇NAR的数据库
  10. Python语法糖之:列表解析、集合解析和字典解析