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

Java面试题、八股文——JVM篇最终篇

1.如何选择垃圾收集器?

选择合适的垃圾收集器(Garbage Collector, GC)对于优化Java应用程序的性能至关重要。不同的应用场景和系统需求可能需要不同类型的垃圾收集器来满足。以下是一些考虑因素以及常见的垃圾收集器选项,帮助您做出选择:

考虑因素:

  • 应用响应时间:如果您正在构建一个需要低延迟的应用程序,例如在线交易系统或实时游戏,那么您可能需要选择能够最小化暂停时间的垃圾收集器。
  • 吞吐量:对于后台处理或者批处理任务来说,高吞吐量比低延迟更重要,这意味着您可以接受更长的垃圾回收暂停时间以换取更高的整体效率。
  • 内存占用:如果您的应用运行在资源受限的环境中,如嵌入式系统,则需要考虑垃圾收集器对内存使用的影响。
  • 堆大小:不同垃圾收集器对大堆和小堆的支持程度不同,选择时需要考虑您的应用预计使用的堆大小。
  • 并发性:现代垃圾收集器通常支持一定程度的并发操作,以减少对应用线程的影响。

常见的垃圾收集器

  • Serial Collector:适合于客户端场景,特别是小型应用或嵌入式系统。它使用单个线程进行垃圾回收,适用于单核处理器或内存有限的环境。
  • Parallel Collector(也称作Throughput Collector):通过多线程并行执行垃圾回收,旨在最大化应用的整体吞吐量。适合于多核处理器上的后台处理或批处理应用。
  • Concurrent Mark Sweep (CMS) Collector:旨在减少垃圾回收引起的暂停时间,适合于对响应时间有较高要求的应用。但它的缺点是可能会产生更多的内存碎片,并且在某些情况下会降低吞吐量。
  • G1 Collector(Garbage First):设计用于具有大堆的多核机器上运行的应用。它将堆划分为多个区域,并优先回收那些垃圾最多的区域,从而试图平衡吞吐量和响应时间。
  • ZGC 和 Shenandoah Collector:这两个都是实验性的垃圾收集器,设计目标是在大型堆上实现非常低的暂停时间(通常小于10毫秒)。它们特别适合于需要极低延迟的高性能应用。

如何选择:

  • 评估需求:首先明确您的应用对延迟、吞吐量、内存使用等方面的要求。
  • 测试与比较:在实际环境中测试不同的垃圾收集器,观察其对应用性能的影响。
  • 调优参数:根据测试结果调整垃圾收集器的相关参数,比如初始堆大小、最大堆大小等。
  • 持续监控:即使选择了垃圾收集器,也需要定期监控应用的性能指标,确保其始终符合预期。

2. 什么是类加载器?

类加载器(Class Loader)是Java虚拟机(JVM)的一部分,负责将字节码文件(.class 文件)加载到内存中,并转换成可以被虚拟机执行的方法区中的运行时数据结构。类加载器在Java中扮演着至关重要的角色,因为它不仅决定了应用程序如何访问类文件,还影响了类的可见性和安全性。

类加载器的工作机制

  • 加载:类加载器从文件系统、网络或其他来源读取类的二进制数据,并将其转换为方法区中的运行时数据结构。
  • 链接:包括验证、准备和解析三个步骤。
  • 验证:确保加载的类文件格式正确,没有安全问题。
  • 准备:为类的静态变量分配内存,并设置默认值。
  • 解析:将符号引用转换为直接引用,这个过程涉及到查找和替换类、接口、字段和方法的符号引用。
  • 初始化:执行类构造器 () 方法,即初始化类的静态变量和静态代码块。

类加载器的层次结构

Java中的类加载器采用了一种称为“双亲委派模型”的层级结构。这种模型确保了类加载过程的安全性和一致性。

  • Bootstrap ClassLoader:这是最顶层的类加载器,由C++编写,不是Java类的一部分。它负责加载核心Java类库(如 java.lang.*),位于 rt.jar 中。
  • Extension ClassLoader(扩展类加载器):负责加载标准扩展库中的类,通常位于 $JAVA_HOME/lib/ext 目录下。
  • Application ClassLoader(应用类加载器):也称为系统类加载器,负责加载应用程序的类路径(classpath)中指定的类文件。

