面试题分享11月1日
1、过滤器和拦截器的区别
过滤器是基于spring的
拦截器是基于Java Web的
2、session 和 cookie 的区别、关系
| cookie | session |
存储位置 | 保存在浏览器 (客户端) | 保存在服务器 |
存储数据大小 | 限制大小,存储数据约为4KB | 不限制大小,因为它是对象 |
生命周期 | 可以主动设置生命周期 ,过期会自动删除 | 可以设置,生命周期有限制(有间隔,一般为30min) |
数据类型 | 字符串类型 | object |
安全性 | cookie不安全 (存储在浏览器的) | 安全 |
session 依赖于 cookie
一、3、HTTP状态码
200 | 成功 |
301 | 请求资源被转发,移动 |
404 | url错误,找不到 |
500 | 服务器内部出错 |
4、对Spring IOC的理解
它是 bean 对象的容器,管理 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系
5、Bean的作用域
singleton:单例模式
prototype:原型模式 【深拷贝】
request
session
global-session
6、Bean的生命周期
从定义开始,到实例化-->属性注入-->初始化-->最终在使用完毕后被销毁
7、重定向和转发
- 重定向 2 次请求,请求转发 1 次请求
- 重定向地址栏会变,请求转发地址栏不变
- 重定向是浏览器跳转,请求转发是服务器跳转
- 重定向可以跳转到任意网址,请求转发只能跳转当前项目
- 定向会丢失请求参数, 请求转发不会丢失请求数据
8、spring Boot 自动装配原理
启动注解:@SpringBootApplication 是复合注解
包含 @SpringBootConfiguration(是spring配置类)【包含@Bean注解的方式定义 Bean 方法 】
@EnableAutoConfiguration(启用自动配置类 使用了 SPI 技术)【会根据应用程序的依赖和配置信息,自动配置适当的Bean和组件】
调用了 AutoConfigurationImportSelector 这个注解下的selectImports方法,这个方法中有springFactoriesLoader,使用了 SPI 技术扫描META-INF下面的spring.factory文件
@ComponentScan(组件扫描)【以查找和加载Spring组件。默认情况下,它会扫描注解所在类的包及其子包下的所有组件,并将它们注册到Spring容器中】三个核心注解
9、过滤器和拦截器的区别
- 过滤器(filter)是基于 Java Web 的
- 拦截器(interceptore)是基于 spring 的提供的
10、 什么是拆箱和装箱
拆箱:将包装类型转换为基本类型
装箱:将基本类型封装成引用类型,封装成对象,可以使用对象的方法
11、装箱和拆箱的区别
拆箱:将包装类型转换为基本类型
装箱:将基本类型封装成引用类型,封装成对象,可以使用对象的方法
12、Autowired 和 Resource 的区别:
Autowired | Resource | |
装配策略不同 | 根据类型进行装配 | 先根据名称,找不到再根据类型装配 |
属于 spring 注解 | jdk 自带的注解 |
AutoWired: 默认按类型进行装配,默认情况下必须要求依赖对象必须存在
Resource:默认按照名称装配,名称可以通过 name 属性进行指定
@Autowired 与@Qualifier 配合使用
13、Spring MVC 执行流程
Spring Mvc的两个适配器
处理器适配器:(HandlerAdapter) (HttpRequestHandlerAdapter)
设计模式:责任链和适配器
详细
- 用户向前端控制器 (DispatcherServlet) 发送请求
- 前端控制器 (DispatcherServlet) 接收到请求后调用处理映射器 (HandlerMappin g)
- 处理器映射器 (HandlerMapper) 找到具体的处理器,生成处理器对象以及处理器拦截器,再一起返回给前端控制器
- 然后前端控制器调用处理器适配器
- 处理器适配器调用具体的处理器
- 处理器适配器 (HandlerAdapter)将处理器执行结果ModelAndView返回给前端控制器 (Controller)
- 然后前端控制器将ModelAndView传给视图解析器解析View
- 前端控制器将视图解析器返回的View进行渲染,然后响应给用户
14、Spring MVC 设计模式
适配器模式:允许多个对象按照特定的顺序处理请求,在 spring mvc 中调用处理器映射器返回一条执行链,包含(拦截器和处理器)的执行顺序,再由处理器适配器调用执行,是一个责任链设计模式
责任链模式:目的是解决接口和实现类不匹配问题,如果一个接口拥有很多方法,但是我们只期望使用某些方法时,如果用类实现这个接口,则必须重写所有抽象方法,这个时间则可以使用适配器来处理
15、Java Web 三大组件
Listener (监听器)
Fliter (过滤器)
servlet (控制器)
16、Spring IOC 注入的方式
构造方法注入
属性注入(有@Autowired 和 @Resource )
set 方法注入
17、 如何写一个编程式事务
- 先注入事务管理器 PlatformTransactionManager
- 定义事物的配置 DefaultTransactionDefinition(传播属性、隔离级别 可设可不设,不设置就是默认的)
- 开启事务
- 最后再判断,如果没有异常就提交事务,如果有异常就回滚事务
//1.注入事务管理器@Autowiredprivate PlatformTransactionManager transactionManager;//2.编程式事务public void createUser(User user) {//3.定义一个事务默认配置DefaultTransactionDefinition def = new DefaultTransactionDefinition();//设置事务传播属性def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);//设置事务传隔离级别def.setIsolationLevel(TransactionDefinition.ISOLATION_DEFAULT);//4.开启事务TransactionStatus transaction = transactionManager.getTransaction(def);try {//保存当前执行操作userDao.save(user);
// int i = 1 / 0;//5.提交事务transactionManager.commit(transaction);} catch (Exception e) {//6.回滚事务transactionManager.rollback(transaction);throw e;}
18、 事务的特性
原子性(Atomicity / əˈtɒmɪsɪti /):即不可分割性,事务要么全部被执行,要么就全部不被执行。
一致性(Consistency / kənˈsɪstənsi /):事务必须使数据库从一个一致性状态变换到另一个一致性状态,即一个事务执行之前和执行之后都必须处于一致性状态
隔离性(Isolation / aɪˈsoʊ.leɪ.ʃən /):即一个事务执行之前和执行之后都必须处于一致性状态。
持久性(Durability / djuːˈræ.bɪ.lɪ.ti /):事务一旦结束,数据就持久到数据库。
redo_log:解决持久性
undo_log:解决一致性和原子性
19、jdk1.8 新特性
1. 接口增强
接口增强(允许接口有方法体)
接口用default和static修饰,
2.函数式接口
函数式接口(只有一个抽象类接口)
使用@FunctionalInterface
注解来标记判断其是否只包含一个抽象方法
3.方法引用
方法引用(一种语法糖)
Lambda表达式的简化形式,可以提高代码的可读性和简洁性。语法:类名::方法名
4.Stream Api(重要)
Java Stream 常用操作方式
过滤 | 使用filter()方法可以过滤掉集合中不符合条件的元素。 |
映射 | 使用map()方法可以对集合-中的每一个元素进行映射处理。 |
排序 | 使用sorted()方法可以对集合中的元素进行排序。 |
去重 | 使用distinct()方法去掉集合中的重复的元素。 |
统计 | 使用count()方法可以对集合中的元素进行统计。 |
分组 | 使用groupingBy()方法可以按照某一个属性进行分组。 |
遍历 | 使用forEach()方法可以遍历集合中的每一个元素。 |
聚合 | 使用reduce()方法可以对集合中的元素进行聚合计算。 |
转换 | 使用collect()方法可以将集合中的元素转换为另一个集合。 |
平均 | 使用average()方法可以用于计算一组元素的平均值。 |
匹配 | 使用anyMatch()、allMatch()、noneMatch()方法可以对集合中的元素进行匹配判断。 |
5.Optional 工具类
Optional类(工具类)
为了避免null值异常,防止报 NullpointException(空指针异常)。
6.新的日期和时间
新的日期、时间的 API
相关文章:

