当前位置: 首页 > news >正文

基础算法 —— 二分算法 【复习总结】

1. 简介

1.1 原理

二分算法,顾名思义,关键在于二分,当我们求解的目标具有二段性时,我们就可以使用二分算法:

先根据待查找区间中点位置,判断结果会在左侧还是右侧,接下来,舍弃一半的查找区间,在结果存在的区间继续进行二分查找

1.2 模板

二分查找可以分为:1. 二分查找区间左端点;2. 二分查找区间右端点

( “左端点”指当结果存在多个,我们选择最靠左边的那一个;“右端点”指当结果存在多个,我们选择最靠右边的那一个)

如: 在序列 1 2 3 4 4 5 5 5 6 6 7 8 9 9 10 中,求大于等于4的数,我们选绿色左端点;求小于等于10的数,我们选黄色右端点

// 二分查找区间左端点
int l = 1, r = n;
while (l < r)
{int mid = (l + r) / 2;if (check(mid))r = mid;else l = mid + 1;
}// 二分查找区间右端点
int l = 1, r = n;
while (l < r)
{int mid = (l + r + 1) / 2;if (check(mid))l = mid;else r = mid - 1;
}
// 注1:二分结束后可能要判断是否存在结果
// 注2:如果结束条件为 l<=r,可能会导致死循环
// 注3:可以快速记忆:a. 求左端点,mid=(l+r)/2;求右端点,mid=(l+r+1)/2。因为+1导致结果偏右
//                    b. if/else中出现 -1 ,求 mid 就要 +1
// 注4:为防止溢出,求中点时:mid=l+(r - l)/2

1.3 STL中二分查找

头文件:<algorithm>
1. lower_bound:大于等于x的最小元素,返回的是迭代器
2. upper_bound:大于x的最小元素,返回的是迭代器。
二者都用二分实现。但是STL中的二分查找只能适用于【在有序的数组中查找】

2. 二分查找

2.1 高考志愿

2.1.1 题目描述

有 m 所学校,每所学校预计分数线是 a[i]。有 n 位学生,估分分别为 b[i]。

根据 n 位学生的估分情况,分别给每位学生推荐一所学校,要求学校的预计分数线和学生的估分相差最小,这个最小值为不满意度。求所有学生不满意度和的最小值。

输入描述:

第一行读入两个整数 m,n。m 表示学校数,n 表示学生数。

第二行共有 m 个数,表示 m 个学校的预计录取分数。第三行有 n 个数,表示 n 个学生的估分成绩。

(1≤n,m≤1e5)

输出描述:

一行,为最小的不满度之和。

2.1.2 算法分析

先把学校的录取分数排序,根据每个学生的成绩 b ,在 【序列】 中二分查找第一个 >= b 的位置pos , 差值可能是正数或者负数,所有差值最小的结果在 pos 位置或 pos-1 位置 (选择最接近的)

但注意:1. 如果所有的录取成绩都大于 b,pos - 1 会在0下标,访问一个无效值,结果可能错误

               2. 如果所有的录取成绩都小于 b,pos 会在n下标,对于此题无影响

 针对这种情况,我们可以添加 【左右护法】,即在序列左右添加不会对结果造成干扰的值,确保pos和pos-1有效 (这个左右护法一般是正无穷或者负无穷)

对于该题,我们添加左护法即可

2.1.3 代码实现

#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int N = 1e5 + 10;
int n, m;
LL a[N];// 查找区间左端点
int find(LL x)
{int left = 1, right = m;while (left < right){int mid = (left + right) / 2;if (a[mid] < x) left = mid + 1;else right = mid;}return left;
}int main()
{cin >> m >> n;// 将录取分数线排序for (int i = 1; i <= m; i++) cin >> a[i];sort(a + 1, a + 1 + m);// 添加左护法a[0] = -1e7 - 10;// 依次处理每个学生的分数LL ret = 0;for (int i = 1; i <= n; i++){LL x; cin >> x;int pos = find(x);ret += min(abs(a[pos] - x), abs(a[pos - 1] - x));}cout << ret << endl;return 0;
}

3. 二分答案

3.1 简介

二分答案是二分查找的抽象化,准确说应叫 【二分答案+判断】

