首页 > 其他分享 >2023-07面试题

2023-07面试题

时间:2023-07-17 22:48:02浏览次数:39  
标签:面试题 07 2023 redis 使用 bean setnx 注解 方法

1,spring中有哪些方式可以把bean注册进ioc容器?

①使用xml的方式声明bean的定义,spring容器在启动时会加载和解析这个xml,把bean装载进ioc容器中。

②使用@ComponentScan注解去扫描声明了@Controller @Service @Repository @Component注解的类,然后把这些类加载进ioc容器。

③使用@Configuration注解声明配置类,并使用@Bean注解实现bean的定义。这种方式是xml文件配置方式的演变。

④使用@Import注解,导入配置类或者普通的bean

⑤实现ImportSelector接口,动态批量注入配置类或者bean对象。这在springboot自动装配中也使用到。

 

2,spring bean的生命周期(实例化-->属性填充-->初始化-->销毁)

①解析类得到BeanDefinition。解析方法:比如@ComponentScan扫描注解,或者解析xml配置文件方式

②创建实例化对象。如果这个bean中有多个构造方法,默认使用无参构造创建bean,如果没有无参构造只有一个有参构造,则使用唯一的有参构造。如果有多个有参构造方法代码会报错。

③属性填充阶段。对象中加了@Autowired或者@Resource注解的属性进行填充。

④回调Aware方法,调用BeanPostProcessor初始化前的方法。

⑤调用初始化方法(需要实例化的对象中有需要初始化的属性)。调用初始化方法的2中方式:实现InitializingBean接口重写它的afterPropertiesSet方法;@PostConstruct注解标注的方法就是初始化的方法

⑥判断是否需要进行aop,如果实例化的对象中使用到了切面,这一步需要进行aop动态代理。

⑦将创建好的单例bean放入单例池

⑧使用bean

⑨spring容器关闭时调用destroy方法销毁

 

3,线程的生命周期有哪些?

创建,就绪,执行,阻塞(等待阻塞,同步阻塞,其他阻塞),死亡

 

4,OpenFeign调用原理

  1. 通过反射机制拿到当前代理类实现的接口XXXFeignApi
  2. 接口通过反射方式拿到接口上的注解@FeignClient(name = "product-service") 取出该注解中的值
  3. 通过反射拿到接口中的方法上面的注解 @GetMapping("product") 进行取出值
  4. 通过反射拿接口中方法参数注解 @RequestParam("pid")取出值
  5. 进行拼接路径 URL地址
  6. 根据服务的名字去注册中心去找到节点信息
  7. 根据你配置的负载均衡策略 选择一个节点
  8. 把路径中的服务名字替换掉ip:prot 信息
  9. 使用RestTemplat 取发送http 请求

 5,redis实现分布式锁

普通单体架构下synchronized同步锁就可以锁住资源了,但是在集群模式下,同步锁是JVM级别的,无法跨多个tomcat锁住资源,这个时候就需要使用到分布式锁了。

redis中setnx(key,value)方法可以实现,当一个setnx插入成功之后会返回true,如果再次插入相同的key则返回false。使用setnx方法当value没有值的时候返回true,当value有值的时候会插入失败并且返回false。

一个线程setnx成功之后就可以访问资源了,但是之后代码报错退出了,而setnx没有清空,导致后续请求进来无法获取锁,这就会导致死锁问题,所以使用setnx方法时必须要设置过期时间。

redisson实现了redis分布式锁

看门狗,默认每隔10s中去查看redis中的key是否在存在,如果存在则会将这个key进行续命,重新设置过期时间30s。

redis集群情况下,使用setnx也是会有问题的,因为setnx方法往redis集群中的master节点中写入数据,master写入完成后会返回,master同步数据到其他slave节点这是异步操作,有可能会出现问题导致数据不一致。redis主从集群只保证高可用,无法保证一致性。

解决方法:redlock,会往所有从节点的redis中同步setnx数据,只有当大部分从节点同步数据成功才会返回加锁成功。

 

标签:面试题,07,2023,redis,使用,bean,setnx,注解,方法
From: https://www.cnblogs.com/xyt666/p/17558870.html

