【2024年华为OD机试】(B卷,100分)- 求最小步数 (Java JS PythonC/C++)
一、问题描述
题目描述
求从坐标零点到坐标点 n
的最小步数,一次只能沿横坐标轴向左或向右移动 2 或 3。
注意:途径的坐标点可以为负数。
输入描述
坐标点 n
输出描述
输出从坐标零点移动到坐标点 n
的最小步数。
备注
1 <= n <= 10^9
用例
用例 1
输入:
4
输出:
2
说明:
从坐标零点移动到 4,最小需要两步,即右移 2,再右移 2。
题目解析
题目要求我们找到将数字 n
分解为若干个 2
和 3
的和,使得分解后的项数最少。通过观察小数量级的例子,我们可以总结出以下规律:
1. 小数量级的规律
从 n = 1
到 n = 16
的分解情况如下:
n | 分解方式 | 最少步数 |
---|---|---|
1 | -2 + 3 | 2 |
2 | 2 | 1 |
3 | 3 | 1 |
4 | 2 + 2 | 2 |
5 | 3 + 2 | 2 |
6 | 3 + 3 | 2 |
7 | 3 + 2 + 2 | 3 |
8 | 3 + 3 + 2 | 3 |
9 | 3 + 3 + 3 | 3 |
10 | 3 + 3 + 2 + 2 | 4 |
11 | 3 + 3 + 3 + 2 | 4 |
12 | 3 + 3 + 3 + 3 | 4 |
13 | 3 + 3 + 3 + 2 + 2 | 5 |
14 | 3 + 3 + 3 + 3 + 2 | 5 |
15 | 3 + 3 + 3 + 3 + 3 | 5 |
16 | 3 + 3 + 3 + 3 + 2 + 2 | 6 |
2. 规律总结
从 n >= 4
开始,我们可以总结出以下规律:
-
每增加 3,最少步数增加 1:
- 例如:
n = 4
的最少步数是 2。n = 7
的最少步数是 3。n = 10
的最少步数是 4。
- 这是因为每增加 3,相当于增加一个
3
,而3
的分解步数为 1。
- 例如:
-
分解中的
2
和3
的作用:- 如果分解中存在
2
,那么n + 1
可以通过将2
替换为3
来实现,此时最少步数保持不变。- 例如:
n = 4
的分解是2 + 2
,最少步数是 2。n = 5
的分解是3 + 2
,最少步数仍然是 2。
- 例如:
- 如果分解中不存在
2
,那么n + 1
需要通过将3
替换为2 + 2
来实现,此时最少步数增加 1。- 例如:
n = 6
的分解是3 + 3
,最少步数是 2。n = 7
的分解是3 + 2 + 2
,最少步数增加到 3。
- 例如:
- 如果分解中存在
3. 通用规律
对于任意 n >= 4
,最少步数可以通过以下方式计算:
-
计算
n
除以 3 的商和余数:- 设
n = 3 * k + r
,其中k
是商,r
是余数(r = 0, 1, 2
)。 - 如果
r = 0
,则最少步数为k
。 - 如果
r = 1
,则最少步数为k - 1 + 2
(将最后一个3
替换为2 + 2
)。 - 如果
r = 2
,则最少步数为k + 1
。
- 设
-
特殊情况:
- 对于
n = 1
,需要特殊处理,因为无法直接用2
和3
分解。 - 对于
n = 2
和n = 3
,最少步数分别为 1。
- 对于
4. 示例验证
示例 1:n = 7
- 分解方式:
3 + 2 + 2
。 - 最少步数:3。
- 验证:
7 = 3 * 2 + 1
,余数r = 1
。- 最少步数 =
2 - 1 + 2 = 3
。
示例 2:n = 10
- 分解方式:
3 + 3 + 2 + 2
。 - 最少步数:4。
- 验证:
10 = 3 * 3 + 1
,余数r = 1
。- 最少步数 =
3 - 1 + 2 = 4
。
示例 3:n = 12
- 分解方式:
3 + 3 + 3 + 3
。 - 最少步数:4。
- 验证:
12 = 3 * 4 + 0
,余数r = 0
。- 最少步数 =
4
。
5. 总结
通过观察小数量级的例子,我们可以总结出以下规律:
- 对于
n >= 4
,最少步数与n
除以 3 的商和余数有关。 - 如果余数为 0,最少步数为商。
- 如果余数为 1,最少步数为商减 1 加 2。
- 如果余数为 2,最少步数为商加 1。
这种规律可以帮助我们快速计算任意 n
的最少步数,而无需逐个分解。
如果有其他问题,欢迎随时提问!
二、JavaScript算法源码
以下是 JavaScript 代码 的详细中文注释和逻辑讲解:
代码
/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");// 创建 readline 接口实例
const rl = readline.createInterface({input: process.stdin, // 输入流为标准输入output: process.stdout, // 输出流为标准输出
});// 监听输入事件
rl.on("line", (line) => {// 将输入转换为整数并调用 getResult 函数console.log(getResult(parseInt(line)));
});// 计算最少步数的函数
function getResult(n) {// 处理特殊情况if (n == 1) return 2; // n=1 时,最少步数为 2if (n == 2) return 1; // n=2 时,最少步数为 1if (n == 3) return 1; // n=3 时,最少步数为 1// 基础步数let base = 2; // 从 n=4 开始,最少步数为 2// 计算 n >= 4 时的最少步数return Math.floor((n - 4) / 3) + base;
}
代码逻辑讲解
1. 输入处理
- 使用
readline
模块创建一个接口实例rl
,用于从控制台读取输入。 - 监听
line
事件,当用户输入一行内容时,触发回调函数。 - 在回调函数中:
- 将输入内容
line
转换为整数n
。 - 调用
getResult(n)
函数计算最少步数,并输出结果。
- 将输入内容
2. 最少步数计算
- 特殊情况处理:
- 当
n = 1
时,最少步数为2
(因为1 = -2 + 3
)。 - 当
n = 2
时,最少步数为1
(因为2 = 2
)。 - 当
n = 3
时,最少步数为1
(因为3 = 3
)。
- 当
- 通用规律:
- 对于
n >= 4
,最少步数的计算方式为:- 基础步数
base = 2
(从n = 4
开始,最少步数为 2)。 - 每增加 3,最少步数增加 1。
- 公式:
Math.floor((n - 4) / 3) + base
。
- 基础步数
- 对于
3. 公式推导
- 从
n = 4
开始:n = 4
:最少步数为2
。n = 5
:最少步数为2
。n = 6
:最少步数为2
。n = 7
:最少步数为3
。n = 8
:最少步数为3
。n = 9
:最少步数为3
。n = 10
:最少步数为4
。- 以此类推。
- 规律:
- 每增加 3,最少步数增加 1。
- 公式:
Math.floor((n - 4) / 3) + base
。
4. 示例验证
示例 1:n = 4
- 计算:
Math.floor((4 - 4) / 3) + 2 = 0 + 2 = 2
。
- 结果:
- 最少步数为
2
(符合4 = 2 + 2
)。
- 最少步数为
示例 2:n = 7
- 计算:
Math.floor((7 - 4) / 3) + 2 = 1 + 2 = 3
。
- 结果:
- 最少步数为
3
(符合7 = 3 + 2 + 2
)。
- 最少步数为
示例 3:n = 10
- 计算:
Math.floor((10 - 4) / 3) + 2 = 2 + 2 = 4
。
- 结果:
- 最少步数为
4
(符合10 = 3 + 3 + 2 + 2
)。
- 最少步数为
总结
- 功能:计算将数字
n
分解为若干个2
和3
的和,使得分解后的项数最少。 - 核心逻辑:
- 处理特殊情况(
n = 1, 2, 3
)。 - 对于
n >= 4
,使用公式Math.floor((n - 4) / 3) + base
计算最少步数。
- 处理特殊情况(
- 适用场景:需要将数字分解为
2
和3
的和,且要求分解项数最少的场景。 - 注意事项:
- 输入必须为正整数。
- 对于
n = 1
,需要特殊处理。
如果有其他问题,欢迎随时提问!
三、Java算法源码
以下是 Java 代码 的详细中文注释和逻辑讲解:
代码
import java.util.Scanner; // 导入 Scanner 类,用于读取输入public class Main {public static void main(String[] args) {// 创建 Scanner 对象,用于读取控制台输入Scanner sc = new Scanner(System.in);// 读取输入的整数 nint n = sc.nextInt();// 调用 getResult 方法计算最少步数,并输出结果System.out.println(getResult(n));}// 计算最少步数的方法public static int getResult(int n) {// 处理特殊情况if (n == 1) return 2; // n=1 时,最少步数为 2(-2 + 3)if (n == 2) return 1; // n=2 时,最少步数为 1(2)if (n == 3) return 1; // n=3 时,最少步数为 1(3)// 基础步数int base = 2; // 从 n=4 开始,最少步数为 2// 计算 n >= 4 时的最少步数return (n - 4) / 3 + base;}
}
代码逻辑讲解
1. 输入处理
- 使用
Scanner
类从控制台读取输入。 - 通过
sc.nextInt()
读取一个整数n
,表示需要分解的数字。
2. 最少步数计算
- 特殊情况处理:
- 当
n = 1
时,最少步数为2
(因为1 = -2 + 3
)。 - 当
n = 2
时,最少步数为1
(因为2 = 2
)。 - 当
n = 3
时,最少步数为1
(因为3 = 3
)。
- 当
- 通用规律:
- 对于
n >= 4
,最少步数的计算方式为:- 基础步数
base = 2
(从n = 4
开始,最少步数为 2)。 - 每增加 3,最少步数增加 1。
- 公式:
(n - 4) / 3 + base
。
- 基础步数
- 对于
3. 公式推导
- 从
n = 4
开始:n = 4
:最少步数为2
。n = 5
:最少步数为2
。n = 6
:最少步数为2
。n = 7
:最少步数为3
。n = 8
:最少步数为3
。n = 9
:最少步数为3
。n = 10
:最少步数为4
。- 以此类推。
- 规律:
- 每增加 3,最少步数增加 1。
- 公式:
(n - 4) / 3 + base
。
4. 示例验证
示例 1:n = 4
- 计算:
(4 - 4) / 3 + 2 = 0 + 2 = 2
。
- 结果:
- 最少步数为
2
(符合4 = 2 + 2
)。
- 最少步数为
示例 2:n = 7
- 计算:
(7 - 4) / 3 + 2 = 1 + 2 = 3
。
- 结果:
- 最少步数为
3
(符合7 = 3 + 2 + 2
)。
- 最少步数为
示例 3:n = 10
- 计算:
(10 - 4) / 3 + 2 = 2 + 2 = 4
。
- 结果:
- 最少步数为
4
(符合10 = 3 + 3 + 2 + 2
)。
- 最少步数为
总结
- 功能:计算将数字
n
分解为若干个2
和3
的和,使得分解后的项数最少。 - 核心逻辑:
- 处理特殊情况(
n = 1, 2, 3
)。 - 对于
n >= 4
,使用公式(n - 4) / 3 + base
计算最少步数。
- 处理特殊情况(
- 适用场景:需要将数字分解为
2
和3
的和,且要求分解项数最少的场景。 - 注意事项:
- 输入必须为正整数。
- 对于
n = 1
,需要特殊处理。
如果有其他问题,欢迎随时提问!
四、Python算法源码
以下是 Python 代码 的详细中文注释和逻辑讲解:
代码
# 输入获取
n = int(input()) # 从控制台读取输入的整数 n# 算法入口
def getResult():# 处理特殊情况if n == 1:return 2 # n=1 时,最少步数为 2(-2 + 3)if n == 2:return 1 # n=2 时,最少步数为 1(2)if n == 3:return 1 # n=3 时,最少步数为 1(3)# 基础步数base = 2 # 从 n=4 开始,最少步数为 2# 计算 n >= 4 时的最少步数return (n - 4) // 3 + base# 算法调用
print(getResult()) # 调用 getResult 函数并输出结果
代码逻辑讲解
1. 输入处理
- 使用
input()
函数从控制台读取输入,并通过int()
将输入转换为整数n
。
2. 最少步数计算
- 特殊情况处理:
- 当
n = 1
时,最少步数为2
(因为1 = -2 + 3
)。 - 当
n = 2
时,最少步数为1
(因为2 = 2
)。 - 当
n = 3
时,最少步数为1
(因为3 = 3
)。
- 当
- 通用规律:
- 对于
n >= 4
,最少步数的计算方式为:- 基础步数
base = 2
(从n = 4
开始,最少步数为 2)。 - 每增加 3,最少步数增加 1。
- 公式:
(n - 4) // 3 + base
。
- 基础步数
- 对于
3. 公式推导
- 从
n = 4
开始:n = 4
:最少步数为2
。n = 5
:最少步数为2
。n = 6
:最少步数为2
。n = 7
:最少步数为3
。n = 8
:最少步数为3
。n = 9
:最少步数为3
。n = 10
:最少步数为4
。- 以此类推。
- 规律:
- 每增加 3,最少步数增加 1。
- 公式:
(n - 4) // 3 + base
。
4. 示例验证
示例 1:n = 4
- 计算:
(4 - 4) // 3 + 2 = 0 + 2 = 2
。
- 结果:
- 最少步数为
2
(符合4 = 2 + 2
)。
- 最少步数为
示例 2:n = 7
- 计算:
(7 - 4) // 3 + 2 = 1 + 2 = 3
。
- 结果:
- 最少步数为
3
(符合7 = 3 + 2 + 2
)。
- 最少步数为
示例 3:n = 10
- 计算:
(10 - 4) // 3 + 2 = 2 + 2 = 4
。
- 结果:
- 最少步数为
4
(符合10 = 3 + 3 + 2 + 2
)。
- 最少步数为
总结
- 功能:计算将数字
n
分解为若干个2
和3
的和,使得分解后的项数最少。 - 核心逻辑:
- 处理特殊情况(
n = 1, 2, 3
)。 - 对于
n >= 4
,使用公式(n - 4) // 3 + base
计算最少步数。
- 处理特殊情况(
- 适用场景:需要将数字分解为
2
和3
的和,且要求分解项数最少的场景。 - 注意事项:
- 输入必须为正整数。
- 对于
n = 1
,需要特殊处理。
如果有其他问题,欢迎随时提问!
五、C/C++算法源码:
以下是 C 语言代码 和 C++ 代码 的详细中文注释和逻辑讲解:
C 语言代码
#include <stdio.h> // 引入标准输入输出库int main() {int n; // 定义变量 n,用于存储输入的数字scanf("%d", &n); // 从控制台读取输入的整数 nint ans; // 定义变量 ans,用于存储计算结果// 使用 switch 语句处理不同情况switch (n) {case 1:ans = 2; // n=1 时,最少步数为 2(-2 + 3)break;case 2:ans = 1; // n=2 时,最少步数为 1(2)break;case 3:ans = 1; // n=3 时,最少步数为 1(3)break;default:ans = (n - 4) / 3 + 2; // n >= 4 时,使用公式计算最少步数}printf("%d\n", ans); // 输出结果return 0; // 程序正常结束
}
C++ 代码
#include <iostream> // 引入输入输出流库
using namespace std; // 使用标准命名空间int main() {int n; // 定义变量 n,用于存储输入的数字cin >> n; // 从控制台读取输入的整数 nint ans; // 定义变量 ans,用于存储计算结果// 使用 switch 语句处理不同情况switch (n) {case 1:ans = 2; // n=1 时,最少步数为 2(-2 + 3)break;case 2:ans = 1; // n=2 时,最少步数为 1(2)break;case 3:ans = 1; // n=3 时,最少步数为 1(3)break;default:ans = (n - 4) / 3 + 2; // n >= 4 时,使用公式计算最少步数}cout << ans << endl; // 输出结果return 0; // 程序正常结束
}
代码逻辑讲解
1. 输入处理
- C 语言:
- 使用
scanf("%d", &n)
从控制台读取输入的整数n
。
- 使用
- C++:
- 使用
cin >> n
从控制台读取输入的整数n
。
- 使用
2. 最少步数计算
- 特殊情况处理:
- 当
n = 1
时,最少步数为2
(因为1 = -2 + 3
)。 - 当
n = 2
时,最少步数为1
(因为2 = 2
)。 - 当
n = 3
时,最少步数为1
(因为3 = 3
)。
- 当
- 通用规律:
- 对于
n >= 4
,最少步数的计算方式为:- 基础步数
2
(从n = 4
开始,最少步数为 2)。 - 每增加 3,最少步数增加 1。
- 公式:
(n - 4) / 3 + 2
。
- 基础步数
- 对于
3. 公式推导
- 从
n = 4
开始:n = 4
:最少步数为2
。n = 5
:最少步数为2
。n = 6
:最少步数为2
。n = 7
:最少步数为3
。n = 8
:最少步数为3
。n = 9
:最少步数为3
。n = 10
:最少步数为4
。- 以此类推。
- 规律:
- 每增加 3,最少步数增加 1。
- 公式:
(n - 4) / 3 + 2
。
4. 示例验证
示例 1:n = 4
- 计算:
(4 - 4) / 3 + 2 = 0 + 2 = 2
。
- 结果:
- 最少步数为
2
(符合4 = 2 + 2
)。
- 最少步数为
示例 2:n = 7
- 计算:
(7 - 4) / 3 + 2 = 1 + 2 = 3
。
- 结果:
- 最少步数为
3
(符合7 = 3 + 2 + 2
)。
- 最少步数为
示例 3:n = 10
- 计算:
(10 - 4) / 3 + 2 = 2 + 2 = 4
。
- 结果:
- 最少步数为
4
(符合10 = 3 + 3 + 2 + 2
)。
- 最少步数为
总结
- 功能:计算将数字
n
分解为若干个2
和3
的和,使得分解后的项数最少。 - 核心逻辑:
- 处理特殊情况(
n = 1, 2, 3
)。 - 对于
n >= 4
,使用公式(n - 4) / 3 + 2
计算最少步数。
- 处理特殊情况(
- 适用场景:需要将数字分解为
2
和3
的和,且要求分解项数最少的场景。 - 注意事项:
- 输入必须为正整数。
- 对于
n = 1
,需要特殊处理。
如果有其他问题,欢迎随时提问!
相关文章:

【2024年华为OD机试】(B卷,100分)- 求最小步数 (Java JS PythonC/C++)
一、问题描述 题目描述 求从坐标零点到坐标点 n 的最小步数,一次只能沿横坐标轴向左或向右移动 2 或 3。 注意:途径的坐标点可以为负数。 输入描述 坐标点 n 输出描述 输出从坐标零点移动到坐标点 n 的最小步数。 备注 1 < n < 10^9 用例…...
<C++> XlsxWriter写EXCEL
XlsxWriter XlsxWriter是一个用于创建和写入Excel 2007及以上版本(.xlsx文件格式)的C库。以下是对XlsxWriter的详细介绍: 主要功能 文本、数字和公式写入:可以向多个工作表中写入文本、数字和公式。格式设置:支持丰…...

接上一主题,实现QtByteArray任意进制字符串转为十进制数
函数: /// <summary>/// n进制字符串转为十进制数,snDefine的长度最小为二进制数。/// 例子:/// _pn(_Math::strNToInt(_t("1010"), _t("01")));/// _pn(_Math::strNToInt(_t("-1010"), _t("0123…...

CNN-GRU-MATT加入贝叶斯超参数优化,多输入单输出回归模型
CNN-GRU-MATT加入贝叶斯超参数优化,多输入单输出回归模型 目录 CNN-GRU-MATT加入贝叶斯超参数优化,多输入单输出回归模型预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现贝叶斯优化CNN-GRU融合多头注意力机制多变量回归预测ÿ…...

Java 如何传参xml调用接口获取数据
传参和返参的效果图如下: 传参: 返参: 代码实现: 1、最外层类 /*** 外层DATA类*/ XmlRootElement(name "DATA") public class PointsXmlData {private int rltFlag;private int failType;private String failMemo;p…...

uniapp 之 uni-forms校验提示【提交的字段[‘xxx‘]在数据库中并不存在】解决方案
目录 场景问题代码结果问题剖析解决方案 场景 uni-forms官方组件地址 使用uniapp官方提供的组件,某个表单需求,单位性质字段如果是高校,那么工作单位则是高校的下拉选择格式,单位性质如果是其他的类型,工作单位则是手动…...

excel VBA 基础教程
这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏,打开VBA开发工具录制宏,相当于excel自动写代码(两个表格内容完全一致才可以) 查看宏代码保持含有宏程序的文件xlsm后缀(注意很容易有病毒)宏文件安全设置 使…...
基于异步IO的io_uring
基于异步IO的io_uring 1. io_uring的实现原理 io_uring使用了一种异步IO机制,它通过一对环形缓冲区(ring buffer)实现用户态于内核态之间的高效通信,用户只需将IO请求放入提交队列,当内核完成IO请求时,会将结果放入完成队列&…...

【江协STM32】10-2/3 MPU6050简介、软件I2C读写MPU6050
1. MPU6050简介 MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度、角速度参数,通过数据融合,可进一步得到姿态角,常应用于平衡车、飞行器等需要检测自身姿态的场景3轴加速度计(Accelerometerÿ…...

仓颉笔记——写一个简易的web服务并用浏览器打开
创建一个web服务端,同时创建一个客户端去读取这个服务端。 也满足浏览器打开web的需求。 直接上代码。 import net.http.* import std.time.* import std.sync.* import std.log.LogLevel// 1. 构建 Server 实例 let server ServerBuilder().addr("127.0.0.1&…...

DolphinScheduler自身容错导致的服务器持续崩溃重大问题的排查与解决
01 问题复现 在DolphinScheduler中有如下一个Shell任务: current_timestamp() { date "%Y-%m-%d %H:%M:%S" }TIMESTAMP$(current_timestamp) echo $TIMESTAMP sleep 60 在DolphinScheduler将工作流执行策略设置为并行: 定时周期调度设置…...
ecmascript 标准+ 严格模式与常规模式 + flat-flatMap 应用
文章目录 ecmascript 历程严格模式与常规模式下的区别及注意事项严格模式下的属性删除Array.prototype.flat()和Array.prototype.flatMap() 实例应用 ecmascript 历程 变量声明要求 常规模式: 在常规模式下,使用var关键字声明变量时会出现变量提升现象。…...

基于ILI9341液晶屏+STM32U5单片的显示试验
试验要求: 1、通过串口,下发两个命令 STR和PIC; 2、STR模式: (1)串口输入什么,屏幕上显示什么 (2)如果屏幕满,自动下滚 (3)输入回车&a…...

最短路径算法
关注:算法思路,时间复杂度,适用情况(单源/多源,负边权/负边权回路) 复习弗雷德算法--基于动态规划--多源--负边权--时间复杂度O(v^3) int的最大值是0x7fffffff #include <iostream> using namesp…...

如何用 ESP32-CAM 做一个实时视频流服务器
文章目录 ESP32-CAM 概述ESP32-S 处理器内存Camera 模块MicroSD 卡槽天线板载 LED 和闪光灯其他数据手册和原理图ESP32-CAM 功耗 ESP32-CAM 引脚参考引脚排列GPIO 引脚哪些 GPIO 可以安全使用?GPIO 0 引脚MicroSD 卡引脚 ESP32-CAM 的烧录方式使用 ESP32-CAM-MB 编程…...
Centos7 解决Maven scope=system依赖jar包没有打包到启动jar包中的问题(OpenCV-4.10)
最近项目中遇到问题,OpenCV的Jar包在程序打包后,找不到相关的类,比如MAT,这个时候怀疑OpenCV_4.10的Jar没有和应用程序一起打包,后面排查到确实是没有打包进去,特此记录,便于日后查阅。 <!-- 加载lib目录下的opencv包 --> <dependency><groupId>org…...
iOS实际开发中使用Alamofire实现多文件上传(以个人相册为例)
引言 在移动应用中,图片上传是一个常见的功能,尤其是在个人中心或社交平台场景中,用户经常需要上传图片到服务器,用以展示个人风采或记录美好瞬间。然而,实现多图片上传的过程中,如何设计高效的上传逻辑并…...
如何将分割的mask转为为分割标签
将分割的mask转换为分割标签通常涉及将每个像素的类别标识(在mask中以不同的灰度值或颜色表示)转换为整数标签。这些标签通常用于机器学习或深度学习模型的训练、验证和测试阶段。 使用方式,控制台或者命令行使用以下命令: pyth…...

【动手学电机驱动】STM32-MBD(5)Simulink 模型开发之 PWM 输出
STM32-MBD(1)安装 Simulink STM32 硬件支持包 STM32-MBD(2)Simulink 模型部署入门 STM32-MBD(3)Simulink 状态机模型的部署 STM32-MBD(4)Simulink 状态机实现按键控制 STM32-MBD&…...

MySQL进阶突击系列(05)突击MVCC核心原理 | 左右护法ReadView视图和undoLog版本链强强联合
2024小结:在写作分享上,这里特别感谢CSDN社区提供平台,支持大家持续学习分享交流,共同进步。社区诚意满满的干货,让大家收获满满。 对我而言,珍惜每一篇投稿分享,每一篇内容字数大概6000字左右&…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验
一、多模态商品数据接口的技术架构 (一)多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如,当用户上传一张“蓝色连衣裙”的图片时,接口可自动提取图像中的颜色(RGB值&…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...