后端相关随机题目记录(1)

在这里插入图片描述

目录

后端相关随机题目记录(1)

  • 后端相关随机题目记录(1)
    • Bean的类型以及作用域
    • Bean的生命周期
    • Mysql的底层数据结构
    • Redis
    • Http和Https区别
    • AOP在项目的应用 自定义注解?
    • 请求在spring中的一个流程
    • Nacos与zk的区别
    • SpringMVC执行流程
    • 简述Bean的生命周期


文章所属专区 超链接


后端相关随机题目记录(1)

闲着也是闲着,来都来了,看看吧。

Bean的类型以及作用域

Singleton:单例模式,Spring 容器中只会创建一个 Bean 实例,所有对该 Bean 的请求都将返回同一个实例。默认的作用域为 Singleton。
作用域:
Prototype:原型模式,每次请求该 Bean 时,都会创建一个新的 Bean 实例。因此,该 Bean 的生命周期和请求周期相同。
Request:每个 HTTP 请求都会创建一个新的 Bean 实例,该 Bean 的生命周期将与 HTTP 请求的生命周期相同。只有在 Web 应用程序上下文中才有意义。
Session:每个 HTTP Session 都会创建一个新的 Bean 实例,该 Bean 的生命周期将与 HTTP Session 的生命周期相同。只有在 Web 应用程序上下文中才有意义。
Global Session:该作用域仅适用于基于 Portlet 的 Web 应用程序,它表示 Portlet 应用程序的全局 Session 范围内创建 Bean 实例。只有在 Portlet 上下文中才有意义。
类型:
POJO 类型的 Bean:通过配置文件或注解方式定义的简单 Java 对象。
Factory Bean 类型的 Bean:实现了 FactoryBean 接口的 Bean,可以通过其 getObject() 方法返回一个其他类型的 Bean 实例。
Abstract Bean 类型的 Bean:继承了 AbstractBeanDefinition 类的 Bean,可以自定义 Bean 的创建和销毁过程,例如:自定义属性注入和初始化方法的调用时机等。
Inner Bean 类型的 Bean:在 Bean 的属性值中定义的一个 Bean,它的生命周期与外部 Bean 相关联,外部 Bean 销毁时内部 Bean 也会被销毁。
Alias Bean 类型的 Bean:通过别名引用其他 Bean 实例的 Bean,通常用于简化配置文件中的 Bean 引用。

Bean的生命周期

对 Prototype Bean 来说,当用户 getBean 获得 Prototype Bean 的实例后,IOC 容器就不再对当前实例进行管理,而是把管理权交由用户,此后再 getBean 生成的是新的实例。
所以我们描述 Bean 的生命周期,都是指的 Singleton Bean。

1. 实例化Bean

通过xml配置或者注解(Autowire)告诉spring哪些bean需要实例化。
对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBean进行实例化
对于BeanDefinition,当容器启动结束后,通过获取BeanDefinition对象中的信息,实例化所有的bean。

2. 设置对象属性(依赖注入)

实例化后的Bean对象被封装在BeanWrapper对象中,Spring容器根据BeanDefinition中的信息,以及BeanWrapper提供的设置属性的接口完成依赖注入。

3. 初始化
初始化完成后,Bean就可以被使用了
3.1 检查Aware相关接口,并设置依赖

spring会检测Bean是否实现了Aware相关接口(xxxAware),并将xxxAware实例注入给Bean
如果实现了BeanNameAware,会调用他实现的setBeanName(String beanId)方法,传递的是这个Spring配置文件的这个Bean的id值(beanId);
如果实现了BeanFactoryAware,会调用他实现的setBeanFactory()方法,传递的是spring工厂本身;
如果实现了ApplicationContextAware,会调用他实现的setApplicationContext()方法,传递的是spring上下文;

3.2 BeanPostProcesser前置处理

BeanPostProcesser用来做一些自定义处理,那将会调用postProcessBeforeInitialization

3.3 是否实现Initailization接口

执行afterPropertiesSet()方法

3.4 Bean是否在Spring的配置文件中配置了 init-method属性

如果有,则会调用其配置的初始化方法

3.5 BeanPostProcesser后置处理

