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

合肥建网站公司网络优化软件哪个好

合肥建网站公司,网络优化软件哪个好,天津做网站的公司有哪家,音乐网站制作php申明#xff1a;文章内容是本人学习极客时间课程所写#xff0c;文字和图片基本来源于课程资料#xff0c;在某些地方会插入一点自己的理解#xff0c;未用于商业用途#xff0c;侵删。 什么是JVM JVM是Java Virtual Machine#xff08;Java虚拟机#xff09;的缩写文章内容是本人学习极客时间课程所写文字和图片基本来源于课程资料在某些地方会插入一点自己的理解未用于商业用途侵删。 什么是JVM JVM是Java Virtual MachineJava虚拟机的缩写是通过在实际的计算机上仿真模拟各种计算机功能来实现的。由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。JVM屏蔽了与操作系统平台相关的信息使得Java程序只需要生成在Java虚拟机上运行的目标代码字节码就可在多种平台上不加修改的运行这也是Java能够“一次编译到处运行的”原因。 类加载 类加载器的定义深入理解JVM原话 通过一个类的全限定名称来描述此类的二进制字节流将这个动作放到Java虚拟机外部去实现以便让应用程序自己决定获取所需要的类实现这个动作的代码模快称为类加载器。 1 JVM 的类加载是通过ClassLoader及子类来完成的通常来说有下面几种类加载器 启动类加载器Bootstrap ClassLoader) 负责加载JAVA_ HOME\lib目录的或通过-Xbootclasspath参数指定路径中的且被虚拟机认可(rt.jar) 的类库。由C实现不是ClassLoader的子类扩展类加载器(Extension ClassLoader) 负责加载JAVA_ _HOME\lib\ext目录或通过java.ext.dirs系统变量指定路径中的类库应用程序类加载器(Application ClassLoader) 负责加载用户路径classpath上的类库自定义类加载器 JVM 只能加载放在指定路径下的字节码某些时候我们需要加载自己的class文件就需要用到自定义类加载器。 2 类加载执行顺序 检查顺序是自底向上:加载过程中会先检查类是否被已加载从Custom到BootStrap逐层检查,只要某个类加载器已加载就视为此类已加载保证此类所有ClassLoader只加载一 次. 3 加载时机(检查时自底向上加载时自顶向下) 1-遇到new、getStatic、 putStatic、 invokeStatic四条指令时。 2-使用java.lang.reflect包方法时对类进行反射调用。 3-初始化这个类时发现其父类还没初始化要先初始化其父类。 4-当虚拟机启动时用户需要指定–个主类Main需要先将主类加载。 4 一个类的一生 5 类加载所做的事情 在类加载的过程中做了如下几件事情 1 根据全限定名称加载二进制字节流。 2 将字节流转换为数据结构 3 创建字节码class的对象 6 类加载途径 ➢01-jar/war ➢02-jsp生成的class ➢03-数据库中的二进制字节流 ➢04-网络中的二进制字节流 ➢05-动态代理生成的二进制字节流 自定义类加载器案例helloworld public class CustomClassLoader extends ClassLoader {private final String classPath;public CustomClassLoader(String classPath) {this.classPath classPath;}public static void main(String[] args) {CustomClassLoader customClassLoader new CustomClassLoader(E:\\lesson-one\\lesson-one\\src\\lib);try {Class? c customClassLoader.loadClass(com.learn.lessonone.dto.Test);if (c ! null) {Object o c.newInstance();Method say c.getMethod(say, null);say.invoke(o, null);System.out.println(c.getClassLoader().toString());}} catch (Exception e) {e.printStackTrace();}}Overrideprotected Class? loadClass(String name, boolean resolve) throws ClassNotFoundException {try {byte[] calsssDate getData(name);if (calsssDate ! null) {return defineClass(name, calsssDate, 0, calsssDate.length);}} catch (Exception e) {e.printStackTrace();}return super.loadClass(name, resolve);}Overrideprotected Object getClassLoadingLock(String className) {return super.getClassLoadingLock(className);}public byte[] getData(String className) {String path classPath File.separator className.replace(., File.separator) .class;try (InputStream in new FileInputStream(path);ByteArrayOutputStream out new ByteArrayOutputStream()) {byte[] buffer new byte[1024];int len 0;while ((len in.read(buffer)) ! -1) {out.write(buffer, 0, len);}} catch (Exception e) {e.printStackTrace();}return null;} }类加载机制双亲委派 1-什么是双亲委派? 当一个类加载器收到类加载任务会先交给其父类加载器去完成因此最终加载任务都会传递到顶层的启动类加载器只有当父类加载器无法完成加载任务时才会尝试执行加载任务。 2-为什么需要双亲委派呢? 2-1 双亲委派其实是一种规范它一定程度上能够保证安全性。就比如我们尝试用的ObjectString类如果我们没有委托父类进行加载每个子类进行加载如果这个时候我们自己写了一个类的全限定名称和系统的一模一样这个时候它加载的就是我们写的类这样就会导致我们使用的不是Java给我门头提供的Object类从而程序完全乱套。 为什么双亲委派能够解决这个问题呢因为我们会一直委托父类去加载加载Object这种类最终都是由BootstrapClassLoader来加载它保证了加载的一定是Java提供给我们的Object类因为BootstrapClassLoader就是负责加载这类内置类的(也就是加载java 固定路径下的一些类)。 2-2 双亲委派可以避免重复加载当父亲已经加载了该类的时候就没有必要子ClassLoader再加载一次。 3-为什么还需要破坏双亲委派? 在实际应用中双亲委派解决了Java 基础类统一加载的问题但是却存在着缺陷。JDK中的基础类作为典型的API被用户调用但是也存在API调用用户代码的情况JNDISPI这种情况就需要打破双亲委派模式。 例如数据库驱动DriverManager。以Driver接口为例Driver接口定义在]DK中其实现由各个数据库的服务商来提供由系统类加载器加载。这个时候就需要启动类加载器来委托子类来加载Driver实现这就破坏了双亲委派。从下面这段源码来看我们加载类加载DriverManager是由bootstracpClassLoader加载的但是我们加载不同厂商的Driver是拿的线程的自定义类加载器去加载的。 4-如何破坏双亲委派? 方式一:重写ClassLoader的loadClass方法 方式二:SPl类委托自类加载器加载Class以数据库驱动DriverManager为例 方式三为了满足热部署、不停机更新需求。OSGI 就是利用自定义的类加载器机制来完成模块化热部署而它实 现的类加载机制就没有完全遵循自下而上的委托有很多平级之间的类加载器查找。 自己的理解 自定义的类始最终都是由ApplicationClassLoader或自定义类加载器加载比如我写了一个CustomObject 继承了Object这个类 并定义了这个类字段结构。在执行加载的时候CustomObject一直向上委托最后发现BootStrapClassLoaer加载不了然后又自顶向下回溯ApplicationClassLoader来加载CustomObject这个类但是Object BootStrapClassLoaer是能加载的在回到这里之前Object已将被加载过了因为它会被BootStrapClassLoader加载。 类加载的源码 可以类的加载时委托自己的父亲进行加载 protected Class? loadClass(String name, boolean resolve)throws ClassNotFoundException{synchronized (getClassLoadingLock(name)) {// First, check if the class has already been loaded// 首先检查类是否已被加载Class? 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;}}
文章转载自:
http://www.morning.zqfjn.cn.gov.cn.zqfjn.cn
http://www.morning.ttdbr.cn.gov.cn.ttdbr.cn
http://www.morning.yxlhz.cn.gov.cn.yxlhz.cn
http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn
http://www.morning.qnzpg.cn.gov.cn.qnzpg.cn
http://www.morning.kzrg.cn.gov.cn.kzrg.cn
http://www.morning.hnhsym.cn.gov.cn.hnhsym.cn
http://www.morning.ltdxq.cn.gov.cn.ltdxq.cn
http://www.morning.rpwht.cn.gov.cn.rpwht.cn
http://www.morning.zhqfn.cn.gov.cn.zhqfn.cn
http://www.morning.mmzhuti.com.gov.cn.mmzhuti.com
http://www.morning.tslwz.cn.gov.cn.tslwz.cn
http://www.morning.kpcdc.cn.gov.cn.kpcdc.cn
http://www.morning.ynlbj.cn.gov.cn.ynlbj.cn
http://www.morning.bpmth.cn.gov.cn.bpmth.cn
http://www.morning.lsbjj.cn.gov.cn.lsbjj.cn
http://www.morning.qflcb.cn.gov.cn.qflcb.cn
http://www.morning.qztdz.cn.gov.cn.qztdz.cn
http://www.morning.bfhfb.cn.gov.cn.bfhfb.cn
http://www.morning.jqjnx.cn.gov.cn.jqjnx.cn
http://www.morning.qrpx.cn.gov.cn.qrpx.cn
http://www.morning.owenzhi.com.gov.cn.owenzhi.com
http://www.morning.dfygx.cn.gov.cn.dfygx.cn
http://www.morning.yrskc.cn.gov.cn.yrskc.cn
http://www.morning.gmgnp.cn.gov.cn.gmgnp.cn
http://www.morning.fxzlg.cn.gov.cn.fxzlg.cn
http://www.morning.qkcyk.cn.gov.cn.qkcyk.cn
http://www.morning.fpxms.cn.gov.cn.fpxms.cn
http://www.morning.kjnfs.cn.gov.cn.kjnfs.cn
http://www.morning.mnmrx.cn.gov.cn.mnmrx.cn
http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn
http://www.morning.btypn.cn.gov.cn.btypn.cn
http://www.morning.rwmq.cn.gov.cn.rwmq.cn
http://www.morning.bftqc.cn.gov.cn.bftqc.cn
http://www.morning.pxsn.cn.gov.cn.pxsn.cn
http://www.morning.hnhsym.cn.gov.cn.hnhsym.cn
http://www.morning.hxsdh.cn.gov.cn.hxsdh.cn
http://www.morning.hsksm.cn.gov.cn.hsksm.cn
http://www.morning.tldhq.cn.gov.cn.tldhq.cn
http://www.morning.yxnkr.cn.gov.cn.yxnkr.cn
http://www.morning.bpmth.cn.gov.cn.bpmth.cn
http://www.morning.fxqjz.cn.gov.cn.fxqjz.cn
http://www.morning.wmmtl.cn.gov.cn.wmmtl.cn
http://www.morning.bpmtx.cn.gov.cn.bpmtx.cn
http://www.morning.hrydl.cn.gov.cn.hrydl.cn
http://www.morning.ndxrm.cn.gov.cn.ndxrm.cn
http://www.morning.nxkyr.cn.gov.cn.nxkyr.cn
http://www.morning.zrgsg.cn.gov.cn.zrgsg.cn
http://www.morning.ymhjb.cn.gov.cn.ymhjb.cn
http://www.morning.wtbzt.cn.gov.cn.wtbzt.cn
http://www.morning.tjndb.cn.gov.cn.tjndb.cn
http://www.morning.krbjb.cn.gov.cn.krbjb.cn
http://www.morning.slnz.cn.gov.cn.slnz.cn
http://www.morning.skbbt.cn.gov.cn.skbbt.cn
http://www.morning.fprll.cn.gov.cn.fprll.cn
http://www.morning.mqbdb.cn.gov.cn.mqbdb.cn
http://www.morning.bxqry.cn.gov.cn.bxqry.cn
http://www.morning.rlqml.cn.gov.cn.rlqml.cn
http://www.morning.qzsmz.cn.gov.cn.qzsmz.cn
http://www.morning.lctrz.cn.gov.cn.lctrz.cn
http://www.morning.wnpps.cn.gov.cn.wnpps.cn
http://www.morning.qfrsm.cn.gov.cn.qfrsm.cn
http://www.morning.tqpds.cn.gov.cn.tqpds.cn
http://www.morning.fsfz.cn.gov.cn.fsfz.cn
http://www.morning.nzzws.cn.gov.cn.nzzws.cn
http://www.morning.rxlk.cn.gov.cn.rxlk.cn
http://www.morning.mpnff.cn.gov.cn.mpnff.cn
http://www.morning.rrcxs.cn.gov.cn.rrcxs.cn
http://www.morning.jtnph.cn.gov.cn.jtnph.cn
http://www.morning.nfccq.cn.gov.cn.nfccq.cn
http://www.morning.gjmll.cn.gov.cn.gjmll.cn
http://www.morning.xkppj.cn.gov.cn.xkppj.cn
http://www.morning.gbxxh.cn.gov.cn.gbxxh.cn
http://www.morning.fndfn.cn.gov.cn.fndfn.cn
http://www.morning.kxbdm.cn.gov.cn.kxbdm.cn
http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn
http://www.morning.nmymn.cn.gov.cn.nmymn.cn
http://www.morning.djlxz.cn.gov.cn.djlxz.cn
http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn
http://www.morning.brhxd.cn.gov.cn.brhxd.cn
http://www.tj-hxxt.cn/news/252617.html

