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

news2024/11/27 15:33:19

在这里插入图片描述

目录

后端相关随机题目记录(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.coloradmin.cn/o/1320504.html

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

相关文章

八.创建和管理表

目录 1. 基础知识1.1 一条数据存储的过程1.2 标识符命名规则1.3 MySQL中的数据类型 2. 创建和管理数据库2.2 使用数据库2.3 修改数据库 3. 创建表3.1 创建方式13.2 创建方式23.4 查看数据表结构 4. 修改表4.1 追加一个列4.2 修改一个列4.3 重命名一个列4.4 删除一个列 5. 重命名…

Linux - 非root用户使用systemctl管理服务

文章目录 方式一 (推荐)1. 编辑sudoers文件:2. 设置服务文件权限:3. 启动和停止服务: 方式二1. 查看可用服务:2. 选择要配置的服务:3. 创建自定义服务文件:4. 重新加载systemd管理的…

Java 图片文件上传下载处理

Java 图片文件上传下载处理 下载 做这玩意给我恶心坏了 下载 直接访问上传的路径就可以下载图片了。但是我们往往会包一层接口,以流的方式读取 url 的内容然后返回给前端,这么做的优点是: 内网域名转外网域名,做业务校验并且让用…

【C++】new 和 delete

目录 一 引言 二 new 三 delete 四 new和delete操作自定义类型 五 operator new与operator delete函数 六 new和delete的实现原理 1 内置类型 2 自定义类型 1 new的原理 2 delete的原理 3 new T[N]的原理 4 delete[]的原理 七 定位new表达式(placement-new) 八 …

【Android Studio】各个版本下载地址

下载地址: https://developer.android.com/studio/archive?hlzh-cn

HashMap扩容机制详解

目录 1. 扩容的触发条件 2. 扩容的具体步骤 2.1 计算新的容量 2.2 创建新的桶数组 2.3 将元素重新分配到新的桶数组中 2.4 更新容量和阈值 3. 与并发性能的关系 4. 扩容的性能优化 5. 总结 HashMap是Java中常用的数据结构之一,用于存储键值对。在HashMap内…

系列十、存储引擎

一、存储引擎 1.1、概述 大家可能没有听说过存储引擎,但是一定听过引擎这个词,引擎就是发动机,是一个机器的核心组件。 比如,对于舰载机、直升机、火箭来说,它们都有各自的引擎,引擎是它们最为核心的组件。…

RHEL8_Linux_Ansible常用模块的使用

本章主要介绍Ansible中最常见模块的使用 shell模块文件管理模块软件包管理模块服务管理模块磁盘管理模块用户管理模块防火墙管理模块 ansible的基本用法如下。 ansible 机器名 -m 模块x -a "模块的参数" 对被管理机器执行不同的操作,只需要调用不同的模块…

Pipelined-ADC设计一:序言

现在是2023年12月18日,准备开新帖,设计一个 流水线型 模数转换器( Pipelined-ADC )。记录帖,后续会放在咸鱼。同步记录,谨防盗用。 初定指标:12位50Mhz,采用2.5bit每级结构&#xff…

Goland如何进行Debug断点调试

1. 进入编辑 2. 进行编辑 3. 调试运行 将鼠标移到按钮上,即显示其功能与快捷键 4. 常用调试快捷键 按键说明F7单步执行(进入方法)F8单步执行(不进入方法)F9继续执行

如何实现TensorFlow自定义算子?

在上一篇文章中 Embedding压缩之基于二进制码的Hash Embedding,提供了二进制码的tensorflow算子源码,那就顺便来讲下tensorflow自定义算子的完整实现过程。 前言 制作过程基于tensorflow官方的custom-op仓库以及官网教程,并且在Ubuntu和Mac…

算法:单链表反转

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、问题描述 二、栈解法Stack 三、三指针法 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、问题描述 有个单链表,现…

【Qt之Quick模块】1. 概述及Quick应用程序创建流程

概述 Qt的Quick模块是用于创建现代化、动态和响应式用户界面的工具集。它是基于QML(Qt Meta-Object Language)和JavaScript的。 QML是一种声明性的语言,用于描述用户界面的结构和行为。它使用层叠样式表(CSS)的语法来…

创建型模式之简单工厂模式

一、概述 (1)简单工厂模式并不是一个标准的设计模式,但是它太常用了,简单而又神奇 (2)在简单工厂模式中用于创建实例的方法通常是静态方法,因此又被称为静态工厂方法模式 (3)要点:如果需要什么,只需传入一个正确的参…

鞋帽箱包品牌网站作用如何

鞋帽箱包是市场中很常见的产品,同时需求度又很高,是人们生活所需,除了个别高端品牌外,其它多数产品价格一般都比较低,因此很少有人会在意品牌,只要质量、价格、舒适度、美观好即可。 然而对企业来讲&#…

滑动窗口(一)

滑动窗口 什么是滑动窗口算法?通俗的来讲就是 “同向双指针” ,当一组数据的规律含有单调性的时候,就可以使用下面这套逻辑来优化暴力解法。 当两个指针同向移动的时候,类似于一个窗口在滑动。使用于在连续序列里找特殊的子串、…

计算机网络基础——网线认识与制作,线缆类型、线序、端接标准及注意事项

一、引言 网线制作是网络基础知识中不可或缺的。网络传输过程中,网线的质量和制作方法都会直接影响传输的速度和稳定性。本文将详细介绍网线制作的基础知识、线缆类型、线序、端接标准及注意事项。希望通过本文,读者能够更好地了解和掌握网线制作的方法…

PIG框架学习1——密码模式登录认证获取Token流程

文章目录 O、前言一、总流程概括:二、具体流程分析PIG提供的具体流程图:鉴权请求报文示例0、网关前置处理1、客户端认证处理2、正式接受登录请求3、组装认证对象4、认证管理器进行认证(授权认证调用)5、认证成功处理器 O、前言 对…

5G/4G工业无线通信模块:实现智能制造的关键利器

工业无线通信模块,作为实现智能制造的关键利器,正在推动着工业界的变革与创新。随着信息技术的快速发展和工业自动化的不断深入,工业无线通信模块正逐渐成为工业生产中不可或缺的重要组成部分。它不仅在工业自动化领域发挥着关键作用&#xf…

C# 使用FluentHttpClient请求WebApi

写在前面 FluentHttpClient 是一个REST API 异步调用 HTTP 客户端,调用过程非常便捷,采用流式编程,可以将所有请求所需的参数一次性发送,并直接获取序列化后的结果。 老规矩从NuGet上安装该类库: 这边一定要认准是 P…