BeanPostProcesser用来做一些自定义处理,那将会调用postProcessAfterInitialization(Object
obj, String s)方法。

真正实现初始化的是 3.3 3.4两部 其他都是初始化的前后置处理。

  1. 销毁

4.1DisposableBean接口

当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法

4.2 destroy-method

如果spring的配置文件里配置了destroy-method属性,会自动调用其配置的销毁方法。

Mysql的索引类型

  1. 普通索引 index

没有任何限制,唯一的作用是加速数据的查找,允许在定义索引的列为空以及重复,关键字 index,key
create index index_name on table_name (column_name);
alter table table_name add index index_name (column_name);

  1. 唯一索引 unique

唯一索引是为了避免数据出现重复,索引列的值必须唯一,允许有空值。如果是组合索引,则列值的组合必须唯一。UNIQUE
create unique index index_name on table_name (column_name);
alter table table_name add unique index_name (column_name);

  1. 主键索引 primary key

不允许索引列为空或者更值重复,PRIMARY KEY
create table table_name
(
id int not null,
username varchar(16) not null,
primary key (column_name)
);

  1. 组合索引

将多个列共同组成一个索引
create index index_name on table_name (column_name1, column_name2);

5.全文索引

主要用来查找文本中关键字,只能在 CHAR、VARCHAR 或 TEXT 类型的列上创建。在 MySQL 中只有 MyISAM 存储引擎支持全文索引。
全文索引允许在索引列中插入重复值和空值。
不过对于大容量的数据表,生成全文索引非常消耗时间和硬盘空间。
创建全文索引使用 FULLTEXT 关键字。

Mysql的底层数据结构

常见的数据结构有 二叉树,红黑树 B-TREE,B+TREE
而Mysql的数据结构是 B+Tree

Redis

使用spring 的redis注解@CacheConfig,@Cacheable,@CachePut,@CacheEvict,@Caching
将方法查出来的结果放到redis,后面有调这些接口,如果数据有命中,先从redis读取,速度快,性能好,避免直接查询数据库,如果没有,再去数据库查找。

Http和Https区别

Https:是HTTP的安全版,它是在HTTP的基础上加上了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

AOP在项目的应用 自定义注解?

请求在spring中的一个流程

Nacos与zk的区别

SpringMVC执行流程

客户端浏览器发起请求到服务端进行处理,都是和服务端的DispatcherServlet(Controller)进行交互,由前端控制器处理浏览器的请求并返回view给浏览器

  1. 客户端请求(request)到前端控制器(DispatcherServlet)
  2. 前端控制器将用户请求发送到处理器映射器(HandlerMapping)
  3. 处理器映射器根据请求,找到负责处理请求的处理器。找到负责处理该请求的处理器,并将其封装为处理器执行链(HandlerExecutionChain)给前端处理器
  4. 前端控制器根据处理器执行链中的处理器,找到能够处理改处理器的处理器适配器(HandlerAdapter),适配器有多个
  5. 处理器适配器会调用对应具体的控制器(Controller)(程序员编写)
  6. 控制器将处理结果以及要跳转的视图封装到一个对象(ModelAndView)中并将其返回给处理器适配器
  7. 处理器适配器将ModelAndView返回给前端控制器,至此,业务处理完毕
  8. 前端控制器把获取的ModelAndView对象传给视图解析器(ViewResolver),把逻辑视图解析成物理视图
  9. 视图解析器返回一个View进行视图渲染(把模型填充到视图中)
    10.前端控指器把渲染后的视图响应给客户端
    在这里插入图片描述

简述Bean的生命周期

spring中bean的创建,使用到销毁全部由容器来实现
1.解析xml配置或注解配置的类,得到BeanDenifition(Bean的描述)
2.实例化bean对象(通过BeanDefinition反射来创建Bean对象,此时只是在堆空间中申请空间,属性都是默认值)
3.设置Bean对象属性
4.检查Aware相关接口并设置相关依赖(所有调用容器对象的地方都会实现Aware接口),如BeanNameAware
5.调用BeanPostProcessor的初始化前方法
6.调用init初始化方法
7.调用BeanPostProcessor的初始化方法,此处会进行AOP
8.将创建的Bean对象放入一个Map中
9.业务使用Bean对象
10.Spring容器关闭时调用哪个DisposableBean的destory()方法

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians

