框架篇八股(自用)

news2025/12/15 4:26:39

框架篇

Spring框架中的bean不是线程安全的

@Scope()

singleton单例

prototype多例

一个类中有可修改的成员变量需要考虑线程安全

bean没有可变状态(service类,DAO类)

某种程度单例bean是线程安全的

AOP面向切面编程,抽取公共行为和逻辑,封装成可重用的模块(切面)

记录操作日志

缓存处理

Spring中内置的事务处理

常用环绕通知

@Around(切面类)

Spring

编程式事务控制:TransactionTemplate 对业务代码侵入 不常用

声明式事务管理:@Transaction

本质通过AOP对方法前后进行拦截

在方法开始前加入一个事务

在执行完目标方法之后根据执行情况提交或者回滚事务

事务失效的场景

异常捕获处理

try catch

目标自己处理掉异常,事务通知无法获悉

在catch块中添加RuntimeException抛出

抛出检查异常

Spring默认只会回滚非检查异常

在注解里面配置rollbackFor属性

非public方法

事务通知前提是方法是public

bean的生命周期

BeanDefinition

Spring容器进行实例化,xml配置的<bean>的信息封装成BeanDefinition对象

1.构造函数:实例化Bean

Bean的创建和初始化赋值是分开的

2.依赖注入

3.Aware接口

4.Bean前置处理器

5.初始化方法:InitializingBean 自定义init方法

6.Bean后置处理器 AOP 动态代理

7.销毁Bean

三级缓存解决Spring中的循环引用(依赖注入出问题)

一级缓存:单例池,初始化完成的bean

二级缓存:缓存早期的bean对象(生命周期没有走完)

三级缓存:对象工厂,用来创建对象(代理对象)

spring框架依据三级缓存已经解决了大部分的循环依赖

构造方法循环依赖问题

在注入的参数前加@lazy注解

SpringMVC执行流程

视图阶段(老旧JSP)

1.请求到前端控制器

2.前端控制器调用处理器映射器

3.处理器映射器找到具体处理器,生成处理器对象以及处理器拦截器,返回给前端控制器

4.处理器前端控制器调用处理器适配器

5.处理器适配器适配到具体处理器

6.controller执行完返回ModeAndView给处理器适配器

7.处理器适配器将ModeAndView返回给前端控制器

8.前端控制器将ModeAndView传给视图解析器

9.视图解析器解析后返回具体的视图

10.前端控制器根据视图进行渲染

11.响应用户

前后端分离阶段(接口开发,异步)

1.请求到前端控制器

2.前端控制器调用处理器映射器

3.处理器映射器找到具体处理器,生成处理器对象以及处理器拦截器,返回给前端控制器

4.处理器前端控制器调用处理器适配器

5.处理器适配器适配到具体处理器

6.方法添加@ResponseBody

7.通过HttpMessageConverter返回结果转换为JSON并响应

Springboot自动配置原理

@SpringBootApplication包含三个注解

@SpringBootConfiguration 与@Configuration注解作用相同,配置类

@ComponentScan 组件扫描 默认引导类所在包及其子包

@EnableAutoConfiguration 实现自动化配置的核心注解

该注解通过@import注解导入对应的配置选择器

读取该项目和该项目引用的jar包的classpath路径下

META-INF/spring.factories文件中所配置的全类名

根据条件注解所指定的条件决定是否导入Spring容器中

@ConditionalOnClass 判断是否有对应的class文件

Mybatis执行流程

1.读取配置文件

2.创建会话工厂SqlSessionFactory

3.会话工厂创建SqlSession对象(包含执行sql语句的所有方法)

4.操作数据库的接口,Executor执行器,同时负责查询缓存的维护

5.Executor接口执行方法中有一个MappedStatement类型的参数,封装了映射信息

6.输入参数映射

7.输出结果映射

Mybatis支持延时加载,默认没有开启

原理:

1.使用CGLIB创建目标对象的代理对象

2.调用目标方法时,进入拦截器invoke方法,发现目标方法为null值,执行sql查询

3.获取数据后,调用set方法设置属性值,再继续查询目标方法,就有值

