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

JAVA面经整理(9)

一)什么是Spring?它有什么优点?

spring是一款顶级的开源框架,他是包含了众多工具方法的IOC容器,Spring中包含了很多模块,比如说Spring-core,Spring-context,Spring-aop,Spring-web,从而更好地帮助我们开发JAVA程序;

1)管理对象的生命周期和依赖关系:Spring提供了IOC容器,它是用来管理应用程序中的对象的生命周期和依赖关系,通过使用DI,可以将对象的依赖关系从代码中抽离出来,使得代码具有可测试性和可维护性;

2)统一业务处理,面向切面编程:Spring本身支持AOP,能够分离横切关注点比如说日志和事务管理和核心业务逻辑;

3)事务管理:手动式事务+编程式事务

4)集成了很多的持久性框架:MyBatis

5)可测试性:

6)丰富的生态系统:提供了更多的第三方插件和库

7)国际化和本地化支持:使得应用程序可以使用不同的语言和地区

二)什么是IOC?对象生命周期的控制权限的反转,是一种思想

IOC是Inversion of Controll翻译成中文是控制反转的意思,它不是一个具体的技术而是用来实现对象解耦的思想,控制反转的意思就是将依赖对象的生命周期的控制权进行反转传统开发是将当前类new对象是控制依赖对象的生命周期,现在交给Spring IOC框架,这就是控制权发生了反转;

三)IOC的优点有哪些?

3.1)解耦合:IOC将组件之间的依赖关系从代码中抽离出来,实现了解耦合

3.2)代码的简洁性:IOC使得你的代码更加的关注于业务逻辑,而不需要过多的关注与依赖的创建和管理,这就是得代码更加清晰,简洁和易于管理

3.3)对象生命周期的管理:IOC容器可以管理组件的生命周期,确保Bean对象在合适的时间创建,初始化和销毁;

3.4)可重用性:默认的Bean对象都是单例模式,可以实现重用;

3.5)AOP实现基础:IOC是AOP实现的基础,允许将代理对象存放在IOC容器中

四)什么是DI:

DI是Dependency Injection的缩写,翻译成中文是依赖注入的意思,依赖注入不是一种设计实现而是一种具体的技术,它是在程序运行的过程中,动态地将某一个依赖对象注入到当前的对象的过程就叫做依赖注入,在程序运行过程中,动态地从Spring IOC容器中取出之前存放过的对象,也就是该程序运行过程中从SpringIOC容器中依赖的对象,从程序运行的过程中动态地将一个类注入到当前类中

就比如说在A对象中需要依赖B对象,那么在A对象运行过程中,动态地将依赖对象B注入到当前类中,而不是直接通过new的方式来获取到B对象的方式,就是依赖注入

五)IOC和DI有什么区别?

IOC和DI虽然定义不同,但是他们所做的事情都是相同的,都是来实现针对于对象进行解耦合的,IOC是一种思想,但是DI是一种实现,况且IOC除了依赖注入以外还可以通过依赖查找来实现,在Spring框架中可以通过ApplicationContext接口的getBean()方法来实现

六)说一下AOP:

1)AOP:是面向切面编程,对针对业务代码横切来实现统一的业务管理,而不用侵入业务代码本身,这样面向切面编程的思想就是AOP

使用场景:日志管理,事务管理,性能统计,安全控制,异常处理

2)优点:实现了代码的解耦,统一业务功能对具体业务没有什么侵入性,这样可扩展性更好,灵活性更高

3)Spring是采取动态代理的方式,具体是基于JDK和CGLIB两种:

JDK动态代理需要被代理类实现接口,使用的是反射的方式;

CGLIB需要被代理类能够被继承,不能被final修饰,底层是基于ASM字节码框架,在运行的时候动态生成代理类

4)SpringAOP如何进行使用:使用@Aspect来进行定义切面,并注册到容器里面,使用@Pointcut定义好切点方法之后,可以对目标方法来进行拦截,然后执行前置通知,后置通知之类的东西

