JVM学习笔记5:类加载深入解析与阶段分析

本文深入探讨Java类加载过程,包括主动使用与被动使用场景,类初始化时机,以及类加载的不同方式。通过具体代码示例,展示静态字段访问如何影响类的加载与初始化。

一、使用方式

1、主动使用

2、被动使用

所用的Java虚拟机实现必须在每个类或者接口被Java程序“首次主动使用”时,才初始化它们

二、主动使用

1、创建类的实例(new)

2、访问某个类或者接口的静态变量,或者对静态赋值

3、调用类的静态方法【2和3的本质是一样的,getStatic、putStatic、invokeStatic 助记符】

4、反射(Class.forName("com.test.child"))

5、初始化一个类的子类

6、Java虚拟机启动时被标记为启动类的类(包含main方法的类)

7、JDK 1.7开始提供动态语言支持

Java.lang.invoke.MethoHhandle实例的解析结果,没有初始化,就去初始化。

* 其他都是被动使用,都不会导致类的初始化(第三个阶段呦)

三、概念

1、类的加载:将类的.class 文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在内存中创建一个java.lang.Class 对象(规范并未说明Class对象位于哪里,HotSpot 虚拟机将其放在了方法区中)用来封装类在方法区内的数据结构 

四、加载.class文件的方式

1、从本地系统中直接加载

2、通过网络下载.class文件

3、从 zip、jar等归档文件中加载.class 文件

4、从转悠数据库提取.class文件(用的很少)

5、将Java源文件动态编译为.class文件(动态代理,运行期才生成)

jsp(html+Java)----》servelet(Java代码)----》class文件

五、被动使用的例子:

package com.shengsiyuan.jvm.classloder;
/*
* 对于静态字段,只有直接定义了该字段的类才会初始化
* 即只初始化该静态字段所在的类,当然包括他的父类,没有子类
* 可以分别main函数中的两行代码,在一起运行两行代码,不一样,因为初始化仅初始话一次
* My Parent1 static block
  hello world
  My Child1 static block
  welcome
* */

public class MyTest1 {
    public static void main(String[] args) {
        System.out.println(MyChild1.str);//只有父类的被初始化。
        /*
           My Parent1 static block
           hello world
         */
        //System.out.println(MyChild1.str2);
        /*
        My Parent1 static block
        My Child1 static block
        welcome
         */
    }
}
//静态代码块在加载的时候被执行
class Myparent1{
    public static String str ="hello world";
    static {
        System.out.println("My Parent1 static block");
    }

}
//初始化子类,父类一定被执行
class MyChild1 extends Myparent1{
    public static String str2 ="welcome";
    static {
        System.out.println("My Child1 static block");
    }
}


坚持

 

 

卷积神经网络(CNN)是针对多维网格数据(如图像、视频)设计的深度学习架构,其结构灵感来源于生物视觉系统对信息的分层处理机制。该模型通过局部连接、参数共享、层级特征提取等策略,有效捕获数据中的空间模式。以下从结构特性、工作机制及应用维度展开说明: **1. 局部连接卷积运算** 卷积层利用可学习的多维滤波器对输入进行扫描,每个滤波器仅作用于输入的一个有限邻域(称为感受野),通过线性加权非线性变换提取局部特征。这种设计使网络能够聚焦于相邻像素间的关联性,从而识别如边缘走向、色彩渐变等基础视觉模式。 **2. 参数共享机制** 同一卷积核在输入数据的整个空间范围内保持参数不变,大幅降低模型复杂度。这种设计赋予模型对平移变换的适应性:无论目标特征出现在图像的任何区域,均可由相同核函数检测,体现了特征位置无关性的建模思想。 **3. 特征降维空间鲁棒性** 池化层通过对局部区域进行聚合运算(如取最大值或均值)实现特征降维,在保留显著特征的同时提升模型对微小形变的容忍度。这种操作既减少了计算负荷,又增强了特征的几何不变性。 **4. 层级特征抽象体系** 深度CNN通过堆叠多个卷积-池化层构建特征提取金字塔。浅层网络捕获点线面等基础模式,中层网络组合形成纹理部件,深层网络则合成具有语义意义的对象轮廓。这种逐级递进的特征表达机制实现了从像素级信息到概念化表示的自动演进。 **5. 非线性扩展泛化控制** 通过激活函数(如ReLU及其变体)引入非线性变换,使网络能够拟合复杂决策曲面。为防止过拟合,常采用权重归一化、随机神经元失活等技术约束模型容量,提升在未知数据上的表现稳定性。 **6. 典型应用场景** - 视觉内容分类:对图像中的主体进行类别判定 - 实例定位识别:在复杂场景中标定特定目标的边界框及类别 - 像素级语义解析:对图像每个像素点进行语义标注 - 生物特征认证:基于面部特征的个体身份鉴别 - 医学图像判读:辅助病灶定位病理分析 - 结构化文本处理:循环神经网络结合处理序列标注任务 **7. 技术演进脉络** 早期理论雏形形成于1980年代,随着并行计算设备的发展大规模标注数据的出现,先后涌现出LeNet、AlexNet、VGG、ResNet等里程碑式架构。现代研究聚焦于注意力分配、跨层连接、卷积分解等方向,持续推动模型性能边界。 卷积神经网络通过其特有的空间特征提取范式,建立了从原始信号到高级语义表达的映射通路,已成为处理几何结构数据的标准框架,在工业界学术界均展现出重要价值。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
屋顶面板实例分割数据集 一、数据集基础信息 • 数据集名称:屋顶面板实例分割数据集 • 图片数量: 训练集:1559张图片 验证集:152张图片 测试集:95张图片 总计:1806张图片 • 训练集:1559张图片 • 验证集:152张图片 • 测试集:95张图片 • 总计:1806张图片 • 分类类别: panel(面板):屋顶上的面板结构,如太阳能板或其他安装组件。 roof(屋顶):建筑屋顶区域,用于定位和分割。 • panel(面板):屋顶上的面板结构,如太阳能板或其他安装组件。 • roof(屋顶):建筑屋顶区域,用于定位和分割。 • 标注格式:YOLO格式,包含实例分割的多边形标注,适用于实例分割任务。 • 数据格式:图片文件,来源于航拍或建筑图像,涵盖多种场景。 二、数据集适用场景 • 建筑施工检查:用于自动检测和分割屋顶上的面板,辅助建筑质量评估、维护和安装规划。 • 可再生能源管理:在太阳能发电系统中,识别屋顶太阳能板的位置和轮廓,优化能源部署和监控。 • 航拍图像分析:支持从空中图像中提取建筑屋顶信息,应用于城市规划、房地产评估和基础设施管理。 • 计算机视觉研究:为实例分割算法提供基准数据,推动AI在建筑和能源领域的创新应用。 三、数据集优势 • 精准实例分割标注:每个面板和屋顶实例均通过多边形标注精确定义轮廓,确保分割边界准确,支持细粒度分析。 • 类别聚焦实用性:专注于屋顶和面板两个关键类别,数据针对性强,直接适用于建筑和能源行业的实际需求。 • 数据多样性泛化性:涵盖不同环境下的屋顶和面板图像,增强模型在多变场景中的适应能力。 • 任务适配便捷:标注兼容主流深度学习框架(如YOLO),可快速集成到实例分割模型训练流程。 • 行业价值突出:助力自动化检测系统开发,提升建筑检查、能源管理和城市分析的效率准确性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值