本地缓存:本质是一个HashMap

一级缓存:作用域是session级别

二级缓存:作用域是namespace和mapper的作用域,不依赖session

一级缓存:HashMap本地存储,Session进行flush或close,Session中所有的Cache清空

默认打开一级缓存

二级缓存:HashMap存储,不依赖于SQL session 默认关闭二级缓存

全局配置文件

映射文件<cache/>

1.数据更新机制:某一个作用域(一级缓存Session/二级缓存Namespace)进行新增、

修改、删除操作后,默认该作用域下的所有select中的缓存被clear

2.二级缓存需要缓存的数据实现Serializable

3.只有会话提交或者关闭之后,一级缓存中的数据才会转移到二级缓存中

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

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

相关文章

【阿里云免费领取域名以及ssl证书,通过Nginx反向代理web服务】

文章目录 前言一、申请域名1.1 访问阿里云官网1.2 输入自定义域名1.3 创建个人模板1.4 支付1元可以使用域名1年1.5 按照提示实名认证1.6 实名认证成功 二、域名解析2.1 选择域名解析2.2 解析设置2.3 快速添加解析2.4 选择对应类型2.5 解析成功 三、申请免费ssl证书3.1 访问阿里…

数据分析2

五、文件 CSV Comma-Separated Value&#xff0c;逗号分割值。CSV文件以纯文本形式存储表格数据&#xff08;数字和文本&#xff09;。 CSV记录间以某种换行符分隔&#xff0c;每条记录由字段组成&#xff0c;字段间以其他字符或字符串分割&#xff0c;最常用逗号或制表符。…

实战项目5(08)

目录 任务场景一 【r1配置】 【r2配置】 【r3配置】 ​​​​​​​任务场景二 【r1配置】 【r2配置】 ​​​​​​​任务场景一 按照下图完成网络拓扑搭建和配置 任务要求&#xff1a; 通过在路由器R1、R2和R3上配置静态路由&#xff0c;实现网络中各终端PC能够正常…

.NET MAUI 基础知识

文章目录 什么是 .NET MAUI&#xff1f;MAUI的核心特点与Xamarin.Forms的区别 开发环境搭建安装Visual Studio 2022安装必要组件配置Android开发环境配置iOS开发环境验证安装 创建第一个MAUI应用创建新项目MAUI项目结构解析理解关键文件运行应用程序简单修改示例使用热重载 MAU…

佰力博科技与您探讨表面电阻的测试方法及应用领域

表面电阻测试是一种用于测量材料表面电阻值的技术&#xff0c;广泛应用于评估材料的导电性能、静电防护性能以及绝缘性能。 1、表面电阻的测试测试方法&#xff1a; 表面电阻测试通常采用平行电极法、同心圆电极法和四探针法等方法进行。其中&#xff0c;平行电极法通过在试样…

鹅厂面试数学题

题目 一个圆上随机取三个点&#xff0c;求这三个点构成锐角三角形的概率。 解答 根据圆周角定理&#xff0c;此题目等价为&#xff1a;一条线段长度为1的线段随机取两个点分成三段&#xff0c;任意一段长度均不大于1/2的概率。记前两段的长度为&#xff0c;则第三段的长度为…

java基础-package关键字、MVC、import关键字

1.package关键字&#xff1a; &#xff08;1&#xff09;为了更好管理类&#xff0c;提供包的概念 &#xff08;2&#xff09;声明类或接口所属的包&#xff0c;声明在源文件首行 &#xff08;3&#xff09;包&#xff0c;属于标识符&#xff0c;用小写字母表示 &#xff0…

