【DAY24】内省,NIO的学习笔记
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.动态调整缓冲区大小
转载于:https://blog.51cto.com/yehom/1793024