Java知识巩固(一)

AOT有什么优点?为什么不全部使用AOT呢?

JDK 9 引入了一种新的编译模式 AOT(Ahead of Time Compilation) 。和 JIT 不同的是,这种编译模式会在程序被执行前就将其编译成机器码,属于静态编译(C、 C++,Rust,Go 等语言就是静态编译)。AOT 避免了 JIT 预热等各方面的开销,可以提高 Java 程序的启动速度,避免预热时间长。并且,AOT 还能减少内存占用和增强 Java 程序的安全性(AOT 编译后的代码不容易被反编译和修改),特别适合云原生场景。

JDK 9 引入了一种新的编译模式 AOT(Ahead of Time Compilation) 。和 JIT 不同的是,这种编译模式会在程序被执行前就将其编译成机器码,属于静态编译(C、 C++,Rust,Go 等语言就是静态编译)。AOT 避免了 JIT 预热等各方面的开销,可以提高 Java 程序的启动速度,避免预热时间长。并且,AOT 还能减少内存占用和增强 Java 程序的安全性(AOT 编译后的代码不容易被反编译和修改),特别适合云原生场景。

什么是双清委派

“双清委派”可能是一个误解或误写的术语,在计算机科学和相关领域中,更常见的术语是“双亲委派模式”(也称为“双亲委派机制”)。这一机制主要在Java虚拟机(JVM)的类加载过程中发挥作用。

双亲委派模式的定义

双亲委派模式是指Java虚拟机在加载类时采用的一种加载策略。具体来说,当一个类加载器收到类加载的请求时,它并不会自己先去加载该类,而是将这个请求委托给父类的加载器去执行。这个过程会一直递归进行,直到达到顶层的引导类加载器(Bootstrap ClassLoader)。如果父类加载器能够完成类加载任务,就成功返回;如果父类加载器无法完成类加载任务,子加载器才会尝试自己去加载。

双亲委派模式的作用

  1. 避免重复加载:通过双亲委派模式,可以确保同一个类只被加载一次,从而避免重复加载导致的资源浪费和潜在的问题。
  2. 保护核心类库:双亲委派模式还可以防止恶意代码通过自定义类加载器来篡改Java的核心类库。因为任何自定义的类加载器在尝试加载核心类库中的类时,都会先委托给父类加载器,而父类加载器通常会加载JDK自带的、经过验证的类文件。

双亲委派模式的实际应用

在Java的类加载体系中,类加载器按照层次结构进行组织,包括引导类加载器、扩展类加载器(Extension ClassLoader)、应用程序类加载器(Application ClassLoader)以及用户自定义的类加载器。这些类加载器之间遵循双亲委派模式进行类的加载。

例如,在加载jdbc.jar用于实现数据库连接的时候,因为jdbc.jar是基于Java中rt.jar中的SPI接口进行实现的,所以在加载的时候,由于SPI接口会调用实现类中的方法,所以这里jdbc.jar中的方法会被加载到内存中,此时就会进行双亲委派进行类加载。最终从Bootstrap ClassLoader类加载器中加载SPI核心类,然后加载SPI接口的实现类,此时Bootstrap ClassLoader会进行反向委派,通过线程上下文类加载器进行jdbc.jar的加载,从而避免类的重复加载并保护程序安全。

综上所述,“双清委派”可能是一个误解或误写的术语,而“双亲委派模式”是Java虚拟机在类加载过程中采用的一种重要机制。

SpringMvc、SpringBoot、Spring有什么区别

SpringMVC、Spring与Spring Boot都是Java企业级应用开发中的重要框架和工具,它们在定位、功能、配置方式以及应用领域等方面存在一些显著的区别。

Spring

  • 定位与功能:Spring是一个综合性的应用程序开发框架,旨在简化企业级应用程序的开发。它提供了依赖注入(DI)、面向切面编程(AOP)、事务管理等功能,并包含了用于构建Web应用程序的全功能MVC模块。
  • 核心功能:Spring的核心功能是IoC(控制反转)容器和AOP(面向切面编程)。IoC容器帮助开发者管理对象之间的依赖关系,实现松耦合的应用程序设计。
  • 应用领域:Spring主要用于企业级应用程序的开发,提供了丰富的功能,如数据访问、安全性、消息传递和集成等。
  • 扩展性:Spring是一个综合性的框架,可以与其他模块集成,如Hibernate、iBatis、JMS、JDBC等。