面试题分享11月1日
1、过滤器和拦截器的区别 过滤器是基于spring的 拦截器是基于Java Web的 2、session 和 cookie 的区别、关系 cookie session 存储位置 保存在浏览器 (客户端) 保存在服务器 存储数据大小 限制大小,存储数据约为4KB 不限制大小&…...

【含文档】基于ssm+jsp的学科竞赛系统(含源码+数据库+lw)
1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定义了四个…...
Docker方式部署ClickHouse
Docker方式部署ClickHouse ClickHouse docker 版本镜像:https://docker.aityp.com/r/docker.io/clickhouse/clickhouse-server ClickHouse 21.8.13.6 docker 版本镜像:https://docker.aityp.com/image/docker.io/clickhouse/clickhouse-server:21.8.13.…...

车载通信架构 --- PNC、UB与信号的关系
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…...

智慧农业云平台:大数据赋能现代农业的未来
近年来,随着科技的迅速发展,农业作为传统行业正面临着前所未有的变革。智慧农业,作为现代农业发展的重要方向,借助云计算、大数据、物联网等技术,正在为农业生产、管理和服务提供全新的解决方案。在这个背景下…...

【python】OpenCV—Tracking(10.4)—Centroid
文章目录 1、任务描述2、人脸检测模型3、完整代码4、结果展示5、涉及到的库函数6、参考 1、任务描述 基于质心实现多目标(以人脸为例)跟踪 人脸检测采用深度学习的方法 核心步骤: 步骤#1:接受边界框坐标并计算质心 步骤#2&…...
为什么TCP(TIME_WAIT)2倍MSL
为什么TCP(TIME_WAIT)2倍MSL 一、TCP关闭连接的四次挥手流程进入TIME_WAIT 二、TIME_WAIT状态的意义1. 确保ACK报文到达对方2. 防止旧报文干扰新连接 三、为什么是2倍MSL四、TIME_WAIT的图解五、TIME_WAIT在实际应用中的影响总结 在TCP连接的关闭过程中&…...
jieba-fenci 05 结巴分词之简单聊一聊
拓展阅读 DFA 算法详解 为了便于大家学习,项目开源地址如下,欢迎 forkstar 鼓励一下老马~ 敏感词 sensitive-word 分词 segment 分词系列专题 jieba-fenci 01 结巴分词原理讲解 segment jieba-fenci 02 结巴分词原理讲解之数据归一化 segment jieba…...

