【面试总结大纲】

news2024/11/25 0:31:46

面试

  • spring
    • Spring AOP的具体实现
      • 核心概念分别指的是什么?
      • 基于注解的切面实现主要包括以下几个步骤:
      • 两个切面,它们之间的顺序是怎么控制的
    • springmvc的工作流程
    • 设计模式
      • 原则
      • Spring 框架中用到了哪些设计模式?

spring

Spring AOP的具体实现

AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。

Spring AOP 就是基于动态代理的,
有实现接口的对象,那么 Spring AOP 会使用 JDK Proxy,去创建代理对象,
而对于没有实现接口的对象, Spring AOP 会使用 Cglib 生成一个被代理对象的子类来作为代理

开发有两种方式,XML 和注解

核心概念分别指的是什么?

Spring的AOP是对一个类的方法在不进行任何修改的前提下实现增强,这些方法我们给起了一个名字叫连接点
需要增强的方法我们给起了一个名字叫切入点
存放共性功能的方法,我们给起了个名字叫通知
通知和切入点之间的关系描述,我们给起了个名字叫切面
方法不能独立存在需要被写在一个类中,这个类我们也给起了个名字叫通知类

基于注解的切面实现主要包括以下几个步骤:

  1. 定义切面类:在切面类上使用 @Aspect 注解来标识该类为切面类,同时在该类中定义切点和通知等信息。
  2. 定义切点:在切面类中使用 @Pointcut 注解来定义切点,切点是一个表达式,用于描述哪些连接点应该被拦截。
  3. 定义通知:在切面类中定义通知方法,通知方法使用 @Before、@After、@AfterReturning、@AfterThrowing 或@Around 等注解来标识通知类型,同时可以使用 JoinPoint 参数来获取连接点的信息。
  4. 在Spring配置类中开启AOP支持。@EnableAspectJAutoProxy

两个切面,它们之间的顺序是怎么控制的

(1) 通常使用@Order 注解直接定义切面顺序
(2) 实现Ordered 接口重写 getOrder 方法。返回值越小优先级越高

springmvc的工作流程

在这里插入图片描述

执行前;当一个请求发来时先进服务器(Tomcat),在服务器中会有拦截器,过滤器啊,等这些功能走完之后,才真正的进入了框架中。

1.用户发来一个请求,首先进入的是前端控制器DispatcherServlet
2.前端控制器将(DispacherServlet)用户发来的请求发送给处理器映射器(HandlerMapping)
3.处理器映射器根据前端控制器发来的用户的请求找到对应符合的控制器(Handler),并且将其封装成处理器执行链,返回给前端控制器。
4.前端控制器DispatcherServlet调用处理适配器(HandlerAdapter)来调用的具体的控制器
5.控制器执行完成后,会返回一个
ModelAndView对象
给处理器适配器
6.处理器适配器将返回来的ModelAndView对象返回给前端控制器(到这里所有的业务处理过程就要完了,接下就是将结果以页面的的形式相应给用户)
7.前端控制器将返回回来的ModelAndView对象交给视图解析器(ViewResolver),视图解析器根据传过里的View对象解析成对应的页面对象,然后将页面对象和Model对象返回给前端控制器。
8.前端控制器再将返回回来的对象交给视图(View),视图根据传过来的Model对象再一次的对页面进行渲染,然后在返回给前端控制器。
9.前端控制器将完成的结果响应给浏览器,然后浏览器在展现给用户。

设计模式

在这里插入图片描述

创建型模式,5 (将对象的创建与使用分离)⼯⼚/抽象⼯⼚/单例/建造者/原型模式
结构型模式,7 关注类和对象的组织 适配器/桥接模式/过滤器/组合/装饰器/外观/享元/代理模式
行为型模式,11 关注对象之间的相互交互 任链/命名/解释器/迭代器/中介者/备忘录/观察者/状态/策略/模板/访问者模式

原则

接一(依)单,开里迪

  • 接口隔离原则:将不同功能定义在不同接⼝中实现接⼝隔离
  • 依赖倒置原则:程序应该依赖于抽象类或接⼝,⽽不是具体的实现类。
  • 单一原则:一个类只负责一项职责
  • 开闭原则:对扩展开放,对修改关闭。通过扩展来实现变化,而不是通过修改原来的代码来实现变化
  • ⾥⽒替换原则:子类除了新增功能外,尽量不要重写父类的方法。
  • 迪⽶特原则:每个模块对其他模块都要尽可能少地了解和依赖,降低代码耦合度。

Spring 框架中用到了哪些设计模式?

  • 工厂设计模式 : Spring 使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。

  • 单例设计模式 : Spring 中的 Bean 默认都是单例的。
    Spring 中 bean 的默认作用域就是 singleton(单例)的 ,这一类对象只能有一个实例
    对于频繁使用的对象,可以省略创建对象所花费的时间
    由于 new 操作的次数减少,因而对系统内存的使用频率也会降低,

  • 代理设计模式 : Spring AOP 功能的实现。

  • 模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库操作的类,它们就使用到了模板模式。

  • 包装器设计模式 - : 我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。

  • 适配器模式 :Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配Controller。

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

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

相关文章

讲讲项目里的仪表盘编辑器(三)布局组件

