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

有帮忙做ppt的网站或人吗中国建设银行个人客户

有帮忙做ppt的网站或人吗,中国建设银行个人客户,外贸推广网站有哪些,哪里网站建设公司比较好热部署初探与双亲委派机制 一、热部署初探 ​ 热部署就是在不重启服务的情况下,无需重新启动整个应用,就能对代码、配置等进行更新并使新的更改在服务中生效。以下代码可以打破双亲委派机制,利用类加载器的隔离实现热部署。可分为以下三步进…

热部署初探与双亲委派机制

一、热部署初探

​ 热部署就是在不重启服务的情况下,无需重新启动整个应用,就能对代码、配置等进行更新并使新的更改在服务中生效。以下代码可以打破双亲委派机制,利用类加载器的隔离实现热部署。可分为以下三步进行:

  1. 自定义类加载器

    public class HotClassLoader extends ClassLoader {// 1. 指定父类加载器(默认系统类加载器)public HotClassLoader(ClassLoader parent) {super(parent);}// 2. 核心方法:从字节码加载类public Class<?> loadByte(byte[] classByte) {return defineClass(null, classByte, 0, classByte.length);}
    }
    
  2. 加载类定义

    public class HotDemo {public void printVersion() {System.out.println("【原始版本】9.0");}public static void main(String[] args) throws Exception {}
    }
    
  3. 测试类

    public class HotLoadTest {public static void main(String[] args) throws Exception {// 注意: 这是一个循环。while (true) {// 1. 读取更新后的class文件byte[] bytes = Files.readAllBytes(Paths.get("E:\\IDEAProjects\\JavaBasicKnowladge\\out\\production\\JavaBasicKnowladge\\orverLoad\\HotDemo.class"));// 2. 用自定义加载器加载HotClassLoader loader = new HotClassLoader(HotLoadTest.class.getClassLoader());Class<?> clazz = loader.loadByte(bytes);// 3. 反射调用方法Object obj = clazz.getDeclaredConstructor().newInstance();clazz.getMethod("printVersion").invoke(obj);Thread.sleep(3000); // 3秒后重新加载}}
    }
    
热部署机制:
  1. 打破类加载缓存:通常来说,类加载器会对已加载的类进行缓存,减少重复创建。上面程序每次新建HotClassLoader实例,利用不同类加载器的独立命名空间,即使类名相同。JVM也会将其视为不同的类,从而绕过缓存机制。(类加载器的命名空间(Namespace) 是JVM用于隔离不同类加载器加载的类的核心机制。JVM判断类的唯一性,通过类的全限定名与加载该类的加载器实例判断。
  2. 动态加载字节码:loadByte()方法直接调用defineClass(),这一步绕过了传统的类加载流程,将外部传入的最新字节码动态转换为Class对象。这使得修改后的类无需重启即可被加载。
  3. 隔离父类加载器:显式指定父加载器,并确保目标类未被父加载器加载过,避免双亲委派机制导致无法重新加载。
二、打破双亲委派机制
  1. 打破双亲委派机制类加载器

    public class BreakDelegateLoader extends ClassLoader {// 必须重写loadClass而非findClass@Overridepublic Class<?> loadClass(String name) throws ClassNotFoundException {// 1. 优先检查是否已加载Class<?> c = findLoadedClass(name);if (c != null) {return c;}// 2. 针对特定包名打破委派if (name.startsWith("com.example.breaking")) {return findClass(name);}// 3. 其他类仍走双亲委派return super.loadClass(name);}@Overrideprotected Class<?> findClass(String name) throws ClassNotFoundException {try {byte[] data = loadClassData(name);return defineClass(name, data, 0, data.length);} catch (IOException e) {throw new ClassNotFoundException(name);}}private byte[] loadClassData(String className) throws IOException {String path = className.replace('.', '/') + ".class";try (InputStream ins = getClass().getClassLoader().getResourceAsStream(path)) {// Java 8 兼容写法ByteArrayOutputStream buffer = new ByteArrayOutputStream();byte[] data = new byte[1024];int bytesRead;while ((bytesRead = ins.read(data, 0, data.length)) != -1) {buffer.write(data, 0, bytesRead);}return buffer.toByteArray();}}
    }
    
  2. 加载类

    public class TestClass {static {System.out.println("【类加载】初始化完成,加载器:" +TestClass.class.getClassLoader());}// 添加构造方法调用public TestClass() {System.out.println("实例已创建");}
    }
    
  3. 测试类

    public class BB {public static void main(String[] args) throws Exception {// 使用自定义加载器优先加载BreakDelegateLoader loader = new BreakDelegateLoader();// 必须通过自定义加载器触发首次加载Class<?> c1 = loader.loadClass("com.example.breaking.TestClass");c1.newInstance(); // 触发初始化// 再用系统加载器加载Class<?> c2 = Class.forName("com.example.breaking.TestClass");c2.newInstance();System.out.println("是否为同一个类: " + (c1 == c2)); // 应为false}
    }
    

示意图:
在这里插入图片描述

机制优势典型场景
双亲委派安全性、类唯一性、避免冲突常规Java应用、核心类库加载
打破双亲委派灵活性、隔离性、动态性Web容器、热部署、SPI、插件化架构

核心权衡:在安全稳定灵活扩展之间取舍。双亲委派是默认的“安全模式”,而打破它是为了满足特定场景下的高级需求。理解两者的优劣,才能合理设计类加载策略。

http://www.dtcms.com/wzjs/569437.html

相关文章:

  • 农业科技公司网站模板如果网站没有做icp备案会被处罚
  • 网站开发毕业实训总结陕西省住房建设部官方网站一建
  • 百度上找不到网站wordpress取消自动更新
  • 网站开发毕设ppt主机宝怎么设置网站主页
  • 江苏高端品牌网站建设上海广告传媒公司一览表
  • 临沂城乡建设管理局网站集团有限公司
  • 男人做爽的免费网站怎么用ps做静态网站
  • 网页设计教程ps女子医院网站优化公司
  • 做淘宝类网站的步骤网站制作多少钱
  • 建设银行客户端网站百度热搜关键词排行榜
  • 惠州有没有做网站餐饮网页设计模板
  • 网站后台发布了但看不见小蚁人网站建设
  • 四川宜宾建设局官方网站文化传媒建设网站
  • 做兼职的网站策划书云企网站建设开发
  • 怎么做购物平台网站枣阳网站开发
  • 简单的企业小网站php驾校网站源码
  • 做网站技术方法有vip视频网站如何做
  • 深圳网站建设公司佰达无锡阿里巴巴做网站
  • 做公司网站首页河北一级造价师
  • 外贸网站优化谷歌关键词排名外包怎样看一个网站是哪个公司做的
  • 特级a做爰网站长沙有实力的关键词优化价格
  • 简述商业网站建设的流程中文企业网站模板下载
  • 如何网站数据备份小区网站建设方案怎么写
  • 网站水印设置作教程在线crm什么软件好
  • wordpress主题 站长怎样在凡科免费做网站
  • 个人做旅游网站建设银行租房平台网站6
  • 网站建设的进度网站静态化的处理
  • 优秀网站制作深圳形象设计公司
  • 自主式响应网站手机百度助手
  • 黑龙江生产建设兵团各连网站什么是域名 空间 网站源代码