Hadoop期末复习(完整版)
前言(全部为语雀导出,个人所写,仅用于学习!!!!) 复习之前我们要有目的性,明确考什么,不考什么。 对于hadoop来说,首先理论方面是跑不掉的&#x…...

Python篮球王子
系列文章 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4Python李峋同款可写字版跳动的爱心5Python流星雨代码6Python漂浮爱心代码7Python爱心光波代码8Python普通的玫瑰花代码9Python炫酷的玫瑰花代码10Python多…...
分享一些在部署k8s集群时遇到的问题
目录 一、k8s拉取镜像失败,多半是docker镜像源失效了,需要经常更新 1.编辑该配置文件: 2.重启服务器: 二、kubectl get nodes时出现:The connection to the server localhost:8080 was refused - did you specify t…...

【Canal 中间件】Canal使用原理与基本组件概述
文章目录 一、canal 概述1.2 什么是 canal2.3 canal 的所有组件 二、canal 工作原理2.1 MySQL 主备复制原理2.2 canal 工作原理 三、canal.server 组件3.1 canal.server 的架构3.2 instance 模块组成部分 四、canal.client 组件4.1 类设计4.2 server/clinet 交互协议4.3 使用案…...

《Baichuan-Omni》论文精读:第1个7B全模态模型 | 能够同时处理文本、图像、视频和音频输入
技术报告Baichuan-Omni Technical ReportGitHub仓库地址 文章目录 论文摘要1. 引言简介2. 训练2.1. 高质量的多模态数据2.2. 多模态对齐预训练2.2.1. 图像-语言分支2.2.2. 视频语音分支2.2.3. 音频语言分支2.2.4. 图像-视频-音频全方位对齐 2.3. 多模态微调监督 3. 实验3.1. 语…...
YOLOv6-4.0部分代码阅读笔记-common.py
common.py yolov6\layers\common.py 目录 common.py 1.所需的库和模块 2.class SiLU(nn.Module): 3.class ConvModule(nn.Module): 4.class ConvBNReLU(nn.Module): 5.class ConvBNSiLU(nn.Module): 6.class ConvBN(nn.Module): 7.class ConvBNHS(nn.Module): …...

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (4) - 平台适配
在移植 AWTK 到 HarmonyOS NEXT 系统之前,我们需要先完成平台适配,比如文件、多线程(线程和同步)、时间、动态库和资源管理。 1. 文件 HarmonyOS NEXT 支持标准的 POSIX 文件操作接口,我们可以直接使用下面的代码&am…...

Java 多线程(八)—— 锁策略,synchronized 的优化,JVM 与编译器的锁优化,ReentrantLock,CAS
前言 本文为 Java 面试小八股,一句话,理解性记忆,不能理解就死背吧。 锁策略 悲观锁与乐观锁 悲观锁和乐观锁是锁的特性,并不是特指某个具体的锁。 我们知道在多线程中,锁是会被竞争的,悲观锁就是指锁…...

【项目分享】法拉利中控台模拟 html+css+js
引入: 制作一个模拟法拉利中控台的网页是一个有趣且富有挑战性的项目。为了简化这个任务,我们可以使用一些HTML、CSS和JavaScript来实现一个基本的界面。以下是一个简单的示例,展示了如何创建一个基本的法拉利中控台模拟网页。 效果展示&…...

Rust 力扣 - 2461. 长度为 K 子数组中的最大和
文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历长度为k的窗口,用一个哈希表记录窗口内的所有元素(用来对窗口内元素去重),我们取哈希表中元素数量等于k的窗口总和的最大值 题解代码 use std::collecti…...
stm32103c8t6 pwm驱动舵机(SG90)
本方法采用通用定时器(TIM2、TIM3、TIM4、TIM5)实现 代码: PWM.h #ifndef __PWM_H // 防止头文件重复包含 #define __PWM_H#include "stm32f10x.h" // 包含STM32F10x系列的设备头文件// 函数声明 void TIM2_PWM_In…...
Python For循环
Python 的 for 循环是自动化重复任务的强大工具,可以使代码更高效、更易于管理。本教程将解释 for 循环的工作原理,探讨不同的应用场景,并提供大量实用示例。无论你是初学者还是希望提升技能的开发者,这些示例都将帮助你更好地在 …...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...