代码优化

经验篇

优化目标
减少体积
提高运行效率

sql语句 尽量使用批量

尽量指定final
尽量重用对象
使用局部变量
及时关闭流
尽量减少重复计算
尽量使用懒加载
对于Logger使用static创建,否则可能导致线程阻塞
使用对象作为HashMap的Key
web.xml增加版本配置信息
少用Thread.getStackTrace
正则运算尽量cache
Class.forName可能导致阻塞
反射调用转为原生调用
字符转字节
优化工具Jprofiler

架构优化:
动静分离 让用户请求尽量不经过后台,并且静态数据尽量离用户近
读写分层校验

秒杀系统的执行逻辑、静态数据放到cdn
增加多条件校验

支持峰值100W/s的QPS
将整个页面cache在浏览器 刷新 强刷购买按钮

链路优化
请求合并

控制页面大小

通过答题分散流量

域名收敛
DNS CDN本地
SPDY 本地长连接
图片本地缓存
合理的预加载机制

数据分级
减少加载
减少大小

短板:
光速
网络
网路结构
内存\cpu \io

合并部署 弹性部署

抛出异常首先要创建一个新的对象,Throwable接口的构造函数调用名为fillInStackTrace()的本地同步方 法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被抛出,Java虚拟机就必须调整调用堆栈,因为在处理过程中创建 了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。

如果能估计到待添加的内容长度,为底层以数组方式实现的集合、工具类指定初始长度

比如ArrayList、LinkedLlist、StringBuilder、StringBuffer、HashMap、

10、当复制大量数据时,使用System.arraycopy()命令

11、乘法和除法使用移位操作

for (int i = 1; i <= count; i++)

{

Object obj = new Object();

}

Object obj = null;

for (int i = 0; i <= count; i++)

{

obj = new Object();

}

使用单例可以减轻加载的负担、缩短加载的时间、提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:

(1)控制资源的使用,通过线程同步来控制资源的并发访问

(2)控制实例的产生,以达到节约资源的目的

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

尽量避免随意使用静态变量

https://blog.csdn.net/u013322876/article/details/84190584

你可能感兴趣的:(代码优化)