java 关于类加载的一道面试题

二次规划问题(qp)和序列二次规划问题(sqp)的简单理解 当二次规划的约束为非线性约束时,通常会采用sqp进行求解,用连续求解qp的方法来得到非线性约束条件下的最优解,上述的qpoases和osqp均无法直接求解非线性约束问题,所以如果使用这两个库的话,注意,sqp是结果,而不是原因,只有在非线性约束的情况下才会考虑sqp求解,如果问题本身就是线性约束,则直接用qp解就行。对于工程师而言,我们在编写代码的时候,并不关心二次规划问题的求解细节,所以一般是把二次规划问题建立好后,直接调用三方库进行求解。因为约束为非线性约束,所以先将约束进行线性化,约束原方程为。 阅读详情

 这道面试题,知识点是,java在加载类的时候,有一个准备阶段,准备阶段会给类的静态成员变量赋java默认的初始值。

再走到类的初始化阶段,才会给类的静态成员变量赋程序员给的值。

package nine4one;

/**
 * java虚拟机将在以下四种情况结束生命周期
 * 1.执行了System.exit();方法,0是正常退出
 * 2.程序执行正常结束
 * 3.程序在执行过程中遇到了异常或者错误而异常终止
 * 4.由于操作系统出现错误而导致java虚拟机进程终止
 * -------------------------
 * 类的加载、连接与初始化
 * 1.加载:查找并加载类的二进制数据
 * 2.连接:
 *  -验证:确保被加载的类的正确性;
 *  -准备:为类的静态变量分配内存,并将其初始化为默认值
 *  -解析:把类中的符号引用转换为直接引用
 * 3.初始化:为类的静态变量赋予正确的初始值
 * 
 * --------------------------
 * java程序对类的使用方式可分为两种:
 * 1.主动使用
 *  -创建类的实例
 *  -访问某个类或接口的静态变量, 或者对该静态变量赋值
 *  -调用类的静态方法
 *  -反射,如:Class.forName("");
 *  -初始化一个类的子类
 *  -java虚拟机启动时被标明为启动类的类
 * 2.被动使用
 * 所有的java虚拟机实现必须在每个类或接口被java程序“首次主动使用”时,才初始化它们。
 * 
 * ----------------------------
 * 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在
 * 堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。
 * 
 * ---------------------------
 * 加载class文件的方式
 * -从本地系统中直接加载v
 * -通过网络下载.class文件
 * -从zip,jar等归档文件中加载.class文件
 * -从专有数据库中提取.class文件
 * -将java源文件动态编译为.class文件
 * 
 * ----------------------------
 * 类的加载的最终产品是位于堆区中的Class对象
 * Class对象封装了类在方法区内的数据结构,并且向java程序员提供了访问方法区内的数据结构的接口
 * 
 * ----------------------------
 * 有两种类型的类加载器
 * -java虚拟机自带的加载器
 * 		根类加载器(Bootstrap),c++实现
 * 		扩展类加载器(Extension),java实现
 * 		系统类加载器(System)又称应用加载器,java实现
 * -用户自定义类加载器
 * 		java.lang.ClassLoader的子类
 * 		用户可以定制类的加载方式 
 * 类加载器并不需要等到某个类被“首次主动使用”时再加载它
 * ----------------------------------------
 * jvm规范允许类加载器在预料某个类将要被使用时就预先加载它,如果
 * 在预先加载的过程中遇到了.class文件缺失或存在错误,类加载器必须在
 * 程序首次主动使用该类时才报告错误,(LinkageError错误)
 * 
 * 如果这个类一直没有被程序主动使用,那么类加载器就不会报告错误
 * 
 * 类的验证:
 * 	-类文件的结构检查     
 * 	-语义检查
 * 	-字节码验证
 *  -二进制兼容性的验证
 * 	类被加载后,就进入连接阶段。连接就是将已经读入到内存的类的二进制数据
 * 合并到虚拟机的运行时环境中去。
 * -----------------------------------------
 * 类的准备:
 *  在准备阶段,java虚拟机为类的静态变量分配内存,并设置默认的初始值。
 * 类的解析:
 * 	在解析阶段,java虚拟机会把类的二进制数据中的符号引用替换为直接引用。
 * 类的初始化:
 * 	在初始化阶段,java虚拟机执行类的初始化语句,为类的静态变量赋予初始值,
 *。在程序中,静态变量的初始化有两种途径:1,在静态变量的声明处初始化;2,在
 *静态代码块中初始化。
 *
 * 
 * 
 * @author 180719-2
 *
 */
