九,类加载器及委托机制
面试题:
能不能自己编写个类叫java.lang.System?
答:通常不能,为了不让我们写System类,类加载器采用了委托机制,会先委托BootStrap来加载JRE/lib/rt.jar 包中的java.lang.System,而自己编写的java.lang.System是存在CLASSPATH指定的目录下。这样可以保证BootStra优先,也就是中使用BootStrap能找到的类,这样总是使用java系统提供的System.但是我们依然有办法让系统使用我们写的类,我们可以自己定义一个类加载器,让其加载我们写的java.lang.System类。
十,分析代理类的作用与原理及AOP概念
代理类可为已存在的多个具有相同接口的目标类的方法添加一些辅助功能;代理类中的方法在调用目标类中的相同的方法时,可在方法中添加其他功能代码。
AOP :Aspect oriented program 面向方面的编程,目标:使用交叉业务模块化。
交叉业务:安全,事物,日志等等功能要贯穿带多个模块中,可称之为交叉业务
JVM生产的动态类必须实现一个类的子类,一个类的子类也可以用做该类的代理,所有,如果要为一个没有实现接口的类生成动态代理类,需要使用第三方CGLIB库。
代理类的各种方法中通常除了要调用目标的相应方法和对外返回目标返回的结果外,还可以在代理方法中的如下四个位置加上系统功能代码:
1、 在调用目标方法之前
2、 在调用目标方法之后
3、 在调用目标方法前后
4、 在处理目标方法异常的catch块中
面试小计:StringBuffer 和StringBuilder 区别:
都是动态的拼凑一个字符串。
效率:
单线程:StringBuilder,不用考虑安全问题
多线程:StringBuffer,考虑安全问题
终于看完了张老师的高新技术,可以出篇日记了,咋看起来就像笔记似的。刚开始的前部分还能跟的上,后来深入的部分视频要看了好几遍才晓得讲什么东西。时间紧迫,继续奋斗。。。