布局容器处理 看完前面两章的讲解,我们对仪表盘系统有了一个大概的理解。接着我们讲讲更深入的应用。 上文讲解的编辑器只是局限于平铺的组件集。而在编辑器中,还会有一种组件是布局容器。它允许其他组件拖拽进入在里面形成自己的一套布局。典型的有分页…

如何实现电脑语音输入功能?

现在的手机都具备语音输入功能,并且识别率非常高,语音输入是目前最快速的文字输入方式,但是电脑上却无语音输入的功能,那么如何实现在电脑端也可进行语音输入的梦想呢?现在介绍一款小工具“书剑电脑语音输入法”&#…

Llama2-Chinese项目:4-量化模型

一.量化模型调用方式   下面是一个调用FlagAlpha/Llama2-Chinese-13b-Chat[1]的4bit压缩版本FlagAlpha/Llama2-Chinese-13b-Chat-4bit[2]的例子: from transformers import AutoTokenizer from auto_gptq import AutoGPTQForCausalLM model AutoGPTQForCausalLM…

DDD项目落地之充血模型实践

一、背景 充血模型是DDD分层架构中实体设计的一种方案,可以使关注点聚焦于业务实现,可有效提升开发效率、提升可维护性; 二、DDD项目落地整体调用关系 调用关系图中的Entity为实体,从进入领域服务(Domin)…

基于Java的健身房会员管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

【算法挨揍日记】day10——704. 二分查找、34. 在排序数组中查找元素的第一个和最后一个位置

704. 二分查找 704. 二分查找 题目描述: 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 解题思路&…

使用序列到序列深度学习方法自动睡眠阶段评分

深度学习方法,用于使用单通道脑电图进行自动睡眠阶段评分。 def build_firstPart_model(input_var,keep_prob_0.5):# List to store the output of each CNNsoutput_conns []######### CNNs with small filter size at the first layer ########## Convolutionnetw…

Ant-Design-Vue:a-range-picker组件国际化配置

在使用Ant-Design-Vue中的时间范围选择器开发个人项目时,发现默认显示为英文。如何解决呢? date-picker分类 Antd-Vue提供了DatePicker、MonthPicker、RangePicker、WeekPicker 几种类型的时间选择器,分别用于选择日期、月份、日期范围、周范…

JSON的MIME媒体类型是application/json

JSON(全称 JavaScript Object Notation)即JavaScript对象表示法,通知使用application/json媒体类型。 目录 1、JSON介绍 2、JSON语法 3、实践总结 运行环境: Windows-7-Ultimate-x64、Windows-10-BusinessEditions-21h2-x64 1…

最新AI智能问答系统源码/AI绘画系统源码/支持GPT联网提问/Prompt应用+支持国内AI提问模型

一、AI创作系统 SparkAi创作系统是基于国外很火的ChatGPT进行开发的AI智能问答系统和AI绘画系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图…

总部位于德国的拉丁美洲在线杂货配送服务商Jokr完成5000万美元D轮融资

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,总部位于德国柏林的拉丁美洲在线杂货配送服务提供商Jokr今日宣布已完成5000万美元D轮融资。 本轮融资完后Jokr的估值已达到8亿美金,本轮融资由convialit Ventures领投,Lomba…

XDM,10.1

XDM,今天是国庆,就没有其他啥事情,祝大家国庆节快乐,玩的开心。 这两天放假也有时间捣鼓自己的事情了,挺开心的,第一件事就是把自己的一个小开发板修好了,然后自己的小os也能跑了几个假的线程。…

基于Javaweb的护肤品推荐系统 /基于ssm的护肤品销售系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

RabbitMQ之发布确认高级

RabbitMQ之发布确认高级 一、发布确认 SpringBoot 版本1.1 确认机制方案1.2 代码架构图1.3 配置文件1.4 添加配置类1.5 消息生产者1.6 回调接口1.7 消息消费者1.8 结果分析 二、回退消息2.1 Mandatory 参数2.2 消息生产者代码2.3 回调接口2.4 结果分析 三、备份交换机3.1 代码架…

在 Windows 终端运行已有的 Python 程序

在同一个路径下,输入全名,如图:

xss盲打

1.场景 2.类别 3.危害 4.构造方法 5.验证 6.利用 7.攻击方法 8.防御手段 9.案例此处有构造网站 10.js代码 11.类型

基于Java的旅游线路线推荐系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

常见C++缩写知识点

1.ADLc - What is "Argument-Dependent Lookup" (aka ADL, or "Koenig Lookup")? - Stack Overflow 有空写写cout。。 2.using继承 C11 中的继承构造函数 | 菜鸟教程

linux系统与应用

Windows中的硬盘和盘符的关系; 硬盘通常为一块到两块;数量与盘符没有直接关系;一块硬盘可以分为多个盘符,如c,d,e,f,g等;当然理论上也可以一块硬盘只有一个盘符;学习linux时,最好使用固态硬盘&a…

喜讯!爱创科技荣获腾讯智慧零售“产品力先锋奖”

9月25日,在腾讯智慧零售2023年度合作伙伴大会𬶨千域计划年度颁奖盛典上,爱创科技作为重要生态合作伙伴受邀参加,并荣获“产品力先锋奖”,这是对爱创科技近一年来在零售业数字化转型服务的能力与水平、经验与成绩予以肯…