自定义类加载器

除了上述内置的类加载器外,开发人员还可以创建自定义类加载器来实现特定的功能,如从网络加载类、加密类文件等。自定义类加载器通常继承自 java.lang.ClassLoader 类,并重写 findClass() 或 loadClass() 方法。

双亲委派模型

双亲委派模型是指当一个类加载器收到类加载请求时,它首先不会自己去尝试加载这个类,而是把这个请求委派给父类加载器去完成,每一层的类加载器都是如此,因此所有的加载请求最终都应该传送到最顶层的Bootstrap类加载器中。只有当父类加载器无法加载该类(即在其加载范围之外)时,子加载器才会尝试自己加载。

这种模型的好处在于:

  • 安全性:防止用户自定义的类伪装成核心类库中的类,因为核心类库总是先被加载。
  • 避免重复加载:保证所有加载器之间的类加载协调一致,避免同一个类被多次加载。

3.什么是 tomcat 类加载机制?

Tomcat 是一个广泛使用的开源 Servlet 容器,它支持 Java Servlet 和 JavaServer Pages (JSP) 技术。Tomcat 的类加载机制是其核心功能之一,它确保了不同Web应用程序之间的隔离性和安全性。以下是关于 Tomcat 类加载机制的详细介绍:

类加载器层次结构
Tomcat 采用了类似于 Java 标准的双亲委派模型,但为了适应 Web 应用程序的需求,增加了一些额外的类加载器。以下是 Tomcat 类加载器的层次结构:

  • Bootstrap ClassLoader
    • 这是最顶层的类加载器,负责加载核心的 Java 类库,如 java.lang.*。
    • 通常由 JVM 提供,不是 Java 类的一部分。
  • System ClassLoader(也称为 Application ClassLoader)
    • 负责加载应用程序的类路径(classpath)中指定的类文件。
    • 包括 JDK 的扩展库(如 $JAVA_HOME/lib/ext 目录下的类)。
  • Common ClassLoader
    • 加载 $CATALINA_HOME/lib 目录下的类文件。
    • 这些类对所有 Web 应用程序都是可见的。
  • Catalina ClassLoader
    • 加载 $CATALINA_HOME/server 目录下的类文件。
    • 这些类仅对 Tomcat 服务器内部使用,对 Web 应用程序不可见。
  • Shared ClassLoader
    • 加载 $CATALINA_HOME/shared 目录下的类文件。
    • 这些类对所有 Web 应用程序都是可见的,但不推荐使用,因为这可能导致类加载冲突。
  • WebApp ClassLoader
    • 每个 Web 应用程序都有自己的 WebApp ClassLoader。
    • 负责加载 Web 应用程序的 WEB-INF/classes 目录和 WEB-INF/lib 目录下的类文件。
    • 这些类只对当前 Web 应用程序可见,实现了应用程序之间的隔离。

类加载顺序

Tomcat 的类加载顺序遵循以下规则:

双亲委派模型:

  • 当一个类加载器收到类加载请求时,它首先会委托给父类加载器去加载。
  • 只有当父类加载器无法加载该类时,子类加载器才会尝试加载。
    WebApp ClassLoader 的特殊行为
  • WebApp ClassLoader 在某些情况下会优先加载本地类,而不是委托给父类加载器。
  • 这是为了允许 Web 应用程序覆盖 Tomcat 或 JDK 中的类,尽管这种做法并不推荐。

示例

假设有一个 Web 应用程序部署在 Tomcat 上,其类加载路径如下:

  • Bootstrap ClassLoader:加载核心 Java 类库。
  • System ClassLoader:加载 JDK 扩展库和应用程序类路径中的类。
  • Common ClassLoader:加载 $CATALINA_HOME/lib 目录下的类。
  • WebApp ClassLoader:加载 WEB-INF/classes 和 WEB-INF/lib 目录下的类。

