结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
一、前言
今天我们讲类加载机制5个阶段中的第一个阶段,加载,又叫装载。为了便于阅读,以下都叫做装载。
装载的第一步就是要获得二进制的字节流,它可以从读.class
文件获得,也可以从网络中接收别人发送的字节流。反正只要符合虚拟机规定的字节流格式都可以进入这个阶段。
有了字节流之后,要进行装载还需要一个工具,那就是加载器了。加载器既可以使用系统提供的引导类加载器,也可以使用用户自己定义的加载器,只需要继承ClassLoader
,再重写loadClass()
方法就可以实现一个自己的简单加载器。
像上面的代码那样,就是一个简单的类加载器。当我们要自己加载某个类的时候,就可自己调用loadClass
方法,参数通常为要加载类的全类名,再根据name
获得文件,得到字节流后便可加载,示例代码如下:
public class Test extends ClassLoader{
@Override
public Class<?> loaderClass(String name) throws ClassNotFoundException {
// 获得.class文件的名称
String fileName = name.substring(name.lastIndexOf(".") + 1) + ".class";
try {
InputStream is = new FileInputStream(fileName); // 获得字节流
if(is == null) { // 若为空,就调用父类加载器
return super.loadClass(name);
}
byte b[] = new byte[is.available()];
is.read(b); //将字节流全部读进字节数组
// 进入接下来的阶段
return defineClass(name, b, 0, b.length);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
return super.loadClass(name);
### 结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
![html5](https://img-blog.csdnimg.cn/img_convert/d35c2cf2d5364b4907e65f1856c923a4.png)