⼆分答案用来处理大部分「最大值最小」以及「最小值最大」的问题。即解空间在从小到大的变化中,「判断」结果会出现「⼆段性」,此时我们就可以「二分」这个解空间,得到答案

3.2 例题

3.2.1 砍树

3.2.1.1 题目描述

伐木工要砍 M 米长的木材。但他只被允许砍伐一排树。

伐木工的伐木流程如下:设置一个高度参数 H(米),伐木机升起一个巨大的锯片到高度 H,并锯掉所有树比 H 高的部分(树木不高于 H 米的部分保持不变)。例如,如果一排树的高度分别为 20,15,10 和 17,锯片升到 15 米的高度,切割后树木剩下的高度将是 15,15,10 和 15,而伐木工将从第 1 棵树得到 5 米,从第 4 棵树得到 2 米,共得到 7 米木材。

伐木工不会砍掉过多的木材。这也是他尽可能高地设定伐木机锯片的原因。请找到伐木机锯片的最大的整数高度 H,使得伐木工能得到的木材至少为 M 米。换句话说,如果再升高 1 米,他将得不到 M 米木材。

输入描述:

第 1 行 2 个整数 N 和 M,N 表示树木的数量,M 表示需要的木材总长度。(1≤N≤1e6,1≤M≤2×1e9 ,树的高度 ≤4×1e5,所有树的高度总和 >M)

第 2 行 N 个整数表示每棵树的高度。

输出描述:

1 个整数,表示锯片的最高高度。

输入:

4 7
20 15 10 17

输出:

15

3.2.1.2 算法思想

假设伐木机高度为 H 时,得到木材为 sum,最终锯片的高度为 ret 。

根据题意,当 H<=ret 时,sum>=M ;当 H>ret 时,sum<M 。即 【伐木机的高度】小于 【最优高度】时,得到的木材大于 M ,我们就是在保证木材大于 M 的情况下求得最高高度。这就是【最小值最大】( 伐木机高度从小到大寻找最合适的 )

