1. 修饰符
##[1] final: 修饰类、方法 [ JIT内联inline ]
##[2] private:修饰构造函数—静态类、单例类、工厂类 [不需外部创建]
##[3] static
##
2. 变量
赋值:long、Long型 大写字母L
常量: [大写命名] static final 声明 编译期放入常量池
变量: [小写命名] 运行期 减少重复计算[ 调用方法: 创建栈帧,调用方法时保护现场, 调用完毕后恢复现场 ]
局部变量: 尽量使用, 调用方法时传递的参数以及在调用中创建的临时变量在栈中,速度快。
静态变量、实例变量在堆中,速度较慢。
静态变量: 减少使用,GC不回收;生命周期与类同步,常驻内存,直至终止。
3. 方法 Method
##[1] 构造方法: 变量禁止重复初始化
[ 变量初始化: 对象=null,floadt\double=0.0,boolean=false;new关键字创建对象,自动调用构造函数链中的所有的构造函数]
##[2] finalize() : 减少使用,回收Young代,大都会引起程序暂停
4.类与对象 Object-object
对象: 需要时创建、初始化—尽量重用、使用基本数据类型
框架: 懒加载策略: 需要时创建对象
5.数据类型常用类
[1] -1. 基本类型:
## 1向下转型:注意范围
## 2代替对象:
## 3 转换字符串: 基本类型.toString()>String.valueOf(基本类型)> 基本类型+""
[直接调用>空判断+直接调用>StringBuilder.append+直接调用]
[1] -2. 包装类:
[2] 字符串
##创建 直接初始化、不使用构造方法 。 String string = "不用new String()";
##拼接 StringBuffer.append,不用"+".[生成对象、垃圾回收、处理]
##查找 string.indexOf()
##判断 常量.equals(变量) 避免空指针
##方法 避免使用split(),使用StringUtils.split(string,char)
##包装类 StringBuffer创建时指定大小,避免自动增长[默认16的字符数组,超过重新分配内存,复制丢弃的过程]
[3]集合类
## Ⅰ能预估内容长度时,指定初始长度
##Ⅱ remove():数据使用完毕后调用
##[1] Array 复制: System.arraycopy()代替循环
一位数组:代替对象
二维数组:避免使用,内存为一位的10倍以上3
禁止:禁止使用toString()、禁止修饰public static final
##[2] Array: 查询元素、[ 销量和类型检查 ]
##[3] ArrayList: 顺序插入、随机访问
##[4] LinkedLsit: 中间插入、删除
##[5] Map: 遍历-Map中的Key和Value
##[6] Vector:??? 默认10,扩容*2
##插入:vector.add(index,object)
##删除:vector.remove(int index)\ vector.remove(object)
6. 异常 Exception
[0] 原理: 创建异常对象,收集栈跟踪stack track[ 停止出栈、入栈,存放栈的快照]
Throwable接口的构造函数调用fillInStackTrace()的本地同步方法,检查堆栈,收集跟踪信息。
[1] RuntimeException 运行时异常不必捕获,代码规避
ArithmeticException — 判断除数是否为空 NullPointException — 判断对象是否为空
IndexOutBoundsException — 判断数组\字符串长度 ClassCastException — 使用关键字instanceof
ConcurrentModificationException— 使用迭代器
[2] try...catch 放在最外层、循环中不可使用
[3] finally 释放资源
7.多线程 Thread
##同步:HashTable、Vector、 StringBuffer
##异步:HashMap、ArrayList、StringBuilder
#synchronized:同步代码块替代同步方法[细粒度]
#ThreadLocal: 使用前后,调用remove()
##线程池: 避免频繁地创建和销毁线程
##DB连接池: 避免频繁打开和关闭连接
#随机数:避免多线程使用Random,虽然线程安全,但因竞争同一seed性能下降
使用ThreadLocalRandom 1.7设计模式
8. 设计模式
##单例: 减轻加载负担、缩短加载时间、提高加载效率
##[1] 控制资源使用,通过线程同步,控制资源并发访问
##[2] 控制实例产生,节约资源
##[3] 控制数据共享,不建立直接关联,让多个不相关的进程或线程之间通信
9. Stream、Session、Resource、Annotation、Reflaction
[1] 流 及时关闭,释放资源。数据库连接、IO流。[系统开销]
缓存流:BufferedReader\BufferedWriter\BufferedInputStream\BufferedOutputStream
[2] 会话 及时清除,会话超时30min,HttpSession的invalidate()方法清除
[3] 资源 分开操作close() xxx.close()抛异常进入catch语句、yyy.close()不会执行
[4] 注解 保留@Overrider
[5] 反射 功能强大,但效率低。
##解决: 项目启动时,通过反射实例出对象,放入内存
|