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

如何制作班级网站电商是做什么的

如何制作班级网站,电商是做什么的,厦门品牌网站设计,手机网站怎样排版最好一、加载(Loading)目标:把字节码文件(.class)“读入 JVM”,生成类的 “半成品”(Class 对象)。Bootstrap ClassLoader(启动类加载器):负责加载 JV…

一、加载(Loading)

目标:把字节码文件(.class)“读入 JVM”,生成类的 “半成品”(Class 对象)。

  • Bootstrap ClassLoader(启动类加载器)
    • 负责加载 JVM 核心类库(如 java.lang 包),用 C++ 实现(不同 JVM 有差异),无对应的 Java 类。
  • Platform ClassLoader(平台类加载器)
    • 加载 Java 标准库扩展(如 java.sqljavax 包),JDK 9 后从 Extension ClassLoader 改名而来。
  • App ClassLoader(应用类加载器):  
    • 加载项目自己写的类、第三方库(classpath 路径下的类),是开发中最常用的加载器。

类加载器(不同 JDK 版本的差异)

  • 低版本 JDK
    • 启动类加载器:负责加载rt.jar(包含 Java 核心类库)中的类。
    • 扩展类加载器:负责加载ext目录下的扩展类库中的类。
    • 系统类加载器(System ClassLoader):负责加载classpath中程序员自己编写的类。
  • 高版本 JDK(9+,引入模块化思想)
    • 启动类加载器:仍负责加载 JDK 核心类库。
    • 平台类加载器:替代低版本的扩展类加载器,负责加载 Java 平台扩展的非核心类。
    • 应用类加载器:替代低版本的系统类加载器,负责加载classpath中的类。
    • 变化:rt.jarext目录消失,类库被拆分为多个模块(.jmod文件),不同模块由不同类加载器加载。

流程:类加载器按 双亲委派机制 工作(优先让父加载器尝试加载,保证核心类不被篡改),最终找到字节码文件,读入内存并生成 Class 对象,存入方法区。

二、链接(Linking)

目标:把 “半成品类” 变成可执行的 “成品”,拆成 验证、准备、解析 三步:

1. 验证(Verify)
  • 检查字节码是否符合 JVM 规范(比如魔数是否是 0xCAFEBABE、语法是否合法),防止恶意 / 错误字节码搞崩 JVM。
2. 准备(Prepare)
  • 给类的静态变量分配内存 + 设置默认值(比如 static int num = 10,准备阶段会先设 num = 0,真正赋值在初始化阶段)。
  • 注意:静态常量(static final)直接赋 “用户写的值”(比如 static final int num = 10,准备阶段就会设 num = 10 )。
3. 解析(Resolve)
  • 把符号引用替换成直接引用:比如代码里写 Object obj = new Object(),编译后是 “符号引用”(类似 “找名为 Object 的类”),解析阶段会换成内存地址(直接引用),让 JVM 真正能找到对应的类。

三、初始化(Initialization)

目标:执行类的静态代码块、给静态变量赋 “用户写的值”(比如 static int num = 10 在这里真正赋值为 10 )。

  • 触发时机:首次用类的静态成员、创建对象、反射调用等(遵循 主动使用规则 )。
  • 流程:按代码顺序执行静态变量赋值、静态代码块,完成后类才算真正 “可用”。

关键总结

  1. 类加载器:用 “双亲委派” 保证类加载安全,避免核心类被篡改。
  2. 链接阶段:验证字节码合法性 → 给静态变量分配内存 → 把符号引用转成内存地址。
  3. 初始化:执行静态逻辑,给静态变量赋最终值,让类真正 “激活”。

类加载器获取

(1)方式 1:通过当前类的 getClassLoader() 获取

ClassLoader appClassLoader = ReflectTest.class.getClassLoader();

  • 逻辑
    • ReflectTest.class 拿到当前类的 Class 对象,调用 getClassLoader(),获取 “加载当前类的类加载器”。
    • 因 ReflectTest是项目 classpath 内的自定义类,加载它的就是 应用类加载器
  • 作用:验证 “自定义类由应用类加载器加载”。

(2)方式 2:通过 ClassLoader.getSystemClassLoader() 获取

ClassLoader appClassLoader2 = ClassLoader.getSystemClassLoader();

  • 逻辑
    • ClassLoader 是类加载器基,静态方法 getSystemClassLoader() 直接返回 应用类加载器
    • 这是 Java 提供的 “直接获取应用类加载器” 的标准写法。
  • 作用:更直接获取应用类加载器,与方式 1 对比,结果一致。

(3)方式 3:通过线程上下文类加载器获取

ClassLoader appClassLoader3 = Thread.currentThread().getContextClassLoader();
System.out.println("应用类加载器:" + appClassLoader3);

  • 逻辑
    • 每个 Java 线程默认有 “上下文类加载器(Context ClassLoader)”,默认就是 应用类加载器
    • 通过 Thread.currentThread() 拿到当前线程,调用 getContextClassLoader() 获取。
  • 作用:框架(如 Tomcat )中常用,可动态修改上下文类加载器,实现复杂加载逻辑(此处演示默认情况 )。
http://www.dtcms.com/wzjs/131043.html

相关文章:

  • 做网站商城多少钱舆情分析网站免费
  • 怎么给自己网站做推广中国新闻今日头条
  • 云空间可以做网站口碑营销的主要手段有哪些
  • 风水网站建设的策划书浅议网络营销论文
  • 龙岩天宫山天气预报手机端关键词排名优化软件
  • 360免费建手机网站可以看任何网站的浏览器
  • 90设计网兼职深圳百度关键字优化
  • 上海做网站比较有名的公司个人网站设计模板
  • 管理培训课程昆明关键词优化
  • wordpress 联系我们 制作百度爱采购优化排名软件
  • 青岛移动网站建设东莞优化网站关键词优化
  • 残联网站建设概况谷歌浏览器网页版进入
  • 新媒体网站建设滕州百度推广
  • wordpress 主题中心福州seo推广服务
  • 十堰做网站的有哪些最近三天的国内新闻
  • 给企业做网站 工作百度最新版下载
  • 抖音推广方案营销型网站建设优化建站
  • 凡科网做的网站保存后就上传了吗河北百度推广电话
  • 网站建设维保合同范本网站友链交换平台
  • 工商营业执照注册公司seo的课谁讲的好
  • 普通电脑可以做网站服务器吗seo排名第一
  • 做网站后台怎么搭建收录查询api
  • 莱芜网站开发关于软文营销的案例
  • 榆林网站建设电话站长工具seo综合
  • 扬州网站建设培训长春头条新闻今天
  • 长沙微信网站开发电子商务软文写作
  • 金融棋牌网站建设网站按天扣费优化推广
  • 网站优化说明免费推广seo
  • 网站建设公司优势网络营销的5种方式
  • 动态ip地址做网站营销培训讲师