当前位置: 首页 > news >正文

Vue接口平台学习十——接口用例页面2

效果图及简单说明

在这里插入图片描述
左边选择用例,右侧就显示该用例的详细信息。
使用el-collapse折叠组件,将请求到的用例详情数据展示到页面中。
所有数据内容,绑定到caseData中

// 页面绑定的用例编辑数据
const caseData = reactive({title: "",interface: {method: "get",url: ""},headers: '',request: {json: '{}',data: '{}',params: '{}'},file: [],setup_script: '',teardown_script: ''
})

页面内容实现

1. 请求API信息

<el-collapse-item name="1"><template #title><img src="@/assets/icons/icon-api-a.png" width="20"><b>API信息</b></template><el-input v-model="caseData.interface.url" readonly><template #prepend><el-select v-model="caseData.interface.method" placeholder="选择请求方法" style="width: 115px"><el-option label="GET" value="get"/><el-option label="POST" value="post"/><el-option label="PUT" value="put"/><el-option label="PATCH" value="patch"/><el-option label="DELETE" value="delete"/></el-select></template></el-input></el-collapse-item>

一个下拉选择(请求方法) + 一个只读的input框
在这里插入图片描述

2.用例title

<el-collapse-item name="2"><template #title><img src="@/assets/icons/case.png" width="20"><b>用例名称</b></template><el-input v-model="caseData.title"><template #prepend><span>用例名称</span></template></el-input></el-collapse-item>

一个带前缀的input输入框
在这里插入图片描述

3. 前置脚本

前置脚本是一个python代码编辑器

<div class="code"><Editor v-model="caseData.setup_script" lang="python" height='300px' class="scriptEdit"></Editor>
</div>

但是,可以准备一些预制脚本,方便使用。
可以创建编辑一些脚本保存在数据库,然后读取。这里没有选择那么复杂的内容,直接写死在了前端页面点击添加。

<div class='script_code'><div class="code"><Editor v-model="caseData.setup_script" lang="python" height='300px' class="scriptEdit"></Editor></div><div class='mod'><div class="add_code"><el-button @click='addSetupScript("func")' plain size="small">调用全局工具函数</el-button></div><div class="add_code"><el-button @click='addSetupScript("global")' plain size="small">设置全局变量</el-button></div><div class="add_code"><el-button @click='addSetupScript("env")' plain size="small">设置局部变量</el-button></div><div class="add_code"><el-button @click='addSetupScript("sql")' plain size="small">执行sql查询</el-button></div></div>
</div>
// 生成前置脚本
function addSetupScript(item) {if (item === "func") {caseData.setup_script += '# 调用全局工具函数random_mobile随机生成一个手机号码\nmobile = global_func.random_mobile()\n'} else if (item === "global") {caseData.setup_script += '# 设置局部变量\ntest.save_global_variable("变量名","变量值")\n'} else if (item === "env") {caseData.setup_script += '# 设置局部变量\ntest.save_env_variable("变量名","变量值")\n'} else if (item === "sql") {caseData.setup_script +='# ----执行sql语句(需要在环境中配置数据库连接信息)----\n # db.连接名.execute_all(sql语句) \nsql = "SELECT count(*) as count FROM futureloan.member"\nres = db.hwyun.execute_all(sql)\n'}
}

在这里插入图片描述

4. 请求头

同样代码编辑器

<el-collapse-item name="4"><template #title><img src="@/assets/icons/keyhole.png" width="20"><b>请求头</b></template><Editor lang="json" v-model="caseData.headers"></Editor>
</el-collapse-item>

在这里插入图片描述

5.查询参数

<el-collapse-item name="5"><template #title><img src="@/assets/icons/API_api.png" width="20"><b>查询参数</b></template><Editor lang="json" v-model="caseData.request.params"></Editor></el-collapse-item>

在这里插入图片描述

6. 请求体(Get请求不可点击)

get请求禁用了,然后如果是文件类型数据,复用之前的FormData组件