相关文章

  • 2023.7.17打卡
    2023.7.17(1)、今天没学车,教练带学员考试去了,今天学了Java,看了《大道至简》,记了单词,晚上打了会球,好久没打球了,强度跟不上。(2)、明天要学车,学Java,看《大道至简》,记单词。(3)、今天没遇到什么问题。......
  • 230715校内赛
    T1串背景形貌昳丽的西克是風子国王嫡系军队的general,同时也兼任風子王国驻绿鸟国的外交官。西克喜欢在蕉含流群里与其它王国的使者蕉含流,但前段时间由于说怪话被来自绿鸟国意识形态不完全的国王驱含逐出境。西克非常愤怒,想要说出一句最怪的话,但他却忙于敢览求社的......
  • freee Programming Contest 2023(AtCoder Beginner Contest 310)
    Preface打的就是依托答辩,当时看一眼D感觉是个爆搜不想写就先跳了去想F,结果傻逼了没想出来最后30min了赶紧溜回去把D爆搜写了,但是已经罚时爆炸了,其实如果正常正序做的话排名会挺稳的后面一问包大爷发现F是个傻逼题,只能说计数水平实在是低下A-OrderSomethingElse签到题#i......
  • 2023.7.17小结
    前排碎碎念今天是去if楼的第二天,昨晚开了好久好久的会,小狮子要来湘潭找我了,有些开心。但是好好学习比较重要捏,那就让他先独守空房一阵子叭,诶嘿今天我值日,虽然我早上起不来但是可以晚上晚点走,主打一个新加坡作息。浅浅看一下今天的任务清单好咯。任务清单高精度快速幂并查集......
  • SMU Summer 2023 Contest Round 4
    SMUSummer2023ContestRound4A-TelephoneNumber思路:满足有8,且8后有大于等于11个数#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>PII;typedefpair<string,int>PSI;typedefpair<char,int>PCI;type......
  • 牛客多校2023
    R17.17开场三个人都有点不在状态,过了十分钟我才猜到结论,写了一发,过D然后我又开始不在状态,H没想出来,过了一会fyc会了,半个多小时的时候过了fyc很快又会了J,我从K赶过来的时候他已经开写了,我就继续看K,十几分钟后他过了然后fyc提出了分层图的想法,我大概想到了K,他就把K交给我,我中途......
  • ML-2023-07-17
    1、用shape获取矩阵维度。 2、在list中是不限定数据的类型的,可以混杂各种不同的类型,但是在numpy中则要求数据均为统一的,不统一时会自动转换,如下图,另外观察可知,只将末尾4改成4.0,元素在打印时也有些许变化,变为以小数点结束的形式,如果想要更明显,可以改成字符‘4’再输出观察。 ......
  • 2023年7月17日 天气:晴
          今天早上起来背了10个英语单词,然后学习了一个小时的java,写了一会英语阅读,然后和朋友出去打了两个小时的羽毛球,最后写了一会作业。    明天打算看一小时的电视剧,然后和朋友出去玩一会,打一两个小时的篮球,最后晚上练一小时的字,然后学习一小时的java。......
  • 2023年Q2京东厨卫大电市场分析报告(京东运营数据分析)
    随着新产品推广和消费需求升级,今年Q2,京东厨卫大电市场的销售额突破百亿,从同环比来看均呈增长趋势。百亿市场中,油烟机、电热水器、燃气热水器这三大品类占据较大份额,这一期,我们重点来看一下京东厨卫大电市场中这3个热门品类的行业销售情况。*数据源于鲸参谋-类目排行【Q2油烟机市场......
  • Goland 最新激活码(2023/7/17)
    33MEHOB8W0-eyJsaWNlbnNlSWQiOiIzM01FSE9COFcwIiwibGljZW5zZWVOYW1lIjoiUG9saXRla25payBNZXJsaW1hdSBNZWxha2EiLCJhc3NpZ25lZU5hbWUiOiJtYWdnaWUgc2VyIiwiYXNzaWduZWVFbWFpbCI6Im1hZ2dpZXNlckB5ZWFoLm5ldCIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIs......