车载功能测试-车载域控/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 …...
gem5-gpu教程05 内存建模
memory-modeling|Details on how memory is modeled in gem5-gpu ====== gem5-gpu’s Memory Simulation ====== gem5-gpu, for the most part, eschews GPGPU-Sim’s separate functional simulation and instead uses gem5’s execute-in-execute model. Therefore, memory …...
如何提升个人解决问题的能力?
提升个人解决问题的能力是一个系统性工程,涉及思维、知识、经验和心态的多方面提升。以下是一些具体且可操作的方法,帮助你逐步增强解决问题的能力: 1. 培养「结构化思维」 明确问题本质: 遇到问题时,先问自己&…...
CSS清楚默认样式
* {margin: 0;padding: 0;box-sizing: border-box;} 这段 CSS 代码是一个常见的全局样式重置代码块,它会对网页中的所有元素(通过通配符 * 选择器)应用相同的样式规则,下面分别解释每一条规则的作用。 margin: 0; 在 HTML 中&a…...
问题:raw.githubusercontent无法访问
问题:raw.githubusercontent无法访问 文章目录 一、问题二、hosts文件2.1、hosts文件简介2.2、hosts文件位置2.3、hosts文件修改 3、解决方法3.1、查询出raw.githubusercontent.com的ip地址3.2、在/etc/hosts里填写IP地址3.3、再次执行命令 4、一些常用IP地址 一、问…...
【C语言】文本操作函数fgetc、fputc、fgets、fputs、fprintf、fscanf、fread、fwrite
一、介绍 二、简要概括 三、函数的使用 1、fgetc和fputc int fgetc ( FILE * stream ); 从文件中读取信息,每次读取一个字符 从流中获取字符返回指定流的内部文件位置指示符当前指向的字符。然后将内部文件位置指示符推进到下一个字符 int main() {//打开文件FI…...
(19)VTK C++开发示例 --- 分隔文本读取器
文章目录 1. 概述2. CMake链接VTK3. main.cpp文件4. 演示效果 更多精彩内容👉内容导航 👈👉VTK开发 👈 1. 概述 本例采用坐标和法线(x y z nx ny nz)的纯文本文件,并将它们读入vtkPolyData并显示…...
C++ 中 std::thread 的高级应用
C 中 std::thread 的高级应用、常见坑,以及如何封装为类,适合做线程池、异步任务、后台 worker、并发调度等场景。内容结构如下: 一、std::thread 高级用法清单 1. 线程成员函数调用(this 捕获) class Worker { publ…...
Linux之彻底掌握防火墙-----安全管理详解
—— 小 峰 编 程 目录: 一、防火墙作用 二、防火墙分类 1、逻辑上划分:大体分为 主机防火墙 和 网络防火墙 2、物理上划分: 硬件防火墙 和 软件防火墙 三、硬件防火墙 四、软件防火墙 五、iptables 1、iptables的介绍 2、netfilter/…...
Linux安装ffmpeg7.1操作说明
安装yasm Index of /projects/yasm/releases/ 下载最新版 wget https://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz 解压 tar -zxvf yasm-1.3.0.tar.gz 编译及安装 ./configure make && make install 安装ffmpeg https://download.csdn.net/down…...
Java 加密与解密:从算法到应用的全面解析
Java 加密与解密:从算法到应用的全面解析 一、加密与解密技术概述 在当今数字化时代,数据安全至关重要。Java 加密与解密技术作为保障数据安全的关键手段,被广泛应用于各个领域。 加密是将明文数据通过特定算法转换为密文,使得…...
海思SDK的sensor驱动框架
对于海思的SDK之前一直对驱动的框架不清楚,只知道mpp的目录下的一些简单的业务demo,归根结底对这个SDK的框架还是不够了解,研究了一段时间才对该框架有一点认识。SDK是通过Makefile来管理和编译的所以对于Makefile文件需要有一定的理解&#…...
MyBatis-Plus 使用 Wrapper 构建动态 SQL 有哪些优劣势?
MyBatis-Plus (MP) 提供的 Wrapper (如 QueryWrapper, LambdaQueryWrapper, UpdateWrapper, LambdaUpdateWrapper) 是其核心特性之一,它允许我们在开发时以面向对象的方式构建 SQL 的 WHERE 条件、ORDER BY、SELECT 字段列表等部分。与传统的 MyBatis 在 XML 文件中…...
【PGCCC】Postgres 故障排除:修复重复的主键行
如何从表中删除不需要的重复行。这些重复行之所以“不需要”,是因为同一个值在指定为主键的列中出现多次。自从 glibc 好心地改变了排序方式后,我们发现这个问题有所增加。当用户升级操作系统并修改底层 glibc 库时,这可能会导致无效索引。 唯…...
Java多线程的暗号密码:5分钟掌握wait/notify
wait和join的区别 wait和join在使用上都是等待。 但是join是等待其他线程结束,而wait是等待其他线程的notify通知再运行。 当拿到锁的线程,发现要执行的任务时机不成熟的时候,使用wait进行阻塞等待,然后等时机成熟了再notify通…...
【重学Android】03.高版本 Android Studio 不能使用引用库资源ID的问题
问题背景 由于直接下载的最新版本Android Studio,然后直接创建的新项目,因此默认的工程配置相比以前的老版本有了不少的变化,Gradle的新版本使用,导致一些配置项也发生了变化,加上谷歌针对gradle.properties文件的一些…...
8. kubernetes的service原理
Kubernetes 的 Service 是集群内部和外部访问 Pod 的核心抽象层,解决了 Pod 动态 IP 变化及负载均衡问题。以下是其核心概念、原理及使用方法: 一、Service 的核心概念 概念说明服务发现通过标签选择器(selector)动态关联一组 Po…...
杭电oj(1087、1203、1003)题解
DP 即动态规划(Dynamic Programming),是一种通过把原问题分解为相对简单的子问题,并保存子问题的解来避免重复计算,从而解决复杂问题的算法策略。以下从几个方面简述动态规划: 基本思想 动态规划的核心在…...
解锁安防新境界:XS9933四通道多合一同轴高清解码芯片方案
在安防监控领域,高清、高效、便捷一直是行业追求的目标。今天,我们要为大家介绍一款具有突破性的产品——XS9933四通道多合一同轴高清解码芯片方案,它将为安防监控带来全新的体验。 一、强大性能,高清呈现 XS9933是一款4通道模拟复…...
Mysql之存储过程
🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。 目录 1.存储过程概述 2.存储过程的基本语法 2.1创建存储过程 2.2调用存储过…...
2.第二章:政策法规与标准体系
文章目录 2.1 全球数据治理政策概览2.1.1 欧盟GDPR2.1.2 美国数据法规2.1.3 亚太地区数据法规 2.2 国际标准体系2.2.1 ISO/IEC 270012.2.2 NIST框架2.2.3 DAMA DMBOK2.2.4 其他国际标准 2.3 中国数据治理法规体系2.3.1 《网络安全法》2.3.2 《数据安全法》2.3.3 《个人信息保护…...
Kubernetes (k8s) 日常运维命令总结
一、资源查看 查看所有命名空间的 Pod kubectl get pod --all-namespaces查看指定命名空间的 Pod kubectl get pod --namespace <命名空间>查看所有部署(Deployments) kubectl get deployments.apps --all-namespaces查看所有守护进程集࿰…...
NLP高频面试题(五十三)——LLM中激活函数详解
引言 在现代大型语言模型架构中,激活函数是贯穿神经网络各层的关键组件。它们通过为线性变换结果引入非线性,从而赋予模型表达复杂语言模式的能力。选择合适的激活函数,不仅影响训练的稳定性与收敛速度,还在推理阶段决定了计算效率与模型性能。本文将系统梳理常见激活函数…...
跨平台软件开发探讨
一、跨平台开发核心思路 1. 代码复用最大化 通过抽象平台差异实现核心逻辑复用,理想情况下70%代码可复用,仅30%处理平台特性。 2. 分层架构设计 业务逻辑层:完全平台无关(C/Rust) 平台适配层:封装系统AP…...
网络原理————HTTP
1,HTTP简介 我们上一期谈到了网络编程尤其是TCP和UDP,使用网络套接字来实现网络编程,上一期忘记说了,我们使用TCP的时候,我们用了线程池,这样就可以处理很多客户端而不会阻塞,那么如果客户端一…...
安装Jupyter Notebook 之不断报错 差点放弃版
error: subprocess-exited-with-error Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [6 lines of output] Cargo, the Rust package manager, is not installed or is not on PATH. This package requires Rust and Cargo to com…...
w~大模型~合集13
我自己的原文哦~ https://blog.51cto.com/whaosoft/13864163 #TextRCNN、TextCNN、RNN 小小搬运工周末也要学习一下~~虽然和世界没关 但还是地铁上看书吧, 大老勿怪 今天来说一下 文本分类必备经典模型 模型 SOTA!模型资源站收录情况 模型来源论文 RAE …...
【华为】防火墙双击热备-之-主备模式-单外网线路
FW1和FW2的业务接口都工作在三层,上行连接二层交换机。上行交换机连接运营商的接入点,运营商为企业分配的IP地址为100.100.100.2。现在希望FW1和FW2以主备备份方式工作。正常情况下,流量通过FW1转发;当FW1出现故障时,流…...
学习记录:DAY16
Maven 进阶与前端实战 前言 二轮考核的内容下来了,由整体项目构建转为实现特定模块的功能。对细节的要求更高了,而且有手搓线程池、手搓依赖注入等进阶要求,又有得学力。嘻嘻,太简单了,只要我手搓 Spring Boot 框架……...
基于 Spring Boot 瑞吉外卖系统开发(六)
基于 Spring Boot 瑞吉外卖系统开发(六) 菜品列表 在系统管理端首页,单击左侧菜单栏中的“菜品管理”,会在右侧打开菜品管理页面。 请求URL/dish/page,请求方法GET,请求参数page,pageSize。 该菜品列表…...
香港服务器租用需要哪些性能要求
在如今数字化的时代,租用香港服务器成为了许多企业和个人的选择。但你知道租用香港服务器需要哪些性能要求吗?香港服务器租用需满足硬件性能、网络质量、安全合规、扩展能力四大核心要求,旨在支撑业务高并发、低延迟、稳定安全的运行环境。其…...
LLama Factory从入门到放弃
目录 简介 安装 LLama Factory界面介绍 数据格式要求 微调训练 今天在这里介绍一种常用的大模型微调框架——LLama Factory。 简介 LLama Factory 是一个高效的界面化大语言模型微调工具库,支持多种参数高效微调技术,提供简洁接口和丰富示例&#…...
钧瓷产业原始创新的许昌共识:技术破壁·产业再造·生态重构(一)
大禹智库 第 9期〔总第463期〕2025-4-23 钧瓷产业许昌共识:技术破壁产业再造生态重构(一) ——基于钧瓷产业一体化与数字化原始创新的双轮驱动实践 在当今快速发展的科技领域,创新已成为推动进步的核心动力,企业生存和…...
思科路由器密码绕过+重置
思科路由器密码忘记,重新设置密码不重置配置 1、路由器在初始化过程中会询问是否进行初始化配置,输入no,将直接进入路由器,不会出现用户设置、密码设置等操作。 Would you like to enter the initial configuration dialog? [ye…...
OpenCV 图形API(52)颜色空间转换-----将 NV12 格式的图像数据转换为 RGB 格式的图像
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 将图像从 NV12 (YUV420p) 色彩空间转换为 RGB。该函数将输入图像从 NV12 色彩空间转换到 RGB。Y、U 和 V 通道值的常规范围是 0 到 255。 输出图…...
为什么圆形在GeoJSON中被表示为多边形(Polygon)而不是圆形类型
GeoJSON规范中没有"圆形"类型 GeoJSON是一种用于表示地理空间数据的标准格式,它的规范中只定义了以下几种基本几何类型: Point (点) LineString (线) Polygon (多边形) MultiPoint (多点) MultiLineString (多线) MultiPolygon (多多边形) Ge…...
【解读】Chrome 浏览器实验性功能全景
Chrome 浏览器提供了大量可配置的实验性或功能性设置,主要涉及安全、性能、多媒体、Web API、隐私等多个方面,这些设置可在 Chrome 浏览器的 flags 页面进行调整。 安全相关设置 不安全源设置:可通过#unsafely-treat-insecure-origin-as-sec…...
LInux平均负载
Linux平均负载是**指在一定时间内,系统中处于可运行状态或正在等待资源的进程数的平均值。**它是衡量系统整体工作负载的重要指标,反映了系统的繁忙程度。平均负载通常分为过去1分钟、5分钟和15分钟的平均值。 理解平均负载的关键点 与CPU核心数的关系 *…...
【人工智能】Ollama 负载均衡革命:多用户大模型服务的高效调度与优化
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在 多用户大模型推理 场景下,负载均衡 是确保高并发、低延迟的关键挑战。本文以 Ollama(一个流行的本地大模型运行框架)为例,深入探讨 …...
deepseek-php-client开源程序是强力维护的 PHP API 客户端,允许您与 deepseek API 交互
一、软件介绍 文末提供程序和源码下载学习 deepseek-php-client开源程序是强力维护的 PHP API 客户端,允许您与 deepseek API 交互。 二、Features 特点 无缝 API 集成:DeepSeek 人工智能功能的 PHP 优先接口。流畅构建器模式:可链式调用的…...
ThinkPHP快速使用手册
目录 介绍 安装(windows环境) 安装Composer 安装ThinkPHP 目录结构 配置文件 第一个接口(Controller层) Hello World 自定义Controller 请求参数 获取查询参数(Get请求) 获取指定请求参数 获取…...
文档构建:Sphinx全面使用指南 — 强化篇
文档构建:Sphinx全面使用指南 — 强化篇 Sphinx 是一款强大的文档生成工具,使用 reStructuredText 作为标记语言,通过扩展兼容 Markdown,支持 HTML、PDF、EPUB 等多种输出格式。它具备自动索引、代码高亮、跨语言支持等功能&#…...
Laravel 自定义 Artisan 命令行
1.什么是Artisan 命令行 Artisan 是 Laravel 中自带的命令行接口。Artisan 以 artisan 脚本的方式存在于应用的根目录中,提供了许多有用的命令。 查看所有命令行 php artisan list系统自带我很多的命令,大家可以自己去试一下,例如…...
node.js 实战——(fs模块 知识点学习)
fs 模块 也可以称之为文件系统模块,是node中的内置模块,可以实现与硬盘的交互。比如文件的创建、删除、重命名、移动,还有文件内容的写入、读取,以及文件夹的相关操作 #mermaid-svg-NAByzqTngZUOyQcY {font-family:"trebuch…...
openharmony5.0.0中C++公共基础类测试-线程相关(一)
C公共基础类测试及源码剖析 延续传统,show me the code,除了给出应用示例还重点分析了下openharmony中的实现。 简介 openharmony中提供了C公共基础类库,为标准系统提供了一些常用的C开发工具类,本文分析其实现,并给…...
前缀和相似题共赏
P3131 [USACO16JAN] Subsequences Summing to Sevens S P3131 [USACO16JAN] Subsequences Summing to Sevens S 思路: 一看到区间和我们应该就能马上想到把这个区间拆分成两个前缀相减的形式 式子为:(Pre[r] - Pre[l-1]) % 7 0 Pre[r] % 7 Pre[l-1] % 7 Pre[r] Pre[l-1] 所…...
一文读懂https
http和https的关系 http,应用层协议,由于采用明文传输,不安全,还有很多其他安全问题,为此就衍生出了同为应用层协议的https。https在http的基础上引入了SSL(Secure Socket Layer 安全套接层)和…...
为什么 requests 不是 python 标准库?
为什么 requests 不是 python 标准库? requests开发者Kenneth之前还严肃地征求过这个意见,感兴趣的可以看看 https://github.com/psf/requests/issues/2424 我大致瞅了下,基本都不赞成requests加入python标准库,主要有以下两个原…...
[STM32] 4-1 UART与串口通信
文章目录 前言4-1 UART与串口通信串口简介串口接线 数据帧串口的数据帧格式空闲位起始位数据位校验位(位于数据位内部)奇偶校验 停止位 异步通信和波特率同步通信异步通信波特率 流控的概念串口流控的工作原理 随堂测试问题1:说出Tx、Rx、CTS、RTS、VCC、…...
7-1 三种语言的单词转换
编写程序实现:首先从键盘输入若干个中文与英文单词的偶对,以空行作结束标记;再输入若干个英文与丹麦文单词的偶对,以空行作结束标记。然后输入一个中文单词,输出对应的丹麦文单词;若不存在该单词࿰…...