[6-2] 定时器定时中断定时器外部时钟 江协科技学习笔记(41个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 V 30 31 32 33 34 35 36 37 38 39 40 41

【PmHub后端篇】PmHub中基于自定义注解和AOP的服务接口鉴权与内部认证实现

1 引言 在现代软件开发中&#xff0c;尤其是在微服务架构下&#xff0c;服务接口的鉴权和内部认证是保障系统安全的重要环节。本文将详细介绍PmHub中如何利用自定义注解和AOP&#xff08;面向切面编程&#xff09;实现服务接口的鉴权和内部认证&#xff0c;所涉及的技术知识点…

多模态AI新纪元:Vertex AI Gemini与Spring AI深度集成实践

企业级AI集成进阶&#xff1a;Spring AI与Vertex AI Gemini的配置与调优实战 一、前沿技术&#xff1a;多模态模型的企业级配置范式 在生成式AI技术快速迭代的当下&#xff0c;企业级应用对模型配置的精细化需求日益增长。Vertex AI Gemini作为Google推出的多模态大模型&…

开源AI数字人分身克隆小程序源码系统深度剖析:从搭建到应用

在人工智能与小程序生态深度融合的当下&#xff0c;开源 AI 数字人分身克隆小程序源码成为开发者的热门工具。从搭建基础环境到实现实际应用&#xff0c;这一过程涉及多项技术与复杂流程。本文将带您深入剖析开源 AI 数字人分身克隆小程序源码&#xff0c;揭开其从搭建到应用的…

ETL背景介绍_1:数据孤岛仓库的介绍

1 ETL介绍 1.1 数据孤岛 随着企业内客户数据大量的涌现&#xff0c;单个数据库已不再足够。为了储存这些数据&#xff0c;公司通常会建立多个业务部门组织的数据库来保存数据。比如&#xff0c;随着数据量的增长&#xff0c;公司通常可能会构建数十个独立运行的业务数据库&am…

Linux系统:虚拟文件系统与文件缓冲区(语言级内核级)

本节重点 初步理解一切皆文件理解文件缓冲区的分类用户级文件缓冲区与内核级文件缓冲区用户级文件缓冲区的刷新机制两级缓冲区的分层协作 一、虚拟文件系统 1.1 理解“一切皆文件” 我们都知道操作系统访问不同的外部设备&#xff08;显示器、磁盘、键盘、鼠标、网卡&#…

智能体的典型应用:自动驾驶、智能客服、智能制造、游戏AI与数字人技术

本文为《React Agent&#xff1a;从零开始构建 AI 智能体》专栏系列文章。 专栏地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。项目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代码示​例与实战源&#xff09;。完整介绍…

国联股份卫多多与七腾机器人签署战略合作协议

5月13日&#xff0c;七腾机器人有限公司&#xff08;以下简称“七腾机器人”&#xff09;市场部总经理孙永刚、销售经理吕娟一行到访国联股份卫多多&#xff0c;同卫多多/纸多多副总裁、产发部总经理段任飞&#xff0c;卫多多机器人产业链总经理郭碧波展开深入交流&#xff0c;…

WebGL 开发的前沿探索:开启 3D 网页的新时代

你是否曾好奇&#xff0c;为何如今网页上能呈现出如同游戏般逼真的 3D 场景&#xff1f;这一切都要归功于 WebGL。它看似神秘&#xff0c;却悄然改变着我们浏览网页的体验。以往&#xff0c;网页内容大多局限于二维平面&#xff0c;可 WebGL 打破了这一限制。它究竟凭借什么&am…

激光雷达定位算法在FPGA中的实现——section3 Matlab实现和校验

1、校验section2的计算方法是否正确 以section1里面的图示 举个例子: 1.1 手动计算

AI+可视化:数据呈现的未来形态

当AI生成的图表开始自动“美化”数据&#xff0c;当动态可视化报告能像人类一样“讲故事”&#xff0c;当你的眼球运动直接决定数据呈现方式——数据可视化的未来形态&#xff0c;正在撕裂传统认知。某车企用AI生成的3D可视化方案&#xff0c;让设计师集体失业&#xff1b;某医…

[免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩…

【网络入侵检测】基于源码分析Suricata的IP分片重组

【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全&#xff0c;欢迎关注与评论。 目录 目录 1.概要 2. 配置信息 2.1 名词介绍 2.2 defrag 配置 3. 代码实现 3.1 配置解析 3.1.1 defrag配置 3.1.2 主机系统策略 3.2 分片重组模块 3.2.1…