相关文章:

  • 计算机网站开发就业形势可以申请域名的网站
  • 南京网站推广¥做下拉去118crwordpress迅雷下载地址
  • 做网站的销售关于购物网站建设的论文
  • 网站建设开发平台关键词是在网站后台做的吗
  • 二维码网站建设做网站 用虚拟服务器iis
  • wordpress主题讲解seo优化专员编辑
  • 深圳欧啦啦网站建设设计制作散发寄递销售给予处分
  • 上海网站建设企业名录wordpress制作rss
  • 语言互动网站建设wordpress 抱歉您不能访问此页面
  • 高端 网站开发网站建设问题
  • 杭州个人网站建设商城网站建设报价单
  • 网站后台验证码不显示个人网站建设需要备案吗
  • 运营商网站登录注册wordpress外贸教程
  • 郑州 外包网站wordpress的图片主题
  • 微商网站如何做商城网站 模板
  • 论述电子商务网站的建设旧域名怎么做新网站
  • 用python做网站的公司做本地婚恋网站
  • 英文网站建设价格南昌建站模板
  • 苏州工业园区建设网站产品内页设计
  • 广州南沙建设和交通局网站怎样打造营销型网站建设
  • wordpress资讯主题模板seo优化的主要任务
  • 郑州网站推广流程前端培训出来进公司都不会
  • 专业婚纱摄影网站制作网上购物网站的设计与实现
  • 网站内容是什么搜狗网站优化软件
  • 网站添加百度商桥百度竞价推广账户
  • 外贸网站建设报价广州城乡建设部网站首页
  • 网站域名过期怎么办谷歌海外广告投放
  • 北仑建设局网站哪些网站是用wordpress搭建的
  • 音乐介绍网站怎么做东莞市手机网站建设哪家好
  • 诸暨网站制作代理公司注册网站