当应用程序请求加载某个类时,类加载器的查找顺序如下:

  • Bootstrap ClassLoader 尝试加载。
  • 如果未找到,System ClassLoader 尝试加载。
  • 如果未找到,Common ClassLoader 尝试加载。
  • 如果未找到,WebApp ClassLoader 尝试加载。

注意事项

类加载冲突

  • 避免在 WEB-INF/lib 或 WEB-INF/classes 中包含与 Tomcat 或 JDK 冲突的类。
  • 使用 shared 目录时要特别小心,因为这可能导致类加载冲突。

类加载器隔离

  • 每个 Web 应用程序的 WebApp ClassLoader 是独立的,确保了不同应用程序之间的类隔离。

性能优化:

  • 合理组织类文件的位置,避免不必要的类加载,可以提高应用程序的启动和运行性能。

通过理解和合理配置 Tomcat 的类加载机制,可以有效地管理 Web 应用程序的类加载行为,确保应用程序的稳定性和性能。

相关文章:

Java面试题、八股文——JVM篇最终篇

1.如何选择垃圾收集器? 选择合适的垃圾收集器(Garbage Collector, GC)对于优化Java应用程序的性能至关重要。不同的应用场景和系统需求可能需要不同类型的垃圾收集器来满足。以下是一些考虑因素以及常见的垃圾收集器选项,帮助您做…...

C++ 11重点总结2

1C11多线程 主要对少用的知识点进行详细描述&#xff0c;用的多的就给示例。照猫画虎 #include<thread> // 默认构造函数 thread() // 初始化构造函数 template<class Fn, class... Args> explicit thread(Fn&& fn, Args&&... args) // 移动构造…...

什么是 C++ 中的函数对象?它有什么特点?

在 C 中&#xff0c;函数对象&#xff08;Function Object&#xff09;是一种可调用对象&#xff0c;它允许像函数一样被调用&#xff0c;但实际上它可能并不是真正的函数。函数对象可以是以下几种类型之一&#xff1a; 普通函数&#xff1a; 一个普通的、定义在命名空间或类…...

Golang 反射

一、Go反射的应用场景 &#xff08;一&#xff09;对象序列化和反序列化 场景描述 在处理网络通信&#xff0c;数据存储等场景中&#xff0c;需要将对象转换为字节流&#xff08;序列化&#xff09;以便传输或存储&#xff0c;在接收端再将字节流转换回对象&#xff08;反序列…...

hhdb数据库介绍(10-7)

OEM管理 为方便更换管理平台的产品Logo以及产品名称信息。引入“OEM管理功能”对外提供可视化更新Logo以及产品名称信息的入口。 功能入口&#xff1a; 具有管理权限的用户登录平台&#xff0c;通过 OEM管理的超链接进入功能页面&#xff0c;超链接路径需要在原访问页面url的…...

RabbitMQ的预取值详解

RabbitMQ的预取值&#xff08;Prefetch Value&#xff09;是一个关键概念&#xff0c;它决定了消费者在从队列中获取消息时&#xff0c;一次性可以获取的消息数量。这一机制对于优化消息分发和消费者的负载均衡至关重要。 什么是RabbitMQ的预取值&#xff1f; 预取值是指消费者…...

mysql 触发器进入历史

一、触发器 MySQL 触发器&#xff08;Triggers&#xff09;是一种数据库对象&#xff0c;它与表关联&#xff0c;能在特定的事件&#xff08;如插入、更新或删除&#xff09;发生时自动执行一些指定的操作。使用触发器可以帮助我们自动维护数据库的完整性、一致性&#xff0c;…...

通过数巅能源大模型降本增效

