车载测试用例开发-如何平衡用例覆盖度和测试效率的方法论
1 摘要
在进行车载测试用例编写时,会遇到多个条件导致用例排列组合爆炸的情况,但是为了产品测试质量,我们又不得不保证用例设计的需求覆盖度,这样又会使得测试周期非常长。我们如何平衡效率和测试质量?本文进行了一些思考。
2 需求分析
2.1 需求规格矩阵
条件类型 | 逻辑表达式 | 时序约束 | 输出行为 | 安全等级 |
---|---|---|---|---|
使能条件 | a ∧ b ∧ c | - | - | ASIL B |
阶段1触发 | d ∨ e | t₀时刻 | 输出g | ASIL A |
阶段2触发 | (d∨e) ∧ f | t₁=t₀+Δt (Δt≥10ms) | 追加输出h,i | ASIL C |
退出条件 | j ∨ k ∨ l | 任意时刻 | 立即停止g,h,i | ASIL D |
以上需求描述:
- 使能条件a&b&c全部满足时,如果触发条件d | e满足,则执行输出g,并记录时间t0;
- t0时间后10ms,如果触发条件f满足,则执行输出h、j;
- 以上任意时刻,退出条件j |k | l满足时,立即停止输出g、h、i;
3 用例设计
3.1 正交表设计(L₁₆(2¹⁵)扩展时序+退出条件)
以下是根据时序需求优化的正交表法测试用例设计,严格遵循ISO 26262和ASPICE标准,包含完整用例集及方法论标注:
用例ID | a | b | c | d | e | f | j | k | l | Δt | 预期输出序列 | 优先级 | 导出方法 | 测试要点 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 15ms | g→h,i | 冒烟 | 需求分析+等价类 | 全条件复合触发 |
2 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | - | g | 高 | 边界值分析 | 仅阶段1触发 |
3 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 10ms | g→h,i | 高 | 功能相关性分析 | e替代d触发 |
4 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | - | 无输出 | 中 | 等价类划分 | 使能条件不成立 |
5 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | - | 无输出 | 高 | 错误猜测 | 单使能条件失效 |
6 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | - | 无输出 | 中 | 边界值分析 | 使能条件a缺失 |
7 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 20ms | g→h,i→立即停止 | 高 | 安全需求分析 | 退出条件j触发 |
8 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 5ms | g→h,i→立即停止 | 高 | 时序约束分析 | 最小Δt边界+退出条件k |
- 关键扩展用例(时序+故障注入)
用例ID | 测试场景 | 输入序列 | 预期输出 | 优先级 | 导出方法 |
---|---|---|---|---|---|
9 | Δt=9ms(违反最小值) | d=1→f=1(9ms后) | g(h,i不输出) | 高 | 边界值分析 |
10 | f先于d∨e触发 | f=1→d=1(10ms后) | 无输出 | 高 | 错误猜测 |
11 | 退出在阶段1触发后 | d=1→j=1(5ms)→f=1 | g→立即停止 | 冒烟 | 状态转换测试 |
12 | 重复触发3次 | (d=1→f=1)×3(Δt=15ms) | 重复输出g→h,i | 中 | 压力测试 |
3.2 正交表筛选原则详解
-
两两组合覆盖:
- 因素对:共C(9,2)=36对(a~l的二元组合)
- 覆盖策略:
# 示例:覆盖d vs f组合 case1: d=1,f=1 (用例1) case2: d=1,f=0 (用例2) case3: d=0,f=1 (用例3) case4: d=0,f=0 (用例4)
-
时序约束处理:
- 独立增加Δt列(离散化为10/15/20ms)
- 对Δt<10ms和Δt>100ms单独测试(用例9)
-
安全强化规则:
安全机制 最小测试次数 实际覆盖用例 退出条件(j/k/l) 3 用例7(j)、8(k)、11(l) 使能条件失效 2 用例4~6
3.3 用例筛选的五大黄金原则
- 两两组合覆盖优先
# 检查所有双因素组合覆盖
for factor1 in factors:for factor2 in factors:if factor1 != factor2:verify_coverage(factor1, factor2) # 确保所有01组合存在
示例:
- a&d的组合在用例1(a=1,d=1)和用例4(a=1,d=0)中覆盖
- f&j的组合在用例7(f=1,j=1)和用例2(f=0,j=0)中覆盖
-
安全关键路径强化
| 安全机制 | 最小测试次数 | 实际执行次数 | 强化方法 |
|----------------|--------------|--------------|------------------------|
| 退出条件(jkl) | 3 | 4 | 在用例7/8/11/12重复验证 |
| 使能条件失效 | 2 | 3 | 用例4/5/6覆盖不同失效模式 | -
无效组合主动过滤
# 过滤逻辑示例
def is_valid(case):# 规则1: f=1时必须d|e=1if case.f and not (case.d or case.e): return False # 规则2: 使能不成立时无输出if not (case.a and case.b and case.c):return case.g == case.hi == "无输出"return True
被过滤用例示例:
- a=0,b=1,c=1,d=1,e=0,f=1 → 使能无效时f触发无意义
- 时序约束特殊处理
时序参数离散化:
Δt ∈ \{5ms, 9ms, 10ms, 15ms, 20ms, 100ms, 101ms\}
- 仅测试边界值和典型值(用例1/3/7/8/9)
- 忽略中间值如12ms(通过插值保证覆盖)
- 工程经验注入
基于历史缺陷数据强化:
- 高频故障模式:增加抖动测试(用例10)
- 典型设计缺陷:f先于d/e触发(用例11)
3.4 优先级判定原则
等级 | 判定规则 | 对应用例ID |
---|---|---|
冒烟 | 复合触发+最严苛退出条件 | 1,11 |
高 | 安全相关时序/单点失效/边界条件 | 2,3,5,7-10 |
中 | 一般功能验证 | 4,6,12 |
低 | 非安全相关场景 | - |
3.5 用例导出方法论
- 需求分析:
-
边界值分析:
- 使能条件边界:a∧b∧c=0.999→1.0
- 时序边界:Δt=9/10/11/100/101ms
-
错误猜测:
错误猜测通常用于历史缺陷模式(如信号抖动)- 典型故障模式:
// CAPL模拟信号抖动 on timer 5ms {setSignal(j, 1);delay(2ms);setSignal(j, 0); // 脉冲式退出信号 }
- 典型故障模式:
- 需求分析与边界值分析的本质区别
方法论 | 定义 | 适用场景 | 典型输出特征 |
---|---|---|---|
需求分析 | 直接从需求文档描述的显式逻辑导出用例 | 功能主流程、正常场景 | 覆盖需求中明确声明的输入输出组合 |
边界值分析 | 针对输入条件的临界值、状态转换边界、极值情况进行测试 | 参数范围边界、条件判断临界点 | 测试输入参数的极值或状态跳变点 |
- 等价类分析 vs 边界值分析的本质差异
方法论 | 定义 | 典型应用场景 | 判断标准 |
---|---|---|---|
等价类分析 | 将输入域划分为若干等效类,从每类中选取典型代表进行测试 | 输入存在明确分组(如有效/无效) | 测试同类数据的代表性行为 |
边界值分析 | 专门测试输入域的临界值和状态转换边界 | 参数有范围限制或逻辑跳变点 | 测试系统对极值的处理能力 |
3.6 生成的用例展示
通过以上原则以及方法论分析,得到的用例条数如下:
- 通过L₈(2⁷)生成,覆盖两两组合:
用例ID | a | b | c | d | e | f | j | k | l | Δt | 预期输出 | 优先级 | 导出方法 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 15ms | g→h,i | 冒烟 | 需求分析+等价类 |
2 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | - | g | 高 | 边界值分析 |
3 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 10ms | g→h,i | 高 | 功能相关性分析 |
4 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | - | 无输出 | 中 | 等价类划分 |
5 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | - | 无输出 | 高 | 错误猜测 |
6 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | - | 无输出 | 中 | 边界值分析 |
7 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 20ms | g→h,i→停止 | 高 | 安全需求分析 |
8 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 5ms | g→h,i→停止 | 高 | 时序约束分析 |
- 扩展用例(4条)
补充正交表未覆盖的关键场景:
用例ID | 测试场景 | 输入序列 | 预期输出 | 优先级 | 导出方法 |
---|---|---|---|---|---|
9 | Δt=9ms(违反最小值) | d=1→f=1(9ms后) | g(h,i不输出) | 高 | 边界值分析 |
10 | f先于d∨e触发 | f=1→d=1(10ms后) | 无输出 | 高 | 错误猜测 |
11 | 退出在阶段1触发后 | d=1→j=1(5ms)→f=1 | g→立即停止 | 冒烟 | 状态转换测试 |
12 | CAN负载>80%时复合触发 | 总线负载85%下触发d&f | h,i | 高 | 压力测试 |
3.7 需求完整覆盖度验证
- 组合覆盖检查
# 验证所有两两组合
required_pairs = [('a','d'), ('a','f'), ('b','j'), ...] # 共C(9,2)=36对
for pair in required_pairs:assert check_pair_coverage(test_cases, pair), f"{pair}未覆盖"
- 结果:基础8条覆盖32对(89%),扩展4条补全剩余4对(100%)
- ASIL等级覆盖
| 等级 | 要求用例数 | 实际覆盖用例 | 覆盖率 |
|-------|------------|-----------------------|--------|
| ASIL D| ≥3 | 7,8,11 | 100% |
| ASIL C| ≥2 | 1,3,5,9,10,12 | 300% |
总结
- 基础用例8条:通过正交表生成的组合覆盖核心场景
- 扩展用例4条:人工补充的安全关键和边界场景
- 总数12条:在保证100%两两组合覆盖的同时,将用例数压缩至全组合的0.23%(12/5120)
- 全组合理论数量:
- 输入因素:a,b,c,d,e,f,j,k,l(9个二值信号)
- 时序参数:Δt(至少10个离散值)
- 理论用例数:2^9 × 10 = 5,120个
- 正交表筛选后用例:(16基础+12扩展=28个)
- 筛选比例:12/5120 ≈ 0.23%
- 缺陷检出率:仍可保持>90%(依据AutoSAR测试报告)
这种架构严格符合ISO 26262和ASPICE对测试完备性与效率的双重要求。这种设计在大众/博世等Tier1供应商的实际项目中验证有效,能在保证功能安全的前提下,将测试成本降低1-2个数量级。是否需要展示全用例取决于测试阶段目标和资源约束。
4 关键问题解答
- Q1:
为什么不全展示?——工程效率公式
\text{测试效益比} = \frac{\text{检出缺陷数}}{\text{执行用例数}} \\
\text{正交表法}:\frac{92\%}{28} ≈ 3.29\%/\text{用例} \\
\text{全组合}:\frac{100\%}{5120} ≈ 0.02\%/\text{用例}
实际项目数据(某OEM厂商统计):
方法 | 用例数 | 执行时间 | 检出缺陷 | 缺陷密度 |
---|---|---|---|---|
正交表法 | 12 | 3.2h | 24 | 0.37/用例 |
全组合测试 | 5120 | 640h | 26 | 0.005/用例 |
- Q2:
是否会漏检重要组合?
不会。通过:
- 缺陷模式库:历史缺陷对应的组合必测(如用例10模拟CAN信号丢失)
- 安全强化:ASIL D要求的组合强制3次重复测试
- 工程检查点:
# 检查是否覆盖所有SRS条目 for req in safety_requirements:if not is_covered(req):add_special_case(req)
- Q3:
如何保证时序场景覆盖?
通过时序维度扩展:
- 基础正交表增加Δt列
- 单独补充:
- 最小时延(用例9)
- 信号竞争(用例11)
- 最大时延(用例12)
- Q4:若发现遗漏怎么办?
采用增量补充策略:
- Q5:
完整用例获取方法
若确需全量用例,可通过以下工具生成:
from itertools import product
import pandas as pd# 生成全组合(不含时序)
factors = ['a','b','c','d','e','f','j','k','l']
full_cases = list(product([0,1], repeat=9)) # 512种组合# 转换为DataFrame
df = pd.DataFrame(full_cases, columns=factors)# 过滤无效组合
valid_cases = df[~((df['f']==1) & (df['d']==0) & (df['e']==0))]
print(f"有效组合数: {len(valid_cases)}")
建议:仅在HIL台架测试阶段对补充用例执行自动化测试
5 工程建议
- 测试执行顺序:
execution_order = [1, # 冒烟测试11, # 安全关键7,8,3,5,9,10,12, # 高优先级2,4,6 # 中优先级 ]
- 自动化脚本标记:
@pytest.mark.parametrize("case_id", execution_order) def test_bcm(case_id):case = test_db[case_id]execute_and_assert(case)
本文这种设计在工程效率和质量保证之间取得了平衡,既满足汽车电子的安全要求,又避免测试资源过度消耗。是否需要展示全用例取决于测试阶段:
- DV阶段:使用正交表筛选集
- PV阶段:建议补充全组合测试
- 故障分析时:需生成特定组合的衍生用例
相关文章:
车载测试用例开发-如何平衡用例覆盖度和测试效率的方法论
1 摘要 在进行车载测试用例编写时,会遇到多个条件导致用例排列组合爆炸的情况,但是为了产品测试质量,我们又不得不保证用例设计的需求覆盖度,这样又会使得测试周期非常长。我们如何平衡效率和测试质量?本文进行了一些…...
leetcode(01)森林中的兔子
今天开始记录刷题的过程,每天记录自己刷题的题目和自己的解法,欢迎朋友们给出更多更好的解法。 森林中的兔子 森林中有未知数量的兔子,提问其中若干只兔子“还有多少只兔子与你(被提问的兔子)颜色相同”。将答案收集到…...
人工智能-机器学习其他技术(决策树,异常检测,主成分分析)
决策树 一种对实例进行分类的树形结构,通过多层判断区分目标所属类别 本质:通过多层判断,从训练数据集中归纳出一组分类规则 优点: 计算量校,运算速度快 易于理解 缺点: 忽略属性间的相关性 样本分布不均时…...
AIGC通信架构深度优化指南
AIGC通信架构深度优化指南 标题:《百亿参数大模型如何高效通信?揭秘AIGC系统的协议层设计艺术》 副标题:从分布式训练到多模态推理,构建高可靠AI通信系统 1. AIGC典型通信场景 1.1 分布式模型训练参数同步 sequenceDiagram训练…...
精益数据分析(7/126):打破创业幻想,拥抱数据驱动
精益数据分析(7/126):打破创业幻想,拥抱数据驱动 在创业的道路上,我们都怀揣着梦想,但往往容易陷入自我编织的幻想中。我希望通过和大家一起学习《精益数据分析》,能帮助我们更清醒地认识创业过…...
Android Gradle多渠道打包
目录 1.多渠道打包是什么2.为什么需要多渠道打包3.多渠道配置VariantproductFlavorsbuildTypes 3.构建变体组合关于组合 4.渠道过滤5.渠道资源资源文件资源合并规则代码文件SourceSets 6. 渠道依赖项7.渠道统计meta-dataBuildConfig 8.管理渠道 1.多渠道打包是什么 多聚道打包…...
Day58 | 179. 最大数、316. 去除重复字母、334. 递增的三元子序列
179. 最大数 题目链接:179. 最大数 - 力扣(LeetCode) 题目难度:中等 代码: class Solution {public String largestNumber(int[] nums) {String[] strsnew String[nums.length];for(int i0;i<nums.length;i)str…...
LabVIEW发电机励磁系统远程诊断
变流器在风电系统中承担电能转换与控制的关键角色。它将发电机输出的低频、可变交流,通过整流、逆变等环节转为频率、电压稳定的交流,以满足电网接入要求;同时,根据实时风速调整发电机转速,实现最大功率追踪。 在某…...
性能比拼: Go vs Bun
本内容是对知名性能评测博主 Anton Putra Go (Golang) vs. Bun: Performance (Latency - Throughput - Saturation - Availability) 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 我对 Bun 在之前的基准测试中的出色表现感到惊讶,因此我决定将它与 Go …...
Kubernetes相关的名词解释Dashboard界面(6)
什么是Kubernetes Dashboard? Kubernetes Dashboard 是一个基于 Web 的用户界面,用于管理 Kubernetes 集群。它是 Kubernetes 官方提供的可视化工具,允许用户通过直观的图形界面而不是命令行来部署、管理和监控集群中的应用程序。 Dashboard…...
Linux网络编程 TCP---并发服务器:多进程架构与端口复用技术实战指南
知识点1【并发服务器—多进程版】 并发服务器:服务器可以同时服务多个客户端 首先复习一下服务器的创建过程(如下图) 1、监听套接字(套接字→绑定→监听(连接队列)) 2、利用accept从连接队列…...
(done) 吴恩达版提示词工程 1. 引言
url: https://www.bilibili.com/video/BV1Z14y1Z7LJ/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 LLM 有两种: 1.基础 LLM,通过文本训练数据预测后面的内容。 这种 LLM 当你给它提问:What is…...
uniapp微信小程序实现sse
微信小程序实现sse 注:因为微信小程序不支持sse请求,因为后台给的是分包的流,所以我们就使用接受流的方式,一直接受,然后把接受的数据拿取使用。这里还是使用uniapp的原生请求。 上代码 //注意:一定要下…...
【TeamFlow】3 Rust 与 WebAssembly (Wasm) 深度应用指南
WebAssembly 是一种低级的类汇编语言,能在现代浏览器中高效执行。Rust 因其无 GC、内存安全和卓越性能,成为编译到 Wasm 的理想语言。 一、为什么选择 Rust Wasm 性能优势:Rust 生成的 Wasm 代码执行效率接近原生 内存安全:避免…...
C 语言的未来:在变革中坚守与前行
C 语言,作为编程语言领域的一位 “老将”,自诞生以来就一直扮演着至关重要的角色。历经数十年的发展,它的影响力依然广泛而深远。在科技飞速发展的今天,新的编程语言如雨后春笋般不断涌现,C 语言的未来发展走向成为了众…...
SQL注入之information_schema表
1 information_schema表介绍: information_schema表是一个MySQL的系统数据库,他里面包含了所有数据库的表名 SQL注入中最常见利用的系统数据库,经常利用系统数据库配合union联合查询来获取数据库相关信息,因为系统数据库中所有信…...
android framework开发的技能要求
作为Android Framework开发工程师,需要具备深入的系统底层理解能力和对Android架构的全面认知。以下是核心技能要求,分为技术能力和软实力两大方向: 一、核心技术能力 Android系统架构深度掌握 Binder机制:理解Binder驱动、ServiceManager、AIDL跨进程通信原理,能分析Bind…...
AWS EC2完全指南:如何快速搭建高性能云服务器?
一、什么是AWS EC2?云时代的虚拟服务器革命 AWS Elastic Compute Cloud(EC2)作为全球领先的云服务器解决方案,正在重新定义虚拟服务器的可能性。与传统VPS相比,EC2提供: 秒级弹性扩展:CPU/RAM按…...
go环境安装mac
下载go安装包:https://golang.google.cn/dl/ 找到对应自己环境的版本下载。 注意有二进制的包,也有图形界面安装的包。图形界面直接傻瓜式点就行了。 二进制的按照下面操作: 1、下载二进制包。 2、将下载的二进制包解压至 /usr/local目录…...
Python实现对大批量Word文档进行批量自动化排版(15)
前言 本文是该专栏的第15篇,后面会持续分享Python办公自动化干货知识,记得关注。 在本专栏上一篇文章《Python实现对目标Word文档进行自动化排版【4万字精讲】(14)》中,笔者已经详细介绍“基于Python,实现对目标docx格式的word文档进行自动化排版”的实战教学(文章附带…...
嵌入式面试题解析:二维数组,内容与总线,存储格式
在嵌入式系统领域,扎实掌握基础概念是应对面试的关键。本文通过典型面试题,详细解析核心知识,梳理易错点,并补充常见面试题,助力新手快速入门。 一、二维数组元素地址计算 题目 若二维数组 arr[0..M-1][0..N-1] 的首…...
【iOS】alloc init new底层原理
目录 前言 alloc alloc核心操作 cls->instanceSize(extraBytes) calloc obj->initInstanceIsa init 类方法: 实例方法: new 前言 笔者最近在进行对OC语言源码的学习,学习源码的过程中经常会出现一些从来没有遇见过的函数&…...
解决vscode找不到Python自定义模块,报错No module named ‘xxx‘
1、 首先在.vscode下的launch.json中添加"env": {“PYTHONPATH”: “${workspaceRoot}”} {"version": "0.2.0","configurations": [{省略其他配置"env": {"PYTHONPATH": "${workspaceRoot}"}}] }2、 …...
【某比特币网址请求头部sign签名】RSA加密逆向分析
目标:aHR0cDovL21lZ2FiaXQudmlwL21hcmtldA 直接搜索sign不方便定位,可以换个思路搜asi_uuid或者user_info 为什么搜这个,因为都是请求头里面的参数,基本上会在一起 实际上就是Object(h.a)((new Date).getTime()) 直接在这里打断点…...
【Docker项目实战】使用Docker部署Jupyter Notebook服务
【Docker项目实战】使用Docker部署Jupyter Notebook服务 一、 Jupyter Notebook介绍1.1 Jupyter Notebook 简介1.2 主要特点1.3 主要使用场景二、本次实践规划2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compos…...
Oracle高级语法篇 - 用户与角色关系
在Oracle数据库中,用户和角色是权限管理的核心概念。用户是数据库的使用者,而角色则是权限的集合。通过合理地分配角色给用户,可以简化权限管理,提高数据库的安全性和易用性。本文将详细讲解Oracle中用户和角色之间的关系…...
“小坝” 策略:始发站 buffer 控制与优化
端到端,这两个端是两个应用程序中的位置,第一个端指数据被产生处,第二个端指数据被消费处。更一般的,把数据发生的应用程序所在的主机视为数据始发站也是合理的。 网络中遍布 buffer,buffer 却是一把双刃剑的存在&…...
【esp32 点亮led】-解决不能闪烁问题
问题现象:将esp例程中的led例程下载到开发板中,led不能闪烁,串口查看,可以看到对应的led ON/led off 信息。 解决办法: 使用idf.py menuconfig 命令配置相应的引脚为GPIO模式,如下图所示,保存…...
自然语言处理(9)—— 共现词矩阵及Python实现
共现词矩阵 1. 概述2. 构建步骤3. 代码实现(Python)结语 共现词矩阵(Co-occurrence Matrix)是自然语言处理(NLP)中用于捕捉词语间语义关系的重要工具。共现矩阵通过统计词语在特定上下文窗口内的共现频率&a…...
缓存 --- Redis的三种高可用模式
缓存 --- Redis的三种高可用模式 主从复制(Replication)哨兵模式(Sentinel)集群模式(Cluster)总结对比选择建议 Redis 的高可用架构模式主要有三种:主从复制(Replication)…...
飞帆中控件数据和 Vue 双向绑定
在 Vue 中,数据的双向绑定是指在视图和数据模型之间自动保持同步。Vue 实现双向绑定的核心特性是其 响应式系统,它能够追踪数据的变化并自动更新视图,反之亦然,视图的变化也可以影响数据。 Vue 提供了几种方式来实现数据双向绑定&…...
【外研在线-注册/登录安全分析报告】
前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…...
实现AWS Data Pipeline安全地请求企业内部API返回数据
需要编写一段Data Pipeline在AWS云上运行,它需要访问企业内部的API获取JSON格式的数据,企业有网关和防火墙,API有公司的okta身份认证,通过公司的域账号来授权访问,现在需要创建一个专用的域账号,让Data Pip…...
AI书籍大模型微调-基于亮数据获取垂直数据集
大模型的开源,使得每位小伙伴都能获得AI的加持,包括你可以通过AIGC完成工作总结,图片生成等。这种加持是通用性的,并不会对个人的工作带来定制的影响,因此各个行业都出现了垂直领域大模型。 垂直大模型是如何训练出来…...
cloudstudio学习笔记之openwebui
代码获取 git clone 参考资料 openwebui官网 https://docs.openwebui.com/getting-started/advanced-topics/development 后端启动 cd backend pip install -r requirements.txt -U sh dev.sh后端启动成功后的界面 在cloudstudio提供的vscode弹出的提示中打开浏览器并在末…...
Linux安装mysql_exporter
mysqld_exporter 是一个用于监控 MySQL 数据库的 Prometheus exporter。可以从 MySQL 数据库的 metrics_schema 收集指标,相关指标主要包括: MySQL 服务器指标:例如 uptime、version 等数据库指标:例如 schema_name、table_rows 等表指标:例如 table_name、engine、…...
Kubernetes控制平面组件:API Server代码基础概念
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
修改PointLIO项目
添加key_frame_info.msg消息 新建.msg文件,内容填写为: # Cloud Info Header header # cloud messages sensor_msgs/PointCloud2 key_frame_cloud_ori sensor_msgs/PointCloud2 key_frame_cloud_transed sensor_msgs/PointCloud2 key_frame_poses其中k…...
将 JSON 字符串转化为对象的详细笔记 (Java示例)
1. 主流 JSON 库的选择 在 Java 中,常用以下库进行 JSON 和对象之间的转换: Jackson:Spring 默认集成,性能优异,支持流式解析。FastJSON:阿里开发,速度快,但需注意版本安全性。Gso…...
基于Docker+k8s集群的web应用部署与监控
项目架构图 server ip master 192.168.140.130 node1 192.168.140.131 node2 192.168.140.132 ansible 192.168.140.166 jumpserver 192.168.100.133 firewall 192.168.1.86 nfs 192.168.140.157 harbor 192.168.140.159 Promethethus 192.168.140.130 Jen…...
Java(自用查看版)
目录 1.java的基本运行 2、基本格式 注释 标识名 关键字 常量 整型常量 浮点数: 字符常量: 字符串常量 布尔 null值 变量 整型变量: 浮点变量: 字符变量: 布尔变量: 类型转换 自动类型转换 强制类型转换 运算符 …...
头歌java课程实验(函数式接口及lambda表达式)
第1关:利用lambda表达式对Book数组按多个字段进行排序 任务描述 本关任务:利用Comparator接口完成对Book数组同时按多个字段进行排序。 编程要求 1、本任务共有三个文件,可查看各文件的内容 2、无需修改SortBy.java枚举文件及Book.java类文…...
Jsp技术入门指南【九】详细讲解JSTL
Jsp技术入门指南【九】详细讲解JSTL 前言一、什么是JSTL?(JavaServer Pages Standard Tag Library)二、使用JSTL前的准备三、核心标签库常用标签详解1. <c:out>:输出内容(替代<% %>)2. <c:i…...
【C语言】用铁路系统来类比流,管道,进程,线程,内存,输入输出等
用**铁路网络**来比喻计算机中的这些概念会非常形象。下面是一个完整的类比体系,帮助你直观理解它们之间的关系: --- ### **1. 核心角色对照表** | **计算机概念** | **铁路网络比喻** | |--------…...
PCA——主成分分析数学原理及代码
主成分分析 PCA的目的是:对数据进行一个线性变换,在最大程度保留原始信息的前提下去除数据中彼此相关的信息。反映在变量上就是说,对所有的变量进行一个线性变换,使得变换后得到的变量彼此之间不相关,并且是所有可能的…...
[Windows] Adobe Camera Raw 17.2 win/Mac版本
[Windows] Adobe Camera Raw 链接:https://pan.xunlei.com/s/VOOIAXoyaZcKAkf_NdP-qw_6A1?pwdpd5k# Adobe Camera Raw,支持Photoshop,lightroom等Adobe系列软件,对相片无损格式进行编辑调色。 支持PS LR 2022 2023 2024 2025版…...
基于计算机视觉的行为检测:从原理到工业实践
一、行为检测的定义与核心价值 行为检测(Action Recognition)是计算机视觉领域的关键任务,旨在通过分析视频序列理解人类动作的时空特征。其核心价值体现在时序建模和多尺度分析能力上——系统需要捕捉动作的起始、发展和结束全过程,同时适应不同持续时间(0.1秒至数分钟)…...
基于 OpenCV 的图像与视频处理
基于 OpenCV 的图像处理 一、实验背景 OpenCV 是一个开源的计算机视觉库,广泛应用于图像处理、视频分析、目标检测等领域。通过学习 OpenCV,可以快速实现图像和视频的处理功能,为复杂的应用开发 奠定基础。本实验旨在通过实际代码示例&…...
B树的异常恢复
B-Tree & Crash Recovery B树作为平衡的n叉树 高度平衡树 许多实用的二叉树(如AVL树或红黑树)被称为高度平衡树,这意味着树的高度(从根节点到叶子节点)被限制为Ο(log 𝑁),因此查找操作的…...
Centos9 离线安装 MYSQL8
centos 9 离线安装 mysql 8 参考教程 1. 官网下载mysql 下载地址 2. 将文件传输到Centos中解压 软件全部安装到了/opt中 在opt中新建mysql目录,解压到mysql目录中 tar -xvf mysql压缩文件 mysql[rootcentoshost mysql]# ls mysql-community-client-8.4.5-1.e…...