SpringMVC

  • 定位与功能:SpringMVC是Spring框架中的一个模块,专注于Web应用程序的开发。它实现了MVC(Model-View-Controller)模式,为表示层开发提供了一整套完备的解决方案。
  • 核心功能:SpringMVC的核心功能是控制器(Controller)、视图解析器(View Resolver)等Web相关组件。这些组件用于协调请求和响应之间的关系,实现Web应用程序的开发。
  • 应用领域:SpringMVC主要用于处理HTTP请求、渲染视图和处理表单等Web相关的任务。
  • 扩展性:SpringMVC已经集成了Spring框架的许多功能,使得开发者可以更快速地开发Web应用程序。同时,它也支持与其他Spring模块(如Spring Security、Spring Data等)无缝集成。

Spring Boot

  • 定位与功能:Spring Boot是一个基于Spring的框架,它使用了特定的配置方式,旨在简化新Spring应用的初始搭建以及开发过程。它遵循“约定优于配置”(Convention Over Configuration)的原则,提供了大量的自动配置,减少了配置文件(如XML或Java配置类)的数量和复杂度。
  • 核心功能:Spring Boot的核心功能是自动化配置和starter POMs(项目对象模型)。starter POMs包含了构建特定类型应用所需的所有依赖,简化了依赖管理。
  • 应用领域:Spring Boot不仅支持Web应用程序的开发,还可以用于构建微服务、RESTful API等。它提供了丰富的监控和管理功能,帮助开发者实时监控应用的运行状态和性能指标。
  • 扩展性:Spring Boot集成了目前流行的开发框架和库,如MyBatis、Hibernate、Redis等,使得开发者能够快速搭建起一个功能完备的Spring应用。

总结

  • Spring是一个全面的应用程序开发框架,提供了丰富的企业级应用开发功能。
  • SpringMVC是Spring框架中的一个模块,专注于Web应用程序的开发,实现了MVC模式。
  • Spring Boot则是一个基于Spring的框架,旨在简化Spring应用的初始搭建和开发过程,提供了大量的自动配置和starter POMs。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全社区和论坛

目录 国内网络安全社区和论坛 国外网络安全社区和论坛 ​​​​​​​国内网络安全社区和论坛 FreeBuf 网址:FreeBuf网络安全行业门户简介:网络安全行业门户网站,提供最新的安全资讯、漏洞信息、安全工具及教程等。 先知社区 网址&…

Java基础:字符串详解

1 深入解读String类源码 1.1 String类的声明 public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence { }String类是final的&#xff0c;意味着它不能被子类继承&#xff1b;String 类实现了Serializable接口&#xff0c;意味着…

界星空科技漆包线行业称重系统

万界星空科技为漆包线行业提供的称重系统是其MES制造执行系统解决方案中的一个重要组成部分。以下是对该系统的详细介绍&#xff1a; 一、系统概述 万界星空科技漆包线行业称重系统&#xff0c;是集成在MES系统中的一个功能模块&#xff0c;专门用于漆包线生产过程中的重量检…

【科普】什么是架构和框架?两者之间有什么区别?

架构 (Architecture) 定义&#xff1a; 架构是系统或项目的高层设计和结构&#xff0c;描述了组件之间的关系和交互方式。它通常涉及到整体的设计理念、原则和决策。 特点&#xff1a; 包括系统的整体布局、模块划分、数据流以及各个部分如何相互作用。通常是为了满足特定需求…

LabVIEW惯性导航系统仿真平台

LabVIEW开发捷联惯性导航系统仿真平台&#xff0c;采用模块化设计&#xff0c;利用LabVIEW的图形化编程特性&#xff0c;提高了系统仿真的效率和精度&#xff0c;同时具备良好的可扩展性和用户交互性。 项目背景 当前&#xff0c;惯性导航系统&#xff08;INS&#xff09;的研…

解决 GPTQ 模型导入后推理生成 Tokens 速度很慢的问题(从源码重新安装 Auto-GPTQ)

这里解决的是使用 Auto-GPTQ 或者 Transformers 导入 GPTQ 模型后推理速度很慢的问题。 值得注意的是&#xff0c;这个问题很有可能是因为安装不正确&#xff0c;所以 GPTQ 无法正确使用 GPU 进行推理&#xff0c;也就是说无法进行加速&#xff0c;即便 print(model.device) 显…

【深度学习基础模型】液态状态机(Liquid State Machines, LSM)详细理解并附实现代码。

【深度学习基础模型】液态状态机&#xff08;Liquid State Machines, LSM&#xff09;详细理解并附实现代码。 【深度学习基础模型】液态状态机&#xff08;Liquid State Machines, LSM&#xff09;详细理解并附实现代码。 文章目录 【深度学习基础模型】液态状态机&#xff0…

