java基础加强
49.泛型的实际参数应该是引用类型,不能是基本数据类型。
50.利用泛型进行数组和集合之间相互拷贝的相关程序
51.create,read,update,delete,缩写是crud,也就是数据库的增删改查。
52.DAO,data access Object,数据访问对象。
53.如果类的实例对象中多处都要用到同一个泛型参数,即这些地方引用的泛型类型要保持同一个实际类型时,这时候就要采用泛型类型的方式进行定义,也就是类级别的泛型,语法格式如下:
54.根据反射来获得泛型的实际参数类型
55.类加载器:BootStrap,ExtClassLoader,AppClassLoader三个系统默认的类加载器,这三个是相互继承的关系,也都属于特殊的类,同样需要加载,由BootStrap加载。
56.类加载器的委托机制:如果找某个类时,先从最上级(BootStrap)开始找,(每个类加载器对应自己的查找目录),然后再一级一级向下寻找。如果我们想强制在某个目录去找,可以使用自己的类加载器。比如A类用了我们自己的类加载器,那么A类内部引用的其他类也都是默认使用我们自己的类加载器,如果不愿意引用类使用,可以进行指定其他类加载器。
57.BootStrap用来加载系统常用类,ExtClassLoader用来加载我们自己的jar包文件,AppClassloader来加载我们自己编写的类。
58.很简单的文件加密程序:
59.自制类加载器,包括加密解密
60.tomcat自带了很多类加载器,我们运行的servlet程序就是靠这些类加载器来加载的。如果一个类A继承了类B,那么加载A的那个类加载器(C)同样会去加载B,有时候C在自己的相应目录下找不到时就会报错。这时候可以换一个类加载器,或者把B所在的jar包拷入到C的相应目录中。
61.AOP,Aspect oriented program,面向方面编程。这方面的编程都需要涉及到代理。AOP的目标就是要使交叉业务模块化。
62.JVM可以在运行期动态生成出类的字节码,这种动态生成的类往往被用作代理类,即动态代理类。JVM生成的动态类必须实现一个或多个接口,所以JVM生成的动态类只能用作具有相同接口的目标类的代理。
63.CGLIB库可以动态生成一个类的子类,一个类的子类也可以用作该类的代理,所以,如果要为一个没有实现接口的类生成动态代理类,那么可以使用CGLIB库。
64.要为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能,例如异常处理,日志,计算方法的运行时间,事务管理等等,可以编写一个与目标类具有相同接口的代理类,代理类的每个方法调用目标类的相同方法,并在调用方法时加上系统功能的代码。
65.一个简单的代理程序实现:
66.将InvocationHandler中我们自己的代码抽取出来,以一个对象的方式传递进去,有助于代码良好的封装。让下面的代码来说明一切吧!
67.Spring主要是面向切面编程(AOP),同时可以加载普通类和代理类,下面是模拟Spring的一个简单框架,通过修改配置文件来决定使用代理类还是普通类,程序会自动判断并执行相关的代码。程序中使用的MyAdvice和Advice与上面的程序相同,ProxyTest略有改动。
68.java基础加强部分终于看完了,博客中的所有代码都是我在看完视频后亲手演练的。这几天虽然很累,但也收获了不少东西,编码能力也有所加强。明天继续努力,争取尽早看完所有视频。