车载功能测试-车载域控/BCM控制器测试用例开发流程【用例导出方法+优先级划分原则】
目录
- 1 摘要
- 2 位置灯手动控制简述
- 2.1 位置灯手动控制需求简述
- 2.2 位置灯手动控制逻辑交互图
- 3 用例导出方法以及优先级原则
- 3.1 用例导出方法
- 3.1.1 用例导出方法介绍
- 3.1.2 用例导出方法关键差异分析
- 3.2 优先级规则
- 3.2.1 优先级划分的核心原则
- 3.2.2 具体等级定义与判定标准
- 3.3 用例展示
- 4 总结
1 摘要
前文介绍了车载外灯模块的常见模块的功能、控制原理实现以及需求,本文主要以位置灯为例,详细讲述针对此类需求如何从需求导出用例,并保证用例对需求的覆盖度。
2 位置灯手动控制简述
2.1 位置灯手动控制需求简述
以位置灯手动打开为例:
- 当使能条件a&b满足时:
- a为电源CAN信号ON=0x1
- b为位置灯状态为off=0x0
- 触发条件(c|d)&e满足时:
- c为接收到IDCU发送的位置灯开关状态信号为ON=0x1
- d为触发以太网服务接口调用,某以太网信号=0x1
- e为接收到任意位置灯打开状态信号为ON=0x1
- 执行输出f,g,h:
- f为发送位置灯点亮控制信号为ON=0x1
- g为收到e后反馈位置灯打开状态信号ON=1给IDCU,
- h为把g的信号转换为以太网信号
注意:执行输出f后,50ms(包含50ms)内接收到e,执行输出g、h;且不考虑容差
- 如果退出条件i|j|k满足时:
- i为收到IDCU的前大灯关闭信号为OFF=0x1,
- j为接收到AUTO大灯触发信号为ON=0x1
- k为电源CAN信号为OFF=0x2(与a为同一信号)
- 停止输出f、g、h,
2.2 位置灯手动控制逻辑交互图
如下是上述需求控制逻辑交互图:
- 控制过程简述:
CCU满足使能条件后,收到来自IDCU发送的位置灯开关信号或者远程以太网信号后,CCU发送位置灯打开控制指令信号给ZCU,ZCU进行驱动打开位置灯并反馈打开状态给CCU,CCU收到位置灯打开状态信号后,将位置灯打开状态信号转发到IDCU并且转换成以太网信号。 - 信号对照表:
信号 | 方向 | 值 | 说明 |
---|---|---|---|
a | 输入 | 0x1 | 电源ON |
b | 输入 | 0x0 | 灯状态OFF |
c | 输入 | 0x1 | IDCU手动触发 |
d | 输入 | 0x1 | 以太网远程触发 |
e | 输入 | 0x1 | ZCU位置灯状态反馈 |
f | 输出 | 0x1 | CCU给ZCU发送位置灯控制信号 |
g | 输出 | 0x1 | CCU反馈位置灯状态信号给IDCU |
h | 输出 | 0x1 | 以太网状态同步 |
3 用例导出方法以及优先级原则
3.1 用例导出方法
3.1.1 用例导出方法介绍
1. 需求分析法
定义:直接根据需求文档的显式描述设计用例,验证功能是否按需求实现。
关键差异点:
- 唯一直接关联需求条款的方法
- 不关注输入组合,只验证功能逻辑
示例:
-
需求:当使能条件a&b满足时,触发条件(c|d)&e满足时,执行输出f,g,h
-
对应用例ID1: 使能条件满足&触发条件满足主流程测试
初始条件: a=0x1, b=0x0 操作步骤1(触发条件): c=0x1 预期输出1: f=0x1 操作步骤2(触发条件):f=0x1后40ms,e=0x1 预期输出2:g=0x1、h=0x1 导出方法: 需求分析
-
对应用例ID2:使能条件满足&触发条件满足主流程测试
初始条件: a=0x1, b=0x0 操作步骤1(触发条件): d=0x1 预期输出1: f=0x1 操作步骤2(触发条件):f=0x1后40ms,e=0x1 预期输出2:g=0x1、h=0x1 导出方法: 需求分析
-
对应用例ID3: 触发条件满足子分支流程测试
初始条件: a=0x1, b=0x0 操作步骤1(触发条件): c=0x1 预期输出1: f=0x1 预期不输出2:g≠0x1、h≠0x1 导出方法: 需求分析
-
对应用例ID4: 触发条件满足子分支流程测试
初始条件: a=0x1, b=0x0 操作步骤1(触发条件): d=0x1 预期输出1: f=0x1 预期不输出2:g≠0x1、h≠0x1 导出方法: 需求分析
-
对应用例ID5: 退出条件正向测试
初始条件: a=0x1, b=0x0 操作步骤1(触发条件): c=0x1 预期输出1: f=0x1 操作步骤2(触发条件):f=0x1后40ms,e=0x1 预期输出2:g=0x1、h=0x1 操作步骤3(退出条件):i=0x1(退出条件满足) 预期输出3:停止输出f、g、h 导出方法: 需求分析
-
对应用例ID6: 退出条件正向测试
初始条件: a=0x1, b=0x0 操作步骤1(触发条件): d=0x1 预期输出1: f=0x1 操作步骤2(触发条件):f=0x1后40ms,e=0x1 预期输出2:g=0x1、h=0x1操作步骤3(退出条件):j=0x1(退出条件满足) 预期输出3:停止输出f、g、h 导出方法: 需求分析
-
对应用例ID7: 退出条件正向测试
初始条件: a=0x1, b=0x0 操作步骤1(触发条件): d=0x1 预期输出1: f=0x1 操作步骤2(触发条件):f=0x1后40ms,e=0x1 预期输出2:g=0x1、h=0x1操作步骤3(退出条件):k=0x2(退出条件满足) 预期输出3:停止输出f、g、h 导出方法: 需求分析
2. 等价类划分法
定义:将输入数据划分为有效/无效类,每类选取代表值测试。
关键差异点:
- 关注输入数据的分类而非需求逻辑
- 可大幅减少用例数量
示例:
-
需求:当使能条件a&b不满足时,触发条件(c|d)&e满足时,不执行输出f,g,h
- 有效类:a=0x1&b=0x0(a&b都满足)需求分析用例已覆盖
- 无效类:a=0x2&b=0x0、a=0x1&b=0x1、a=0x2&b=0x1(a、b至少有一个不满足)
-
对应用例ID8: 使能条件异常测试
初始条件: a=0x2, b=0x0(使能条件a不满足)操作步骤1(触发条件): c=0x1 预期不输出1: f≠0x1操作步骤2(触发条件):f=0x1后40ms,e=0x1预期不输出2:g≠0x1、h≠0x1导出方法: 等价类划分法
- 对应用例ID9: 使能条件异常测试
初始条件: a=0x1, b=0x1(使能条件b不满足)操作步骤1(触发条件): c=0x1 预期不输出1: f≠0x1操作步骤2(触发条件):f=0x1后40ms,e=0x1预期不输出2:g≠0x1、h≠0x1导出方法: 等价类划分法
- 对应用例ID10: 使能条件异常测试
初始条件: a=0x2, b=0x1(使能条件a&b都不满足)操作步骤1(触发条件): c=0x1 预期不输出1: f≠0x1操作步骤2(触发条件):f=0x1后40ms,e=0x1预期不输出2:g≠0x1、h≠0x1导出方法: 等价类划分法
-
需求:当使能条件a&b满足时,触发条件(c|d)&e不满足时,不执行输出f,g,h
- 有效类:c=0x1&e=0x1满足、d=0x1&e=0x1满足;(c&e满足、d&e满足)需求分析用例已覆盖
- 无效类:c=0x0&d=0x0&e=0x1(c&d均不满足,e满足)、c=0x0&d=0x0&e=0x0(c&d&e均不满足)
-
对应用例ID11: 触发条件异常测试
初始条件: a=0x1, b=0x0操作步骤1(触发条件): c=0x0&d=0x0 (触发条件c&d都不满足)预期不输出1: f≠0x1操作步骤2(触发条件):f=0x1后40ms,e=0x1预期不输出2:g≠0x1、h≠0x1导出方法: 等价类划分法
- 对应用例ID12: 触发条件异常测试
初始条件: a=0x1, b=0x0操作步骤1(触发条件): c=0x0&d=0x0 (触发条件c&d都不满足)预期不输出1: f≠0x1操作步骤2(触发条件):f=0x1后40ms,e=0x0(触发条件e不满足)预期不输出2:g≠0x1、h≠0x1导出方法: 等价类划分法
3. 边界值分析法
定义:针对输入范围的边界及相邻值设计用例。
关键差异点:
- 专门测试临界值,而非随机取值
- 通常与等价类结合使用
示例:
- 条件:注意:执行输出f后,50ms(包含50ms)内接收到e,执行输出g、h;且不考虑容差
- 边界值:(0,50]有效等价类
- 边界值:(50,+∞)无效等价类
- 选取典型值:25、50、51、100
- 对应用例ID13: 25ms时触发e
初始条件: a=0x1, b=0x0操作步骤1(触发条件): c=0x1 预期输出1: f=0x1操作步骤2(触发条件):f=0x1后25ms,e=0x1预期输出2:g=0x1、h=0x1导出方法: 边界值分析+等价类分析
- 对应用例ID14: 50ms时触发e
初始条件: a=0x1, b=0x0操作步骤1(触发条件): c=0x1 预期输出1: f=0x1操作步骤2(触发条件):f=0x1后50ms,e=0x1预期输出2:g=0x1、h=0x1导出方法: 边界值分析+等价类分析
- 对应用例ID15: 51ms时触发e
初始条件: a=0x1, b=0x0操作步骤1(触发条件): c=0x1 预期输出1: f=0x1操作步骤2(触发条件):f=0x1后51ms,e=0x1预期不输出2:g≠0x1、h≠0x1导出方法: 边界值分析+等价类分析
- 对应用例ID16: 100ms时触发e
初始条件: a=0x1, b=0x0操作步骤1(触发条件): c=0x1 预期输出1: f=0x1操作步骤2(触发条件):f=0x1后100ms,e=0x1预期不输出2:g≠0x1、h≠0x1导出方法: 边界值分析+等价类分析
4. 正交试验法
定义:利用正交表高效组合多因素多水平。
关键差异点:
- 解决多参数组合爆炸问题
- 需人工补充重要场景
示例:
- 因素:a(0x1,0x2), b(0x0,0x1), c(0x0,0x1)
- 正交表生成用例:
# L4正交表生成 1. a=0x1, b=0x0, c=0x1 2. a=0x1, b=0x1, c=0x0 3. a=0x2, b=0x0, c=0x0 4. a=0x2, b=0x1, c=0x1 导出方法: 正交试验法
本例用例导出未采用正交表法,此处只是做为示例,如果对此方法感兴趣,可以回顾往期文章:
车载测试用例开发-如何平衡用例覆盖度和测试效率的方法论
5. 错误猜测法
定义:基于经验测试可能出错但需求未明确的场景。
关键差异点:
- 高度依赖测试人员经验
- 无系统性覆盖保证
异常场景: 退出条件同时触发
- 对应用例ID17: 退出条件同时触发
初始条件: a=0x1, b=0x0操作步骤1(触发条件): c=0x1 预期输出1: f=0x1操作步骤2(触发条件):f=0x1后40ms,e=0x1预期输出2:g=0x1、h=0x1操作步骤3(退出条件):i=0x1、j=0x1、k=0x2预期输出2:f、g、h停止输出导出方法: 错误猜测法
比如,使能条件a满足——>不满足——>满足的多次切换,是否功能异常
比如,触发条件c满足——>c失效——>d满足——>d失效……多次操作,是否异常
比如,执行输出f、g、h后,长时间等待(不进行退出条件)是否非预期退出
等等,需要结合项目以往经验形成的用例库进行添加
6. 状态迁移法
定义:覆盖系统所有状态及转换路径。
关键差异点:
- 适合状态机驱动的系统
- 需绘制状态迁移图
示例:
- 电源状态机:
7. 时序分析法
定义:验证时间相关的系统行为。
关键差异点: - 关注延迟、超时等时序约束
- 需精确控制时间变量
边界值用例已经覆盖,此处不进行用例导出;
测试用例导出方法全景表:
方法 | 核心思想 | 适用场景 | 优点 | 缺点 | 典型示例 |
---|---|---|---|---|---|
需求分析法 | 直接映射需求文档的显式逻辑 | 功能主流程、分支条件、异常处理 | 确保需求100%覆盖 | 依赖需求完整性 | 用例ID1-7 |
等价类划分 | 输入数据分类为有效/无效类 | 参数输入、状态转换、范围验证 | 减少冗余用例 | 需明确边界定义 | 用例ID8-12 |
边界值分析 | 测试输入范围的临界值 | 数值边界、状态切换点、极值场景 | 发现边界缺陷率高 | 不适用于非连续数据 | 用例ID13-16 |
正交试验法 | 用正交表组合多因素多水平 | 多参数交互场景、配置组合测试 | 高效覆盖组合场景 | 复杂场景需人工补充 | 组合a,b,c,d 生成基础用例 |
错误猜测法 | 基于经验预测潜在缺陷 | 异常操作、硬件故障、极端条件 | 补充非显式需求漏洞 | 主观性强,覆盖率低 | 用例ID17 |
状态迁移法 | 覆盖系统所有状态及转换路径 | 状态机、协议交互、多模态系统 | 路径覆盖完整 | 状态爆炸问题 | 测试电源ON→OFF→ON的切换 |
时序分析法 | 验证时间相关行为(延迟/超时) | 实时系统、通信协议、异步事件处理 | 捕捉时序相关缺陷 | 需专用工具支持 | 用例ID13-16 |
方法对比矩阵:
维度 | 需求分析 | 等价类 | 边界值 | 正交试验 | 错误猜测 | 状态迁移 | 时序分析 |
---|---|---|---|---|---|---|---|
覆盖目标 | 需求条款 | 输入分类 | 临界值 | 参数组合 | 经验缺陷 | 状态路径 | 时间约束 |
是否需要需求文档 | 必须 | 可选 | 可选 | 不需要 | 不需要 | 需要 | 需要 |
自动化程度 | 高 | 高 | 高 | 中 | 低 | 中 | 低 |
典型工具 | 需求管理工具 | 等价类工具 | 边界值工具 | 正交表工具 | 无 | 状态机工具 | 时序分析工具 |
3.1.2 用例导出方法关键差异分析
1. 需求分析 vs 等价类划分
维度 | 需求分析法 | 等价类划分法 |
---|---|---|
输入来源 | 需求文档的明文条款 | 输入参数的数据范围 |
测试目标 | 验证功能是否按需求实现 | 验证输入分类的处理是否正确 |
示例对比 | 测试退出条件i|j|k 的功能实现 | 某值a 的取值分为0x1 /0x0 /0x3 等类别 |
选择依据:
- 若需求明确描述逻辑(如"当A且B时执行C")→ 需求分析
- 若需验证输入参数的各种值(如枚举类型)→ 等价类划分
2. 边界值分析 vs 正交试验法
维度 | 边界值分析 | 正交试验法 |
---|---|---|
覆盖重点 | 单参数的极值/临界值 | 多参数组合的交互效应 |
工具支持 | 手动选取边界点 | 依赖正交表工具生成 |
示例对比 | 测试51ms 和49ms 的边界值 | 组合测试a=0x1, b=0, c=1, d=0 |
选择依据:
- 测试单个参数的极限(如最大值、OFF/ON切换)→ 边界值
- 测试多个参数的组合影响(如同时调节温度和湿度)→ 正交试验
3. 错误猜测 vs 时序分析
维度 | 错误猜测法 | 时序分析法 |
---|---|---|
测试依据 | 依赖测试人员经验 | 依赖需求定义的时序约束 |
典型场景 | 输入非法值、暴力操作 | 信号延迟、响应超时、竞态条件 |
示例对比 | 输入a=0x4 (未定义值) | 验证e 信号500ms超时是否触发恢复 |
选择依据:
- 无明确规则但可能存在风险的场景 → 错误猜测
- 有时间约束或顺序依赖的场景 → 时序分析
4.导出方法选择流程图
通过系统化应用这些方法,可构建完整且高效的测试用例集。实际项目中建议:
- 优先使用需求分析+等价类+边界值覆盖基础场景
- 用正交试验解决组合问题 ,减少组合爆炸
- 最后用错误猜测+时序分析补充边缘场景
3.2 优先级规则
3.2.1 优先级划分的核心原则
根据ISO 26262和ASPICE标准,优先级由以下四个维度综合决定:
- 功能安全等级(ASIL)
- 失效影响的严重度
- 使用场景的发生概率
- 历史缺陷分布
工程实践中的权重计算
采用量化评分法(每项1-5分,权重不同):
\text{优先级分数} = 0.4 \times \text{ASIL等级} + 0.3 \times \text{严重度} + 0.2 \times \text{发生概率} + 0.1 \times \text{历史缺陷}
- 示例:ID5、6、7(退出条件测试)
- ASIL D=5分, 严重度=5分, 发生概率=4分, 历史缺陷=5分
- 得分:0.4×5 + 0.3×5 + 0.2×4 + 0.1×5 = 4.8 → 高优先级
行业标准依据
-
ISO 26262-8:2018
- 第9章:高优先级用例必须覆盖所有ASIL D相关场景
- 附录B:推荐冒烟测试包含<10%用例但覆盖>80%核心功能
-
ASPICE SWE.5
- 测试执行顺序应按风险等级降序排列
-
AUTOSAR测试指南
- 安全相关信号(如退出条件)的测试优先级必须高于功能信号
3.2.2 具体等级定义与判定标准
1. 冒烟测试(最高优先级)
- 选择标准:
- 验证系统最基础、最核心的功能路径
- 覆盖ASIL D要求的最高安全等级场景
- 必须100%通过才能进入后续测试
2. 高优先级
- 选择标准:
- 涉及安全关键功能(ASIL C/D)
- 验证单点失效、边界条件或安全机制
- 历史缺陷高发区域
3. 中优先级
- 选择标准:
- 常规功能验证(ASIL A/B)
- 非安全相关的无效输入组合
- 需求明确但非核心路径
4. 低优先级
- 所有用例均关联功能安全需求,无纯非功能或装饰性功能测试
- 结合使用场景考虑,使用场景发生概率非常低;
优先级判定流程图:
3.3 用例展示
用例ID | a | b | c | d | e | i/j/k | Δt | 预期输出 | 优先级 | 导出方法 |
---|---|---|---|---|---|---|---|---|---|---|
1 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 无 | 40ms | f=ON, g/h=ON (e触发后) | 冒烟 | 需求分析 |
2 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | 无 | 40ms | f=ON, g/h=ON (e触发后) | 冒烟 | 需求分析 |
3 | 0x1 | 0x0 | 0x1 | 0x0 | 0x0 | 无 | 40ms | f=ON, g/h (无输出) | 中 | 需求分析 |
4 | 0x1 | 0x0 | 0x0 | 0x1 | 0x0 | 无 | 40ms | f=ON, g/h (无输出) | 中 | 需求分析 |
5 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | i=0x1 | 40ms | ①f=ON, g/h=ON (e触发后) ②i满足后,立即停止输出fgh | 高 | 需求分析 |
6 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | j=0x1 | 40ms | ①f=ON, g/h=ON (e触发后) ②j满足后,立即停止输出fgh | 高 | 需求分析 |
7 | 0x1 | 0x0 | 0x0 | 0x1 | 0x1 | k=0x2 | 40ms | ①f=ON, g/h=ON (e触发后) ②k满足后,立即停止输出fgh | 高 | 需求分析 |
8 | 0x2 | 0x0 | 0x1 | 0x0 | 0x1 | 无 | 40ms | 无输出 | 高 | 等价类分析+边界值分析 |
9 | 0x1 | 0x1 | 0x0 | 0x1 | 0x1 | 无 | 40ms | 无输出 | 高 | 等价类分析+边界值分析 |
10 | 0x2 | 0x1 | 0x1 | 0x0 | 0x1 | 无 | 40ms | 无输出 | 中 | 等价类分析+边界值分析 |
11 | 0x1 | 0x0 | 0x0 | 0x0 | 0x1 | 无 | 40ms | 无输出 | 高 | 等价类分析+边界值分析 |
12 | 0x1 | 0x0 | 0x0 | 0x0 | 0x0 | 无 | 40ms | 无输出 | 中 | 等价类分析+边界值分析 |
13 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 无 | 25ms | f=ON, g/h=ON (e触发后) | 中 | 边界值分析+等价类分析 |
14 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 无 | 50ms | f=ON, g/h=ON (e触发后) | 高 | 边界值分析+等价类分析 |
15 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 无 | 51ms | f=ON, g/h=ON (无输出) | 高 | 边界值分析+等价类分析 |
16 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | 无 | 100ms | f=ON, g/h=ON (无输出) | 中 | 边界值分析+等价类分析 |
17 | 0x1 | 0x0 | 0x1 | 0x0 | 0x1 | i=0x1,j=0x1,k=0x2 | 40ms | ①f=ON, g/h=ON (e触发后) ②ijk满足后,立即停止输出fgh | 低 | 错误猜测 |
错误猜测法补充:
比如,使能条件a满足——>不满足——>满足的多次切换,是否功能异常——优先级低
比如,触发条件c满足——>c失效——>d满足——>d失效……多次操作,是否异常——优先级低
比如,执行输出f、g、h后,长时间等待(不进行退出条件)是否非预期退出——优先级低
等等,需要结合项目以往经验形成的用例库进行添加
测试执行顺序:
通过此优先级划分,可在有限测试资源下:
- 优先暴露安全关键缺陷(如退出条件失效)
- 确保核心功能100%验证
- 优化测试时间(冒烟测试仅需10分钟,覆盖80%风险)
这种方法是汽车电子领域平衡效率与安全的行业最佳实践。
需求拓展说明:
1. 需求变更分析
- 原条件:
a=0x1
(ON)时使能有效,a=0x2
(OFF)时无效。 - 新条件:
a ≠ 0x2
(即a=0x0
、0x1
、0x3
均可能有效-通信矩阵已定义)。 - 通信矩阵定义:
0x1
:ON0x2
:OFF0x0
:未知状态(需明确是否合法)0x3
:特殊模式(如诊断状态)
问题:是否需要遍历所有有效类?
取决于需求对 a
的详细定义:
- 若需求仅要求
a ≠ 0x2
:- 需验证所有非
0x2
的值(0x0
、0x1
、0x3
)是否均能触发功能。 - 测试方法:等价类划分(有效类:
a ∈ {0x0, 0x1, 0x3}
;无效类:a=0x2
)。
- 需验证所有非
- 若需求进一步约束有效值(如仅
0x1
和0x3
有效,0x0
非法):- 需单独验证
0x1
和0x3
,并将0x0
归为无效等价类。
- 需单独验证
结论:
- 必须遍历所有有效类:若需求未明确排除
0x0
或0x3
,需验证所有非0x2
值。 - 优先级分配:
- 典型值(如
0x1
)为 冒烟测试。 - 非典型值(如
0x0
、0x3
)为 中优先级。 - 无效值(
0x2
)为 高优先级。
- 典型值(如
- 覆盖完整性:通过等价类划分 + 边界值分析确保无遗漏。
4 总结
以上是针对手动控制位置灯的典型需求进行测试用例设计,通过对用例导出方法的合理使用以及优先级的合理划分,使用例覆盖度符合要求,并且更有利于合理地开展测试工作。可以在有限的测试资源下,对重点需求点进行最大化的验证,这种方法是汽车电子领域平衡效率与安全的行业最佳实践。
相关文章:
车载功能测试-车载域控/BCM控制器测试用例开发流程【用例导出方法+优先级划分原则】
目录 1 摘要2 位置灯手动控制简述2.1 位置灯手动控制需求简述2.2 位置灯手动控制逻辑交互图 3 用例导出方法以及优先级原则3.1 用例导出方法3.1.1 用例导出方法介绍3.1.2 用例导出方法关键差异分析 3.2 优先级规则3.2.1 优先级划分的核心原则3.2.2 具体等级定义与判定标准 3.3 …...

基于OpenMV+STM32+OLED与YOLOv11+PaddleOCR的嵌入式车牌识别系统开发笔记
基于OpenMV、STM32与OLED的嵌入式车牌识别系统开发笔记 基于OpenMV、STM32与OLED的嵌入式车牌识别系统开发笔记系统架构全景 一、实物演示二、OpenMV端设计要点1. 硬件配置优化2. 智能帧率控制算法3. 数据传输协议设计 三、PyTorch后端核心实现:YOLOv11与PaddleOCR的…...
MCP实战-本地MCP Server + Client实战
概述 本文开发一个MCP的Client和Server。然后通过本地模式来运行,并获取到server的结果。 MCP Server开发 import anyio import click import mcp.types as types from mcp.server.lowlevel import Server from pydantic import FileUrlSAMPLE_RESOURCES {"…...

w~嵌入式C语言~合集4
我自己的原文哦~ https://blog.51cto.com/whaosoft/13870376 一、STM32怎么选型 什么是 STM32 STM32,从字面上来理解,ST是意法半导体,M是Microelectronics的缩写,32表示32位,合起来理解,STM32就是指S…...
lightrag : from lightrag.utils import EmbeddingFunc 报错
原因: 1. 同时安装了lightrag与lightrag-hku 解决方法: 卸载原有的lightrag与lightrag-hku,只安装lightrag-hku pip install lightrag-hku...
ppt流程图怎么?ppt流程图模板大全
ppt流程图怎么?ppt流程图剪头模板,ppt流程图模板大全: ppt流程图_模板素材_PPT模板_ppt素材_免抠图片_AiPPTer...
AWS中国区ICP备案全攻略:流程、注意事项与最佳实践
导语 在中国大陆地区开展互联网业务时,所有通过域名提供服务的网站和应用必须完成ICP备案(互联网内容提供商备案)。对于选择使用AWS中国区(北京/宁夏区域)资源的用户,备案流程因云服务商的特殊运营模式而有所不同。本文将详细解析AWS中国区备案的核心规则、操作步骤及避坑…...

腾讯云服务器安全——服务防火墙端口放行
点击服务进入安全策略 添加规则...
对局匹配--stl+模拟
1.模拟,先找匹配对数,然后减 2.特殊情况,k0 3.stl容器使用,lower_bound https://www.luogu.com.cn/problem/P8656 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair&…...

K8S安全认证
一。用户认证的基本框架 在K8S集群中,客户端通常有两类: 1.User Account:一般独立于K8S之外的其他服务管理的用过户账号 2.Service Account:K8S管理的账号,用于为Pod中的服务进程在访问K8S提供身份标识 ApiServer是…...

mybatis-plus里的com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析
以下是 com.baomidou.mybatisplus.core.override.MybatisMapperProxy 类的详细解析: 1. 类的作用 MybatisMapperProxy 是 MyBatis-Plus 框架中用于实现 Mapper 接口动态代理的核心类。它继承自 MyBatis 的 MapperProxy,并扩展了以下功能: …...

在java程序中,类,进程,线程他们之间的关系以及main方法与他们之间的关系
在 Java 程序里,类、进程、线程各自有着不同的概念,同时也存在着紧密的联系,下面来详细分析它们之间的关系以及 main 方法和它们的关系。 类 类是 Java 中最基础的编程单元,是一种自定义的数据类型,它定义了对象的属…...

[ACTF2020 新生赛]BackupFile题解
启动环境 进入后只有一段话,没有其他的说法。 解题方法 但是题目命名为backup file,应该是备份文件的意思,那么就用dirsearch工具来扫一下看看。 查看扫描结果 index.php.bak 下载下这个文件,查看文件内容。 进行php代码审计…...

如何修改npm的全局安装路径?
修改 npm 的全局安装路径可以通过以下步骤完成,确保全局包(使用 -g 安装的模块)和缓存文件存储到自定义路径。以下是详细步骤: 1. 创建自定义路径的目录 在目标路径下创建两个文件夹,分别用于存储全局模块和缓存文件…...

巧用 Element - UI 实现图片上传按钮的智能隐藏
引言 在前端开发中,使用 Element - UI 组件库来构建用户界面是非常常见的操作。其中图片上传功能更是在许多项目中频繁出现,比如用户头像上传、商品图片上传等场景。有时候,我们会有这样的需求:当上传图片达到一定数量后…...
Ubuntu18.04 升级最新版本Cmake
1.升级原因 ubuntu18.04默认安装的cmake版本为 3.10.2;在编译一些软件的时候,版本太低导致无法编译 2.从cmake官网下载二进制安装包 地址:https://cmake.org/download/ 包:cmake-4.0.1-linux-x86_64.tar.gz 3.上传下载好的安装包到ubuntu…...
关于mysql的事务和索引
1. 事务四大特性(ACID) 原子性:事务的操作要么全部成功,要么全部失败回滚,不可分割。 一致性:事务执行前后,数据必须满足业务规则(如账户总额不变)。 隔离性࿱…...

从“拼凑”到“构建”:大语言模型系统设计指南!
你有没有试过在没有说明书的情况下组装宜家家具?那种手忙脚乱却又充满期待的感觉,和设计大语言模型(LLM)系统时如出一辙。如果没有一个清晰的计划,很容易陷入混乱。我曾经也一头扎进去,满心期待却又手足无措,被网上那些复杂的架构图搞得晕头转向。于是,我坐下来,把它们…...
mybatis xml中特殊字符处理
1,CDATA区: 它的全称为character data,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封…...

【数据结构与算法】从完全二叉树到堆再到优先队列
完全二叉树 CBT 设二叉树的深度为 h , 若非最底层的其他各层的节点数都达到最大个数 , 最底层 h 的所有节点都连续集中在左侧的二叉树叫做 完全二叉树 . 特点 对任意节点 , 其右分支下的叶子节点的最底层为 L , 则其左分支下的叶子节点的最低层一定是 L 或 L 1 .完全二叉树…...
【linux】SSH 连接 WSL2 本地环境的完整步骤
SSH 连接 WSL2 本地环境的完整步骤 要在 Windows 的 WSL2 环境中启用 SSH 服务,并允许本地或局域网设备连接,需完成以下步骤: 1. 安装 openssh-server sudo apt update sudo apt install openssh-server -y2. 配置 sshd 修改配置文件 sud…...
vue项目前后端分离设计
在Vue前端架构中,通过分层结构和模块化设计实现高效的前后端分离,需要系统性规划各层职责、接口管理和数据流控制。以下是结合业界最佳实践的完整方案: 一、分层架构设计 1. 分层结构(自上而下) 层级职责示例技术实现…...

【Linux网络】构建类似XShell功能的TCP服务器
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...

Spring Boot 配置源详解(完整版)
Spring Boot 配置源详解(完整版) 一、配置源加载顺序与优先级 配置源类型优先级顺序(从高到低)对应配置类/接口是否可覆盖典型文件/来源命令行参数(--keyvalue)1(最高)SimpleComman…...
JDK 17 与 Spring Cloud Gateway 新特性实践指南
一、环境要求与版本选择 1. JDK 17 的必要性 最低版本要求:Spring Boot 3.x 及更高版本(如 3.4)强制要求 JDK 17,以支持 Java 新特性(如密封类、模式匹配)和性能优化。JDK 17 核心特性: 密封类…...
异构迁移学习(无创脑机接口中的跨脑电帽迁移学习)
本文介绍BCI中的跨脑电帽的迁移学习最新算法。 (发表于2025 arxiv,应该属于投稿阶段,这个场景具有非常不错的研究意义和前景) 最新跨脑电帽异构算法github开源代码 SDDA算法原文 一、脑机接口绪论 脑机接口(BCI)指在人或动物大脑与外部设备之间创建的直接连接,通过脑…...

puppeteer注入浏览器指纹过CDP
一、背景 通过puppeteer爬取目标网站时,经常会被对方网站检测到,比如原生puppeteerCDP特征非常明显,另外指纹如果一直不变,也会引发风控 二、实现 通过以下几行代码即可轻松过大部分检测点,并且能够切换指纹&#x…...
1.8软考系统架构设计师:系统架构设计师概述 - 练习题附答案及超详细解析
系统架构设计师概述综合知识单选题 每道题均附有答案解析: 架构设计师的定义、职责和任务 1、系统架构设计师的核心职责是: A. 编写具体功能模块的代码 B. 制定系统整体架构和技术选型 C. 管理项目预算和进度 D. 直接对接客户进行销售支持 答案&#x…...

软件项目实施全流程及交付物清单
需求分析 -> 概要设计 -> 详细设计 -> 开发实现 -> 测试 -> 部署 -> 运维 一、确认项目目标、范围和团队成员 二、收集和分析客户需求,确定需求规格 三、制定详细的项目计划,包括时间表、资源计划、预算 四、系统架构设计…...

【2025计算机网络-面试常问】http和https区别是什么,http的内容有哪些,https用的是对称加密还是非对称加密,流程是怎么样的
HTTP与HTTPS全面对比及HTTPS加密流程详解 一、HTTP与HTTPS核心区别 特性HTTPHTTPS协议基础明文传输HTTP SSL/TLS加密层默认端口80443加密方式无加密混合加密(非对称对称)证书要求不需要需要CA颁发的数字证书安全性易被窃听、篡改、冒充防窃听、防篡改…...