【浏览器】HTTP 状态码

HTTP 状态码 HTTP 状态码用于表示服务器对请求的响应状态&#xff0c;分为 5 类&#xff0c;每一类的状态码代表不同的响应类型&#xff1a; 1. 1xx 信息性响应 表示请求已接收&#xff0c;服务器继续处理。 100 Continue&#xff1a;客户端应继续请求操作&#xff0c;服务…

嵌入式硬件设计知识详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

146. LRU 缓存【 力扣(LeetCode) 】

零、原题链接 146. LRU 缓存 一、题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff…

5款人声分离免费软件分享,从入门到精通,伴奏提取分分钟拿捏!

人声分离通常是音乐制作、混音和卡拉OK中常用的重要技术之一。它的核心是将乐器伴奏从原始音轨中分离出来&#xff0c;使得用户可以单独处理或重混音频&#xff0c;创造出清晰干净的伴奏轨道。若缺乏强大的音频剪辑软件或专业人声分离工具&#xff0c;这一过程往往会比较困难。…

python3的语法

知识简介 基础语法就像比赛规则&#xff0c;比如比赛跑步&#xff0c;咱们不能跑到别人的跑道去吧&#xff0c;比赛打拳&#xff0c;先说好不能踢裆。 正文 一、python3的基础语法 1、编码 python的源码文件.py一般是utf8编码的&#xff0c;有时候咱们在执行源码文件的时候报…

单片机原理及其应用:新手快速入门

单片机&#xff08;Microcontroller&#xff0c;简称 MCU&#xff09;是一种广泛应用于嵌入式系统中的微型计算机。对于初学者来说&#xff0c;了解单片机的基本原理及其在日常生活中的应用是入门嵌入式开发的第一步。本篇博客将从单片机的基本概念开始&#xff0c;带领大家逐步…

latex本地运行(MiKTeX+VScode)-20241006

1、安装 LaTex 主流的分发版本应该就是 TeXLive 和 MikTeX 了,这里使用 MikTex(只有几百M)—— TeXLive 太大了、默认安装全部包,可选自选部分安装单实在有些许麻烦,MikTeX 则方便得多,需要的时候可以自动安装全部包 点击跳转到 MiKTeX 官网,直接下载即可:不用担心什…

超越单线程:Web Worker 在前端性能中的角色

在当今快速发展的数字时代&#xff0c;用户对网页性能的期待已经达到了前所未有的高度&#xff0c;想象一下&#xff0c;当你打开一个网站&#xff0c;瞬间加载、流畅操作&#xff0c;没有任何卡顿和延迟&#xff0c;这种体验无疑会让你倍感惊喜。然而在前端开发中&#xff0c;…

【WKWebview】WKWebView Cookie 同步

个人实测&#xff1a;js注入的方式更靠谱一点 ⌈iOS⌋WKWebView Cookie 同步的一种方式 屈服于 Apple 的“淫威”&#xff0c;开发者不得不将 App 的网页容器从 UIWebView 迁移到 WKWebView。我们在享受后者带来的性能和功能提升的同时&#xff0c;也被诸如 Cookie 同步、截图…

Unity3D Shader的阴影部分法线效果详解

在Unity3D开发中&#xff0c;阴影处理是提升场景真实感和视觉质量的重要一环。法线贴图&#xff08;Normal Mapping&#xff09;作为一种高效的纹理映射技术&#xff0c;在增强模型表面细节和凹凸感方面扮演着重要角色。本文将详细解析UnityShader中阴影部分的法线效果&#xf…

【fastjson】json对象格式化打印

为了让日志打印时以格式化的JSON输出,你可以将input.toJSONString()调用改为使用格式化输出的方式。FastJSON库的toJSONString方法支持格式化输出,你可以传入true参数实现这一点。具体修改如下:关键要用JSONObject.toJSONString 来实现:toJSONString(true) 会把true作为对象…

springMVC添加webapp

项目结构-->模块-->找到想添加的模块下的web 点击号 添加路径 会在.../src/main/目录下自动生成目录

【代码笔记】

结构体 /*C04.L10.结构体 张其博 2024.9.19 */ #include<bits/stdc.h> using namespace std; //1.定义 /*struct 结构体名 { 成员表 //可以有多个成员成员函数 //可以有多个成员函数&#xff0c;也可以没有 } 结构体变量表&#xff1b; //可以同时定义多个结构体变量…