<el-collapse-item name="6" :disabled="caseData.interface.method=='get'"><template #title><img src="@/assets/icons/body.png" width="20"><b>请求体</b></template><el-radio-group v-model="bodyType"><el-radio-button label="json">Json</el-radio-button><el-radio-button label="data">X-www-form-urlencoded</el-radio-button><el-radio-button label="form-data">Form-data</el-radio-button></el-radio-group><!-- json参数 --><div v-if='bodyType==="json"'><Editor lang="json" v-model="caseData.request.json"></Editor></div><div v-else-if='bodyType==="data"'><Editor lang="json" v-model="caseData.request.data"></Editor></div><div v-else><FromData v-model="file"></FromData></div>
</el-collapse-item>

在这里插入图片描述

7.后置脚本(同前置脚本)

<el-collapse-item name="7"><template #title><img src="@/assets/icons/instruction.png" width="20"><b>后置断言脚本</b></template><div class='script_code'><div class="code"><Editor v-model="caseData.teardown_script" lang="python" height='300px' ></Editor></div><div class='mod'><el-scrollbar height="300px"><div class="add_code"><el-button @click="addTearDownCodeMod('getBody')" plain size="small">获取响应体</el-button></div><div class="add_code"><el-button @click="addTearDownCodeMod('http')" plain size="small">HTTP状态码断言</el-button></div>    <div class="add_code"><el-button @click="addTearDownCodeMod('contain')" plain size="small">断言包含</el-button><!-- 省略 ....	--></div></el-scrollbar></div></div>
</el-collapse-item>

在这里插入图片描述

8.悬浮操作按钮

与测试环境页面一样,使用 Affix 固钉 组件

https://element-plus.org/zh-CN/component/affix.html#affix-%E5%9B%BA%E9%92%89

<el-affix :offset="40" position="bottom"><div class="btns"><el-button @click='runCase' type="primary" plain size="small" icon='Promotion'>运行</el-button><el-button @click='copyCase' type="primary" plain size="small" icon='DocumentCopy'>复制</el-button><el-button @click='saveCase' type="primary" plain size="small" icon='FolderChecked'>保存</el-button><el-button @click='clickDelete' type="danger" plain size="small" icon='Delete'>删除</el-button></div>
</el-affix>

页面功能实现

1. 点击获取接口用例详情

在之前一节,左侧显示了用例列表。并且点击某个用例,实现了点击方法@click='selectCase(_case.id)',也就是function selectCase(id) { activeCase.value = id }将activeCase 赋值了。
而在右侧,显示用例详情页,把activeCase值传给了CaseEditor这个组件

<div class="card right_box"><CaseEditor :case_id='activeCase'></CaseEditor>
</div>

然后在CaseEditor组件定义props接收传递的值,然后监听这个值变化,就请求获取用例详情。

const props = defineProps({case_id: ""
})// 侦听case_id的变化
watch(() => props.case_id, (val) => {if (val !== '') {getCaseInfo(val)}
})if (props.case_id != undefined) {getCaseInfo(props.case_id)
}// 调用获取详情的接口
async function getCaseInfo(id) {// console.log("获取详情:"+id)const response = await http.pro.getCaseInfoAPi(id)if (response.status === 200) {// 保存用例对象caseObj = response.data// 把用例数据绑定到编辑页面caseData.title = caseObj.titlecaseData.interface = caseObj.interfacecaseData.setup_script = caseObj.setup_scriptcaseData.file = caseObj.filecaseData.teardown_script = caseObj.teardown_scriptcaseData.headers = JSON.stringify(caseObj.headers, 0, 4)caseData.request.json = JSON.stringify(caseObj.request.json || {}, 0, 4)caseData.request.data = JSON.stringify(caseObj.request.data || {}, 0, 4)caseData.request.params = JSON.stringify(caseObj.request.params || {}, 0, 4)file.value = caseObj.file}// get请求默认不展示请求体,其他默认自动展开if (caseData.interface.method == 'get') {activeNames.value = ['1', '2']} else {activeNames.value = ['1', '2', '6']}// console.log(activeNames)// 根据请求体信息,默认选中对应的拦if (caseData.request.json != '{}') {bodyType.value = 'json'} else if (caseData.request.data != '{}') {bodyType.value = 'data'} else if (caseData.file.length != 0) {bodyType.value = 'form-data'}
}

2.保存用例

编辑好数据后,都是双向绑定的,直接组成参数调用api就行了。