public class Singleton {

	
	//private static Singleton singleton = new Singleton();
	public static int count1;
	public static int count2 = 0;
	private static Singleton singleton = new Singleton();
	
	public Singleton(){
		count1++;
		count2++;
	}
	
	public static Singleton getInstance(){
		return singleton;
	}
}


package nine4one;

public class Test{
	public static void main(String[] args) throws Exception{
		Singleton singleton = Singleton.getInstance();
		System.out.println("count1 = " + singleton.count1);
		System.out.println("count2 = " + singleton.count2);
		
		
//		Class clazz = Class.forName("java.lang.String");
//		System.out.println(clazz.getClassLoader());
//		
//		Class clazz2 = Class.forName("eightsix2.CglibProxyFactory");
//		System.out.println(clazz2.getClassLoader());
	}
}

 

109. 使用 SAP UI5 FileUploader 控件上传本地文件 我们可以使用SAPUI5提供的控件,将本地文件上传到远端服务器进行存储。远端服务器负责接收上传的文件的逻辑,可以采取Java,Node.js或者ABAP等任意的编程语言实现。本地文件上传也是最终用户同文件服务器交互的重要手段之一,因此文件上传这个主题,本教程会通过若干篇文章连续进行介绍。笔者还另外实现了一个不通过SAPUI5FileUploader控件,而是直接用HTML原生的input。先看本步骤完成后实现的场景。本步骤完整的源代码位置。进入目录109,运行命令行。... 阅读详情

相关推荐

C语言--第三大的数

第三大的数 给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数. 示例1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 . ...

loreal8的博客 2132

Java类加载过程面试总结

Java 虚拟机一般使用 Java 类的流程为:首先将开发者编写的 Java 源代码(.java文件)编译成 Java 字节码(.class文件),然后类加载器会读取这个 .class 文件,并转换成 java.lang.Class 的实例。有了该 Class 实例后,Java 虚拟机可以利用 newInstance 之类的方法创建其真正对象了。

m0_51431003的博客 606

信贷风控分析—征信数据源

详解企业和个人征信报告,以及信贷风控之指标构造案例参考

csdnbt的博客 3639

Java-JVM-面试题

加载: 将字节码文件中的.class文件,通过类加载器,加载进运行时数据区的方法区内,并创建一个大的Class对象链接:(验证、准备、解析)① 验证(比如说验证字节码文件开头是CAFFBABA,版本号等)② 准备(为类变量赋予默认的初始化值, 使用static+final修饰, 且显示赋值不涉及到方法或者构造器调用的基本数据类型或者String类型的显示赋值都在准备阶段)③ 解析:将类中的符号引用变成直接引用(符号引号在字节码文件的常量池中)

weixin_42460596的博客 2869

vcs覆盖率相关

选择要查看的覆盖率点,右键选择 show xxx tests;

qq_40571921的博客 2393

Matlab实战:用递归最小二乘法(RLS)搞定动态系统参数辨识(附完整代码)

本文通过Matlab实战,详细介绍了如何利用递归最小二乘法(RLS)进行动态系统参数辨识。文章从理论优势切入,提供了完整的仿真数据生成、RLS算法核心实现代码,并对参数收敛过程、预测误差及不同遗忘因子的影响进行了可视化分析与性能评估,为工程实践提供了清晰的指南。

weixin_29035405的博客 504

面试被问到“类的加载过程”,怎么回答可以脱颖而出?

除了类的信息外,方法区中还会存放运行时常量池的信息,可能还包括字符串字面量和数字常量(这部分常量信息是class文件中常量池部分的内存映射)。JVM类加载器包括两种,分别为引导类加载器(Bootstrap ClassLoader)和自定义类加载器(User-Defined ClassLoader)。类的初始化步骤,这看似非常基础的话题,却实打实的难住了很多人,还总结了更为深入JVM的类的加载过程、类加载器的分类、类加载器的作用。3、应用程序类加载器(系统类加载器)1、启动类加载器(引导类加载器)

m0_73311735的博客 149

【系统架构设计师-2026上半年真题】综合知识-参考答案及详解(75题完全回忆版)

