如何构建高效的接口自动化测试框架?
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快
在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选择哪种框架,重要的是确保 框架功能完备,易于维护和扩展,提高测试效率和准确性。今天勇哥介绍一个基于Python的接口自动化测试框架,结合了Python的Unittest框架、Requests库以及数据驱动思想,帮助您更好地实现接口测试。
1. 接口自动化测试项目框架简介
搭建接口自动化测试框架的技术栈如下:
语言:Python,简洁高效,上手容易,无压力;人生苦短,我用 python;
测试框架:Unittest,封装自定义断言方法进行验证,如:eq\lt\lte\gt\gte\neq\str_eq等等;
接口调用:Requests库,提供不同的HTTP请求方法,支持session和cookies,支持失败请求重发等;
数据驱动:数据驱动测试(DDT),以用例数据来生成测试用例
数据管理:Openpyxl,用于进行Excel数据的读写,同时支持CSV、JSON、YAML、TXT等数据格式;
依赖管理:封装各类强大的工具库,如正则、jsonpath、字典取值的方式获取请求数据、响应数据;
变量管理:封装全局变量,临时变量,环境变量,动态管理各类变量,动条调用函数,前后置脚本等;
动态脚本:封装PM对象,让动条变量除了可以使用{{args}} 或{{func(*args,**kwargs)}}的方法使用变量外,还要能够类似postman一样灵活编写python动态代码;
数据库交互:PyMySQL,根据不同数据库选择相应的第三方模块来完成交互;
数据格式转换:Eval,JSON,用于将数据在不同格式之间进行转换;
日志处理:Logging,统一日志输出格式,记录渠道、级别和执行结果,便于问题定位;
持续集成:Jenkins,通过配置定时执行测试用例、查看测试通过率,解决重复发版带来的重复工作,并使用插件unittestreport生成HTML报告和发送邮件;
2. 接口测试流程
接口测试步骤可以概括如下:
获取接口文档:首先要与开发团队协作,获取接口文档,了解每个接口的功能和参数要求。
设计接口测试用例:根据接口文档,设计接口测试用例,覆盖正常场景、异常场景以及边界值等情况。
编写接口测试代码:使用Python Unittest框架,结合Requests库发起接口调用,并在测试用例中进行断言验证。
执行接口测试用例:执行编写好的接口测试用例,对接口进行验证。
发现问题与跟踪:如果发现接口问题,及时记录并提交至缺陷管理平台,与开发团队协作解决问题。
性能测试:对接口的并发情况和响应时间进行测试,确保接口性能满足要求。
3. 接口测试用例设计
接口测试用例设计要从以下几个方面入手:
正常场景验证:保证接口按照需求返回正确结果,根据接口文档的参数要求传入合适的数据,验证接口返回结果是否符合预期。
参数组合验证:对于接口有多个参数的情况,验证不同参数组合下接口的行为是否正确,包括必填和可选参数的组合。
异常验证:测试接口对异常情况的处理,例如输入异常值、多输入、少输入参数等,确保接口能正确处理异常情况并返回合理结果。
安全性验证:对于涉及安全的接口,例如登录接口,验证用户名和密码的加密是否安全可靠。
性能测试:测试接口的并发情况和响应时间,确保接口能在高负载下稳定运行。
4. 接口测试执行中的数据库校验
为了确保接口返回的数据与数据库中的数据一致或者业务流程脚本编写,有时候需要使用数据库:
数据库预置数据:在测试前,可以预先在数据库中插入需要的测试数据,然后接口测试用例执行时,校验接口返回的数据与预置的数据是否一致。
接口调用比对:接口测试用例执行时,通过调用数据库查询的方式,获取接口需要的数据,然后与接口返回的数据进行比对,确保一致性。
数据清理:在接口测试用例执行完毕后,进行数据清理,将测试过程中产生的垃圾数据从数据库中删除,以保持数据库的干净和整洁。
流程数据预埋:执行某些接口前,先插入固定数据,流程开始后读取固定数据,实现业务流的运转,最好再删除数据。
5. 接口测试质量评估标准
接口测试的质量评估八股文如下:
业务功能覆盖是否完整:确认接口测试用例是否覆盖了所有的业务功能点。
业务规则覆盖是否完整:检查接口测试用例是否涵盖了所有的业务规则和边界情况。
参数验证是否达到要求:验证接口对不同参数的处理是否符合预期,包括参数边界和业务规则。
接口异常场景覆盖是否完整:测试接口在异常情况下的处理是否正确,确保系统在异常情况下能正确稳定运行。
接口覆盖率是否达到要求:确认接口测试用例是否覆盖了所有接口,包括不同的场景和输入组合。
代码覆盖率是否达到要求:检查接口测试代码的覆盖率,确保所有关键逻辑都得到验证。
性能指标是否满足要求:对接口的性能进行测试,确保在高负载下接口仍能稳定运行。
安全指标是否满足要求:验证接口的安全性,确保数据传输和存储的安全性。
6. 接口测试中依赖第三方数据的处理
如果依赖第三方数据的接口有时候难以直接调用接口处理时,可如下处理:
使用Mock工具:利用Mock工具(如:JSON Server、Easy Mock)模拟第三方数据接口的返回数据,降低对第三方数据的依赖性,加快开发和测试速度。
编写虚拟接口:在接口测试用例中,编写虚拟接口,直接返回模拟的第三方数据,以达到测试的目的。
编写代理接口:如果无法模拟第三方数据,可以编写代理接口,将测试请求转发到真实的第三方数据接口,并在接口测试用例中校验代理返回的数据是否正确。
直接往数据库中插入数据或者更改某条数据的信息,达到模拟第三方接口正常的情况。
如果有一些回调接口,直接利用第三方回调的参数格式修改某些变量,自己手动触发回调修改数据,提高稳定。
7. 接口测试项目的数据管理
在接口测试项目中,不同类型的数据需要灵活地进行管理和存储:
Excel数据管理:对于较小规模的数据或者静态数据,可以使用Excel来管理测试数据 (1万条数据以内比较推荐)。Python中的Openpyxl库可以很方便地读取和写入Excel数据,同时支持其他数据格式的转换。
yaml文件:对于非常小规模的数据或者配置文件数据,可以使用yam来管理测试数据 (数据量200以内可以考虑)。Python中yaml库读取和写入yarm文件还是很方便的。同时这个文件可以注释。
数据库交互:对于大规模的数据或者需要频繁变更的数据,可以使用数据库来存储测试数据。Python中的PyMySQL库可以实现与数据库的交互,方便数据的读取和写入。
数据驱动思想:数据驱动测试(DDT)是一种测试方法,通过读取测试数据源来动态生成和执行测试用例。这种方式可以使得测试数据和测试用例分离,降低代码的冗余。
数据缓存:在测试过程中,为了提高测试效率,可以将已经处理过的数据进行缓存,下次测试时直接使用缓存数据,避免重复请求或计算。
配置文件:一些接口测试中的配置信息,例如接口URL、账号密码等,可以单独放在配置文件中,便于管理和修改。
8. 解决接口文档缺失问题
遇到接口文档缺失的情况,解决思路如下:
与开发沟通:与开发人员直接沟通,了解接口的参数和预期结果,根据开发人员提供的信息编写测试用例。
抓包分析:通过抓包工具(如Fiddler、Wireshark)来分析接口的请求和响应,从中提取接口的参数和数据,以及接口的行为和返回结果。
数据库查询:对于接口数据存储在数据库中的情况,可以通过查询数据库来获取接口的数据,并根据数据设计测试用例。
源码接口分析:对于代码能力强的童鞋,可以直接拉去开发的项目代码去分析有哪些接口及参数去设计测试用例(有这个能力还写个毛接口测试??)。
日志分析:通过日志查询(如elk,tail)等等获取接口的请求和响应,从而设计测试用例。
9. 自动化测试框架的好处
搭建一个自动化测试框架对于接口测试项目有很多好处:
提高测试效率:自动化测试可以快速执行大量测试用例,提高测试效率和执行速度。
减少重复工作:通过自动化测试,可以减少人工测试中的重复性工作,提高测试人员的生产力。
提高测试准确性:自动化测试可以避免人为因素对测试结果的影响,提高测试的准确性。
持续集成和持续交付:通过自动化测试框架,可以实现持续集成和持续交付,加快软件的开发和交付速度。
灵活性和可扩展性:自动化测试框架可以根据项目的需要进行定制和扩展,适应不同项目的需求。
当然,很多童鞋会觉得市面那么多开源工具及框架,直接拿来主义使用就好,为啥还要自己整呢?嗯确实没错,但是在座的各位还是得考虑一下换工作(被迫换工作)时,坐在你对面的面试官要怎么应付吧...
10. 解决接口产生的垃圾数据
解决接口产生的垃圾数据常用解决思路如下:
数据库回滚:在测试用例执行完成后,使用数据库事务回滚将数据还原到测试前的状态,确保数据不会对接口环境产生影响。
数据清理脚本:编写数据清理脚本,定期执行数据清理操作,删除过期或不再需要的测试数据,保持数据库的整洁。
定时任务:设置定时任务,定期执行数据清理操作,避免测试数据过多导致数据库性能下降。
自动化数据清理:在自动化测试框架中集成数据清理功能,确保每次测试执行后都能自动清理产生的垃圾数据。
接口闭环调用:对于有新增增删改的接口,执行增改接口后,标记数据id等关键信息,在teardown 部分执行批处理调用删除接口。
11. 针对第三方接口常见的测试思路
第三方接口这玩意不文档,面试或者工作中遇到的还是比较多。勇哥挖箱底给大家一些思路:
使用Mock数据:可以使用Mock工具来模拟第三方接口的返回数据,以便于测试独立进行,不受第三方数据影响。
数据备份与还原:在接口测试之前,先对第三方数据进行备份,测试完成后再进行数据还原,确保测试对第三方数据没有实质性影响。
数据协调:与第三方数据提供方进行协调,请求提供稳定的测试数据,或者在测试时提供临时的测试环境,避免影响到正式环境数据。
容错设计:在测试时,要考虑到第三方数据不稳定的情况,设计容错机制,使得接口在部分数据缺失或异常时也能正常运行,不影响整体测试流程。
日志监控:监控第三方数据接口的日志,及时发现异常情况,与第三方数据提供方沟通解决。
12. 如果控制接口在整个测试流程中只调用一次
如果有其他接口需要先获取接口信息(例如登录接口),而且希望登录接口只调用一次,并在后续其他接口中使用该登录凭证:
使用Fixture(Pytest)或Setup(Python unittest):在测试框架中,可以使用Fixture或Setup功能,在执行测试用例前,先执行登录接口,并将登录凭证保存到缓存中。后续其他接口执行前,先判断登录凭证是否存在,如果存在,则直接使用,不再重复调用登录接口。
登录接口与其他接口合并:将登录接口与其他接口合并成一个测试用例,保证登录接口在其他接口调用之前执行,且只执行一次。这样可以确保登录凭证在后续其他接口中有效。
使用Session保持登录状态:有些接口测试工具(如Requests-Test)支持Session功能,可以通过Session保持登录状态。在第一次调用登录接口后,Session会自动保存登录凭证,在后续其他接口中直接使用Session即可。
封装登录接口:将登录接口封装成一个单独的函数或类,该函数或类内部维护登录状态,确保登录只调用一次。其他接口调用前,先调用登录函数或类的方法,获取登录凭证。
使用全局变量:在程序中使用全局变量来保存登录凭证,在其他接口中读取该全局变量获取登录凭证,避免重复调用登录接口。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。
相关文章:
如何构建高效的接口自动化测试框架?
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 在选择接口测试自动化框架时,需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说,使用Python相关的测试框架更为便捷。无论选…...
spring-logback引用外部文件
背景 在spring微服务开发和云部署中,都涉及到日志的收集,很多时候为例方便管理和开发,很多公司都会开发一些基础配置代码。其中日志就是很重要的部分, 为了方便部署、收集、查看,所以日志文件需要存储在同一个…...
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
文章目录 一、MyBatis-Plus简介二、快速入门1、环境准备2、将mybatis项目改造成mybatis-plus项目(1)引入MybatisPlus依赖,代替MyBatis依赖(2)配置Mapper包扫描路径(3)定义Mapper接口并继承BaseM…...
go项目中比较好的实践方案
工作两年来,我并未遇到太大的挑战,也没有特别值得夸耀的项目。尽管如此,在日常的杂项工作中,我积累了不少心得,许多实践方法也在思考中逐渐得到优化。因此,我在这里记录下这些心得。 转发与封装 这个需求…...
Windows之使用putty软件以ssh的方式连接Linux中文显示乱码
项目场景: 运行环境:Windows10 使用软件:putty 操作说明:以ssh的方式连接Linux 中文显示乱码 问题描述 Windows之使用putty软件以ssh的方式连接Linux中文显示乱码 原因分析: linux 机器的系统语言字符集与putty软件…...
springboot整合hive
springboot整合hive pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.…...
vxe-form table 修改表单数据校验的主题样式
在使用 vxe-form 表单校验时,数据校验可以支持2种主题样式 官网:https://vxeui.com 普通样式 通过设置 valid-config.theme‘normal’ 设置为普通样式 高亮样式 通过设置 valid-config.theme‘beautify’ 设置为高亮样式 <template><div&…...
【UE5】使用基元数据对材质传参,从而避免新建材质实例
在项目中,经常会遇到这样的需求:多个模型(例如 100 个)使用相同的材质,但每个模型需要不同的参数设置,比如不同的颜色或随机种子等。 在这种情况下,创建 100 个实例材质不是最佳选择。正确的做…...
一个计算频率的模块
先上代码 module _sync_reg #(parameter INIT 0,parameter ASYNC_RESET 0 ) (input clk,input rst,input in,output out );(* ASYNC_REG "TRUE" *) reg sync1; (* ASYNC_REG "TRUE" *) reg sync2;assign out sync2;generate if (ASYNC_RE…...
在SpringBoot项目中集成MongoDB
文章目录 1. 准备工作2. 在SpringBoot项目中集成MongoDB2.1 引入依赖2.2 编写配置文件2.3 实体类 3. 测试4. 文档操作4.1 插入操作4.1.1 单次插入4.1.2 批量插入 4.2 查询操作4.2.1 根据id查询4.2.2 根据特定条件查询4.2.3 正则查询4.2.4 查询所有文档4.2.5 排序后返回 4.3 删除…...
OpenJudge - 24:输出保留3位小数的浮点数
【题目来源】http://shnoip.openjudge.cn/level1/24/【题目描述】 读入一个单精度浮点数,保留3位小数输出这个浮点数。【输入格式】 只有一行,一个单精度浮点数。【输出格式】 也只有一行,读入的单精度浮点数。【输入样例】 12.34521【输出样…...
华为流程L1-L6业务流程深度细化到可执行
该文档主要介绍了华为业务流程的深度细化及相关内容,包括流程框架、建模方法、流程模块描述、流程图建模等,旨在帮助企业构建有效的流程体系,实现战略目标。具体内容如下: 华为业务流程的深度细化 流程层级:华为业务流程分为 L1 - L6 六个层级,L1 为流程大类,L2 为流程…...
Python中Tushare(金融数据库)入门详解
文章目录 Python中Tushare(金融数据库)入门详解一、引言二、安装与注册1、安装Tushare2、注册与获取Token 三、Tushare基本使用1、设置Token2、获取数据2.1、获取股票基础信息2.2、获取交易日历2.3、获取A股日线行情2.4、获取沪股通和深股通成份股2.5、获…...
Odoo中,要实现实时数据推送,SSE 与 WebSocket 该如何选择
目录 1. 技术特点对比 2. 使用场景 适合使用 SSE 的场景: 适合使用 WebSocket 的场景: 3. 优缺点总结 SSE 优点: SSE 缺点: WebSocket 优点: WebSocket 缺点: 4. 选择建议 选择 SSE 的条件&#x…...
02. Python基础知识
一、注释 在开发程序过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当添加注释,以辅助自己或其他开发人员解读代码。注释是给程序员看的,为了让程序员方便阅读代码,解释器会忽略注释。在 Pyto…...
Mac 修改默认jdk版本
当前会话生效 这里演示将 Java 17 版本降低到 Java 8 查看已安装的 Java 版本: 在终端(Terminal)中运行以下命令,查看已安装的 Java 版本列表 /usr/libexec/java_home -V设置默认 Java 版本: 找到 Java 8 的安装路…...
数字赋能,气象引领 | 气象景观数字化服务平台重塑京城旅游生态
在数字化转型的浪潮中,旅游行业正以前所未有的速度重塑自身,人民群众对于高品质、个性化旅游服务需求的日益增长,迎着新时代的挑战与机遇,为开展北京地区特色气象景观预报,打造“生态气象旅游”新业态,助推…...
C语言项⽬实践-贪吃蛇
目录 1.项目要点 2.窗口设置 2.1mode命令 2.2title命令 2.3system函数 2.Win32 API 2.1 COORD 2.2 GetStdHandle 2.3 CONSOLE_CURSOR_INFO 2.4 GetConsoleCursorInfo 2.5 SetConsoleCursorInfo 2.5 SetConsoleCursorPosition 2.7 GetAsyncKeyState 3.贪吃蛇游戏设…...
springboot整合kafka
springboot整合kafka pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven…...
量子计算机全面解析:技术、应用与未来
标题:量子计算机全面解析:技术、应用与未来 一、什么是量子计算机? 量子计算机是一种利用量子力学原理(如叠加、纠缠和干涉)进行计算的新型计算设备。与传统计算机基于比特(0 和 1)的运算方式不…...
提升软件测试报告的质量:Allure2中添加用例失败截图、日志、HTML块和视频的方法
Allure2的用途 Allure2是一个用于生成测试报告的框架,广泛应用于自动化测试和手动测试中。它支持多种测试框架,如JUnit、TestNG、MSTest等,通过生动的图表和详细的日志,使得非技术人员也能轻松地理解测试结果。许多团队选用Allur…...
Mysql启动报错:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止
原因 是手动去改了mysql的配置文件my.ini的内容,重新启动服务启动不了。 看了很多文章最终找到了恢复数据的办法。 第一步备份 先备份mysql数据存的文件夹Data,如果找不到则去看配置文件那一行datadir 第二步重新安装mysql 卸载篇可以看我之前发的文…...
国际环境和背景下的云计算领域
前言 在当前国际环境和背景下,云计算领域呈现出复杂多变的局面,其发展深受技术创新、地缘政治、全球经济以及监管政策的影响。以下从技术趋势、市场竞争、地缘政治和监管环境四个方面详细解析云计算领域的现状。 一、技术趋势:多云与边缘计算…...
网络安全-企业环境渗透2-wordpress任意文件读FFmpeg任意文件读
一、 实验名称 企业环境渗透2 二、 实验目的 【实验描述】 操作机的操作系统是kali 进入系统后默认是命令行界面 输入startx命令即可打开图形界面。 所有需要用到的信息和工具都放在了/home/Hack 目录下。 本实验的任务是通过外网的两个主机通过代理渗透到内网的两个主机。…...
C# 超链接控件LinkLabel无法触发Alt快捷键
在C#中,为控件添加快捷键的方式有两种,其中一种就是Windows中较为常见的Alt快捷键,比如运行对话框,记事本菜单等。只需要按下 Alt 框号中带下划线的字母即可触发该控件的点击操作。如图所示 在C#开发中,实现类似的操作…...
一分钟学习数据安全——数据安全风险的系统化应对思路
数据是组织的重要资产,未经授权的数据访问可能导致数据泄露、数据篡改、隐私侵犯和合规风险等问题。企业可以通过数据访问控制来提高信息系统在数据全生命周期管理中的安全性。企业可以引入IAM系统,来控制身份来管理权限。通过对用户访问权限的管理和合适…...
深入了解 Spring Security 的授权核心功能
Spring Security 是一个强大且灵活的安全框架,能够帮助开发者为 Spring 应用程序提供认证和授权服务。在实际应用中,Spring Security 主要涉及用户的认证(谁是用户)和授权(用户能做什么)。本文将深入讲解 S…...
【Web前端】创建我的第一个 Web 表单
Web 开发中,表单是不可或缺的组成部分。无论是用户注册、登录还是反馈收集,表单都是与用户交互的重要方式。 什么是 Web 表单? Web 表单是一种用于收集用户输入数据的界面元素。它们允许用户在浏览器中输入信息并提交这些信息到服务器。Web …...
“人工智能+高职”:VR虚拟仿真实训室的发展前景
在当今科技日新月异的时代,人工智能(AI)与虚拟现实(VR)技术的融合正逐步改变着各行各业,教育领域也不例外。特别是在高等职业教育(简称“高职”)体系中,VR虚拟仿真实训室…...
状态模式之状态机
状态机的背景 在软件开发过程中,尤其是涉及到复杂的系统行为控制时,我们常常会遇到这样的情况:一个对象或者系统会在多种状态之间进行转换,并且在不同状态下对相同事件的响应是不同的。 以自动售卖机为例,自动售卖机…...
NUXT3学习日记四(路由中间件、导航守卫)
前言 在 Nuxt 3 中,中间件(Middleware)是用于在页面渲染之前或导航发生之前执行的函数。它们允许你在路由切换时执行逻辑,像是身份验证、重定向、权限控制、数据预加载等任务。中间件可以被全局使用,也可以只在特定页…...
基于重复控制补偿的高精度 PID 控制
1. 背景与原理 重复控制(Repetitive Control, RC)是一种适用于周期性信号跟踪和周期性扰动抑制的控制方法,通过在控制回路中引入周期补偿器来提高系统的控制精度。将 RC 与 PID 控制相结合,利用 PID 的快速响应特性和 RC 的周期补…...
Linux之日志
日志 在编写网络服务器, 各种软件时, 程序一定要打印一些日志信息. 1. 可以向显示器打印, 也可以向文件中写入. 2. 日志是软件在运行时记录的流水账, 用于排查服务进程挂掉的信息. 其中必须要有的是: 日志等级, 时间, 日志内容.可选的是文件名, 代码行数, 进程pid 等 日志…...
【LeetCode面试150】——202快乐数
博客昵称:沈小农学编程 作者简介:一名在读硕士,定期更新相关算法面试题,欢迎关注小弟! PS:哈喽!各位CSDN的uu们,我是你的小弟沈小农,希望我的文章能帮助到你。欢迎大家在…...
云原生之k8s服务管理
文章目录 服务管理Service服务原理ClusterIP服务 对外发布应用服务类型NodePort服务Ingress安装配置Ingress规则 Dashboard概述 认证和授权ServiceAccount用户概述创建ServiceAccount 权限管理角色与授权 服务管理 Service 服务原理 容器化带来的问题 自动调度:…...
【Vue】 npm install amap-js-api-loader指南
前言 项目中的地图模块突然打不开了 正文 版本太低了,而且Vue项目就应该正经走项目流程啊喂! npm i amap/amap-jsapi-loader --save 官方说这样执行完,就这结束啦!它结束了,我还没有,不然不可能记录这篇文…...
RocketMQ: 部署结构与存储特点
RocketMQ 是什么 它是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式特点 Producer、Consumer、队列都可以分布式Producer 向一些队列轮流发送消息 队列集合称为 TopicConsumer 如果做广播消费则一个 consumer 实例消费这个 Topic 对应的所有队列如果…...
Android OpenGL ES详解——绘制圆角矩形
1、绘制矩形 代码如下: renderer类: package com.example.roundrectimport android.content.Context import android.opengl.GLES30 import android.opengl.GLSurfaceView.Renderer import com.opengllib.data.VertexArray import com.opengllib.prog…...
【大数据学习 | Spark】Spark的改变分区的算子
当分区由多变少时,不需要shuffle,也就是父RDD与子RDD之间是窄依赖。 当分区由少变多时,是需要shuffle的。 但极端情况下(1000个分区变成1个分区),这时如果将shuffle设置为false,父子RDD是窄依赖关系&…...
前端知识点---rest(javascript)
文章目录 前端知识点---rest(javascript)rest的用法基本语法特点使用场景与扩展运算符(spread)区别小练习 前端知识点—rest(javascript) rest出现于ES2015 function doSum(a,b, ...args) //示例中的args就是一个rest参数 //它会将后续的所有参数存储…...
Spark使用过程中的 15 个常见问题、详细解决方案
目录 问题 1:Spark 作业超时问题描述解决方案Python 实现 问题 2:内存溢出问题描述解决方案Python 实现 问题 3:Shuffle 性能问题问题描述解决方案Python 实现 问题 4:Spark 作业调度不均问题描述解决方案Python 实现 问题 5&…...
ASP.NET MVC宠物商城系统
该系统采用B/S架构,使用C#编程语言进行开发,以ASP.NET MVC框架为基础,以Visual Studio 2019为开发工具,数据库采用SQL Server进行保存数据。系统主要功能包括登录注册、宠物展示、个人中心、我的订单、购物车、用户管理、宠物类别…...
DQN系列算法详解
代码链接见文末 1. Q-learning 1.1 概述 Q-Learning是一种强化学习算法,目的是通过选择能带来最大长期收益的行为来完成任务。 做事包含瞬时奖励和记忆经验奖励: 在Q-Learning中,每个动作都会带来“瞬时奖励”,同时也会根据过去的经验记住哪些行为更有利。瞬时奖励: 这里…...
uniapp发布android上架应用商店权限
先看效果: 实现原理: 一、利用uni.addInterceptor的拦截器,在一些调用系统权限前拦截,进行弹窗展示,监听确定取消实现业务逻辑。 二、弹窗是原生nativeObj进行drawRect绘制的 三、权限申请调用使用的 plus.android.…...
已阻止加载“http://localhost:8086/xxx.js”的模块,它使用了不允许的 MIME 类型 (“text/plain”)。
记录今天解决的一个小bug 在终端启动8080端口号监听后,打开网址http://localhost:8080,发现不能正确加载页面,打开检查-控制台,出现如下警告:已阻止加载“http://localhost:8086/xxx.js”的模块,它使用了不…...
JavaEE之线程初阶(上)
前文我们知道计算机中的每一个程序都对应着一个进程,进程是CPU申请资源的最小单位,那么线程是什么呢,线程中我们又能学习到什么新的知识呢?? 我们来一探究竟 1. 认识线程(Thread) 线程是什么 …...
Spring Security @PreAuthorize注解
PreAuthorize 注解在 Spring Security 中提供了一种声明式的方法,可以在您的 Spring Boot 应用中添加方法级别的安全检查。本教程将引导您设置并有效使用 PreAuthorize,确保用户只能在具有特定角色或权限的情况下调用 REST API。 什么是 PreAuthorize&a…...
windows已建立威胁IP排查
在应急响应的时候,需要筛选出服务器建立连接的进程、PID,此代码可满足该需求实现共计2步 首先windos netstat-ano > all.txt, 上传至pycharm路径 第一步获取服务器建立连接的ip import re# 从文件读取 netstat 输出 def read_netstat_f…...
AI 大模型如何重塑软件开发流程?——技术革新与未来展望
人工智能的蓬勃发展为许多领域注入了强劲动力,而在软件开发这一关键技术领域,AI 大模型的应用正在彻底改变传统流程。从代码自动生成到智能测试,再到协同开发和流程优化,AI 正逐步成为软件开发者的得力助手,也推动企业…...
Admin.NET框架前端由于keep-alive设置缓存导致的onUnmount未触发问题
bug版本:next分支,基于.NET6版本; 问题描述: 1、添加keep-alive后,在其下运行的组件会出现onActived(被关注时)和onDeactived(取消关注时)生命周期,而组件原有生命周期为onMounted(被创造时)和onUnmounted(…...