// 保存用例
async function saveCase() {if (caseData.headers == '') {caseData.headers = '{}'} else if (caseData.request.params == '') {caseData.request.params = '{}'} else if (caseData.request.json == '') {caseData.request.json = '{}'} else if (caseData.request.data == '') {caseData.request.data = '{}'}// 准备参数const params = {title: caseData.title,headers: JSON.parse(caseData.headers),request: {params: JSON.parse(caseData.request.params),},setup_script: caseData.setup_script,teardown_script: caseData.teardown_script,}if (caseData.interface.method != 'get') {// console.log('!get')if (bodyType.value === 'json') {params.request.json = JSON.parse(caseData.request.json)} else if (bodyType.value === 'data') {params.request.data = JSON.parse(caseData.request.data)} else {params.file = file.value}}// 调用修改用例的接口const response = await api.updateCaseApi(props.case_id, params)if (response.status === 200) {ElNotification({title: '保存成功',type: 'success',})// 刷新页面数据pstore.getInterFaceList()}
}

3. 删除用例

和之前的删除方法没有什么区别,有个二次确认弹窗。然后删除过后,把页面数据清空。

// 删除测试用例的方法
function clickDelete() {ElMessageBox.confirm('删除操作不可恢复,请确认是否要删除该测试用例?','提示', {confirmButtonText: '确认',cancelButtonText: '取消',type: 'warning',}).then(async () => {// 调用后端接口进行删除const response = await http.pro.deleteCaseApi(props.case_id)if (response.status === 204) {ElNotification({title: '删除成功',type: 'success',})// 刷新页面数据pstore.getInterFaceList()resetData()}}).catch(() => {ElNotification({type: 'info',title: '已取消删除操作',})})
}function resetData() {// 清空页面编辑的数据caseData.title = ''caseData.interface = {method: "get",url: ""}caseData.setup_script = ''caseData.file = []caseData.teardown_script = ''caseData.headers = ''caseData.request.json = "{}"caseData.request.data = "{}"caseData.request.params = "{}"caseObj = {}
}

4. 复制用例

与新增测试环境一样,在名字后面+copy,其他内容都保持不变

// 复制用例
async function copyCase() {const response = await http.pro.createCaseApi({title: caseObj.title + '-COPY',interface: caseObj.interface.id})if (response.status === 201) {ElNotification({title: '复制成功',type: 'success',})// 刷新页面数据pstore.getInterFaceList()}
}

5. 运行用例

运行结果用抽屉组件展示,展示内容就是之前调试运行时的Result组件

  <!-- 测试用例运行的结果 --><el-drawer v-model="isShowDrawer" size="50%"><template #header><b>运行结果</b></template><template #default><Result :result='responseData'></Result></template></el-drawer>
// 保存用例运行的结果
let responseData = ref({})
// 是否显示结果的窗口
let isShowDrawer = ref(false)async function runCase() {// 准备参数const params = {env: pstore.env,cases: {title: caseData.title,interface: caseData.interface,headers: JSON.parse(caseData.headers),request: {params: JSON.parse(caseData.request.params),},setup_script: caseData.setup_script,teardown_script: caseData.teardown_script,}}// console.log(params.cases.interface.method)if (params.cases.interface.method != 'get') {if (bodyType.value === 'json') {params.cases.request.json = JSON.parse(caseData.request.json)} else if (bodyType.value === 'data') {params.cases.request.data = JSON.parse(caseData.request.data)} else {params.cases.file = caseData.file}}// console.log(params.cases.request)// 调用运行用例的接口const response = await http.run.runInterFaceCaseApi(params)if (response.status === 200) {// console.log('运行成功')responseData.value = response.data// 展示执行结果isShowDrawer.value = true}
}

在这里插入图片描述
到此页面功能实现完成。

小优化,增加loading

刚才运行时,受网络问题,一直没结果。所以,就增加一个loading效果
同样使用了element的loading组件

https://element-plus.org/zh-CN/component/loading.html#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8A%A0%E8%BD%BD%E4%B8%AD%E7%BB%84%E4%BB%B6%E5%86%85%E5%AE%B9

给页面绑定loading相关数据

<el-collapse v-model="activeNames" v-loading="scrennLoading" element-loading-text="运行中..."  element-loading-background="rgba(122, 122, 122, 0.8)">

然后运行时,显示loading,运行结束再隐藏loading

const scrennLoading = ref(false)async function runCase() {// 显示loadingscrennLoading.value = true。。。// 隐藏loadingscrennLoading.value = false
}

在这里插入图片描述

总结

复用之前的组件以减少开发量。所以一个经常会用到的组件,最好单独抽出来。以便后续使用。
然后用了cursor,没次数了。又尝试了一下Trae,也是挺不错的。遇到问题向Ai求助真是泰裤辣!
在这里插入图片描述

相关文章:

Vue接口平台学习十——接口用例页面2

效果图及简单说明 左边选择用例&#xff0c;右侧就显示该用例的详细信息。 使用el-collapse折叠组件&#xff0c;将请求到的用例详情数据展示到页面中。 所有数据内容&#xff0c;绑定到caseData中 // 页面绑定的用例编辑数据 const caseData reactive({title: "",…...

Visual Studio 2022 运行一个后台程序而不显示控制台窗口

在 Visual Studio 2022 中&#xff0c;希望运行一个后台程序而不显示控制台窗口&#xff08;黑色命令框&#xff09;&#xff0c;可以通过以下方法实现&#xff1a; 修改项目输出类型为 Windows 应用程序 右键项目 → 选择 属性 (Properties)在 配置属性 → 链接器 → 系统 (…...

剑指Offer(数据结构与算法面试题精讲)C++版——day17

剑指Offer&#xff08;数据结构与算法面试题精讲&#xff09;C版——day17 题目一&#xff1a;节点值之和最大的路径题目二&#xff1a;展平二叉搜索树题目三&#xff1a;二叉搜索树的下一个节点附录&#xff1a;源码gitee仓库 题目一&#xff1a;节点值之和最大的路径 题目&am…...

opencv函数展示4

一、形态学操作函数 1.基本形态学操作 &#xff08;1&#xff09;cv2.getStructuringElement() &#xff08;2&#xff09;cv2.erode() &#xff08;3&#xff09;cv2.dilate() 2.高级形态学操作 &#xff08;1&#xff09;cv2.morphologyEx() 二、直方图处理函数 1.直方图…...

10天学会嵌入式技术之51单片机-day-3

第九章 独立按键 按键的作用相当于一个开关&#xff0c;按下时接通&#xff08;或断开&#xff09;&#xff0c;松开后断开&#xff08;或接通&#xff09;。实物图、原理图、封装 9.2 需求描述 通过 SW1、SW2、SW3、SW4 四个独立按键分别控制 LED1、LED2、LED3、LED4 的亮…...

DeepSeek智能时空数据分析(二):3秒对话式搞定“等时圈”绘制

序言&#xff1a;时空数据分析很有用&#xff0c;但是GIS/时空数据库技术门槛太高 时空数据分析在优化业务运营中至关重要&#xff0c;然而&#xff0c;三大挑战仍制约其发展&#xff1a;技术门槛高&#xff0c;需融合GIS理论、SQL开发与时空数据库等多领域知识&#xff1b;空…...

第 7 篇:总结与展望 - 时间序列学习的下一步

第 7 篇&#xff1a;总结与展望 - 时间序列学习的下一步 (图片来源: Guillaume Hankenne on Pexels) 恭喜你&#xff01;如果你一路跟随这个系列走到了这里&#xff0c;那么你已经成功地完成了时间序列分析的入门之旅。我们从零开始&#xff0c;一起探索了时间数据的基本概念、…...

计算机视觉中的正则化:从理论到实践的全面解析

&#x1f31f; 计算机视觉中的正则化&#xff1a;从理论到实践的全面解析&#x1f31f; 大家好&#xff01;今天要和大家分享的是在计算机视觉&#xff08;CV&#xff09;领域中非常重要的一个概念——正则化&#xff08;Regularization&#xff09;。无论你是刚开始接触深度学…...

解决使用hc595驱动LED数码管亮度低的问题

不知道大家在做项目的时候有没有遇到使用hc595驱动LED数码管亮度低的问题&#xff08;数码管位数较多&#xff09;&#xff0c;如果大佬们有好的方法的可以评论区留言 当时我们解决是换成了天微的驱动芯片&#xff0c;现在还在寻找新的解决办法&#xff08;主要软件不花钱&…...

Allegro23.1新功能之4K显示器页面显示不全如何解决操作指导

Allegro23.1新功能之4K显示器页面显示不全如何解决操作指导 Allegro升级到了23.1的时候&#xff0c;可能会出现界面显示不全的情况&#xff0c;如下图 是因为4K高清显示器的原因导致的 如何解决&#xff0c;具体操作如下 我的电脑&#xff0c;右键选择属性 点击高级系统设置 …...

C++——STL——容器deque(简单介绍),适配器——stack,queue,priority_queue

目录 1.deque&#xff08;简单介绍&#xff09; 1.1 deque介绍&#xff1a; 1.2 deque迭代器底层 1.2.1 那么比如说用迭代器实现元素的遍历&#xff0c;是如何实现的呢&#xff1f; 1.2.2 头插 1.2.3 尾插 1.2.4 实现 ​编辑 1.2.5 总结 2.stack 2.1 函数介绍 2.2 模…...

网络原理——UDP

1、 与TCP的关键区别 特性UDPTCP连接方式无连接面向连接可靠性不可靠可靠数据顺序不保证顺序保证顺序传输速度更快相对较慢头部开销8字节20-60字节流量控制无有拥塞控制无有适用场景实时应用、广播/多播可靠性要求高的应用 2、UDP 报文结构 报文结构大致可以分为首部和载荷&a…...

下载pycharm遇到的问题及解决方法

下载和安装 PyCharm 时可能会遇到一些具体问题&#xff0c;以下是一些常见问题及其解决方法&#xff1a; 常见问题及解决方法 下载速度慢或下载中断 解决方法&#xff1a; 检查你的互联网连接&#xff0c;并重启路由器。尝试使用不同的网络连接&#xff08;如使用移动热点&…...

微硕WSP4407A MOS管在智能晾衣架中的应用与市场分析

微硕WSP4407A MOS管在智能晾衣架中的应用与市场分析 一、引言 智能晾衣架作为一种现代化的家居设备&#xff0c;其核心部件之一是驱动电路&#xff0c;而MOS管作为驱动电路中的关键元件&#xff0c;其性能直接影响到智能晾衣架的运行效率和稳定性。微硕半导体推出的WSP4407A …...

Java 性能优化:如何利用 APM 工具提升系统性能?

Java 性能优化&#xff1a;如何利用 APM 工具提升系统性能&#xff1f; 在当今竞争激烈的软件开发领域&#xff0c;系统性能至关重要。随着应用规模的扩大和用户需求的增加&#xff0c;性能问题逐渐凸显&#xff0c;这不仅影响用户体验&#xff0c;还可能导致业务损失。而 APM…...

FPGA 中 XSA、BIT 和 DCP 文件的区别

在 FPGA&#xff08;现场可编程门阵列&#xff09;开发中&#xff0c;XSA、BIT 和 DCP 文件是常见的文件类型&#xff0c;它们在功能、用途、文件内容等方面存在明显区别&#xff0c;以下是详细介绍&#xff1a; 1. XSA 文件 定义与功能 XSA&#xff08;Xilinx Shell Archiv…...

【c语言】指针进阶

目录 1.字符指针 2.指针数组 3.数组指针 3.1 数组指针的定义 3.2 数组指针的使用 4.数组参数&#xff0c;指针参数 4.1 一维数组传参 4.2 二维数组传参 4.3 一级指针传参 4.4 二级指针传参 5.函数指针 6.函数指针数组 6.1函数指针数组的定义 6.2 函数指针数组…...

使用FastAPI与OpenAI构建多模态分析API服务

引言 随着多模态AI模型的普及&#xff08;如Qwen-Omni-Turbo&#xff09;&#xff0c;开发者可以轻松构建支持图像、音频、视频分析的API服务。本文将通过一个FastAPI示例&#xff0c;展示如何通过Base64编码传输媒体文件&#xff0c;并结合OpenAI API实现异步分析。这一方案适…...

集成学习实际案例

一、算法竞赛经典&#xff1a;Kaggle & 国际赛事 1. 泰坦尼克号生存预测&#xff08;Random Forest&#xff09; 场景&#xff1a;Kaggle 入门级经典赛题&#xff0c;基于乘客信息预测生存概率。方案&#xff1a; 基模型&#xff1a;决策树&#xff08;CART&#xff09;&…...

Linux421用户、组

参考...

树模型与集成学习(决策树核心算法:ID3/C4.5/CART、随机森林、GBDT/XGBoost)

树模型与集成学习 一、决策树 决策树核心算法&#xff1a;ID3/C4.5/CART ID3算法&#xff08;基于信息增益&#xff09; 核心原理 ID3&#xff08;Iterative Dichotomiser 3&#xff09;是最早的决策树算法之一&#xff0c;由Ross Quinlan于1975年提出。其核心思想是通过信…...

Netdata 监控多台服务器

一、多服务器监控方案选择 1. Netdata Cloud&#xff08;官方推荐&#xff0c;免费&#xff09; 特点&#xff1a;无需自建中心节点&#xff0c;通过 Netdata 官方云平台集中查看所有服务器。步骤&#xff1a; 在每台服务器上安装 Netdata&#xff08;参考上一指南&#xff0…...

CTF web入门之SQL注入使用工具sqlmap

详细说明&#xff1a;https://blog.csdn.net/qq_41701460/article/details/146391515 web201: 查看数据库 获取不到数据库信息 https://9556eca3-d69a-40f4-b2a4-c89c2d2f8f12.challenge.ctf.show/api/?id1题目有提到 使用–user-agent 指定agent&#xff0c;因为对于 sqlm…...

spark–sql项目实验

数据读取与格式转换 读取JSON数据&#xff1a;使用Spark提供的读取接口&#xff08;如 spark.read.json() &#xff0c;在不同编程语言接口下使用方式类似&#xff09;将给定的JSON格式数据读入Spark中&#xff0c;形成 DataFrame 。 格式转换&#xff1a;按照题目要求&…...

gnome中删除application中失效的图标

什么是Application 这一块的东西应该叫application&#xff0c;准确来说应该是applications。 正文 系统级&#xff1a;/usr/share/applications 用户级&#xff1a;~/.local/share/applications ying192 ~/.l/s/applications> ls | grep xampp xampp.desktoprm ~/.local…...

华为设备命令部分精简分类汇总示例

华为网络设备的命令体系庞大且复杂&#xff0c;不同设备系列&#xff08;如交换机、路由器、防火墙&#xff09;和不同操作系统版本&#xff08;如VRP5、VRP8&#xff09;的命令可能存在差异。以下是一个 精简分类汇总&#xff0c;涵盖常用配置场景和命令示例&#xff1a; 一、…...

Java 自动装箱与拆箱:基本数据类型与包装类的转换

在Java编程中&#xff0c;自动装箱&#xff08;Autoboxing&#xff09;和自动拆箱&#xff08;Unboxing&#xff09;是两个重要的概念。它们使得基本数据类型与其对应的包装类之间的转换更加方便&#xff0c;同时也提高了代码的可读性和可维护性。 什么是自动装箱和拆箱&#…...

论文阅读HARIVO: Harnessing Text-to-Image Models for Video Generation

h-space对比损失&#xff08;DC&#xff09;的设计细节 目标&#xff1a;确保视频的所有帧在语义上保持一致&#xff08;例如&#xff0c;同一视频中的不同帧应描述相同的主体和场景&#xff0c;避免物体突变或语义漂移&#xff09;。 1. h-space的定义 h-space 是U-Net最深…...

OpenCV基础函数学习4

【大纲笔记见附件pdf】 目录 一、基于OpenCV的形态学操作 二、基于OpenCV的直方图处理 三、基于OpenCV霍夫变换 四、基于OpenCV模板匹配 一、基于OpenCV的形态学操作 二、基于OpenCV的直方图处理 三、基于OpenCV霍夫变换 四、基于OpenCV模板匹配...

大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署--完结

大数据系列 | 详解基于Zookeeper或ClickHouse Keeper的ClickHouse集群部署 1. ClickHouse与MySQL的区别2. 在群集的所有机器上安装ClickHouse服务端2.1. 在线安装clickhouse2.2. 离线安装clickhouse 3. ClickHouse Keeper/Zookeeper集群安装4. 在配置文件中设置集群配置5. 在每…...

【leetcode题解】算法练习

目录 分治-快排算法 颜色分类 移动零 排序数组 数组中的第K个最大元素 最小K个数 分治-归并排序 排序数组 交易逆序对的总数&#xff08;困难&#xff09; 计算右侧小于当前元素的个数&#xff08;困难&#xff09; 翻转对&#xff08;困难&#xff09; 字符串 最…...

大模型要被特定行业所用,从难到易有四种方式:重新训练或从头构建模型、微调模型、动态提示(如 RAG 技术)、简单提示工程

大模型在特定行业应用的四种方式详解 根据提供的信息&#xff0c;大模型要被特定行业所用&#xff0c;从难到易有四种方式&#xff1a;重新训练或从头构建模型、微调模型、动态提示&#xff08;如 RAG 技术&#xff09;、简单提示工程。以下是每种方式的详细解析及实际案例说明…...

[Python] 入门核心笔记

目录 一、Python简介重点 二、编程语言基础重点 三、Python安装重点 四、第一个Python程序重点 五、Python解释器重点 六、Python开发环境重点 一、Python简介重点 起源&#xff1a;1989年Gudio van Rossum开发&#xff0c;1991年诞生&#xff0c;名字源于电视剧《Monty Python…...

TensorFlow中使用Keras

目录 前言创建模型配置layers训练和评估配置模型训练评估和预测 前言 keras集成在tf.keras中。 创建模型 创建一个简单的模型,使用tf.keras.sequential。 model tf.keras.Sequential() # 创建一层有64个神经元的网络: model.add(layers.Dense(64, activationrelu)) # 添加…...

【Flask】Explore-Flask:早期 Flask 生态的实用指南

开源项目&#xff1a;explore-flask/README.rst at master rpicard/explore-flask (github.com) 一、Coding conventions Summary Try to follow the coding style conventions laid out in PEP 8. Try to document your app with docstrings as defined in PEP 257. def…...

Canvas入门教程!!【前端】

目录 canvas是什么&#xff1f;使用场景&#xff1a;canvas使用&#xff1a;引入&#xff1a;获取2D的上下文&#xff1a;坐标轴&#xff1a; 绘制&#xff1a;beginPath() &#xff1a;moveTo() :lineTo():stroke()&#xff1a;fillRect() &#xff1a;strokeStyle 属性&#…...

通过规范化模型自训练增强医学图像分割中的无监督域自适应|文献速递-深度学习医疗AI最新文献

Title 题目 Enhancing source-free domain adaptation in Medical Image Segmentationvia regulated model self-training 通过规范化模型自训练增强医学图像分割中的无监督域自适应 01 文献速递介绍 深度卷积神经网络对训练数据分布&#xff08;源域&#xff09;和测试数…...

Linux常见指令介绍中(入门级)

1. man 在Linux中&#xff0c;man命令是用于查看命令手册页的工具&#xff0c;它可以帮助用户了解各种命令、函数、系统调用等的详细使用方法和相关信息。 用法&#xff1a;在终端中输入man加上要查询的命令或工具名称&#xff0c;例如man ls&#xff0c;就会显示ls命令的手册…...

一文详解卷积神经网络中的卷积层和池化层原理 !!

文章目录 前言 一、卷积核大小&#xff08;Kernel Size&#xff09; 1. 卷积核大小的作用 2. 常见的卷积核大小 3. 选择卷积核大小的原则 二、步长&#xff08;Stride&#xff09; 1. Stride的作用 三、填充&#xff08;Padding&#xff09; 1. 填充的作用 四、通道数&#xff…...

神经网络直接逆控制:神经网络与控制的结合入门级结合

目录 1. 前言 2. 什么是直接逆控制&#xff1f; 2.1 直接逆控制的优点 2.2 直接逆控制的局限性 3. 直接逆控制的实现步骤 3.1 数据准备 3.2 神经网络设计 3.3 训练神经网络 3.4 控制实现 4. 使用 PyTorch 实现直接逆控制 4.1 问题描述 4.2 数据生成 4.3 神经网络设…...

使用tabs组件搭建UI框架

本节任务 使用tabs组件搭建ui框架 包含页签&#xff1a;首页、动态、发布&#xff0c;会员购、我的。 涉及内容&#xff1a; Tabs、TabContent组件Builder装饰器属性模型封装&#xff0c;包括&#xff1a;接口、枚举、常量 界面原型 1 Tabs布局 在MainPage&#xff08;如果…...

jmeter跟踪重定向和自动重定向有什么区别?

在 JMeter 中&#xff0c;跟踪重定向和自动重定向有以下区别&#xff1a; 概念 跟踪重定向&#xff1a;指的是 JMeter 会按照服务器返回的重定向信息&#xff0c;继续发送请求到重定向的目标地址&#xff0c;并记录下整个重定向的过程&#xff0c;包括重定向的地址、响应信息…...

unity3d实现物体闪烁

unity3d实现物体闪烁&#xff0c;代码如下: using UnityEngine;public class Test : MonoBehaviour {//创建一个常量&#xff0c;用来接收时间的变化值private float shake;//通过控制物体的MeshRenderer组件的开关来实现物体闪烁的效果private MeshRenderer BoxColliderClick…...

(三十)安卓开发中的MVP模式详解

在安卓开发中&#xff0c;MVP&#xff08;Model-View-Presenter&#xff09; 是一种常见的软件架构模式&#xff0c;它通过将应用程序的逻辑与用户界面分离&#xff0c;使得代码更加模块化、易于维护和测试。本文将详细讲解MVP模式的组成部分、工作流程、优点&#xff0c;并结合…...

独立ADC和MCU中ADC模块的区别

以图中两种方案为例&#xff1a; 使用独立ADC和使用MCU的内部ADC来实现模数转换&#xff0c;有什么性能、技术上的区别吗&#xff1f; 集成和独立芯片各有优劣势&#xff1a; 1、集成的节约了板子空间&#xff0c;减少了外围设计。工艺也不一样&#xff0c;集成的工艺相对高一…...

微软Entra新安全功能引发大规模账户锁定事件

误报触发大规模锁定 多家机构的Windows管理员报告称&#xff0c;微软Entra ID新推出的"MACE"&#xff08;泄露凭证检测应用&#xff09;功能在部署过程中产生大量误报&#xff0c;导致用户账户被大规模锁定。这些警报和锁定始于昨夜&#xff0c;部分管理员认为属于误…...

Ray Tracing(光线追踪)与 Ray Casting(光线投射)

Ray Casting&#xff08;光线投射&#xff09; 定义&#xff1a;一种从观察点&#xff08;如摄像机&#xff09;向场景中每个像素投射单条光线&#xff0c;找到最近可见物体的渲染技术。 核心任务&#xff1a;确定像素对应的物体表面颜色&#xff0c;通常仅计算直接光照&#…...

Shell脚本-变量的分类

在Shell脚本编程中&#xff0c;变量是存储数据的基本单位。它们可以用来保存字符串、数字甚至是命令的输出结果。正确地定义和使用变量能够极大地提高脚本的灵活性与可维护性。本文将详细介绍Shell脚本中变量的不同分类及其应用场景&#xff0c;帮助你编写更高效、简洁的Shell脚…...

go for 闭环问题【踩坑记录】

Go 中的for 循环闭包问题&#xff0c;是每个 Go 程序员几乎都踩过的坑&#xff0c;也是面试和实际开发中非常容易出错和引起 bug 的地方。这里我会通过原理、示例、修正方法、背后机制等角度详细为你讲解。 一、问题描述 当你在 for 循环里写匿名函数&#xff08;闭包&#xf…...

【分布式理论17】分布式调度3:分布式架构-从中央式调度到共享状态调度

文章目录 一、中央式调度器1. 核心思想2. 工作流程3. 优缺点4. **典型案例&#xff1a;Google Borg** 二、两级调度器1. **核心思想**2. **工作流程**3. 优缺点4. **典型案例&#xff1a;Hadoop YARN** 三、共享状态调度器1. **核心思想**2. **工作流程**3. 优缺点4. **典型案例…...