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.动态调整缓冲区大小