在能源行业中&#xff0c;数据的有效利用对于企业的决策和运营至关重要。随着业务的发展&#xff0c;企业面临着数据分散、数据分析效率低、报告生成耗时等问题&#xff0c;制约了企业的发展和竞争力的提升。 数巅能源大模型解决方案 数巅科技推出了能源大模型解决方案&#x…...

如何编写出色的技术文档

目录 ​编辑 1. 明确文档目的和受众 目的的重要性 了解受众 2. 收集和组织信息 信息收集的技巧 组织信息 3. 规划文档结构 结构规划的重要性 结构规划的步骤 4. 编写内容 语言和风格 内容的组织 编写技巧 5. 审阅和测试 审阅的重要性 测试的必要性 6. 版本控…...

摄像头原始数据读取——gstreamer(gst_parse_launch)

摄像头原始数据读取——gstreamer(gst_parse_launch) #include <stdio.h> #include <string.h> #include <stdlib.h>#ifdef __cplusplus extern "C" { #endif#include <gst/gst.h>#ifdef __cplusplus }; #endifstatic gboolean bus_msg_tim…...

矩阵/矩阵乘法/特征值/特征向量的讲解

线性代数里有很多的概念&#xff0c;很多概念是有几何意义的&#xff0c;了解了几何意义可能会更好的理解各种概念及其相互之间的关系。 矩阵&#xff1a; 矩阵是一个变换&#xff0c;一个坐标系到另一个坐标系的变换。矩阵里的各个参数&#xff0c;代表了如何进行变换。 矩阵…...

docker-compose搭建xxl-job、mysql

docker-compose搭建xxl-job、mysql 1、搭建docker以及docker-compose2、下载xxl-job需要数据库脚本3、创建文件夹以及docker-compose文件4、坑来了5、正确配置6、验证-运行成功 1、搭建docker以及docker-compose 略 2、下载xxl-job需要数据库脚本 下载地址&#xff1a;https…...

《图像形态学运算全解析:原理、语法及示例展示》

简介&#xff1a; 本文详细介绍了图像形态学中的多种运算&#xff0c;包括腐蚀、膨胀、开运算、闭运算、形态学梯度运算、礼帽运算以及黑帽运算。分别阐述了各运算的原理、语法格式&#xff0c;并通过 Python 代码结合具体示例图片&#xff08;如erode.JPG、dilate.JPG、close.…...

【面试分享】C++ 中结构体(struct)和类(class)的区别

在 C中&#xff0c;结构体&#xff08;struct&#xff09;和类&#xff08;class&#xff09;有一些相似之处&#xff0c;但也存在一些重要的区别&#xff1a; 一、默认访问权限 结构体&#xff1a; 在 C中&#xff0c;结构体的默认成员访问权限是public&#xff08;公有&…...

Rk3588 onnx转rknn,出现 No module named ‘rknn‘

一、操作步骤&#xff1a; rk3588 需要将yolo11 的模型onnx转rknn。 https://github.com/airockchip/rknn_model_zoo/tree/main/examples/yolo11 这个是用yolo11训练的模型&#xff0c;有80种类型。 完整下载下来后&#xff0c;在按文档描述下载模型下来&#xff1a; 然后进…...

HarmonyOS:@Provide装饰器和@Consume装饰器:与后代组件双向同步

一、前言 Provide和Consume&#xff0c;应用于与后代组件的双向数据同步&#xff0c;应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递&#xff0c;Provide和Consume摆脱参数传递机制的束缚&#xff0c;实现跨层级传递。 其中Provi…...

在并发情况下,Elasticsearch如果保证读写一致?

大家好&#xff0c;我是锋哥。今天分享关于【在并发情况下&#xff0c;Elasticsearch如果保证读写一致&#xff1f;】面试题。希望对大家有帮助&#xff1b; 在并发情况下&#xff0c;Elasticsearch如果保证读写一致&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java…...

通过 SSH 进行WordPress网站的高级服务器管理

我在管理hostease的服务器时&#xff0c;时常需要通过SSH登录服务器进行修改。而在网站管理中&#xff0c;SSH不仅是一个基础工具&#xff0c;更是高级用户用来精细化管理和优化服务器的重要工具。通过SSH&#xff0c;你可以深入监控服务器的性能、精细管理系统资源&#xff0c…...

