spring-boot-starter-web 这个起步依赖,包含了构建 Web 应用所需的 Spring MVC、Tomcat 等相关依赖,开发者只需引入这一个依赖,就能快速搭建 Web 应用。/actuator/health 端点可以查看应用的健康状态,通过 /actuator/metrics 端点可以查看应用的各种指标。@Configuration、@EnableAutoConfiguration 和 @ComponentScan。它通常标注在 Spring Boot 应用的主类上,用于开启自动配置、组件扫描等功能。@Controller 和 @ResponseBody 的组合。使用 @RestController 注解的类中的方法会直接返回数据,而不是视图。@Autowired 注解的字段、方法或构造函数中。application.properties 或 application.yml 中进行配置。main 方法启动 Spring Boot 应用。也可以使用 Maven 或 Gradle 命令进行打包和运行。例如,使用 Maven 打包:mvn clean package,然后运行生成的 JAR 文件:java -jar target/myapp.jar。Spring Security
Spring Boot 集成了 Spring Security 框架,用于为应用提供全面的安全防护。它能处理身份验证(如用户名和密码验证、OAuth2 验证等)和授权(决定用户对资源的访问权限)。
/admin 路径下的资源。Logback 和 Log4j
Spring Boot 默认使用 Logback 作为日志框架,它提供了强大的日志功能,如日志级别控制、日志输出格式配置、日志文件滚动等。也可以切换到 Log4j 等其他日志框架。
Spring Cloud
Spring Cloud 为 Spring Boot 应用提供了构建微服务架构的工具集,包括服务发现(如 Eureka、Consul)、配置管理(如 Config Server)、负载均衡(如 Ribbon)、断路器(如 Hystrix)等。
Docker 和 Kubernetes
Spring Boot 应用可以很方便地打包成 Docker 镜像,并部署到 Kubernetes 集群中。Docker 提供了容器化的环境,确保应用在不同环境中的一致性;Kubernetes 则用于自动化部署、扩展和管理容器化应用。
Spring 作为核心提供基础支持,Spring MVC 负责处理 Web 请求,MyBatis 负责数据持久化,三者相互协作,共同构建出一个高效、可维护的 Java Web 应用程序。
在实际开发中,这三个框架一起配合工作。用户通过浏览器发送请求,Spring MVC 接收请求并找到对应的控制器来处理,控制器在处理过程中如果需要操作数据库,就会让 MyBatis 去和数据库交互,MyBatis 把数据取回来后交给控制器,控制器再把结果交给 Spring MVC,由 Spring MVC 把结果展示给用户。而 Spring 则在背后默默地管理着所有这些组件,让它们能够顺利地协同工作。
Vue 是一个用于构建用户界面的渐进式 JavaScript 框架。
Vue 采用了 Object.defineProperty ()(Vue 2.x)或 Proxy(Vue 3.x)来实现数据的响应式。当一个 Vue 实例创建时,Vue 会遍历 data 选项中的所有属性,使用这些方法将这些属性转换为 getter/setter。这样,当这些属性的值发生变化时,Vue 会自动更新与之绑定的 DOM 元素。
虚拟 DOM 是一种轻量级的 JavaScript 对象,它是真实 DOM 的抽象表示。Vue 通过虚拟 DOM 来提高渲染效率,当数据发生变化时,Vue 会先计算出新的虚拟 DOM 树,然后通过对比新旧虚拟 DOM 树的差异,只更新需要更新的真实 DOM 节点。
Vue 的编译器负责将模板字符串编译成渲染函数。渲染函数返回虚拟 DOM 树,最终由 Vue 的渲染器将虚拟 DOM 树渲染成真实的 DOM 节点。
渲染器负责将虚拟 DOM 树转换为真实的 DOM 节点,并将其插入到页面中。渲染器还负责处理虚拟 DOM 的更新和销毁操作。
组件是 Vue 应用中最核心的概念之一,它允许你将一个大型应用拆分成多个小的、可复用的组件。每个组件都有自己的模板、逻辑和样式,它们可以独立开发、测试和维护。例如,一个页面可能由头部组件、侧边栏组件、内容组件等组成。
Vue 实例从创建到销毁的整个过程中,会经历多个阶段,每个阶段都有对应的生命周期钩子函数,开发者可以在这些钩子函数中编写代码来执行特定的操作。
Vue Router 是 Vue.js 官方的路由管理器,用于实现单页面应用(SPA)的路由功能。它允许你根据不同的 URL 路径显示不同的组件,实现页面的切换。
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。
组合式 API 是 Vue 3 引入的一种新的代码组织方式,它允许你基于逻辑关注点来组织代码,而不是像选项式 API 那样基于选项来组织。
这是直接呈现给用户的部分,由 HTML、CSS 和 Vue 模板组成。Vue 通过模板语法(如双大括号插值、指令等)将数据绑定到 DOM 元素上,实现数据的动态展示。
ViewModel 是 Vue 的核心部分,它是视图和数据模型之间的桥梁。Vue 实例就是一个 ViewModel,它负责处理数据的响应式更新、事件处理、计算属性等。Vue 实例通过 data 选项定义数据模型,通过 methods 选项定义方法,通过 computed 选项定义计算属性。
数据模型层代表应用中的数据和业务逻辑。在 Vue 中,数据模型可以是简单的 JavaScript 对象,也可以是从后端服务器获取的数据。例如,通过 axios 等工具从后端接口获取数据
Token 是在身份验证和授权过程中使用的一段字符串,在现代 Web 应用和移动应用开发中发挥着至关重要的作用
Authorization,格式为 Bearer <token>。Redis 是一款开源的、基于内存的数据结构存储系统,常被用作数据库、缓存和消息中间件。
在深度学习领域,DB 算法通常指的是 “Differentiable Binarization”(可微二值化)算法,它主要用于文本检测等任务,以下是其相关介绍:
卷积神经网络(Convolutional Neural Network,CNN)是一类专门为处理具有网格结构数据(如图像、音频)而设计的深度学习模型,在计算机视觉、自然语言处理等领域取得了巨大成功。以下从多个方面详细介绍 CNN:
CNN 受到生物视觉系统的启发,通过模拟人类视觉皮层中神经元对局部信息的感知方式来处理数据。它通过卷积层、池化层和全连接层等组件,自动从输入数据中提取特征,并进行分类、检测等任务。
在智能水表检测系统中使用 DB(Differentiable Binarization,可微二值化)算法和 CNN(Convolutional Neural Network,卷积神经网络)能够从图像预处理、特征提取、模型训练、应用效果等多个层面提升系统性能,具体好处如下:
常见的机器学习算法可以分为监督学习、无监督学习和强化学习等类别,以下是一些具有代表性的算法介绍:
MVC(Model-View-Controller)即模型 - 视图 - 控制器,是一种软件设计模式,用于将应用程序划分为三个主要的逻辑组件:模型、视图和控制器。这种模式的核心目的是实现代码的分离,提高代码的可维护性、可扩展性和可测试性。以下为你详细介绍 MVC 模式的各个组件及其相关概念。
Linux 是一种开源的类 Unix 操作系统,在服务器、嵌入式系统、移动设备等众多领域都有广泛应用。以下为你介绍 Linux 的一些基础概念:
/)下。/bin:存放系统的基本命令,如ls、cp等。/etc:存放系统和应用程序的配置文件。/home:用户的主目录,每个用户在该目录下有自己的子目录。/var:存放经常变化的数据,如日志文件、邮件等。/root:超级用户(root)的主目录。755表示所有者具有读、写、执行权限,所属组和其他用户具有读、执行权限。ps、top等命令查看系统中的进程信息。systemctl命令来管理服务,如启动(start)、停止(stop)、重启(restart)和查看状态(status)等。apt,Red Hat 和 CentOS 使用yum或dnf。| 维度 | 监督学习 | 无监督学习 |
|---|---|---|
| 输入数据 | 带标签(明确答案) | 无标签(只有数据本身) |
| 目标 | 预测标签(如分类、回归) | 发现数据模式(如聚类) |
| 例子 | 房价预测、图像分类 | 客户分群、新闻主题归类 |
一句话总结:监督学习像老师带着答案教,无监督学习像自己找规律。
• 欠拟合:模型太简单,连训练数据都学不好(如用直线拟合曲线)。 • 过拟合:模型太复杂,死记硬背训练数据,考试(测试)成绩差。
解决方法: • 欠拟合:换复杂模型(如神经网络)、增加特征。 • 过拟合:加数据、简化模型、用正则化(L1/L2)、早停法(Early Stopping)。
| 逻辑回归 | 线性回归 | |
|---|---|---|
| 任务 | 分类(如判断是否生病) | 预测数值(如房价) |
| 输出 | 概率(0~1) | 任意实数 |
| 核心 | Sigmoid函数转概率 | 直接拟合直线 |
一句话:逻辑回归是"概率版"线性回归,专攻分类问题。
• 核心思想:把数据“投影”到高维空间,让原本线性不可分的数据变得可分。 • 常用核: • 线性核(简单数据) • 高斯核(万能但计算慢) • 多项式核(中等复杂度)
比喻:就像用3D眼镜看平面图,突然发现规律。
• 预剪枝:边建树边刹车(如限制树深度、节点最少样本数)。 • 后剪枝:先长成大树,再修剪枝叶(删除不重要的分支)。
目的:防止模型太“钻牛角尖”(过拟合)。
• 核心:多棵决策树投票,少数服从多数。 • 优点: • 抗过拟合(树之间相互纠错) • 能处理高维数据(如基因数据) • 自带特征重要性评估
比喻:三个臭皮匠顶个诸葛亮。
• 传统GBDT痛点:速度慢、容易过拟合。 • XGBoost绝招: • 加正则化(控制模型复杂度) • 二阶梯度优化(步子更准) • 并行计算(训练更快)
一句话:GBDT的“Pro Max”版本。
• 计算:预测框和真实框的交集面积 ÷ 并集面积。 • 作用:衡量预测框准不准,值越大(接近1)越好。 • 缺点:完全无重叠时IoU=0,无法区分远近。
改进:GloU(考虑中心点距离)、CloU(加长宽比惩罚)。
• YOLOv1:首创单阶段检测,速度快但精度低。 • YOLOv3:多尺度预测(大中小目标通吃)。 • YOLOv5:Focus结构(省计算量)、混合精度训练(显存减半)。
总结:越新版本越像“六边形战士”(又快又准)。
• 核心功能:给神经网络加“非线性”,让模型能学复杂规律。 • 常用函数: • ReLU(最常用,计算快) • Sigmoid(输出概率,但易梯度消失) • LeakyReLU(解决ReLU“死神经元”问题)
比喻:激活函数就像开关,决定神经元是否传递信号。
• 梯度消失:深层网络反向传播时,梯度越来越小,参数不更新。 • 梯度爆炸:梯度指数级增大,模型崩溃。
解决: • 用ReLU激活函数 • 残差连接(ResNet跳线设计) • 梯度裁剪(防爆炸)
• 三大法宝:
应用场景:图像、视频、自然语言处理(文本分类)。
| 图像分类 | 目标检测 | |
|---|---|---|
| 输出 | 图片类别标签 | 多个物体的位置+类别 |
| 难度 | 简单(看整体) | 复杂(找局部) |
例子:分类说“图里有猫”,检测要说“猫在左上角,狗在右下角”。
• 操作:每层输入做标准化(减均值、除方差)。 • 好处: • 加速训练(允许更大学习率) • 减少对初始化的依赖 • 轻微正则化效果
比喻:给每层数据“瘦身塑形”,让网络学得更稳。
• 核心思想:让模型关注重点信息(像人看照片先看人脸)。 • 类型: • 通道注意力(关注重要特征) • 空间注意力(关注重要区域)
应用:Transformer、目标检测(如YOLOv4的SAM模块)。
• L1/L2正则化区别:L1让参数稀疏化(部分变0),L2让参数均匀变小。 • 交叉熵损失公式:-Σ(真实值×log预测值),衡量预测概率分布多不准。 • Adam优化器优点:自适应学习率,兼顾动量(惯性)和梯度平方历史。
面试技巧:
整理自三篇文档核心内容,覆盖机器学习、深度学习、目标检测高频考点,祝复试顺利! 🚀