spring面试准备

1. 什么是spring:
 	1. 是个容器,也是个轻量级的javaEE开发应用框架,
 	2. 核心功能是ioc合aop
2. 什么是ioc:
	Spring IOC 负责创建对象,管理对象(通过依赖注入(DI),装配对象,配置对象,
	并且管理这些对象的整个生命周期。
	控制反转,对象与对象之间的关系不再由传统的方式管理,而是通过spring进行管理
	
	DI(依赖注入)是他的一个实现。
	ioc原理: 通过反射+dom4j解决依赖, 
	
	最顶层是BeanFactory接口,起一个约束作用,同时定义了很多方式。
	ApplicationContext:是spring的核心配置接口,整个项目运行都依赖于它。管理bean。
	
	源码大概分为几部分: 
	1. 加载并解析配置文件到BeanDefinition中的map中(map<String, BeanDefinition>)
	2. getBean的时候从map中取。
3. aop
	思想:  面向切面编程。
	那些地方用到:日志,事务。
	解决了什么问题:代码重复。
	springAop通知有哪些: 前置、后置、环绕、异常
	步骤
		1. 类上注解@aspect
		2. 方法上加对应的注解(@before,@after,@AfterReTuring,@AfterThrowing)。
			如:@before("execution(* com.kangyu.userDao.add)")。
	内部通过动态代理模式(cglib)来进行处理,
	什么是代理模式: 	需要对一个类进行加强,然后可以通过代理来进行操作。
	代理分为动态代理与静态代理。
	静态代理: 需要生成代理类来实现。
	动态代理: jdK动态代理(反射来实现),cglib动态代理(通过字节码)。
	cglib动态代理: 在运行期间对方法进行增强,依赖于asm包,把被代理对象通过class方式
	加载进来,修改其字节码生成子类。
4. bean的生命周期
 	- >初始化bean 
 	- > bean中的属性赋值
 	- > 调用BeanNameAware中setBeanName方法
 	- > 调用BeanFactoryAware中的setBeanFactory
 	- > 调用ApplicationContextAware中的setApplicationContext
 	- > BeanPostProcessor中的预处理方法 
 	- > InitializingBean的afterPropertiesSet方法 
 	- > 调用自定义的初始化方法(init-method)方法
 	- > BeanPostProcessor的后置方法
 	- > Bean已经加载好了,可以使用了。
 	- > 容器关闭的时候,DisposableBean中的destory方法
 	- > 调用自定义的摧毁方法(init-destory)方法。
5. springMvc流程
	 - > http请求到dispatcherServlet
	 - > 调用处理器映射器(getHandler)(通过反射的方式找到对应的方法)并返回处理器执行链
	 - > 通过处理器执行链找到对应的适配器(执行里面的方法内容)
	 - > 处理器将处理的结构以及跳转的视图封装成modleAndView,并将其返回给适配器。适配器
	 	 返回给dispatcherServlet。
	 - > dispatcherServlet根据modleAndView找到对应的视图解析器
	 - > 返回view页面给客户端。

在这里插入图片描述

6. spring中如何给对象的属性赋值:
 	构造方法,set
7. 事务

事务的作用: 保证数据的一致性

事务原理:获取数据源的Api,Api中封装了提交回滚等。
可以理解为通过环绕通知(事务开始和事务提交)和异常通知(事务回滚)实现的。

事务特性: 原子性(要么都成功要么…),一致性(A用户向B相互转账100,B要增加100),隔离性(事务之间互不影响),持久性(已经存到数据库里去了)。
事务分类:手动事务、xml事务、声明事务。
spring 事务的传播行为,主要有以下七种:
支持当前事务:

1. 如果当前有事务就用当前事务,否则就用自己的。
2. 如果当前有事务就用当前事务,否则就以非事务运行
3. 如果当前有事务就用当前事务,否则就抛出异常

不支持当前事务

1. 如果当前存在事务,用新事务
2. 如果当前存在事务,不用事务
3. 如果当前存在事务,抛出异常

用这个tx:annotation-driven,然后就可以用@transcation了。

8. 依赖注入注释的方法
	主要在配置文件中加入: <context:component-scan>这个注解。 在相应的dao、service加入
	@Repository和@service注解即可。
9. Spring事务隔离级别与Mysql InnoDB事务隔离级别的关系

在这里插入图片描述

10. spring注解Transactional

rollbackFor:
spring默认的回滚类型是UncheckedException(不可检查异常,也就是运行时异常,包括RuntimeException和Error),如果不改,那么当我们抛出Exception(因为是RuntimeException的爸爸)的时候,事务不会进行回滚
https://www.jianshu.com/p/9098372c108a

11. spring回滚事务
  • TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
  • throw new RuntimeException()
内容概要:该论文探讨了一种基于粒子群优化(PSO)的STAR-RIS辅助NOMA无线通信网络优化方法。STAR-RIS作为一种新型可重构智能表面,能同时反射和传输信号,与传统仅能反射的RIS不同。结合NOMA技术,STAR-RIS可以提升覆盖范围、用户容量和频谱效率。针对STAR-RIS元素众多导致获取完整信道状态信息(CSI)开销大的问题,作者提出一种在不依赖完整CSI的情况下,联合优化功率分配、基站波束成形以及STAR-RIS的传输和反射波束成形向量的方法,以最大化总可实现速率并确保每个用户的最低速率要求。仿真结果显示,该方案优于STAR-RIS辅助的OMA系统。 适合人群:具备一定无线通信理论基础、对智能反射面技术和非正交多址接入技术感兴趣的科研人员和工程师。 使用场景及目标:①适用于希望深入了解STAR-RIS与NOMA结合的研究者;②为解决无线通信中频谱资源紧张、提高系统性能提供新的思路和技术手段;③帮助理解PSO算法在无线通信优化问题中的应用。 其他说明:文中提供了详细的Python代码实现,涵盖系统参数设置、信道建模、速率计算、目标函数定义、约束条件设定、主优化函数设计及结果可视化等环节,便于读者理解和复现实验结果。此外,文章还对比了PSO与其他优化算法(如DDPG)的区别,强调了PSO在不需要显式CSI估计方面的优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值