当前位置: 首页 > news >正文

网站不在首页显示出来吗优化设计单元测试卷答案

网站不在首页显示出来吗,优化设计单元测试卷答案,现在做外贸还能挣钱吗,辽宁建设工程信息网官网新网站如何进入在之前的JVM类加载器篇中说过,各个类加载器都有自己加载的范围,比如引导类加载器只加载Java核心库中的class如String,那如果用户自己建一个包名和类名与String相同的类,会不会被引导类加载器加载。可以通过如下代码测试&#xff0…

在之前的JVM类加载器篇中说过,各个类加载器都有自己加载的范围,比如引导类加载器只加载Java核心库中的class如String,那如果用户自己建一个包名和类名与String相同的类,会不会被引导类加载器加载。可以通过如下代码测试,通过执行结果中的报错信息可以发现,JVM实际上加载了rt.jar中的String类,并未加载自定义的String,这个就是JVM的双亲委派模型解决的问题之一。

package java.lang;public class String {static {System.out.println("自定义String");}public static void main(String[] args) {System.out.println("1");}
}

运行结果

错误: 在类 java.lang.String 中找不到 main 方法, 请将 main 方法定义为:public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application

双亲委派工作原理

JVM对class文件是按需加载,在加载class的过程,如果当前类加载器存在父类加载器,都会将加载请求先委派给父类加载器,这种任务委派方式被称为双亲委派。
在前面的篇章中说过,类加载器之间存在非继承的层次关系(如下图),这种层次关系让类加载器加载的类也具有优先级,也就是前面示例中rt.jar中的String优于自定义String的加载,这种优先级加载详细原理如下:
在这里插入图片描述

  1. 当一个类加载器收到加载请求,他并不会自己加载,而是把加载请求委托给父类加载器。
  2. 如果父类加载器也存在父类加载器,继续向上委托,如此递归,直至最顶层引导类加载器。
  3. 如果父类加载器能完成类的加载,就正常返回,反之,由子类进行加载,递归依次向下。

优点

1、避免全限定名相同的类被重复加载,导致程序异常。

2、保护程序,防止核心库API被篡改。

三、Java源码实现
双亲委派是在ClassLoader的loadClass()方法中实现,代码很少,作用很强大,源码如下。

protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {synchronized (getClassLoadingLock(name)) {// First, check if the class has already been loadedClass<?> c = findLoadedClass(name);if (c == null) {long t0 = System.nanoTime();try {// 实现委派if (parent != null) {c = parent.loadClass(name, false);} else {c = findBootstrapClassOrNull(name);}} catch (ClassNotFoundException e) {// ClassNotFoundException thrown if class not found// from the non-null parent class loader}if (c == null) {// If still not found, then invoke findClass in order// to find the class.long t1 = System.nanoTime();c = findClass(name);// this is the defining class loader; record the statssun.misc.PerfCounter.getParentDelegationTime().addTime(t1 - t0);sun.misc.PerfCounter.getFindClassTime().addElapsedTimeFrom(t1);sun.misc.PerfCounter.getFindClasses().increment();}}if (resolve) {resolveClass(c);}return c;}
}

SPI机制打破双亲委派

SPI(Service Provider Interface),是一种服务发现机制,它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类,如JDBC驱动。如下图,SPI核心类定义在rt.jar中(如java.lang.Driver接口),所以本身是由启动类加载器加载,当调用SPI接口的实现类时,启动类加载器是无法加载实现类的,这个时候就提供了线程上下文类加载器(Thread Context ClassLoader)加载实现类,ThreadContextClassLoader是可以通过java.lang.Thread#setContextClassLoader方法设置,如果没有设置默认为ApplicationClassLoader,这样双亲委派模型中ApplicationClassLoader->BootStrapClassLoader的委派,变成了BootStrapClassLoader->ApplicationClassLoader的委派,这样就打破了双亲委派的类加载模式。
在这里插入图片描述

http://www.hkea.cn/news/422817/

相关文章:

  • wordpress调起淘宝app什么叫做seo
  • 嘉兴做网站优化的公司网站维护公司
  • css层叠样式会不会影响打开网站的速度百度免费下载安装百度
  • 网站模板制作流程nba交易最新消息汇总
  • 近的网站在线客服系统网络优化工程师前景如何
  • 网站制作职业google入口
  • 广州网站 制作信科便宜网络营销软文范例500
  • 网站建设公开课长沙网站推广和优化
  • 建设网站的需求分析俄罗斯搜索引擎yandex推广入口
  • 可以做英文纵横字谜的网站搜狗网站收录入口
  • web前端开发是不是做网站百家号关键词排名优化
  • 夸克看网站要钱吗电商网站seo优化
  • 自己做网站排版138ip查询网域名解析
  • 东莞做网站 南城石佳2023网站推广入口
  • 广东省省建设厅网站郴州网站建设网络推广平台
  • 校园网站推广方案怎么做应用商店优化
  • 巩义网站建设网络营销公司是做什么的
  • 做网站基本教程一站式营销平台
  • 杭州模板网站建设电脑培训网上培训班
  • 大连做网站不错的公司怎样把广告放到百度
  • 网站上面带官网字样怎么做的网站设计的流程
  • 有个网站是做视频相册的网球排名即时最新排名
  • 论坛网站备案流程图优化大师怎么提交作业
  • 织梦政府网站模板百度在线入口
  • 专业做婚纱摄影网站会员制营销
  • 网站内容丰富互动营销平台
  • 阿里巴巴logo高清图谷歌seo网站推广
  • 网站如何做内链seo高手是怎样炼成的
  • 设计师个人网站建设怎样注册一个自己的平台
  • 徐州营销网站建设产品线上推广渠道