java.lang.Class java.lang.reflect.Field java.lang.reflect.Method java.lang.reflect.Constructor
//static代码块
Class.forName("",boolean , ClassLoader);
JVM结构
----------------
Ru.ntime Data Area
1.Method Area //方法区。 共享
2.Heap //存放对象和数组.共享
//Data access object. class StudentDao{ public void insert(Student t){ .... } public void update(Student t){ ... } } class TeacherDao{ public void insert(Teacher t){ .... } public void update(Teacher t){ ... } public Teacher findById(Integer id){ } public List<Teacher> findBySQL(String sql){ ... } } class BaseDao<T,S,K>{ private S s1 ; private List<S> list ; public void insert(T t){ ... } public void update(T t){ .... } public T findById(Integer id){ } public List<T> findBySQL(String sql){ ... } } new BaseDao<Teacher,Student,>(); class BigTeacherDao<T> extends BaseDao<>{ ... } class TeacherDao extends BaseDao<Teacher>{ } getDeclaredMethod(); clazz.getDeclaredFields() = Field[] clazz.getFields[] =
内省,javabean.
-------------
java.beans.Instrospector //内省器
java.beans.PropertyDescriptor //属性描述符
java.beans.MethodDescriptor //方法描述符
Object --> FeatureDescriptor -> MethodDescriptor
Object --> FeatureDescriptor -> PropertyDescriptor
class Animal{ private String type ; //getXxxx/setXxx } class Dog extends Animal{ private String name ; private String owner ; //get/set } class Jing8Dog extends Dog{ private int blood ; //get/set } main{ Jing8Dog d1 = new ..(); d1.setXxxx(); ... //使用内省完成副本创建 }
编写工具类:BeanUtil.copyProperties(Object src,Object target);
NIO
-------------------
1.New IO
2.Buffer //缓冲区
java.nio.ByteBuffer //字节缓冲区
{
private int mark = -1;
private int position = 0;
private int limit;
private int capacity;
}
3.DataInputStream //DataInputStream
4.allocating //直接分配空间
5.wrapping //包装
5.direct vs non-direct //
6.HeapByteBuffer //堆字节缓冲区
7.off-heap
//
ByteBuffer buf = ByteBuffer.allocate(1024 * 1024 * 50);
//
Heap :
JvisualVM中的Visual gc插件安装
------------------------
1.进入jvisualvm中
2.工具 --> 插件
3.选中visual gc.
4.安装.
jconsole
------------------------
1.${java_home}/bin/jconsole
2.查看各方面的信息。
Channel
------------------
1.通道.
2.Socket、File、设备的一个连接机制。
3.ByteBuffer和channel结合一起使用
Builder模式
------------------
1.背景
Xxxx xx = new Xxx();
xx.setxxx();
.....
ByteBuffer.allocate vs ByteBuffer.allocateDirect()方法完成1G文件复制。
--------------------------------------------------------------------
1.动态调整缓冲区大小