amba simple class驱动_学习笔记:class加载器和双亲委派模型

类加载器

类加载器有四种

  • 启动类加载器(Bootstrap ClassLoader)

负责加载 JAVA_HOMElib ⽬录中的,或通过-Xbootclasspath参数指定路径中的且被虚拟机认可(按⽂件名识别,如rt.jar)的类。这个加载器由C++实现的,并不是java实现的

  • 扩展类加载器(Extension ClassLoader)

负责加载 JAVA_HOMElibext ⽬录中的,或通过java.ext.dirs系统变量指定路径中的类库。

  • 应⽤程序类加载器(Application ClassLoader)

负责加载⽤户路径(classpath)上的类库

  • 自定义加载器(User ClassLoader)

JVM⾃带的三个加载器只能加载指定路径下的类字节码,如果某个情况下,我们需要加载应⽤程序之外的类⽂件呢?⽐如本地D盘下的,或者去加载⽹络上的某个类⽂件,这种情况就可以使⽤⾃定义加载器了。

自定义加载器的步骤,(1)继承ClassLoader ——>(2)重写findClass()⽅法 ——>(3)调⽤defineClass()⽅法

50c776dca4b08c666fda54dd8297331c.png

加载器

JVM的类加载器是通过ClassLoader及其⼦类来完成的,类的层次关系和加载顺序可以由下图来描述

2cd82949745a88d1382d65d8e82032de.png

加载过程中会先检查类是否被已加载,检查顺序是⾃底向上,从Custom ClassLoader到BootStrapClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有ClassLoader加载⼀次。⽽加载的顺序是⾃顶向下,也就是由上层来逐层尝试加载此类。

双亲委派模型

JVM通过双亲委派模型进⾏类的加载,当⼀个类加载器收到类加载任务,会先交给其⽗类加载器去完成,因此最终加载任务都会传递到顶层的启动类加载器,只有当⽗类加载器⽆法完成加载任务时,才会尝试执⾏加载任务。

这样可以避免重复加载,当⽗亲已经加载了该类的时候,就没有必要⼦ClassLoader再加载⼀次。

我们可以想一下,若是不这么做,那我们就可以随时使⽤⾃定义的String来动态替代java核⼼api中定义的类型,这样会存在⾮常⼤的安全隐患,⽽双亲委托的⽅式,就可以避免这种情况,因为String已经在启动时就被引导类加载器(Bootstrcp ClassLoader)加载,所以⽤户⾃定义的ClassLoader永远也⽆法加载⼀个⾃⼰写的String,除⾮你改变JDK中ClassLoader搜索类的默认算法。

破坏双亲委派模型

8d239f1c33bc994f6d1b3ec4b0adc5e8.png

在某些情况下⽗类加载器需要加载的class⽂件由于受到加载范围的限制,⽗类加载器⽆法加载到需要的⽂件,这个时候就需要委托⼦类加载器进⾏加载。

但是按照双亲委派模式,⼦类需要委托⽗类加载器去加载class⽂件。无疑是没法达到我们的目的地。这个时候就需要破坏双亲委派模式才能加载成功⽗类加载器需要的类。就需要⽗类会委托⼦类去加载它需要的class⽂件。

比如 jdk 中定义的 Driver 接⼝,但它的实现由在各大数据库的服务商来提供,像mysql的就写了MySQL Connector ,这些实现类都是以jar包的形式放到classpath⽬录下。

so,问题就来了,DriverManager(也由jdk提供)要加载各个实现了Driver接⼝的实现类(classpath下),然后进⾏管理,但是DriverManager由启动类加载器加载,只能加载JAVA_HOME的lib下⽂件,⽽其实现是由服务商提供的,在classpath目录下,由系统类加载器加载,这个时候就需要启动类加载器来委托⼦类来加载Driver实现,从⽽破坏了双亲委派。这⾥仅仅是举了破坏双亲委派的其中⼀个情况。

大家还有其他破坏双亲委派模型的例子不,可以留言分享一下。

个人学习整理,有错欢迎纠正

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍:   星际单警执法仪驱动安装与电脑连接说明  单警执法视音频记录仪与电脑的连接需要通过专业的管理软件来实现,支持操作系统包括Windows2000、WindowsXP,及Windows7 32位。  第一步:  将执法记录仪开机连接电脑后,然后将配套软件从随机附带光碟拷贝至电脑,在“我的电脑”中打开“设备管理”, 选择“其它设备”中黄色问号文件(Amba Simple Class)。  第二步:确认选择黄色问号(Amba Simple Class)第三步:在列表中选择“更新驱动程序(P)”  第四步:选择“从列表或指定位置安装(高级)(S)”  第五步:在浏览中选择“驱动”文件夹安装后,点击“下一步”,开始安装,当显示完成驱动安装后,软件安装完毕。  第六步:登录,双击文件夹“高清执法记录仪”内部的 文件(或者发送到桌面快捷方式),在双击打开电脑会显示下面界面:  输入正确的六位密码后(初始密码“000000”),点击“连接设备”,再点击“提交密码” 如果密码正常,机和电脑通讯正常,机会自动进入以下界面,反之密码错误会提示密码错误或者连接错误。  自动校时,点击“自动校时” 会出现校时成功,此时需要确认电脑的时间是否与本地时间相同,同时机的时间和电脑的时间会相同。点击确定。校时成功。  注:机进入U盘模式后,其余按键不再起作用,不能完成通讯,要想设定机相关参数,在没有进入U盘模式之前调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值