测试用例生成平台通过大模型升级查询功能,生成智能测试用例
在测试工作中,查询功能是各类系统的核心模块,传统的测试用例编写往往耗时且重复。如何让老旧平台焕发新活力?本文将结合大模型技术,通过用户输入的字段信息,自动化生成高效、精准的测试用例。同时,我们还将介绍如何在 Django 框架中异步调用阿里云的 DeepSeek-R1 API,避免阻塞主线程,从而进一步提升系统性能。点击底部小卡片了解更多AI测试话题。
一、传统查询功能的痛点
在老旧平台中,查询功能面临以下问题:
- 测试用例编写耗时:每次需求变更后,测试用例需要手动更新,效率低下。
- 用例质量参差不齐:测试人员的理解差异导致用例覆盖率和场景设计不足。
- 缺乏智能化:无法根据用户输入的字段信息自动生成测试用例,适应动态变化的需求。
二、大模型驱动的查询功能升级
2.1 升级方案概述
通过将用户输入的字段名称、字段类型、字段值等信息传递给大模型,我们可以自动生成符合标准的测试用例。以下是升级的基本逻辑:
-
用户输入查询条件(字段名称、类型、值等)。
-
系统将输入的信息封装为提示词(Prompt),并发送给大模型。
-
大模型根据模板自动生成测试用例,包括查询步骤和预期结果。 真拿来即用!
[{"title": "根据机构、类型、开始日期、结束日期组合查询","steps": "1.进入页面;\n2.在机构中选择湖北分公司;\n3.在类型中选择当年;\n4.在开始日期输入2023-01-01;\n5.在结束日期输入2023-12-31;\n6.点击查询","expect_results": "查询到湖北分公司当年且在2023-01-01至2023-12-31期间的数据","priority": "P0"},{"title": "根据开始日期、结束日期组合查询","steps": "1.进入页面;\n2.在开始日期输入2023-01-01;\n3.在结束日期输入2023-12-31;\n4.其他条件保持默认;\n5.点击查询","expect_results": "查询到2023-01-01至2023-12-31期间的数据","priority": "P0"},{"title": "根据机构、类型组合查询","steps": "1.进入页面;\n2.在机构中选择湖北分公司;\n3.在类型中选择当年;\n4.其他条件保持默认;\n5.点击查询","expect_results": "查询到湖北分公司当年的数据","priority": "P1"},{"title": "根据机构、开始日期、结束日期组合查询","steps": "1.进入页面;\n2.在机构中选择湖北分公司;\n3.在开始日期输入2023-01-01;\n4.在结束日期输入2023-12-31;\n5.其他条件保持默认;\n6.点击查询","expect_results": "查询到湖北分公司且在2023-01-01至2023-12-31期间的数据","priority": "P1"},{"title": "根据类型、开始日期、结束日期组合查询","steps": "1.进入页面;\n2.在类型中选择当年;\n3.在开始日期输入2023-01-01;\n4.在结束日期输入2023-12-31;\n5.其他条件保持默认;\n6.点击查询","expect_results": "查询到当年且在2023-01-01至2023-12-31期间的数据","priority": "P1"},{"title": "根据机构查询","steps": "1.进入页面;\n2.在机构中选择湖北分公司;\n3.其他条件保持默认;\n4.点击查询","expect_results": "查询到湖北分公司的所有数据","priority": "P2"},{"title": "根据类型查询","steps": "1.进入页面;\n2.在类型中选择当年;\n3.其他条件保持默认;\n4.点击查询","expect_results": "查询到当年的所有数据","priority": "P2"},{"title": "根据开始日期查询","steps": "1.进入页面;\n2.在开始日期输入2023-01-01;\n3.其他条件保持默认;\n4.点击查询","expect_results": "查询到开始日期大于等于2023-01-01的数据","priority": "P3"},{"title": "根据结束日期查询","steps": "1.进入页面;\n2.在结束日期输入2023-12-31;\n3.其他条件保持默认;\n4.点击查询","expect_results": "查询到结束日期小于等于2023-12-31的数据","priority": "P3"}
]
2.2 提示词逻辑设计
我们设计如下提示词模板:
prompt = (f'系统名称为: {project};主功能模块名称为: {primary_module};子功能模块为:{sub_module};'f'用例创建人为: {case_creator};'f'查询结果比对方式为: {check_result_method};'f'查询页面是否需要补充UI测试用例: {ui_case_needed};自主标定用例的优先级;')prompt += f'字段名称: {field_name};字段类型: {field_type};'if enums:prompt += f'枚举值:{enums};'
elif symbol_date:prompt += f'日期符号为:{symbol_date};'
elif date_:prompt += f'日期为:{date_};'
elif symbol_time:prompt += f'时间比较符号为:{symbol_time};'
elif time_:prompt += f'时间选定的值为:{time_};\n'
2.3 自动生成的测试用例示例
根据提示词生成的测试用例示例如下:
[{'title': '根据姓名查询'},{'steps': '1.进入页面;\n2.在查询条件姓名输入;\n3.其他查询条件保持默认;\n4.点击查询'},{'expect_results': '查询到姓名的数据'},
]
通过这种方式,测试工程师只需输入字段信息,即可轻松生成高质量的测试用例,大幅提升工作效率。
三、实战演练:基于大模型升级查询功能
结合上述逻辑,我们对用户输入进行处理,并生成测试用例。以下是具体代码示例:
3.1 数据输入
用户输入字段信息:
project = "客户管理系统"
primary_module = "查询功能"
sub_module = "客户信息查询"
case_creator = "测试工程师A"
check_result_method = "数据匹配"
ui_case_needed = "是"field_name = "姓名"
field_type = "字符串"
enums = None
symbol_date = None
date_ = None
symbol_time = None
time_ = None
3.2 提示词构建
根据输入信息构建提示词:
prompt = (f'系统名称为: {project};主功能模块名称为: {primary_module};子功能模块为:{sub_module};'f'用例创建人为: {case_creator};'f'查询结果比对方式为: {check_result_method};'f'查询页面是否需要补充UI测试用例: {ui_case_needed};自主标定用例的优先级;')prompt += f'字段名称: {field_name};字段类型: {field_type};'
3.3 调用大模型生成测试用例
通过大模型接口生成测试用例:
async def generate_cases(prompt_param):# 初始化OpenAI客户端client = OpenAI(# 如果没有配置环境变量,请用百炼API Key替换:api_key="sk-xxx"# api_key='sk-xxx',api_key='sk-xxx', # todo 此处需更换base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")reasoning_content = "" # 定义完整思考过程answer_content = "" # 定义完整回复is_answering = False # 判断是否结束思考过程并开始回复example = [{'title': '根据姓名查询'},{'steps': '1.进入页面;\n2.在查询条件姓名输入;\n3.其他查询条件保持默认;\n4.点击查询'},{'expect_results': '查询到姓名的数据'},]# 创建聊天完成请求completion = client.chat.completions.create(model="deepseek-r1", # 此处以 deepseek-r1 为例,可按需更换模型名称messages=[{'role': 'user','content': f'你是一名资深测工程师,根据这些字段组合{prompt_param}生成查询条件的组合,条件组合不能重复;输出列表形式的JSON,示例:{example}'}],stream=True,# 解除以下注释会在最后一个chunk返回Token使用量# stream_options={# "include_usage": True# })print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")for chunk in completion:# 如果chunk.choices为空,则打印usageif not chunk.choices:print("\nUsage:")print(chunk.usage)else:delta = chunk.choices[0].delta# 打印思考过程if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:print(delta.reasoning_content, end='', flush=True)reasoning_content += delta.reasoning_contentelse:# 开始回复if delta.content != "" and not is_answering:print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")is_answering = True# 打印回复过程print(delta.content, end='', flush=True)answer_content += delta.contentreturn answer_content
四、Django 异步调用阿里云 DeepSeek-R1 API
为了在查询功能升级中提升性能,我们可以采用 Django 异步调用阿里云 DeepSeek-R1 API。以下是具体实现步骤:
4.1 安装依赖
pip install aiohttp
4.2 异步请求实现
通过 aiohttp
实现异步调用:
import aiohttp
import asyncioasync def generate_cases(prompt_param):# 初始化OpenAI客户端client = OpenAI(# 如果没有配置环境变量,请用百炼API Key替换:api_key="sk-xxx"# api_key='sk-xxx',api_key='sk-xxx', # todo 此处需更换base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")reasoning_content = "" # 定义完整思考过程answer_content = "" # 定义完整回复is_answering = False # 判断是否结束思考过程并开始回复example = [{'title': '根据姓名查询'},{'steps': '1.进入页面;\n2.在查询条件姓名输入;\n3.其他查询条件保持默认;\n4.点击查询'},{'expect_results': '查询到姓名的数据'},]# 创建聊天完成请求completion = client.chat.completions.create(model="deepseek-r1", # 此处以 deepseek-r1 为例,可按需更换模型名称messages=[{'role': 'user','content': f'你是一名资深测工程师,根据这些字段组合{prompt_param}生成查询条件的组合,条件组合不能重复;输出列表形式的JSON,示例:{example}'}],stream=True,# 解除以下注释会在最后一个chunk返回Token使用量# stream_options={# "include_usage": True# })print("\n" + "=" * 20 + "思考过程" + "=" * 20 + "\n")for chunk in completion:# 如果chunk.choices为空,则打印usageif not chunk.choices:print("\nUsage:")print(chunk.usage)else:delta = chunk.choices[0].delta# 打印思考过程if hasattr(delta, 'reasoning_content') and delta.reasoning_content != None:print(delta.reasoning_content, end='', flush=True)reasoning_content += delta.reasoning_contentelse:# 开始回复if delta.content != "" and not is_answering:print("\n" + "=" * 20 + "完整回复" + "=" * 20 + "\n")is_answering = True# 打印回复过程print(delta.content, end='', flush=True)answer_content += delta.contentreturn answer_content# 示例调用
async def search_page_generate_case_by_ai(request):print('开始进行异步大模型用例生成')if request.method == 'POST':case = Cases.objects.all()case_common_title = []case_common_steps = []case_common_expect_result = []total_len = len(request.POST)case_system = request.POST.get('auth')case_module = ''primary_module = request.POST.get("module1")sub_module = []for _ in range(2, 4):if request.POST.get(f"module{_}"):sub_module.append(request.POST.get(f"module{_}"))sub_module = ">>".join(sub_module)case_precondition = f'已登录{case_module}系统'page_name = request.POST.get('page_name')check_result_method = request.POST.get("check_result_method")case_creator = request.POST.get('creator')ui_case_needed = request.POST.get('ui_case')field_count = (total_len - 10) // 7project = Project.objects.get(project_name=case_system)project_id = project.idif field_count > 1:field_name_list = []prompt = (f'系统名称为: {project};主功能模块名称为: {primary_module};子功能模块为:{sub_module};'f'用例创建人为: {case_creator};'f'查询结果比对方式为: {check_result_method};'f'查询页面是否需要补充UI测试用例: {ui_case_needed};自主标定用例的优先级;')for i in range(field_count):field_name = request.POST.get(f'field_name{i}')field_type = request.POST.get(f'field_type{i}')enums = request.POST.get(f'enums{i}')symbol_date = request.POST.get(f'symbol_date{i}')date_ = request.POST.get(f'date{i}')symbol_time = request.POST.get(f'symbol_time{i}')time_ = request.POST.get(f'time{i}')time_ = str(time_).replace('T', ' ')field_name_list.append(field_name)# todo 修改此处适配AI大模型用例生成prompt += f'字段名称: {field_name};字段类型: {field_type};'if enums:prompt += f'枚举值:{enums};'elif symbol_date:prompt += f'日期符号为:{symbol_date};'elif date_:prompt += f'日期为:{date_};'elif symbol_time:prompt += f'时间比较符号为:{symbol_time};'elif time_:prompt += f'时间选定的值为:{time_};\n'deepseek_result = await generate_cases(prompt)return HttpResponse(deepseek_result)asyncio.run(main())
4.3 在 Django 中集成
将异步调用集成到 Django 视图中:
@require_POST
async def search_page_generate_case_by_ai(request):print('开始进行异步大模型用例生成')if request.method == 'POST':case = Cases.objects.all()case_common_title = []case_common_steps = []case_common_expect_result = []total_len = len(request.POST)case_system = request.POST.get('auth')case_module = ''primary_module = request.POST.get("module1")sub_module = []for _ in range(2, 4):if request.POST.get(f"module{_}"):sub_module.append(request.POST.get(f"module{_}"))sub_module = ">>".join(sub_module)case_precondition = f'已登录{case_module}系统'page_name = request.POST.get('page_name')check_result_method = request.POST.get("check_result_method")case_creator = request.POST.get('creator')ui_case_needed = request.POST.get('ui_case')field_count = (total_len - 10) // 7project = Project.objects.get(project_name=case_system)project_id = project.idif field_count > 1:field_name_list = []prompt = (f'系统名称为: {project};主功能模块名称为: {primary_module};子功能模块为:{sub_module};'f'用例创建人为: {case_creator};'f'查询结果比对方式为: {check_result_method};'f'查询页面是否需要补充UI测试用例: {ui_case_needed};自主标定用例的优先级;')for i in range(field_count):field_name = request.POST.get(f'field_name{i}')field_type = request.POST.get(f'field_type{i}')enums = request.POST.get(f'enums{i}')symbol_date = request.POST.get(f'symbol_date{i}')date_ = request.POST.get(f'date{i}')symbol_time = request.POST.get(f'symbol_time{i}')time_ = request.POST.get(f'time{i}')time_ = str(time_).replace('T', ' ')field_name_list.append(field_name)# todo 修改此处适配AI大模型用例生成prompt += f'字段名称: {field_name};字段类型: {field_type};'if enums:prompt += f'枚举值:{enums};'elif symbol_date:prompt += f'日期符号为:{symbol_date};'elif date_:prompt += f'日期为:{date_};'elif symbol_time:prompt += f'时间比较符号为:{symbol_time};'elif time_:prompt += f'时间选定的值为:{time_};\n'deepseek_result = await generate_cases(prompt)return HttpResponse(deepseek_result)else:return HttpResponse("没有内容!!!")
通过这种方式,Django 可以在处理查询请求时避免主线程阻塞,从而提升系统的并发性能。
五、大模型与平台升级的未来展望
通过大模型的引入,老旧平台的查询功能可以焕发新活力。测试工程师不仅能更高效地生成测试用例,还可以通过异步调用大模型接口,提升系统响应速度,为用户提供更好的体验。未来,随着大模型和容器化技术的普及,本地部署和性能优化将成为测试领域的重要方向。
快将这些技术应用到你的项目中,让测试工作更智能、更高效吧!
相关文章:
测试用例生成平台通过大模型升级查询功能,生成智能测试用例
在测试工作中,查询功能是各类系统的核心模块,传统的测试用例编写往往耗时且重复。如何让老旧平台焕发新活力?本文将结合大模型技术,通过用户输入的字段信息,自动化生成高效、精准的测试用例。同时,我们还将…...
kafka零拷贝技术的底层实现
什么是 Sendfile? sendfile 是一种操作系统提供的系统调用(system call),用于在两个文件描述符(file descriptor)之间高效传输数据。它最初由 Linux 内核引入(从 2.1 版本开始)&…...
Win11+VS2022+CGAL5.6配置
1. CGAL库简介 CGAL(Computational Geometry Algorithms Library)是一个开源的计算几何算法库,主要用于处理几何问题和相关算法的实现。它提供了丰富的几何数据结构和高效算法,覆盖点、线、多边形、曲面等基本几何对象的表示与操…...
Linux编译器gcc/g++使用完全指南:从编译原理到动静态链接
一、gcc/g基础认知 在Linux开发环境中,gcc和g是我们最常用的编译器工具: gcc:GNU C Compiler,专门用于编译C语言程序g:GNU C Compiler,用于编译C程序(也可编译C语言) 📌…...
Vue3项目中的.vscode文件夹
.vscode 文件夹主要用于存放与 Visual Studio Code(VS Code)编辑器相关的项目配置文件,这些文件能让项目在 VS Code 里的开发体验更加个性化和高效。 extensions.json 在 .vscode 文件夹中,extensions.json 文件的作用是列出项目…...
蓝桥杯嵌入式十六届模拟三
由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…...
造成服务器网络连接不稳定的原因是什么?
服务器的稳定性会影响到网络的响应速度和用户的体验感,当服务器网络连接不稳定时,会到时用户在浏览网站的过程中出现页面卡顿或页面消失等情况,给企业造成一定的经济损失,本文就来介绍一下造成服务器网络连接不稳定的因素都有哪些…...
[FPGA基础学习]加法器、三八译码器及DE2-115基本使用方法和数码管显示
软件安装:QuartusLite安装说明及驱动更新 DE2-115上电及程序烧录 1.用包装盒里的USB 电缆将PC的USB端口和DE2-115开发板的USB Blaster连接器连接 起来,为了实现主机和开发板之间的通讯,必须安装USB Blaster 驱动软件 鼠标右击“USB-Blaster…...
VSCode 市场发现恶意扩展正在传播勒索软件!
在VSCode 市场中发现了两个隐藏着勒索软件的恶意扩展。其中一个于去年 10 月出现在微软商店,但很长时间没有引起注意。 这些是扩展ahban.shiba 和 ahban.cychelloworld,目前已从商店中删除。 此外,ahban.cychelloworld 扩展于 2024 年 10 月…...
树状数组 3 :区间修改,区间查询
【题目描述】 这是一道模板题。 给定数列 a[1],a[2],…,a[n],你需要依次进行q个操作,操作有两类: 1lrx:给定 l,r,x对于所有 i∈[l,r],将a[i]加上x(换言之,将 a[l],a[l1],…a[r] 分别加上 x&a…...
C++的IO流
1. C语言的输入与输出 C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。 注意宽度输出和精度输出控制。C语言借助了相应的缓…...
QLoRA和LoRA 微调
QLoRA 其实是一种结合了量化和 LoRA 微调技术的统一方法,而不是同时使用两种不同的微调方式。换句话说,QLoRA 的意思就是:先把大模型的主权重用低精度(例如 4-bit)量化,从而大幅减少存储需求;然…...
Android电话监听器的设计与实现:深入解析Service与TelephonyManager
目录 一、引言 二、Service核心机制解析 1. Service的本质特性 2. 生命周期管理 3. 服务类型全景 三、Service实战开发 1. 启动式Service开发(lesson1) 2. 绑定式Service开发 四、电话监听器完整实现(lesson3) 1. 系统架…...
java学习笔记7——面向对象
关键字:static 类变量 静态变量的内存解析: 相关代码: public class ChineseTest {public static void main(String[] args) {System.out.println(Chinese.nation); //null 没赋值前System.out.println(Chinese.nation); //中国 静态变量赋值…...
java学习——函数式编程(1)
函数式编程 Java 的函数式编程是一种以函数为核心构建逻辑的编程范式,强调不可变性、声明式代码和无副作用的操作。它通过Lambda表达式、函数式接口(如Function、Predicate、Consumer等)和Stream API等特性实现,将计算过程抽象为函数的组合与转换,而非传统的命令式步骤。…...
java 批量下载doc\excle\pdf
指定图片集合 下载到指定文件夹 import java.io.*; import java.net.HttpURLConnection; import java.net.URL; import java.util.Arrays; import java.util.List;public class OfficeFileDownloader {/*** 需要下载的Office文档URL列表*/private static final List<Strin…...
Python爬虫:Feapder 的详细使用和案例
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Feapder 概述1.1 Feapder介绍1.2 Feapder 核心特点1.3 Feapder 主要组件1.4 Feapder的安装2. 基础爬虫编写2.1 创建爬虫2.2 运行爬虫3. 数据采集案例3.1 新闻网站采集3.2 电商商品采集3.3 使用 Spider 类创建更强大爬…...
【江协科技STM32】读写备份寄存器RTC实时时钟(学习笔记)
参考相关文章理解: 【江协科技STM32】Unix时间戳(学习笔记)-CSDN博客 【江协科技STM32】BKP备寄存器&RTC实时时钟(学习笔记)_stm32断电保存时钟-CSDN博客 读写备份寄存器 接线图:VBAT是从STLINK的…...
Linux touch命令
参考资料 Linux 常用命令 - touch 【创建空文件与修改时间戳】 目录 一. 用法简介二. 配合扩展字符,批量创建文件三. 修改文件的时间戳3.1 -t 配置项3.2 -d 配置项3.3 配合find命令实现批量时间戳修改 四. 结合 find 批量创建相同时间的新文件 一. 用法简介 ⏹当指…...
PyTorch图像预处理--Compose
torchvision.transforms.Compose 是 PyTorch 中用于图像预处理的核心工具,可将多个图像变换操作组合成一个顺序执行的流水线。 1. 定义与作用 功能:将多个图像处理步骤(如缩放、裁剪、归一化等)串联为一个整体ÿ…...
CSP历年题解
CSP历年题解 csp历年题解,csp.cpp内容涵盖从2023年12月开始一直持续到第一次认证的所有前4题。所有的题解均为满分,在其中,有四道题非本人编写,而从网上搜集优质解答,并且已在文中附上了来源链接。其余则为自己编写&a…...
《索引江湖:B树索引与哈希索引的风云对决》
在数据库的神秘世界里,索引宛如一把把神奇的钥匙,帮助我们在海量数据中快速找到所需信息。而B树索引与哈希索引,则是其中两把最为耀眼的利刃,各自凭借独特的“武功秘籍”,在不同的应用场景中大放异彩。今天,…...
java八股文之JVM
1.什么是程序计数器 程序计数器是 JVM 管理线程执行的“定位器”,记录每个线程当前执行的指令位置,确保程序流程的连续性和线程切换的准确性。线程私有的,每个线程一份,内部保存的字节码的行号。用于记录正在执行的字节码指令的地…...
学习爬虫的第二天——分页爬取并存入表中
阅读提示:我现在还在尝试爬静态页面 一、分页爬取模式 以豆瓣Top250为例: 基础url:豆瓣电影 Top 250https://movie.douban.com/top250 分页参数:?start0(第一页)、?start25(第二页)等 每页显示25条数…...
Ubuntu与Windows之间相互复制粘贴的方法
一、打开Ubuntu终端 二、卸载已有的工具 sudo apt-get autoremove open-vm-tools 三、安装工具 sudo apt-get install open-vm-tools-desktop 四、重启 直接输入reboot 注:有任何问题欢迎评论区交流讨论或者私信!...
docker安装hyperf环境,连接本机redis问题处理
错误信息显示“Connection refused”,这通常说明 Docker 容器内的 Hyperf 项目无法连接到你本机的 Redis 服务。 1. 容器内的 127.0.0.1 指向问题 在 Docker 容器中,127.0.0.1 指的是容器本身,而不是宿主机(你的 Mac)…...
第12章:优化并发_《C++性能优化指南》notes
优化并发 一、并发基础与优化核心知识点二、关键代码示例与测试三、关键优化策略总结四、性能测试方法论多选题设计题答案与详解多选题答案: 设计题答案示例 一、并发基础与优化核心知识点 线程 vs 异步任务 核心区别:std::thread直接管理线程…...
Linux操作系统7- 线程同步与互斥7(RingQueue环形队列生产者消费者模型改进)
上篇文章:Linux操作系统7- 线程同步与互斥6(POSIX信号量与环形队列生产者消费者模型)-CSDN博客 本篇代码仓库:myLerningCode/l36 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 目录 一. 单生产单消费单保…...
学有所记——初探向量数据库Weaviate
目标: 了解向量数据库的连接、建库、插入数据、查询数据等基本用法以及关于语义相似度的一些基本概念。 背景: 前段时间尝试在自己的电脑上搭建OllamaDify平台,体验并探索大模型的强大功能。在使用过程中,尤其是在搭建RAG知识库…...
Ardupilot开源无人机之Geek SDK进展2025Q2
Ardupilot开源无人机之Geek SDK进展2025Q2 1. 源由2. 内容汇总2.1 【jetson-fpv】“Caution - Hot surface. Dont touch.”2.2 【jetson-fpv】1080P/720P显示设备配置 3. 遗留问题3.1 高优先级3.1.1 【jetson-fpv】1080P60FPS AI分析视频卡顿,丢包3.1.2 【jetson-fp…...
深入理解K8s与Docker的关系:容器化技术的双雄
友情提示:本文内容由银河易创(https://ai.eaigx.com)AI创作平台gpt-4-turbo模型生成,仅供参考。 在现代云计算及微服务架构的发展中,Docker与Kubernetes(K8s)作为两大核心技术,被广泛…...
QT高效文件I/O编程--实用指南与最佳实践
概述 在软件开发过程中,文件输入输出(I/O)操作是数据持久化和交换的核心部分。无论是简单的日志记录还是复杂的数据集处理,高效的文件I/O操作对于应用的整体性能至关重要 最佳实践 一、选择合适的文件模式 正确选择文件打开模式是确保操作意图明确且安全的第一步。不同…...
QT记事本
记事本应用程序提供了基本的文本编辑功能,支持文件的新建、打开、保存和另存为操作,同时具备修改提示和关闭窗口时的保存确认功能。使用 UTF - 8 编码确保了对多语言文本的支持。 1. 项目整体结构 main.cpp:程序的入口点,负责初…...
【leetcode hot 100 84】柱状图中最大的矩形
解法一:单调栈 class Solution {public int largestRectangleArea(int[] heights) {int len heights.length;int area 0;// 先做一些特殊判断if(len0){return 0;}if(len1){return heights[0];}// 进入栈后发现后面更短,可以得到当前这个能勾勒的面积 …...
Spring----ioc
1.Spring 是什么? 通过前⾯的学习, 我们知道了Spring是⼀个开源框架, 他让我们的开发更加简单. 他⽀持⼴泛的应⽤场景, 有着活跃⽽庞⼤的社区, 这也是Spring能够⻓久不衰的原因. 但是这个概念相对来说, 还是⽐较抽象. 我们⽤⼀句更具体的话来概括Spring, 那就…...
C++——重载
目录 一、函数重载 基本概念 函数重载的条件 编程示例 代码讲解 函数重载的注意事项 二、运算符重载 什么是运算符重载? 运算符重载的实质是什么? 运算符重载函数的写法 运算符重载的基本语法 可重载的运算符列表 基本原则 编程示例 代码解…...
答疑解惑:EMC VMAX3 MMCS控制台不定期重启原因分析
今天有个朋友咨询他们有一台EMC的VMAX100k设备,其中MMCS2的管理控制台定期重启,但始终无法找到重启原因,稍微花了点时间,帮客户看了下。先说结论,MMCS2确实不定期发生重启,每次reboot都是一样的message信息…...
单例模式(Singleton Pattern)
单例模式(Singleton Pattern) 任务管理器可以作为一个全局的任务配置管理类,使用单例模式保证全局只有一个实例。这样你可以避免在应用程序中创建多个任务管理对象,保持配置参数的统一。 示例: class TaskManager { …...
树莓派超全系列文档--(8)RaspberryOS实用程序
RaspberryOS实用程序 实用程序kmsprintvclogvcgencmdvcosversionget_throttledmeasure_tempmeasure_clock [clock]measure_volts [block]otp_dumpget_config [configuration item|int|str]get_mem typecodec_enabled [type]mem_oommem_reloc_statsread_ring_osc 文章来源&#…...
Rust 与 FFmpeg 实现视频水印添加:技术解析与应用实践
引言 在短视频、直播、影视制作等领域,视频水印是一种常见的工具,用于保护版权、提升品牌辨识度或满足合规性要求。然而,开发者在实现水印添加时往往面临以下挑战: 手动处理效率低:使用图像编辑软件(如 P…...
绿联NAS安装内网穿透实现无公网IP也能用手机平板远程访问经验分享
文章目录 前言1. 开启ssh服务2. ssh连接3. 安装cpolar内网穿透4. 配置绿联NAS公网地址 前言 大家好,今天给大家带来一个超级炫酷的技能——如何在绿联NAS上快速安装cpolar内网穿透工具。想象一下,即使没有公网IP,你也能随时随地远程访问自己…...
如何在 React 项目中使用React.lazy和Suspense实现组件的懒加载?
大白话如何在 React 项目中使用React.lazy和Suspense实现组件的懒加载? 在 React 项目里,有时候组件功能多、体积大,要是一次性把所有组件都加载进来,网页加载速度就会变慢。而 React 提供了 React.lazy 和 Suspense 这两个好东西…...
虫洞数观系列一 | 豆瓣电影TOP250数据采集与MySQL存储实战
目录 系列文章 1. 引言 2 技术栈Request 2.1请求头headers 2.2查找定位信息 2.3处理网页html结构化数据 2.4每页url规律 2.5逐条查找所需信息 2.6完整代码 3 数据存储至mysql 3.1新建数据库 3.2编写数据库写入py文件 3.2.1构建1个执行sql语句的函数 3.2.2构造一个…...
模型 阿米巴模式
系列文章分享模型,了解更多👉 模型_思维模型目录。小团队独立经营,企业活力无限。 1 阿米巴模式的应用 1.1 日航重生(航空业成功案例) 应用领域 航空运输业破产重组与组织激活 案例名称 日本航空(JAL&…...
针对stm32F103C8t6芯片调节USB串口的经验
1、首先这是自己手搓的板子,对于之前一直没有了解过USB这方面,则这个针对USB部分没有设计上拉电阻,造成不管怎么调节PC端都没有反应。 图一 这个没有添加1.5K电阻 这个D+位置应该再接一个1.5KR的电阻如图2所示 图2 这样调节的话PC端就可以识别到USB串口,但是这是串口还是会…...
JVM详解(包括JVM内存模型与GC垃圾回收)
📖前言: 学会使用Java对于一个程序员是远远不够的。Java语法的掌握只是一部分,另一部分就是需要掌握Java内部的工作原理,从编译到运行,到底是谁在帮我们完成工作的? 接下来着重对Java虚拟机,也就…...
解锁DeepSeek潜能:Docker+Ollama打造本地大模型部署新范式
🐇明明跟你说过:个人主页 🏅个人专栏:《深度探秘:AI界的007》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是Docker 2、什么是Ollama 二、准备工作 1、操…...
【Linux网络】——Socket网络编程
前言 在当今数字化的时代,网络通信已经成为计算机领域不可或缺的一部分。无论是日常的网页浏览、社交媒体交互,还是大规模的企业级数据传输,都离不开高效可靠的网络通信。而在Linux操作系统中,Socket网络编程是实现各种网络应用的…...
基于javaweb的SpringBoot雪具商城系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
Android 简化图片加载与显示——使用Coil和Kotlin封装高效工具类
为了简化使用Coil加载网络图片和GIF的过程,我们可以封装一个工具类。这个工具类将包括初始化ImageLoader的方法、加载图片到ImageView的方法,以及可能的其他便捷方法,如加载圆形图片、设置占位图等。下面是一个示例: 首先&#x…...