相关文章:

JAVA面经整理(9)

一)什么是Spring?它有什么优点? spring是一款顶级的开源框架,他是包含了众多工具方法的IOC容器,Spring中包含了很多模块,比如说Spring-core,Spring-context,Spring-aop,Spring-web,…...

IPD(集成产品开发)模式下的产品研发流程

IPD(集成产品开发)涵盖了产品从创意提出到研发、生产、运营等,包含了产品开发到营销运营的整个过程。围绕产品(或项目)生命周期的过程的管理模式,是一套生产流程,更是时下国际先进的管理体系。I…...

Flutter GetX的使用

比较强大的状态管理框架 引入库: dependencies:get: ^4.6.6一.实现一个简单的demo 实现一个计数器功能 代码如下: import package:flutter/material.dart; import package:get/get.dart;void main() > runApp(const GetMaterialApp(home: Home()…...

【Amazon】AWS实战 | 快速发布安全传输的静态页面

文章目录 一、实验架构图二、实验涉及的AWS服务三、实验操作步骤1. 创建S3存储桶,存放网站网页2. 使用ACM建立域名证书3. 设置Cloudfront,连接S3存储桶✴️4. 设置Route53,解析域名服务5. 通过CLI工具上传网页更新内容【可选】 四、实验总结 …...

前后端登录的密码加密和解密

在一个典型的前后端应用中,前端对密码进行加密后传给后端,后端再进行解密或验证。这通常涉及前端加密、后端解密或验证的相互配合。下面是一个基本的流程: 前端加密: 前端可以使用各种加密库或算法对密码进行加密。常见的是使用哈…...

使用 Curl 和 DomCrawler 下载抖音视频链接并存储到指定文件夹

项目需求 假设我们需要从抖音平台上下载一些特定的视频,以便进行分析、编辑或其他用途。为了实现这个目标,我们需要编写一个爬虫程序来获取抖音视频的链接,并将其保存到本地文件夹中。 目标分析 在开始编写爬虫之前,我们需要了…...

取消Excel打开密码的两种方法

Excel设置了打开密码,想要取消打开密码是由两种方法的,今天分享这两种方法给大家。 想要取消密码是需要直到正确密码的,因为只有打开文件才能进行取消密码的操作 方法一: 是大家常见的取消方法,打开excel文件之后&a…...

多测师肖sir_高级金牌讲师_jmeter 反向代理录制脚本

jemeter自带的录制脚本功能,是利用代理服务器来进行录制的 1,新建一个线程组 2,新建一个代理服务器 右击工作台-添加-非测试元件-http代理服务器 3, 配置http代理服务器 端口: 默认为8888,可修改。但…...

网络取证-Tomcat-简单

题干: 我们的 SOC 团队在公司内部网的一台 Web 服务器上检测到可疑活动。为了更深入地了解情况,团队捕获了网络流量进行分析。此 pcap 文件可能包含一系列恶意活动,这些活动已导致 Apache Tomcat Web 服务器遭到破坏。我们需要进一步调查这一…...

3.Linux常用操作(传输、crontab定时、匹配日期删除文件等)

1. 服务器之间传输文件 1.1 传输文件到本服务器 scp -P 19622 -C dockeruser192.168.100.96:/home/dockeruser/lgr/lgr.dmp /home/dockeruser/lgr描述: 用dockeruser账号登录端口号为19622的192.168.100.96服务器,将此服务器的/home/dockeruser/lgr/l…...

ChatGPT对未来发展的影响?一般什么时候用到GPT

ChatGPT以其强大的自然语言处理能力对未来的发展具有重要影响。以下是ChatGPT的潜在影响和一般使用情况: 改善自然语言理解和生成:ChatGPT和类似的模型可以改善机器对人类语言的理解和生成。这将有助于改进各种应用领域,包括智能助手、聊天机…...

在Win10系统进行MySQL的安装、连接、卸载

在Win10系统进行MySQL的安装、连接、卸载 MySQL的安装 本教程在Win10系统下安装部署MySQL-8.0.32版。 MySQL安装参考地址 MySQL安装包地址 提取码: rnbc。 选择下载mysql-installer-community-8.0.32.0安装包。 连接数据库 方式一: 安装后,可以在开始…...

Windows下pm2调用npm和nuxt的办法

pm2调用npm pm2 start C:\Users\xiao\AppData\Roaming\npm\node_modules\npm\index.js --name test -- run start 其中index.js的路径就是npm全局安装的路径,可通过以下命令获取 npm root -g require全局npm模块的一种方法 新建文件pm2npm.js const root req…...

本地仓库转为git仓库推送到gitee

通常有两种获取 Git 项目仓库的方式: 方式一:将尚未进行版本控制的本地目录转换为 Git 仓库; 方式二:从其它服务器 克隆 一个已存在的 Git 仓库。 两种方式都会在你的本地机器上得到一个工作就绪的 Git 仓库。 方式一&#xff1a…...

CSS以及JavaScript

目录 一.CSS 1.overflow溢出属性 2.定位 二.JavaScript基础 1.JavaScript引入方式 2.JavaScript数据类型 常用方法: 字符串常用方法: 在js里,什么是真,什么是假 数组的常用方法 运算符 (1)算数运…...

JVM——类的生命周期(加载阶段,连接阶段,初始化阶段)

目录 1.加载阶段2.连接阶段1.验证2.准备3.解析 3.初始化阶段4.总结 类的生命周期 1.加载阶段 ⚫ 1、加载(Loading)阶段第一步是类加载器根据类的全限定名通过不同的渠道以二进制流的方式获取字节码信息。 程序员可以使用Java代码拓展的不同的渠道。 ⚫ 2、类加载器在加载完类…...

CSS中实现元素居中的几种方法总结

一、使用 text-align: center 居中 使用 text-align: center; 可以在CSS中实现内联元素的水平居中。这个技术利用了CSS的 text-align 属性&#xff0c;通过对元素的文本对齐方式进行调整来实现居中效果。注&#xff1a;只展示主要代码。 <div class"container"&…...

保护听力戴什么耳机比较好?开放式耳机能保护听力吗?

如果想要在保护听力的前提下戴耳机&#xff0c;那么我是推荐戴骨传导耳机的&#xff01;&#xff01;&#xff01; 所谓骨传导即是一种声音传递的方式&#xff0c;跟普通耳机不同的是传统耳机是通过空气将声音通过耳膜以此完成传递&#xff0c;而骨传导耳机的原理是将声音以不同…...

【JVM】垃圾回收机制

【JVM】垃圾回收机制 文章目录 【JVM】垃圾回收机制1. 方法区的回收2. 堆的回收2.1 引用计数法2.2 可达性分析算法 3. 对象引用3.1 强引用3.2 软引用3.3 弱引用3.4 虚引用和终结器引用 4. 垃圾回收算法4.1 标记清除算法4.2 复制算法4.3 标记整理算法4.4 分代垃圾回收算法 5. 垃…...

MySQL数据库入门到精通——运维篇(2)

MySQL数据库入门到精通——运维篇&#xff08;2&#xff09; 1. 分库分表1.1 分库分表介绍1.1.1 现在的问题1.1.2 拆分策略1.1.2.1 垂直拆分策略1.1.2.2 水平拆分策略 1.2 Mycat概述1.3 Mycat入门1.4 Mycat配置1.4.1 Schema标签1.4.2 Datanode标签1.4.3 Datahost标签1.4.4 rule…...

UFS4.0协议之电源与信号完整性设计探析

1. UFS4.0协议的核心电源架构解析 第一次拆解UFS4.0存储芯片时&#xff0c;我被其电源系统的精密设计震撼到了。与早期版本相比&#xff0c;UFS4.0将供电网络细分为VCC&#xff08;2.5V&#xff09;、VCCQ&#xff08;1.2V&#xff09;和VCCQ2&#xff08;1.8V&#xff09;三级…...

OpCore-Simplify:黑苹果配置的智能革命——从手动调试到自动化生成的转变

OpCore-Simplify&#xff1a;黑苹果配置的智能革命——从手动调试到自动化生成的转变 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 传统黑苹果配置需…...

失业期PHP程序员极致利用时间的庖丁解

"失业期 PHP 程序员极致利用时间”&#xff0c;常被误解为“疯狂投简历”或“没日没夜地刷 LeetCode”。 但本质上&#xff0c;这是一场**“认知重构”与“资产增值”的特种战役**。 失业不是“空窗期”&#xff0c;而是上帝强行塞给你的**“全脱产战略转型期”**。 在在职…...

效率倍增:用快马平台一键生成带反爬优化策略的clawx脚本

提升爬虫效率的实战心得&#xff1a;用clawx应对反爬机制 最近在做一个数据采集项目时&#xff0c;遇到了不少反爬问题。目标网站不仅会检测请求频率&#xff0c;还会检查请求头信息&#xff0c;甚至有些页面会根据访问行为动态调整返回内容。经过一番摸索&#xff0c;我发现通…...

决策树:从入门到精通,一个算法搞定分类与回归

还在为选择什么算法发愁&#xff1f;决策树既能分类又能回归&#xff0c;解释性还超强&#xff0c;今天带你彻底搞懂它一、引言如果你正在学习机器学习&#xff0c;那么决策树绝对是你绕不开的一道坎。为什么&#xff1f;因为它太实用了——银行用它来判断是否给用户批贷款&…...

效率提升秘籍:用快马AI一键生成龙虾openclaw官网的高复用性组件代码

效率提升秘籍&#xff1a;用快马AI一键生成龙虾openclaw官网的高复用性组件代码 最近在开发龙虾openclaw官网时&#xff0c;我发现重复性的页面结构、样式编写和组件集成耗费了大量时间。作为一个追求效率的开发者&#xff0c;我开始寻找能够简化这些流程的工具&#xff0c;直…...

Path of Building终极指南:免费离线Build规划工具让流放之路角色构建变简单

Path of Building终极指南&#xff1a;免费离线Build规划工具让流放之路角色构建变简单 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding 你知道吗&#xff1f;在《流放之路…...

让经典游戏重获新生:d3d8to9如何终结Direct3D 8兼容性难题

让经典游戏重获新生&#xff1a;d3d8to9如何终结Direct3D 8兼容性难题 【免费下载链接】d3d8to9 A D3D8 pseudo-driver which converts API calls and bytecode shaders to equivalent D3D9 ones. 项目地址: https://gitcode.com/gh_mirrors/d3/d3d8to9 你是否还记得那些…...

N_m3u8DL-RE技术深度解析:现代流媒体下载引擎的架构设计与实战应用

N_m3u8DL-RE技术深度解析&#xff1a;现代流媒体下载引擎的架构设计与实战应用 【免费下载链接】N_m3u8DL-RE Cross-Platform, modern and powerful stream downloader for MPD/M3U8/ISM. English/简体中文/繁體中文. 项目地址: https://gitcode.com/GitHub_Trending/nm3/N_…...

AI辅助开发:利用快马多模型能力打造智能抖音版本分析引擎

最近在做一个抖音版本更新的智能分析系统&#xff0c;发现用传统方法处理海量更新日志实在太费劲了。正好试用了InsCode(快马)平台的多模型AI能力&#xff0c;整个过程变得特别高效。分享下我的实践心得&#xff1a; 语义理解与关键信息提取 抖音每次版本更新的说明文档动辄上千…...