3.2.1.3 代码实现
#include<iostream>
using namespace std;
typedef long long LL;
const int N = 1e6 + 10;
LL n, m;
LL a[N];// 当高度为 x 时,获得的木材
LL calc(LL x)
{LL ret = 0;for (int i = 1; i <= n; i++){// 针对每根木头,切成的木材为 a[i]-xif (a[i] > x)ret += a[i] - x;}return ret;
}int main()
{cin >> n >> m;for (int i = 1; i <= n; i++)cin >> a[i];// 二分答案,最小值最大LL left = 1, right = 2e9;while (left < right){int mid = (left + right + 1) / 2;if (calc(mid) >= m) left = mid;else right = mid - 1;}cout << left << endl;return 0;
}

3.2.2 跳石头

3.2.2.1 题目描述

现要进行跳石头比赛,组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。

组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 M 块岩石(不能移走起点和终点的岩石)。

输入描述:

第一行包含三个整数 L,N,M,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。保证 L≥1 且 N≥M≥0。( 0≤M≤N≤5e4,1≤L≤1e9)

接下来 N 行,每行一个整数,第 i 行的整数 D[i]​(0<Di​<L), 表示第 i 块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。

输出描述:

一个整数,即最短跳跃距离的最大值。

输入:

25 5 2 
2
11
14
17 
21

输出:

4

3.2.2.2 算法思想

假设每次跳的最短距离为 x ,移走的石头数为 sum ,最终最短跳跃距离的最大值为 ret

根据题意,当 x<=ret 时,sum<=M;当 x>ret时,sum>M。即 【每次跳的最短距离】小于 【最优距离】时,移走的石头数小于 M,我们就是在保证移走的石头数小于 M 的情况下求得【最短跳跃距离最大值】。这就是【最小值最大】( 移走的石头从小到大寻找最合适的 )

对于如何计算当二分一个最短距离 x 时,移动的石头数:

此时我们可以结合我们上一篇所介绍的【双指针】,我们可以定义两个指针 left 和 right ,当第一次出现 a[right]-a[left] >= x 时,[ left+1,right-1 ] 中的所有石头都可以移走(因为之间所有石头距离都小于 x ,不符合题意)。之后将 left 更新到 right 位置。然后 right 向后移动。重复此过程 ( 简单模拟一下还是很容易理解)

3.2.2.3 代码实现
#include<iostream>
using namespace std;
typedef long long LL;
const int N = 5e4 + 10;
LL l, n, m;
LL a[N];// 计算当最短跳跃距离为 x 时,移走的石头数
LL calc(LL x)
{LL ret = 0;// 下标0为起点for (int left = 0; left <= n; left++){int right = left + 1;while (right <= n && a[right] - a[left] < x) right++;ret += right - left - 1;left = right - 1;}return ret;
}int main()
{cin >> l >> n >> m;// 记录所有岩石的距离,包括终点for (int i = 1; i <= n; i++)cin >> a[i];a[n + 1] = l;n++;// 二分答案,最小值最大LL left = 1, right = l;while (left < right){LL mid = (left + right + 1) / 2;if (calc(mid) <= m)left = mid;else right = mid - 1;}cout << left << endl;return 0;
}

相关文章:

基础算法 —— 二分算法 【复习总结】

1. 简介 1.1 原理 二分算法&#xff0c;顾名思义&#xff0c;关键在于二分&#xff0c;当我们求解的目标具有二段性时&#xff0c;我们就可以使用二分算法&#xff1a; 先根据待查找区间中点位置&#xff0c;判断结果会在左侧还是右侧&#xff0c;接下来&#xff0c;舍弃一半…...

计算机网络常识:缓存、长短连接 网络初探、URL、客户端与服务端、域名操作 tcp 三次握手 四次挥手

缓存&#xff1a; 缓存是对cpu&#xff0c;内存的一个节约&#xff1a;节约的是网络带宽资源 节约服务器的性能 资源的每次下载和请求都会造成服务器的一个压力 减少网络对资源拉取的延迟 这个就是浏览器缓存的一个好处 表示这个html页面的返回是不要缓存的 忽略缓存 需要每次…...

OpenHarmony平台驱动开发(九),MIPI DSI

OpenHarmony平台驱动开发&#xff08;九&#xff09; MIPI DSI 概述 功能简介 DSI&#xff08;Display Serial Interface&#xff09;是由移动行业处理器接口联盟&#xff08;Mobile Industry Processor Interface (MIPI) Alliance&#xff09;制定的规范&#xff0c;旨在降…...

经济体制1

一&#xff0e;计划经济体制与市场经济体制 1.计划经济又称指令型经济&#xff0c;是对生产和资源分配以及产品消费事先进行计划的经济体制。 市场经济体制是指依靠市场手段对资源进行配置的经济体制 注意&#xff1a; 计划与市场都是调节经济的手段&#xff0c;都属于资源配…...

Spring AI 入门(持续更新)

介绍 Spring AI 是 Spring 项目中一个面向 AI 应用的模块&#xff0c;旨在通过集成开源框架、提供标准化的工具和便捷的开发体验&#xff0c;加速 AI 应用程序的构建和部署。 依赖 <!-- 基于 WebFlux 的响应式 SSE 传输 --> <dependency><groupId>org.spr…...

[ctfshow web入门] web58

信息收集 if(isset($_POST[c])){$c $_POST[c];eval($c); }else{highlight_file(__FILE__); }这麽简单&#xff1f; 解题 好吧&#xff0c;还是我想得太简单了 把system禁用了。不是参数过滤&#xff0c;而是直接禁用&#xff0c;不管是间接还是直接调用system都不行&#x…...

Python量化交易Backtrader技术指标的实现

一、Backtrader技术指标概览 (一)Backtrader内置指标的优势 Backtrader内置的技术指标具有以下优势: 多样性:涵盖了常见的移动平均线、相对强弱指数(RSI)、布林带等多种指标,满足了不同交易者的需求。易用性:通过简单的函数调用即可在策略中添加和使用这些指标,无需…...

蓝桥杯第十六届c组c++题目及个人理解

本篇文章只是部分题目的理解&#xff0c;代码和思路仅供参考&#xff0c;切勿当成正确答案&#xff0c;欢迎各位小伙伴在评论区与博主交流&#xff01; 题目&#xff1a;2025 题目解析 核心提取 要求的数中至少有1个0、2个2、1个5 代码展示 #include<iostream> #incl…...

ARM 芯片上移植 Ubuntu 操作系统详细步骤

一、准备工作 &#xff08;一&#xff09;硬件准备 ARM 开发板&#xff1a;确保 ARM 开发板的型号与 Ubuntu 官方支持的 ARM 架构兼容&#xff0c;常见的 ARM 架构有 ARMv7、ARMv8 等。例如树莓派系列开发板&#xff0c;广泛用于 ARM 系统移植&#xff0c;其采用 ARM 架构。存…...

能耗优化新引擎:EIOT平台助力企业降本增效

安科瑞顾强 数字化转型的背景下&#xff0c;能源管理正加速向智能化、远程化方向演进。安科瑞电气推出的EIOT托管平台及ADW300系列4G无线计量仪表&#xff0c;通过云端技术与无线通信的深度融合&#xff0c;为用户打造了高效、便捷的远程能源监测与管理体系&#xff0c;助力企…...

录播课视觉包装与转化率提升指南

1. 封面设计黄金法则 1.1 程序员审美三要素 极客风配色方案 主色&#xff1a;深空灰(#2D2D2D) 代码蓝(#007BFF) 点缀色&#xff1a;终端绿(#28A745) 警告黄(#FFC107) 信息密度控制 核心标语≤9字&#xff08;如&#xff1a;"3天攻克分布式事务"&#xff09; 技…...

Solidity语言基础:区块链智能合约开发入门指南

一、Solidity概述 Solidity是以太坊生态系统中最重要的智能合约编程语言&#xff0c;由Gavin Wood于2014年提出。作为面向合约的高级语言&#xff0c;它结合了JavaScript、Python和C的语法特点&#xff0c;专为在以太坊虚拟机&#xff08;EVM&#xff09;上运行而设计。 核心…...

QMK开发环境搭建指南:Eclipse和VS Code详解

QMK开发环境搭建指南&#xff1a;Eclipse和VS Code详解 前言 各位键盘DIY爱好者们&#xff0c;今天跟大家分享如何搭建QMK固件开发环境。无论你是想定制自己的客制化键盘固件&#xff0c;还是对开源键盘固件开发感兴趣&#xff0c;这篇教程都能帮你搞定开发环境配置。本文将详…...

Python pandas 向excel追加数据,不覆盖之前的数据

最近突然看了一下pandas向excel追加数据的方法&#xff0c;发现有很多人出了一些馊主意&#xff1b; 比如用concat,append等方法&#xff0c;这种方法的会先将旧数据df_1读取到内存&#xff0c;再把新数据df_2与旧的合并&#xff0c;形成df_new,再覆盖写入&#xff0c;消耗和速…...

spring中RequestContextHolder

1、在 Spring 框架中&#xff0c; RequestAttributes attributes RequestContextHolder.getRequestAttributes(); 是获取当前请求上下文的核心方法。以下是其关键要点及注意事项&#xff1a; ‌一、核心机制‌ ‌作用原理‌ 通过 ThreadLocal 存储当前线程的请求属性对象 …...

Kotlin 遍历

在 Kotlin 中&#xff0c;遍历&#xff08;迭代&#xff09;是操作集合、数组、范围&#xff08;Range&#xff09;等数据结构的常见需求。Kotlin 提供了多种遍历方式&#xff0c;语法简洁且功能强大。以下是不同场景下的遍历方法总结&#xff0c;附代码示例&#xff1a; 一、…...

Ubuntu Linux系统配置账号无密码sudo

在Linux系统中&#xff0c;配置无密码sudo可以通过修改sudoers文件来实现。以下是具体的配置步骤 一、编辑sudoers文件 输入sudo visudo命令来编辑sudo的配置文件。visudo是一个专门用于编辑sudoers文件的命令&#xff0c;它会在保存前检查语法错误&#xff0c;从而防止可能的…...

C# NX二次开发:判断两个体是否干涉和获取系统日志的UFUN函数

大家好&#xff0c;今天要讲关于如何判断两个体是否干涉和获取系统日志的UFUN函数。 &#xff08;1&#xff09;UF_MODL_check_interference&#xff1a;这个函数的定义为根据单个目标体检查每个指定的工具体是否有干扰。 Defined in: uf_modl.h Overview Checks each sp…...

若依项目图片显示问题

图片显示异常问题 路径配置问题&#xff1a;前端图片路径配置错误&#xff0c;最初使用相对路径且未从根目录开始解析&#xff0c;导致浏览器根据当前页面 URL 解析路径出错。例如在用户信息展示页面&#xff0c;若当前页面 URL 为http://localhost:8088/user/profile&#xff…...

线索二叉树

一 概念 线索二叉树&#xff08;Threaded Binary Tree&#xff09;是一种对二叉树的优化结构&#xff0c;主要解决传统二叉树遍历时需要借助栈或递归&#xff08;额外空间开销&#xff09;的问题。通过利用节点中的空指针&#xff08;nullptr&#xff09;存储遍历过程中的前驱…...

Git查看某个commit的改动

在Git中查看特定commit的改动有多种方法&#xff0c;下面是几种常用的命令行方式&#xff1a; 1. 使用 git show 命令 这是最常用的方法&#xff0c;直接显示某个commit的详细信息和改动&#xff1a; git show <commit-hash> 例如&#xff1a; git show abc1234 也可…...

es 里的Filesystem Cache 理解

文章目录 背景问题1&#xff0c;Filesystem Cache 里放的是啥问题2&#xff0c;哪些查询它们会受益于文件系统缓存 问题3 查询分析 背景 对于es 优化来说常常看到会有一条结论给&#xff0c;给 JVM Heap 最多不超过物理内存的 50%&#xff0c;且不要超过 31GB&#xff08;避免…...

2025年3月电子学会等级考试五级题——4、收费站在哪里

文章目录 题目代码公式小结 题目 4、收费站在哪里 在一条高速公路上&#xff0c;如果已知 n 座收费站的位置 x1,x2,… ,xn&#xff08;不妨假设 0x1 ≤ x2 ≤ … ≤ xn&#xff09;&#xff0c;就很容易算出一共有 n(n-1)/2 个距离的值。而比较困难的问题是&#xff0c;在收集…...

深入探索 JavaScript 中的模块对象

引言 在现代 JavaScript 开发中&#xff0c;模块化编程是一项至关重要的技术。它允许开发者将代码拆分成多个独立的模块&#xff0c;每个模块专注于单一功能&#xff0c;从而提高代码的可维护性、可测试性和复用性。而模块对象则是模块化编程中的核心概念之一&#xff0c;它为…...

R1-Searcher:用强化学习解锁大语言模型检索新能力!

R1-Searcher&#xff1a;用强化学习解锁大语言模型检索新能力&#xff01; 大语言模型&#xff08;LLMs&#xff09;发展迅猛&#xff0c;却常因依赖内部知识而在复杂问题上“栽跟头”。今天解读的论文提出R1-Searcher框架&#xff0c;通过强化学习提升LLMs检索能力。它表现超…...

LangChain框架-PromptTemplate 详解

摘要 本文聚焦于 LangChain 框架中PromptTemplate提示词模板模块的深度解析,主要参考langchain_core.prompts源码模块与官方文档。系统梳理 LangChain 对提示词模板的封装逻辑与设计思路,旨在帮助读者构建全面、深入的知识体系,为高效运用LangChain 框架的提示词模板开发应用…...

【Java ee 初阶】文件IO和操作(下)

书接上文 文本操作的方法 String[] list() 返回 File 对象代表的目录下的所有文件名 File[] listFiles() 返回 File 对象代表的目录下的所有文件&#xff0c;以 File 对象表示 此处是针对File对象打印得到的效果&#xff08;调用了File的toString&#xff09; boolean …...

Android7 Input(六)InputChannel

概述: 本文讲述Android Input输入框架中 InputChannel的功能。从前面的讲述&#xff0c;我们知道input系统服务最终将输入事件写入了InputChannel&#xff0c;而input属于system_server进程&#xff0c;App属于另外一个进程&#xff0c;当Input系统服务想要把事件传递给App进行…...

【Java ee初阶】初始网络

一、IP地址 概念 IP地址主要用于标识网络主机、其他网络设备&#xff08;如路由器&#xff09;的网络地址。简单说&#xff0c;IP地址用于定位主机的网络地址。 就像我们发送快递一样&#xff0c;需要知道对方的收货地址&#xff0c;快递员才能将包裹送到目的地。 格式 IP…...

LabVIEW 2019 与 NI VISA 20.0 安装及报错处理

在使用 Windows 11 操作系统的电脑上&#xff0c;同时安装了 LabVIEW 2019 32 位和 64 位版本的软件。此前安装的 NI VISA 2024 Q1 版&#xff0c;该版本与 LabVIEW 2019 32 位和 64 位不兼容&#xff0c;之后重新安装了 NI VISA 20.0。从说明书来看&#xff0c;NI VISA 20.0 …...

http协议理解

文章目录 http协议理解基本概念HTTP版本演变版本编年史版本对比未来趋势 HTTP请求/响应结构请求报文响应报文HTTP方法分类对比方法选择原则必须遵守的约束 常见状态码HTTP头部字段HTTPSHTTPS 核心功能说明HTTPS 如何工作&#xff1f; HTTP特点补充知识点启用HTTP/2Nginx 中配置…...

typecho中的Widget设计文档

组成系统的最基本元素 什么是Widget Widget是组成Typecho的最基本元素&#xff0c;除了已经抽象出来的类库外&#xff0c;其它几乎所有的功能都会通过Widget来完成。在实践中我们发现&#xff0c;在博客这种小型但很灵活的系统中实施一些大型框架的思想是不合适的&#xff0c…...

使用ESPHome烧录固件到ESP32-C3并接入HomeAssistant

文章目录 一、安装ESPHome二、配置ESP32-C3控制灯1.主配置文件esp32c3-luat.yaml2.基础通用配置base.yaml3.密码文件secret.yaml4.围栏灯four_light.yaml5.彩灯rgb_light.yaml6.左右柱灯left_right_light.yaml 三、安装固件四、HomeAssistant配置ESPHome1.直接访问2.配置ESPHom…...

基于STM32、HAL库的CH340N USB转UART收发器 驱动程序设计

一、简介: CH340N是南京沁恒电子生产的一款USB转串口芯片,具有以下特点: 支持USB 2.0全速(12Mbps) 内置时钟,无需外部晶振 支持5V和3.3V电源电压 提供常用的MODEM联络信号 内置上电复位电路 支持Windows/Linux/Mac OSX等多平台驱动 体积小,SOP-8封装 二、硬件接口: CH…...

Spring Boot Controller 如何处理HTTP请求体

Spring Boot (通过Spring MVC) 提供了强大的机制来处理不同 Content-Type​ 的HTTP请求体。这主要依赖于 HttpMessageConverter​ 接口的各种实现&#xff0c;它们能够自动将请求体内容转换成Java方法参数。 一、核心机制&#xff1a;HttpMessageConverter​ Spring MVC会根据…...

【deepseek教学应用】001:deepseek如何撰写教案并自动实现word排版

本文讲述利用deepseek如何撰写教案并自动实现word高效完美排版。 文章目录 一、访问deepseek官网二、输入教案关键词三、格式转换四、word进一步排版 一、访问deepseek官网 官网&#xff1a;https://www.deepseek.com/ 进入主页后&#xff0c;点击【开始对话】&#xff0c;如…...

【Spring Boot 多模块项目】@MapperScan失效、MapperScannerConfigurer 报错终极解决方案

在使用 Spring Boot 构建多模块项目&#xff0c;集成 MyBatis-Plus 时&#xff0c;很多开发者会遇到类似如下启动报错&#xff1a; Error creating bean with name mapperScannerConfigurer ... Caused by: java.lang.IllegalArgumentException: Property basePackage is requ…...

vue 中如何使用region?

vue 中如何使用region&#xff1f; 在 Vue 文件中&#xff0c;你可以使用 //#region 和 //#endregion 注释来创建可折叠的代码区块&#xff08;类似于 C# 的 region&#xff09;。这可以显著提高大型 Vue 组件的可读性。 1. 基本用法 在 <script> 部分使用 <script&…...

Spring Boot 启动原理的核心机制

一、核心启动流程概览 Spring Boot 的启动流程可概括为 ​7 个关键阶段​&#xff1a; 1. 加载启动类 (Main Class) 2. 初始化 SpringApplication 实例 3. 加载配置 & 准备环境 (Environment) 4. 创建 ApplicationContext&#xff08;容器&#xff09; 5. 刷新容器&#…...

【每天学习一点点】使用Python的pathlib模块分割文件路径

使用Python的pathlib模块分割文件路径 pathlib模块&#xff08;Python 3.4&#xff09;提供了面向对象的文件系统路径操作方式&#xff0c;比传统的os.path更加直观和易用。以下是使用pathlib分割文件路径的几种方法&#xff1a; 基本路径分割 from pathlib import Path# 创…...

Qt/C++面试【速通笔记八】—Qt的事件处理机制

在Qt中&#xff0c;事件处理机制是应用程序与用户或系统交互的核心。通过事件处理&#xff0c;Qt能够响应用户的输入、窗口的变化、定时器的触发等各种情况。 1. 事件循环&#xff08;Event Loop&#xff09; 在Qt应用程序中&#xff0c;事件循环是事件处理机制的基础。事件循…...

uniapp自定义步骤条(可二开进行调试)

前言 有一个业务需求是需要一个步骤条&#xff0c;但是发现开源的都不太合适&#xff0c;所以就自己写了一个。 开始 test.vue <template><view class"authenticateRecordDetails_container"><!-- 进度 --><view class"authenticateSte…...

uniapp|实现多终端聊天对话组件、表情选择、消息发送

基于UniApp框架,实现跨平台多终端适配的聊天对话组件开发、表情选择交互设计及消息发送,支持文本与表情混合渲染。 目录 聊天界面静态组件实现消息列表布局消息气泡双向布局辅助元素定位与样式静态数据模拟与扩展性设计表情选择器静态模块浮层实现符号网格排列多端样式适配方…...

1.3.1 Linux音频框架alsa详细介绍

ALSA作为对旧OSS系统的替代方案&#xff0c;始于1998年。当时OSS还闭源商业化&#xff0c;因此社区开始开发开源的ALSA。经过多年的发展&#xff0c;ALSA成为Linux内核中音频架构的标准。 结构和架构 ALSA由以下几个主要部分组成&#xff1a; 内核模块&#xff1a; 这是ALSA的…...

R 语言机器学习:为遥感数据处理开启新视角

技术点目录 基础理论、机器学习与数据准备建模与空间预测实践案例与项目了解更多 ——————————————————————————————————————————— 前言综述 在当今科技快速发展的时代&#xff0c;遥感技术为生态学研究提供了海量的数据资源&#xf…...

深度 |提“智”向新,奔向未来——当前机器人产业观察

机器人踏着“猫步”在T台走秀、进入工厂协助造车&#xff0c;教育、医疗、城市管理等领域都有了机器人的帮助……今天&#xff0c;机器人已得到广泛应用&#xff0c;走进你我的生活。    伴随着技术日新月异&#xff0c;机器人产业加快提“智”向新。特别是今年以来&#xf…...

Web开发-JavaEE应用SpringBoot栈ActuatorSwaggerHeapDump提取自动化

知识点&#xff1a; 1、安全开发-JavaEE-常见依赖-Actuator&Swagger 2、安全开发-JavaEE-安全问题-配置安全&接口测试 一、演示案例-WEB开发-JavaEE-监控依赖-SpringBoot&Actuator&配置安全 SpringBoot Actuator模块提供了生产级别的功能&#xff0c;比如健康…...

AI Agent开发之门:微软官方课程全面解析

AI Agent开发之门&#xff1a;微软官方课程全面解析 引言项目概览10 节核心课程内容详解1. AI 代理简介及应用场景2. 探索 AI Agentic 框架3. 理解 AI Agentic 设计模式4. 工具使用设计模式5. Agentic RAG&#xff08;检索增强生成&#xff09;6. 构建可信赖的 AI Agents7. 规划…...

Unity-Shader详解-其五

关于Unity的Shader部分的基础知识其实已经讲解得差不多了&#xff0c;今天我们来一些实例分享&#xff1a; 溶解 效果如下&#xff1a; 代码如下&#xff1a; Shader "Chapter8/chapter8_1" {Properties{// 定义属性[NoScaleOffset]_Albedo("Albedo", 2…...

从零打造个人博客静态页面与TodoList应用:前端开发实战指南

前言 在当今数字时代&#xff0c;拥有个人博客和高效的任务管理工具已成为开发者展示自我和提升生产力的标配。本文将带你从零开始&#xff0c;通过纯前端技术实现一个兼具个人博客静态页面和TodoList任务管理功能的综合应用。无论你是前端新手还是希望巩固基础的中级开发者&a…...