[paper | proj] 给定FLAME,基于每个三角面片中心初始化一个3D Gaussian(3DGS);当FLAME mesh被驱动时,3DGS根据它的父亲三角面片,做平移、旋转和缩放变化;3DGS可以视作mesh上的辐射场&#xff1…

0基础学习VR全景平台篇第129篇:认识单反相机和鱼眼镜头

上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 一、相机 单反和微单 这里说的相机是指可更换镜头的单反/微单数码相机。那两者有何差异呢? 1)取景结构差异 两者最直观的区别在于,微单相机…

Android 11.0 framework关于systemUI定制之导航栏透明背景的功能实现

1.概述 在11.0的系统rom产品定制化开发中,在对于系统原生SystemUI的导航栏背景在沉浸式导航栏的 情况下默认是会随着背景颜色的变化而改变的,在一些特定背景下导航栏的背景也是会改变的,所以由于产品开发需要 要求需要设置导航栏背景为透明的,所以就需要在Activity创建的时…

C++共享和保护——(4)保护共享数据

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 一滴汗珠万粒粮,万粒汗珠谷…

探索人工智能中的语言模型:原理、应用与未来发展

导言 语言模型在人工智能领域中扮演着重要的角色,它不仅是自然语言处理的基础,也是许多智能系统的核心。本文将深入研究语言模型的原理、广泛应用以及未来发展趋势。 1. 语言模型的原理 统计语言模型: 基于概率统计的传统语言模型&…

美颜SDK是什么?视频美颜SDK在直播平台中的集成与接入教程详解

当下,主播们追求更加自然、精致的外观,而观众也期待在屏幕前欣赏到更为清晰、美丽的画面。为了满足这一需求,美颜SDK应运而生,成为直播平台的重要利器之一。 一、什么是美颜SDK? 通过美颜SDK,开发者可以…

sensitive-word 敏感词之 DFA 算法(Trie Tree 算法)详解

拓展阅读 敏感词工具实现思路 DFA 算法讲解 敏感词库优化流程 java 如何实现开箱即用的敏感词控台服务? 各大平台连敏感词库都没有的吗? v0.10.0-脏词分类标签初步支持 v0.11.0-敏感词新特性:忽略无意义的字符,词标签字典 …

ELK(九)—logstash

目录 简介安装部署测试 配置详解编写配置文件连接elasticsearch将数据推送到elasticsearch中。 简介 Logstash 是一个开源的服务器端数据处理管道,由 Elastic 公司维护和开发。它被设计用于从不同来源收集、处理和转发数据,以供 Elasticsearch 进行存储…

Linux发行版比较:Ubuntu、CentOS、Red Hat与其他系统的优劣分析

导言 Linux作为开源操作系统,有众多不同的发行版,每个发行版都有其独特的特性和适用场景。本文将聚焦于比较Ubuntu、CentOS、Red Hat和其他系统,深入分析它们的优势、用途以及在不同领域的应用。Linux操作系统的生态系统中,Ubuntu…

cesium学习笔记(问题记录)——(三)

一、根据点跟角度计算另一点坐标(三维球体) export const getAnotherPoint (lon: number, lat: number, angle: number, distance: number) > {// WGS84坐标系var a 6378137; // 赤道半径var b 6356752.3142; // 短半径var f 1 / 298.257223563;…

redis:六、数据过期删除策略(惰性删除、定期删除)和基于redisson实现的分布式锁(看门狗机制、主从一致性)和面试模板

数据过期删除策略 Redis的过期删除策略:惰性删除 定期删除两种策略进行配合使用 惰性删除 惰性删除:设置该key过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就…

MySQL数据库,触发器、窗口函数、公用表表达式

触发器 触发器是由事件来触发某个操作(也包含INSERT、UPDATE、DELECT事件),如果定义了触发程序,当数据库执行这些语句时,就相当于事件发生了,就会自动激发触发器执行相应的操作。 当对数据表中的数据执行…