关闭AWS账号后,服务是否仍会继续运行?

在使用亚马逊网络服务&#xff08;AWS&#xff09;时&#xff0c;用户有时可能会考虑关闭自己的AWS账户。这可能是因为项目结束、费用过高&#xff0c;或是转向使用其他云服务平台。然而&#xff0c;许多人对关闭账户后的服务状态感到困惑&#xff0c;我们九河云和大家一起探讨…...

PostgreSQL数据库参数调优实践

PostgreSQL&#xff08;简称PG&#xff09;数据库的性能调优是一个复杂但至关重要的过程&#xff0c;特别是在处理大量数据和复杂查询时。通过合理设置和调整数据库参数&#xff0c;可以显著提升数据库的性能和响应速度。本文将从多个方面详细介绍PostgreSQL数据库参数调优的实…...

Leetcode - 144双周赛

目录 一&#xff0c;3360. 移除石头游戏 二&#xff0c;3361. 两个字符串的切换距离 三&#xff0c;3362. 零数组变换 III 四&#xff0c;3363. 最多可收集的水果数目 一&#xff0c;3360. 移除石头游戏 本题直接模拟过程&#xff0c;可以额外使用一个布尔变量标记谁赢&…...

微信小程序全局配置:TabBar与页面配置详解

微信小程序全局配置:TabBar与页面配置详解 引言 随着移动互联网的迅猛发展,微信小程序作为一种新兴的应用形式,因其便捷性和丰富的功能而受到广泛欢迎。在小程序的开发过程中,全局配置是非常重要的一环,尤其是tabBar和页面的配置。本文将深入探讨微信小程序的全局配置,…...

Linux创建免密登陆(错误:Permission denied (publickey,gssapi-keyex,gssapi-with-mic))

报错截图 解决方法 1. mkdir -p ~/.ssh 2. chmod 700 ~/.ssh 3. ssh-keygen&#xff0c;一直回车 4. chmod 600 /root/.ssh/id_rsa 5. 将公钥内容追加到服务器上&#xff0c;cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 6. chmod 600 ~/.ssh/authorized_keys…...

机器学习深掘临床研究中小分子代谢标志物的探索与应用

摘要 随着生命科学的发展&#xff0c;小分子生物标志物在临床研究中的作用日益凸显。机器学习技术为挖掘小分子生物标志物提供了强大工具。本文介绍了小分子生物标志物的定义、分类及在临床医学中的应用&#xff0c;阐述了常用机器学习算法在生物标志物挖掘中的优势&#xff0…...

计算机网络 第4章 网络层

计算机网络 &#xff08;第八版&#xff09;谢希仁 第 4 章 网络层4.2.2 IP地址**无分类编址CIDR**IP地址的特点 4.2.3 IP地址与MAC地址4.2.4 ARP 地址解析协议4.2.5 IP数据报的格式题目2&#xff1a;IP数据报分片与重组题目&#xff1a;计算IP数据报的首部校验和(不正确未改) …...

Android按键点击事件三种实现方法

1. 在xml文件中为 Button 添加android:onclick属性 由于没有onclick这个函数&#xff0c;onclick下面会提示红色波浪线错误&#xff0c;然后单击一下"onclick"按住键盘上AltEnter键,选择在activity中生成函数 public void onclick(View view) {Toast.makeText(this,&…...

微信小程序中会议列表页面的前后端实现

题外话&#xff1a;想通过集成腾讯IM来解决即时聊天的问题&#xff0c;如果含语音视频&#xff0c;腾讯组件一年5万起步&#xff0c;贵了&#xff01;后面我们改为自己实现这个功能&#xff0c;这里只是个总结而已。 图文会诊需求 首先是个图文列表界面 同个界面可以查看具体…...

决策树——基于乳腺癌数据集与cpu数据集实现

决策树——乳腺癌数据实现 4.1 训练决策树模型,并计算测试集的准确率 1. 读入数据 from sklearn import datasets from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix …...

2024年11月24日Github流行趋势

项目名称&#xff1a;FreeCAD 项目维护者&#xff1a;wwmayer, yorikvanhavre, berndhahnebach, chennes, WandererFan等项目介绍&#xff1a;FreeCAD是一个免费且开源的多平台3D参数化建模工具。项目star数&#xff1a;20,875项目fork数&#xff1a;4,117 项目名称&#xff1…...

库的操作.

创建、删除数据库 创建语法&#xff1a; CREATE DATABASE [IF NOT EXISTS] db_name[ ]是可选项&#xff0c;IF NOT EXISTS 是表明如果不存在才能创建数据库 //查看数据库&#xff0c;假设7行 show databases; //创建数据库 --- 本质在Linux创建一个目录 create database databa…...

Go错误与日志处理—推荐实践

错误的分类 在 Go 语言中&#xff0c;错误是通过实现 error 接口的类型表示的&#xff0c;但不同场景下的错误可以按性质和用途进行分类。以下是 Go 语言错误的常见分类&#xff0c;以及每类错误的解释和示例&#xff1a; 标准错误类型 标准库中定义了许多常见的错误类型&…...

文件上传upload-labs-docker通关

&#xff08;图片加载不出&#xff0c;说明被和谐了&#xff09; 项目一&#xff1a; sqlsec/ggctf-upload - Docker Image | Docker Hub 学习过程中,可以对照源码进行白盒分析. 补充&#xff1a;环境搭建在Linux虚拟机上的同时&#xff0c;以另一台Windows虚拟机进行测试最…...

C语言——数组基本知识(一)

目录 一.一维数组的初始化 二.数组的排序 ①冒泡排序&#xff1a; 代码&#xff1a; 没有第二个for循环运行结果如下&#xff1a; 正确的运行结果如下&#xff1a; ②选择排序 代码如下&#xff1a; 运行结果如图&#xff1a; 往期回顾&#xff1a; 一.一维数组的初始…...

vue2日历组件

【效果图】 <template><div style"width: 100%"><!-- <div> --><!-- <div>{{ startDate.getMonth() 1 - startDate.getDate() }}</div><div>{{ endDate.getMonth() 1 - endDate.getDate() }}</div> --&g…...

Unity C# 影响性能的坑点

c用的时间长了怕unity的坑忘了&#xff0c;记录一下。 GetComponent最好使用GetComponent<T>()的形式&#xff0c; 继承自Monobehaviour的函数要避免空的Awake()、Start()、Update()、FixedUpdate().这些空回调会造成性能浪费 GetComponent方法最好避免在Update当中使用…...

Redis(概念、IO模型、多路选择算法、安装和启停)

一、概念 关系型数据库是典型的行存储数据库&#xff0c;存在的问题是&#xff0c;按行存储的数据在物理层面占用的是连续存储空间&#xff0c;不适合海量数据存储。 Redis在生产中使用的最多的是用作数据缓存。 服务器先在缓存中查询数据&#xff0c;查到则返回&#xff0c;…...

多线程

线程是什么&#xff1f; 1、线程是进程的执行分支&#xff0c;一个进程内部的控制程序 2、一个进程至少有一个执行线程 3、从CPU角度来看&#xff0c;线程就是一个更轻量化的线程 4、线程在进程内部运行&#xff0c;所以本质就是在进程地址空间上运行 注意&#xff1a; 一…...

Spring Boot林业产品推荐系统:用户指南

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此林业产品销售信…...

计算机网络 实验八 应用层相关协议分析

一、实验目的 熟悉CMailServer邮件服务软件和Outlook Express客户端软件的基本配置与使用&#xff1b;分析SMTP及POP3协议报文格式和SMTP及POP3协议的工作过程。 二、实验原理 为了观察到邮件发送的全部过程&#xff0c;需要在本地计算机上配置邮件服务器和客户代理。在这里我…...

实战ansible-playbook:Ansible Vault加密敏感数据(三)

在实际生产环境中,使用 Ansible Vault 来加密敏感数据是一种常见的做法。以下是一个详细的步骤和实际生产环境的使用案例,展示如何使用 Ansible Vault 来加密和管理敏感数据。 1. 安装 Ansible 确保你已经安装了 Ansible。如果还没有安装,可以使用以下命令进行安装: # 在…...

oracle 12c查看执行过的sql及当前正在执行的sql

V$SQL 提供了已经执行过及正在执行的SQL语句的信息。 一 查看共享池中所有sql的统计信息 #统计共享池中某类sql执行次数&#xff0c;总体执行时长&#xff0c;平均执行时长等信息&#xff0c;并按总体执行时长降序排序 SELECT INST_ID,SQL_ID,SQL_TEXT,SQL_FULLTEXT,EXECUTI…...

【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解

目录 一、前言 二、Spring AI概述 2.1 spring ai是什么 2.2 Spring AI 核心能力 2.3 Spring AI 应用场景 三、Spring AI Alibaba 介绍 3.1 Spring AI Alibaba 是什么 3.2 Spring AI Alibaba 核心特点 3.3 Spring AI Alibaba 应用场景 四、SpringBoot 对接Spring AI Al…...

CSS:怎么把网站都变成灰色

当大家看到全站的内容都变成了灰色&#xff0c;包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢&#xff1f; 有人会以为所有的内容都统一换了一个 CSS 样式&#xff0c;图片也全换成灰色的了&#xff0c;按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...

Maven 常用命令

Maven 是一个强大的构建自动化工具&#xff0c;主要用于 Java 项目的管理和构建。 理解 Maven 命令对于高效管理与构建您的 Java 项目至关重要。 在本篇博客中&#xff0c;我们将探索每个 Java 开发者都应该掌握的一些最重要的 Maven 命令。 1. 设置 Maven 在深入探讨 Mave…...

【算法day1】数组:双指针算法

题目引用 这里以 1、LeetCode704.二分查找 2、LeetCode27.移除元素 3、LeetCode977.有序数组的平方 这三道题举例来说明数组中双指针的妙用。 1、二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜…...

CTF之密码学(DES)

一、基本原理 DES加密使用相同的密钥进行加密和解密操作。它使用一个56位的密钥&#xff08;另外8位为奇偶校验位&#xff0c;不直接参与加密过程&#xff0c;因此实际密钥长度为56位&#xff09;&#xff0c;对64位的数据块进行加密&#xff0c;得到64位的密文。加密过程主要…...

【css实现收货地址下边的平行四边形彩色线条】

废话不多说&#xff0c;直接上代码&#xff1a; <div class"address-block" ><!-- 其他内容... --><div class"checked-ar"></div> </div> .address-block{height:120px;position: relative;overflow: hidden;width: 500p…...

Linux—进程概念学习-03

目录 Linux—进程学习—31.进程优先级1.1Linux中的进程优先级1.2修改进程优先级—top 2.进程的其他概念3.进程切换4.环境变量4.0环境变量的理解4.1环境变量的基本概念4.2添加环境变量—export4.3Linux中环境变量的由来4.4常见环境变量4.5和环境变量相关的命令4.6通过系统调用获…...

设计模式之破环单例模式和阻止破坏

目录 1. 序列化和反序列化2. 反射 这里单例模式就不多说了 23种设计模式之单例模式 1. 序列化和反序列化 这里用饿汉式来做例子 LazySingleton import java.io.Serializable;public class LazySingleton implements Serializable {private static LazySingleton lazySinglet…...

c++(斗罗大陆)

这次&#xff0c;作者编了斗罗大陆的武魂、魂力等级&#xff0c;目前只写到了11级 #include<iostream> #include<conio.h> #include<windows.h> #include<stdlib.h> #include<stdio.h> #include<time.h> #include<strin…...