【系统架构设计师-2026上半年真题】综合知识-参考答案及详解(75题完全回忆版)

数据知道的博客 3103

java类的加载过程面试题,一起看看这些大厂面试真题查漏补缺吧

Spring让我们可以更快,更轻松,更安全地进行Java编程。Spring对速度,简单性和生产率的关注使其成为世界上最受欢迎的Java框架。IOC源码主要流程bean相互依赖注入问题为什么要使用springSpring事务在controller层不起作用的原因如何用基于 Java 配置的方式配置 SpringSpring的几种注入bean的方式如果你平时只会一些CRUD,或者你都没有读过源码,面试大厂肯定是要熄火的!!!下面,我为大家分享这份谷歌大神撸的Spring源码笔记。

m0_61408947的博客 533

git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案

本文主要介绍了git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案,希望能对使用git的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 23万+

Android系统解决-授予管理所有文件的权限问题

Android版本一直在加,Android9/Android10/Android11/Android12/Android13/Android14/Android15 , 客户app 也在不断适配,但是存在特别是定制产品中,客户不愿意适配,啥问题都让系统解决,绕过一定机制、实现。这里说的就是一个常见的常见需求:Android13 上面,客户要求默认授予管理所有文件的权限,如下:问题是机器重启后这个权限仍需要重新打开才行,那就是每次开机使用某些功能前都需要授权一次。是的ADB对应命令。

十年饮冰,难凉热血 2541

【面试】一文读懂Java类加载全过程

Java类加载过程是Java虚拟机(JVM)将.class文件中的字节码装载到内存中,并对字节码进行验证、准备和初始化的过程。这个过程涉及到了Java虚拟机的类加载器、运行时数据区等多个方面,其中包含了很多的细节和技术问题。A: 类加载是将Java字节码文件加载到JVM中,并在运行期间动态生成Java类的过程。A: 类加载器的命名空间是指每个类加载器所加载的类都拥有独立的命名空间,相同名称的类可以存在于不同的命名空间中。

DreamSun的博客 788

芯片原厂linux驱动开发的分享

大家好,我是XX,来自湖南XX学院,电子信息18级,也曾在创新基地控制组学习过两三年,毕业后就职于一家芯片原厂的解决方案部,担任驱动工程师的职位,算上实习期,我的工作时长已有两年。在此我想将这两年期间学习与积累到的一些经验输出出来,与大家一同分享。知识面有限,只能简单介绍一些驱动开发方向的一些经验,且由于经验尚浅,文中难免会有一些疏漏和错误之处,还请大家积极地批评指正。

嵌入式技术开发 849

一道题看出你对Java类加载机制的理解深浅,网易Java工程师面试题

这段时间网络刮起了爆款Java面试题面试题,入阿里、腾讯、百度等!要考察Java工程师全方位基础知识。从网上寻找和观察思索良久,终于找出几道。以下这道题是其中一道基础题目,考察Java类加载机制。 例题 题目:请手写出这个实例的运行结果。 请各位大神解答。 相信这里有很多学习java的小伙伴,我创立了一个2000人学习扣群,479121291。每晚都有java的直播课程。无论是初级还...

java03_15的博客 198

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

从一道面试题来认识Java类加载过程

下边是一道笔试题: class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static int count2 = 0; private SingleTon() { count1++; ...

总结经验,与君共勉 441

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

从一道面试题来认识java类加载时机与过程

说明:本文的内容是看了《深入理解Java虚拟机: JVM高级特性与最佳实践》后为加印象和理解,便记录了重要的内容。 1 开门见山 以前曾经看到过一个java的 面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下: class SingleTon { private static SingleTon singleTon = new SingleTo...

good575654643的博客 148

从一道面试题来认识java类加载时机与过程【转】

说明:本文的内容是看了《深入理解Java虚拟机:JVM高级特性与最佳实践》后为加印象和理解,便记录了重要的内容。 1 开门见山 以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下: class SingleTon { private static SingleTon singleTon = ...

dianzhouyu2189的博客 141

记录:一道java类加载时机与过程的面试题

以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样。题目如下: class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static int count2 = ...

天才小站 218
上一篇: java future模式 小demo
下一篇: linux 的简单命令
郭胜_自强
博客等级 码龄11年 9粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值