面试题-框架
文章平均质量分 82
桃月十二_
这个作者很懒,什么都没留下…
展开
-
spring事务传播机制
调用methodA方法时,因为当前上下文不存在事务,所以会开启一个新的事务。当执行到methodB时,methodB发现当前上下文有事务,将事务A挂起,用自己的事务。PROPAGATION_REQUIRES_NEW:内层事务与外层事务就像两个独立的事务一样,一旦内层事务进行了提交后,外层事务不能对其进行回滚。PROPAGATION_NESTED :嵌套事务,外层事务的回滚可以引起内层事务的回滚。【无事务执行,如果当前存在事务,把当前事务挂起】【 外部事务提交, 嵌套事务提交,外部事务回滚,嵌套事务回滚;原创 2023-04-28 16:06:28 · 936 阅读 · 0 评论 -
Hytrix原理
资源隔离主要指对线程的隔离。Hystrix提供了两种线程隔离方式:线程池和信号量。原创 2023-04-25 21:56:20 · 460 阅读 · 0 评论 -
springcloud之Feign、ribbon设置超时时间和重试机制的总结
当ribbon超时后且hystrix没有超时,便会采取重试机制。如果设置为true,便会对所有的请求进行重试,如果是put或post等写操作,如果服务器接口没做幂等性,会产生不好的结果,所以OkToRetryOnAllOperations慎用。所以要根据上面配置的参数计算hystrix的超时时间,使得在重试期间不能达到hystrix的超时时间,不然重试机制就会没有意义。当我们没有显式配饰feign的超时时间的是时候,如果配置了ribbon的超时时间,则只有这个配置会生效,feign默认的1s超时无效。原创 2023-04-25 19:46:44 · 6649 阅读 · 2 评论 -
Spring中所使用的设计模式
工厂模式:Spring使用工厂模式,通过BeanFactory和ApplicationContext来创建对象单例模式:Bean默认为单例模式代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术模板方法:可以将相同部分的代码放在父类中,而将不同的代码放入不同的子类中,用来解决代码重复的问题。比如RestTemplate, JmsTemplate, JpaTemplate。转载 2023-03-06 20:08:48 · 116 阅读 · 0 评论 -
MyBatis 的一级、二级缓存机制
缓存是存在于内存中的临时数据。默认情况下只会开启一级缓存,也就是局部的 session 会话缓存。每一个 session 会话都会有各自的缓存,是局部的。原创 2023-02-19 11:32:38 · 1443 阅读 · 0 评论 -
Spring循环依赖
循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。spring中不支持构造器注入和prototype类型的属性注入的循环依赖。因为spring中的类默认是单例的,单例的属性注入是可以成功的。原创 2022-11-07 18:59:11 · 324 阅读 · 0 评论 -
SpringAOP注解详解
时,返回的result就是null,但是环绕通知的返回类型我们定义的是Object类型的,null不能转化为Object类型,所以抛出了个类型转换的错误。当连接点方法成功执行后,返回通知方法才会执行,如果连接点方法出现异常,则返回通知方法不执行。返回通知方法在目标方法执行成功后才会执行,所以,返回通知方法可以拿到目标方法(连接点方法)执行后的结果。如果要拿目标方法的执行结果,要用下面的通知方法。从输出结果中可以看出,add方法没有异常,因此不执行异常通知方法,div方法出现异常,执行科异常通知方法。转载 2022-11-05 16:33:44 · 360 阅读 · 0 评论 -
@Conditional注解
Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。如果将ObstinateCondition的matches方法返回值改成true,两个bean就被注入进容器。根据当前操作系统来注入Person实例,windows下注入bill,linux下注入linus。第一个条件类实现的方法返回true,第二个返回false,则结果false,不注入进容器。第一个条件类实现的方法返回true,第二个返回true,则结果true,注入进容器中。转载 2022-11-03 11:40:54 · 102 阅读 · 0 评论 -
@ControllerAdvice
在Spring里,我们可以使用@ControllerAdvice来声明一些全局性的东西,最常见的是结合@ExceptionHandler注解用于全局异常的处理。@ExceptionHandler注解标注的方法:用于捕获Controller中抛出的不同类型的异常,从而达到异常全局处理的目的;@InitBinder注解标注的方法:用于请求中注册自定义参数的解析,从而达到自定义请求参数格式的目的;@ModelAttribute注解标注的方法:表示此方法会在执行目标Controller方法之前执行。原创 2022-10-17 20:12:35 · 119 阅读 · 0 评论 -
【面试题 - springcloud】 Hystrix
多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”,如果扇出的链路上某个微服务的调用响应时间过长,或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。设定错误百分比,默认值50%,例如一段时间(10s)内有100个请求,其中有55个超时或者异常返回了,那么这段时间内的错误百分比是55%,大于了默认值50%,这种情况下触发熔断器-打开。过多长时间,熔断器再次检测是否开启,默认为5000,即5s钟。原创 2022-09-16 17:28:47 · 862 阅读 · 0 评论 -
【面试题 - springcloud】- 网关
来源:https://www.bilibili.com/video/BV1LQ4y127n4?配置如下,要求2031年以后在可以访问orderservice,2022年请求会404。对所有路由都生效的过滤器,并且可以自定义处理逻辑。原创 2022-09-15 14:51:37 · 279 阅读 · 0 评论 -
【面试题 - springcloud】- Fegin
来源:https://blog.csdn.net/yzx3105/article/details/115110151。Feign的动态代理会根据你在接口上的@RequestMapping等注解,来动态构造出你要请求的服务的地址。首先,如果你对某个接口定义了@FeignClient注解,Feign就会针对这个接口创建一个动态代理。最后针对这个地址,发起请求、解析响应。原创 2022-09-15 11:24:08 · 649 阅读 · 0 评论 -
【面试题- springcloud】- Ribbon 负载均衡
负载均衡,会帮你在每次请求时选择一台机器,均匀的把请求分发到各个机器上· Ribbon的负载均衡默认使用的最经典的Round Robin轮询算法。这是啥?简单来说,就是如果订单服务对库存服务发起10次请求,那就先让你请求第1台机器、然后是第2台机器、第3台机器、第4台机器、第5台机器,接着再来—个循环,第1台机器、第2台机器。。。以此类推。原创 2022-09-15 10:59:09 · 471 阅读 · 0 评论 -
【面试题 - springcloud】 - Eureka服务注册中心
问题在于,选举leader的时间太长,30-120s,且选举期间整个zookeeper集群是不可用的,这就导致在选举期间注册服务瘫痪,漫长的选举时间导致注册长期不可用。而Eureka的客户端在向某个Eureka注册时,如果发现连接失败,则会自动切换至其他节点,只要有一台Eureka还在,就能保住注册服务的可用性,只不过查到的信息可能不是最新的。使得Eureka不会剔除我们的服务,从而在我们访问的时候,会访问到可能已经失效的服务,导致请求失败,影响我们的开发。环境也相对稳定,影响服务正常运行的人为情况较少。原创 2022-09-15 10:13:33 · 795 阅读 · 0 评论 -
【面试题 - springmvc】SpringMVC的流程
第二种写法可以通过@RequestParam(required = false)设置为非必传。第二种写法可以通过@RequestParam(“userId”)或者@RequestParam(value = “userId”)指定参数名。@PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。原创 2022-09-12 15:57:37 · 117 阅读 · 0 评论 -
SpringBoot面试题
Configuration —>也会被spring容器托管,注册到容器中@Bean---->相当于注册一个bean标签来源:https://www.cnblogs.com/sun-10387834/p/15665760.html。原创 2022-09-28 11:50:57 · 308 阅读 · 0 评论 -
SpringBoot的自动配置
基于你引入的依赖Jar包,对SpringBoot应用进行自动配置他为Spring Boot框架的开箱即用提供了基础支撑当满足特定条件时,才向IOC容器注册。查找其中配置类之一:RedisAutoConfiguration视频来源:https://www.bilibili.com/video/BV1NY411P7VX/?原创 2022-09-28 09:12:56 · 1940 阅读 · 0 评论 -
Java SPI与Spring Boot自动配置的核心流程
来源:https://www.bilibili.com/video/BV1RY4y1v7mN/?首先,JDBC即使用java语言来访问数据库的一套API,每个数据库厂商都提供了各自的JDBC实现。Service:是一个公开的接口或者抽象类,定义了一个抽象的功能模块。Service Provider:Service接口的一个实现类。发现并加载Service Provider。原创 2022-09-27 22:46:59 · 577 阅读 · 0 评论 -
【面试题】spring循环依赖
1.什么是循环依赖循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:2.spring是否支持循环依赖先说结论:spring仅支持单例对象属性注入依赖。在Spring中有:构造器循环依赖field属性注入循环依赖1. 构造器循环依赖(项目启动报错)@Servicepublic class A { public A(B b) { }}@Servicepublic class B {原创 2021-03-01 10:35:26 · 1372 阅读 · 1 评论 -
mybatis
Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql。MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。原创 2022-09-26 19:57:31 · 88 阅读 · 0 评论 -
【spring】面试题汇总
BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化。5.Spring对主流的框架提供了很好的集成支持,比如和hibernate SpringMVC等框架的集成。3.Spring是个容器,因为它包含并且管理应用对象的生命周期和配置,比如对象的创建、销毁、回调等。1.Spring是非侵入式的,基于Spring开发的应用一般不依赖于Spring的类。单例设计模式 : Spring 中的 Bean 默认都是单例的。原创 2022-09-12 13:51:59 · 381 阅读 · 0 评论 -
【spring】事务
注意,这里是每执行一次sql就check一次时间,代码中,执行插入sql时,check时间没超时,等再执行http请求时,这个不是sql,所以不会check过期时间,加上请求假死,所以,程序就hold在那,事务也不超时回滚。所谓事务超时,就是指一个事务所允许执行的最长时间,如果超过该时间限制但事务还没有完成,则自动回滚事务。methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的。原创 2022-09-12 15:11:36 · 1353 阅读 · 0 评论 -
【spring】 IOC
Bean 代指的就是那些被 IoC 容器所管理的对象。原创 2022-09-26 16:52:37 · 330 阅读 · 0 评论 -
【Spring】AOP面向切面编程(Spring4和Spring5区别)
AOP:能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。原创 2021-02-28 22:47:18 · 1922 阅读 · 1 评论