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

不懂性能测试,被面试官挂了...

性能测试旨在检查应用程序或软件在特定负载下工作时的响应性和稳定性,从而检测应用程序/软件在响应速度、可扩展性和稳定性方面是否达到预期的要求。

简而言之,性能测试目标就是为了识别并消除应用程序中的性能瓶颈。

本文将为大家详细介绍性能测试主要类型、性能测试流程规划以及面对项目如何开展性能测试策略,如何设计不同场景下的性能测试用例,助你从此远离性能测试的盲区。

性能测试类型

性能测试主要有[负载测试],[压力测试],[容量测试]和[可靠性/可恢复性测试]这四大主要类型,下面将对这四大主流性能测试类别逐一展开介绍:

图片

负载测试

负载测试用于测试应用程序在正常和峰值情况下的性能。在负载测试中,我们对应用程序性能好坏的判定依据主要源于该应用程序对用户请求的响应情况,以及它在不同负载变化下(可接受的程度内)一致响应的能力来检测的。

负载测试中的核心关注点:

  • 在应用程序出现异常情况前,该应用程序所能容纳的最大负载量是多少?
  • 在系统变慢或出现崩溃之前,数据库所能处理的数据量有多少?
  • 是否有任何与网络相关的问题需要解决?

压力测试

压力测试旨在寻找破坏系统的方法。该测试同时还能为我们找到系统可以承受的最大负载范围。

通常,压力测试采用增量方法,通过逐步增加负载来观察系统各项性能指标的变化情况。

首先,我们可以从应用程序已经测试过的负载开始(例如当前用户数 100 个);然后慢慢地增加更多的负载来给系统增加压力(例如从 100 个用户数逐步增加到 10000)。

当我们发现服务器没有响应请求的那个点开始,这个点就被认为是断点(在一些性能测试报告图表中,往往也视为性能拐点)。

在压力测试过程中,我们需要关注的问题有:

  • 系统在崩溃前能承受的最大负载是多少?
  • 在实施压力测试过程中,系统是如何崩溃的?系统能否在崩溃后自行恢复?
  • 被测系统/应用程序在处理异常负载时,有哪几种中断方式?

容量测试

容量测试是为了验证应用程序的性能不受应用程序正在处理的数据量的影响。为了执行容量测试,需要向数据库中输入大量数据。

此类测试可以视为增量式测试或稳定性测试。在增量式测试中,数据量是逐渐增加的。

通常,随着应用程序的使用,数据库容量会随数据而增长,例如一个新建立的教育网站,最初只有少量的数据需要存储,但在 5-10 年后,该网站数据库中的数据存储就已有相当规模了。

因此针对数据量逐步递增至规模庞大的情况下,对应用程序进行容量测试很有必要。

此外容量测试还有另一层含义:应用程序是否能够在正常及峰值负载条件下满足当前正在处理的业务量需求?

这通常是为了系统将来可能面临的情况而进行的可预见性测试,需要纳入考察的核心点有:

  • 应用程序能够支持未来的负载吗?
  • 环境是否能够承受即将增加的负载?
  • 要使环境具备足够的能力,需要哪些额外的资源?

为了确保 Web 应用程序将支持在给定的用户和/或事务数,且满足性能要求,我们在测试过程中需要考虑修改处理器容量、网络带宽、内存使用情况、磁盘容量等资源,从而满足目标。对网上银行实施容量测试就是一个典型案例。

可靠性/可恢复测试

可靠性测试或恢复测试用于验证应用程序在出现故障或异常行为后,是否能够恢复到正常状态,以及恢复阶段需要经过多长时间。

例如在某线交易站点出现故障,致使用户不能在一天的某个点(高峰时间)买卖股票,但在一两个小时后用户能够进行在线股票交易,我们就可以说该应用程序是可靠的,即有能力从异常行为中自行恢复。

性能测试流程

大部分测试工程师们在面对功能测试进展规划时游刃有余,而当被问起如何开展性能测试时,往往陷入沉默。

究其原因不外乎两点:

  • 几乎无实战经验
  • 缺乏对性能测试的整体认知

下面将为大家系统性地介绍性能测试规范化流程:

性能需求收集&分析

性能需求的收集与分析至关重要,这直接影响到后续的性能测试活动是否能有效开展。

对于有性能测试需求的项目,企业内部通常都会有专职的性能测试工程师,或者性能测试团队(即便人数不多,亦或是临时组建)。

性能测试工程师直接或间接参与客户方针对系统/应用程序的性能需求调研会议,以识别和收集应用系统实现技术和业务方面的需求。

这包括获取有关应用程序的架构、技术和使用的数据库、目标用户、功能、应用程序使用情况、性能测试需求、硬件和软件需求等方面的信息。

性能测试工具选择

一旦确认了性能测试需求,接下来就到了性能测试工具选取的环节,如果之前没有类似的经验,企业也没有硬性规定必须使用的工具,那么在这个节点上,我们可以将可用工具逐一罗列。

分别从工具的成本、应用程序使用的协议、用于构建应用程序的技术、我们为测试而模拟的用户数量等等对可用工具列表进行筛选,选取一款合适当前项目情况的性能测试工具。

选定测试工具后,我们需要为关键业务创建脚本,并在 10-15 个虚拟用户中执行,这就是所谓的(POC—— Proof Of Concept,这是在有限范畴内,对用户实时活动的一种演示)。

性能测试计划&设计

根据第一个阶段收集的寻求信息,我们需要对性能测试进行整体计划和设计。测试计划旨在明确性能测试该如何进行,即性能测试环境、工作负载场景的设计、相关硬件配置等等。

这个阶段的输入是测试需求分析,输出是测试策略文档(包含了整个性能测试计划,设计),关于测试策略文档,在下文中将会以实例呈现。

性能测试用例研发

①基于 POC 的测试用例研发:根据上述测试计划中确定的测试范畴及核心业务功能,开始着手设计编写性能测试用例;这些初始的测试用例通常是在 POC 期间基于所选的性能测试工具来记录被测试业务的步骤。

②基于 POC 的测试用例评审:性能测试用例的评审最好能将客户代表纳入以获得他们的认可,确保被测业务每个步骤的准确性。

③测试用例优化:基于 POC 的测试用例一旦通过评审,我们就可以逐步优化测试用例,例如参数化,等待,集合点等的设置。

④环境同步:在创建优化性能测试用例脚本的同时,需要设置测试环境(软件和硬件),从而确保性能测试脚本在特定环境下执行(尽可能模拟真实的线上环境)。

⑤真实用户 VS 虚拟用户:如果性能测试在真实的客户环境下执行,性能团队还需要考虑如何避免实时用户及虚拟用户同时在线的情况,一般而言这类情况可以选择避开实时用户大量在线且活跃度相当高的情况。

性能测试建模

为测试执行创建性能负载场景模型, 该阶段主要目的是验证给定的性能指标(来自性能需求)在测试期间是否达到。

性能测试执行

在指定的场景下执行性能测试脚本,性能测试场景是根据上述负载模型设计的,测试执行通过虚拟用户数递增模式进行。

例如,如果用户的最大数量是 100,那么场景首先会运行 10、25、50 个用户,以此类推,最终会运行 100 个用户。

性能测试结果分析

测试结果是性能测试人员最重要的交付内容,也是可以证明 ROI(投资回报率)以及性能测试工作真正体现价值的地方。

由于性能测试通常需要进行多次执行才能得出正确的结论,无论通过工具自动生成还是自己汇总测试结果。

有效的性能测试结果分析需要注意这几点:

分析并记录测试失败的原因。

与前一次测试执行相比,应用程序的性能是否有变化。

为了执行性能测试用例,从应用程序构建到测试环境都做过哪些设置更改。

对每个性能场景执行的测试用例,及时进行性能测试结果分析,避免最终呈现完整性能测试报告时,出现任何数据指标的遗漏。

在总结中需要说明每场测试的目的、对应的虚拟用户数、测试持续时间、响应时间、吞吐量、不同负载情况下性能指标对比图、测试过程中出现的错误,以及后续改进的建议。

完整报告

完整的性能测试报告以简洁为主,不需要任何推导,开发团队需要更多关于分析、比较结果的信息,以及如何获得结果的细节。

性能测试计划/策略编写 Demo

现在我们以一款实时消息传递应用程序为例,编写性能测试策略。

由于用户对于不同产品的性能需求不尽一致,这里仅以 Demo 呈现性能测试策略编写的完整过程,大家在工作中可适当对 Demo 模板进行裁剪,以满足自己当前项目所需。

关于 XXX 在线聊天应用程序:假设这是当前客户公司内部使用的聊天工作平台,这个聊天应用程序基于 XMPP 协议支持发送和接收即时消息。

此外该平台功能进行了一些增强,如远程 PC 控制、PC 诊断、修复工具、在线聊天等。

对于这个应用程序,我们假设项目团队已经决定使用 JMeter 进行性能测试,使用 JIRA 进行缺陷跟踪。

性能测试策略文档的第一页应该包含文档的标题和公司的版权;第二页应该包含文档控制,包括文档版本历史、审阅者和审批者列表和贡献者列表;第三页应包含目录,其中涉及以下主题:

①简介

本文档目的旨在说明如何在 XXX 聊天应用程序上,基于当前及未来状态进行性能测试。

XXX 聊天应用程序是一个用于内部远程支持的工作平台,具有在线聊天、客户识别、远程 PC 控制、PC 诊断和修复工具等功能。

性能测试主要目的如下:

确保当前聊天应用程序的任何更新符合规范的服务级别协议。

确保应用程序的性能、可用性和稳定性不会因为新功能的添加而受到影响。

在持续增加负载的情况下,事务响应时间保持在可接受的范围内。

在不断增加负载的情况下,JVM 始终显示稳定的内存使用情况。

下图清晰展示了性能测试/优化过程:
图片

注:如在企业内,这里还可以附上被测应用系统的架构设计图。

②性能测试工作范畴

XXX 聊天应用程序性能测试工作范畴如下(In Scope):

  • 通过对系统详细调研,获取关键事务处理节点,构建负载分配。

  • 确定性能测试的关键场景。

  • 使用前一个版本的结果作为未来版本的基线。

  • 确认其他用于分布式压测的代理机性能测试环境,以及使用的性能测试工具。

  • 使用 JMeter 模拟各种峰值负载,并为负载场景准备性能测试脚本。

  • 为服务器设置性能指标监控,以便在测试执行阶段识别性能瓶颈。

  • 发布性能测试结果。

  • 与项目干系人协作沟通,确定可行的调优方案,针对已识别的性能问题给出解决方案。

  • 为该产品将来版本确定性能需求基线。

以下任务不在此次性能测试工作范畴中(Out of Scope):

  • 功能测试,UAT,系统测试和安全测试;对任何第三方接口进行性能测试/监视。

  • 性能调优;(大多数时候调优是由不同的团队完成的,如果团队中有性能工程师来调优系统,可以将其这部分工作添加到 In Scope 中)。

  • 安全/渗透测试/白盒测试。

  • 性能测试的数据生成。

  • 非功能测试(例如,故障转移、灾难恢复、备份、可用性),而不是性能测试。

  • 第三方应用程序性能测试和调优。

  • 从性能团队的角度来看,应用程序代码更改,优化供应商支持的产品/服务器配置等都超出范围。

  • 基础设施支持/构建部署/环境准备/数据库恢复/网络支持等。

③性能测试方案

XXX 聊天应用程序的性能测试将使用 JMeter 来进行,结合自定义编写的 XMPP 插件,这些插件通过 Smack 库实现 XMPP 连接。

这些库用来创建连接、实现用户登录并向 XMPP 服务器发送聊天消息。将这些库打包进成一个 Jar 文件,然后部署到 JMeter 中,并根据测试场景进行设计。

JMeter 工作台即 JMeter 服务器,安装在本地机器上,JMeter 工作台通过负载生成器产生所需的负载,向聊天服务器所在系统发出请求,与此同时 JMeter 工作台负责监视聊天服务器所在系统的行为。

根据性能测试需求分析,通过 JMeter 创建测试脚本和测试场景,针对不同场景设计虚拟用户数及虚拟用户活动状态,尽可能模拟真实场景。

将每个测试场景分解并从以下几个方面进行检测:

基线测试:1 个虚拟用户数+多个迭代运行每个场景,以确定应用程序性能是否满足业务服务水平。

基本负载测试:为了满足负载测试下的业务基准,性能测试团队将执行一个基本负载测试,该测试将有助于识别随着负载增加而出现的任何系统性能问题,并为下一级别的性能测试创建基线。

峰值负载/可伸缩性测试:性能测试团队针对不断增加虚拟用户数进行多次测试,以满足预期负载,同时检测应用程序性能,建立性能曲线,确定当前应用程序部署是否能够支持峰值用户负载下的服务水平协议。

这有助于对单个 Java 虚拟机(JVM)进行调优,以及对所需 JVM 总数和处理器的容量规划。

通过将虚拟用户数的值增加到峰值容量的 50%,75%,100% 和 125% 来进行峰值负载测试。

持久性测试/稳定性测试:性能测试团队基于不同时长(8 小时/16 小时/24 小时)持续运行指定的测试,以识别随着时间推移所产生的内存泄漏及其他性能问题,同时检验整体系统的稳定性。

在持久性测试期间,性能测试团队需要监视关键性能指标,例如事务响应时间,CPU,I/O,内存等系统资源使用情况是否稳定。

假定性能测试环境是生产环境的一个副本,测试将在增量负载下运行,以确定应用程序在那种负载情况下未达到性能要求,或出现异常行为。

④性能测试场景

注:企业中所有的测试场景可以集中编写在 Excel 文档里,这里仅以一个测试场景为例。

【场景 1】:验证代理和客户间的并发会话数。

【测试方案】:下表列出了不同性能测试方案及其对应的测试目标。
图片

【性能指标设定】

客户端关注指标:
图片

系统&网络性能指标:
图片

【性能测试阶段活动及对应输出】

如下图
图片

⑤测试数据来源

这里假定所有性能环境数据是生产环境数据的副本,所需的测试数据将由项目团队统一提供。

⑥测试入口&出口准则

图片

测试入口&出口准则如上图:

  • 访问环境中所有应用程序
  • 环境准备就绪
  • 性能测试数据准备就绪

⑦缺陷管理

缺陷管理如下:

  • 本项目将使用 JIRA 缺陷管理模块对缺陷进行记录和跟踪直至关闭。
  • 在测试执行阶段发现的缺陷将被记录在 JIRA 中,这些缺陷将由开发团队根据以下严重性级别进行修复。
  • 缺陷审查会议将提上每日工作日程,参与者包括测试、开发、质量分析师和业务团队。
  • 随着项目发布上线日期推进,修复缺陷的标准将变得更加严格,因此在每日缺陷评审会议上,需要发布缺陷修复标准的指导策略。

缺陷严重级别定义,如下图:

图片

⑧测试工具&技术

图片

⑨测试执行停滞及恢复准则

图片
⑩可交付成果物

性能测试交付成果包括:

  • 性能测试策略
  • 性能需求文档
  • 性能测试场景文档
  • 性能测试脚本
  • 性能测试结果

⑪角色&职责

下图表格中列出不同角色及其对应的职责:
图片

⑫潜在风险及缓解计划

下图表格中列出潜在风险及缓解计划:

图片

⑬性能测试约定规则

性能测试约定规则如下:

  • 性能测试环境是真实产品环境的复制(即硬件、软件、接口、集成层等与真实产品保持一致性)。

  • 性能脚本将根据使用率高的关键业务流程来设计。

  • 在性能测试开始之前,必须解决所有基础设施问题,此后所做的任何系统配置更改都将导致无效的测试结果。

  • 性能测试执行前提:必须确保应用程序是稳定的,可以在性能测试环境中使用。

  • 硬件和软件资源(如用户产生负载的工具、控制器/代理机器)准备就绪。

  • 性能测试范围的任何变更都必须经由变更控制流程, 同时性能测试团队将对变更引起的时间/资源影响做出评估。

  • 启用应用程序跟踪日志。

到此我们就完成了聊天应用程序性能测试计划的编写,在真实企业项目中,大家可以基于实际情况对文档内容自行裁剪。

总结

不难发现要成功完成一个性能测试项目,我们需要确保性能测试计划阶段各方面的准确性。

即计划、基于测试需求分析的用例开发、场景设计、测试执行和结果分析,这些关键点都必须按照正确的方式进行,加上合理的风险预估及缓解策略。

希望通过本篇分享,能够丰富你在性能测试领域的认知及实践,同时学会如何编写一份带有详细示例的性能测试计划文档,为后续性能测试活动的开展奠定良好的基础。

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

相关文章:

不懂性能测试,被面试官挂了...

性能测试旨在检查应用程序或软件在特定负载下工作时的响应性和稳定性,从而检测应用程序/软件在响应速度、可扩展性和稳定性方面是否达到预期的要求。 简而言之,性能测试目标就是为了识别并消除应用程序中的性能瓶颈。 本文将为大家详细介绍性能测试主要…...

JS逆向基础-谷歌浏览器调试技巧(详细)

概述 浏览器的调试工具在 JavaScript 逆向工程中,帮助开发者分析和理解代码执行流程、变量值及其变化,从而揭示隐藏逻辑和加密机制,为破解、修改或复现代码提供重要支持。 调试面板详解 谷歌浏览器的调试面板概览: 顶部操作栏 …...

那年我双手插兜,使用IPv6+DDNS动态域名解析访问NAS

估计有很多科技宅和我一样,会买一个NAS存储或者自己折腾刷一下黑群晖玩玩,由于运营商不给分配固定的公网IP,就导致我在外出的时候无法访问家里的NAS,于是远程访问常常受到IP地址频繁变动的困扰。为了解决这一问题,结合…...

CSS的弹性盒子模型(Flex box)

弹性盒子模型是CSS3的一种新的布局模式,弹性盒是一种当页面需要适应不同的屏幕大小以及设备类型时确保拥有合适的布局方式,引入弹性盒子模型的目的时提供更加有效的方式来对一个容器中的子元素进行排列,对齐和分配空白空间。 弹性盒子由弹性容…...

django drf 分页器

自定义分页器代码: from django.core.paginator import InvalidPage from django.core.paginator import Paginator as DjangoPaginator from django.utils.functional import cached_property from rest_framework.exceptions import NotFound from rest_framewor…...

SpringBoot整合JPA实现CRUD详解

SpringBoot版本是2.0以上(2.6.13) JDK是1.8 一、依赖 <dependencies><!-- jdbc --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><!--…...

干部画像——精准辅助干部选拔的核心利器

干部画像&#xff0c;作为现代干部管理体系中的一项重要创新&#xff0c;已逐步成为精准辅助干部选拔的核心利器。通过综合运用多维度信息收集、系统化整理与科学化分析的方法&#xff0c;全面、客观、真实地勾勒出每位干部的综合素质与能力画像&#xff0c;为干部选拔工作提供…...

linux网络编程9

24.9.26学习目录 一.Web编程1.Javascript3.CGI 一.Web编程 1.Javascript 是一种基于对象并具有安全性能的脚本语言&#xff0c;是由浏览器内解释器翻译成可执行格式后执行&#xff1b; 即是网页与用户完成各种交互动作&#xff1b; 特点&#xff1a;基于对象的语言、简单性、…...

RabbitMQ应用

RabbitMQ 共提供了7种⼯作模式, 进⾏消息传递 一、七种模式的概述 1、Simple(简单模式) P&#xff1a;生产者&#xff0c;就是发送消息的程序 C&#xff1a;消费者&#xff0c;就是接收消息的程序 Queue&#xff1a;消息队列&#xff0c;类似⼀个邮箱, 可以缓存消息; ⽣产者…...

大数据Flink(一百二十四):案例实践——淘宝母婴数据加速查询

文章目录 案例实践——淘宝母婴数据加速查询 一、​​​​​​​创建数据库表并导入数据 二、​​​​​​​​​​​​​​创建session集群 三、​​​​​​​​​​​​​​源表查询 四、​​​​​​​​​​​​​​指标计算 案例实践——淘宝母婴数据加速查询 随着…...

无限大薄板的电场

单块无限大薄板两端的电场 单块无限大的薄板&#xff0c;如果上面带有均匀分布的电荷&#xff0c;就会在薄板的两侧产生电场&#xff0c;电场大小与距离平板的位置无关&#xff0c;方向与平板垂直&#xff0c;如果平板带正电荷&#xff0c;则电场方向向外指向两侧&#xff0c;…...

外包干了1个多月,技术明显退步了。。。。。

回望过去&#xff0c;我是一名普通的本科生&#xff0c;2019年有幸通过校园招聘踏入了广州一家软件公司的大门&#xff0c;成为了一名功能测试工程师。岁月如梭&#xff0c;转眼间&#xff0c;我已在这个岗位上默默耕耘了近四年。起初&#xff0c;我对这份工作充满了热情与期待…...

芝法酱学习笔记(0.4)——SpringBoot多模块项目打包,resource分离,lib分离,启动脚本

前言 上期讲了如何在windows平台搭建Java后端的开发环境&#xff0c;并给出了一个简单的hello world级别的多模块代码示例。但上期仅仅是在IDEA中运行&#xff0c;和正式的生产环境完全不同。 本期将讲解&#xff0c;如何配置SpringBoot多模块项目的maven打包&#xff0c;并分…...

进程(一万字学习笔记)

------------------------本文为学习进程记录的学习笔记&#xff0c;如有问题欢迎指正 -------------------------- 目录 1.定义 2.进程的种类 2.进程的内存布局 3.进程控制块&#xff08;PCB&#xff09; 4.进程源语 fork() 写时复制 exec() execl函数 wait() #进…...

Docker实践与应用:深度探索与丰富案例

一、引言 在当今的软件开发和运维领域&#xff0c;Docker已经成为了一种不可或缺的技术。它以容器化的方式改变了软件的开发、部署和运行模式&#xff0c;为企业和开发者带来了前所未有的便利和效率提升。本文将深入探讨Docker的实践操作以及丰富的应用举例&#xff0c;带您全面…...

信息安全工程师(21)安全协议

前言 安全协议是建立在密码体制基础上的一种交互通信协议&#xff0c;它运用密码算法和协议逻辑来实现认证、密钥分配、数据机密性、完整性和抗否认性等安全目标。 一、定义与目的 安全协议旨在确保网络环境中信息交换的安全性&#xff0c;通过密码技术和协议逻辑来保护数据的机…...

Starrocks with 嵌套

在某些场景下需要进行 with 嵌套 需要以下进行处理&#xff0c;报如图错误 with abc as (select * from .. ) insert into xxx select * from abc尝试创建物化视图 CREATE MATERIALIZED VIEW IF NOT EXISTS ads_test.xxx_mv REFRESH DEFERRED MANUAL AS with abc as (select…...

ubuntu 安装neo4j

在Ubuntu上安装Neo4j的步骤如下&#xff1a; 1.更新包管理器的索引列表&#xff1a; sudo apt update 2.导入Neo4j的GPG密钥&#xff1a; wget -O - https://debian.neo4j.org/neotechnology.gpg.key | sudo apt-key add - 3.添加Neo4j的仓库到APT源列表&#xff1a; ech…...

云计算课程作业1

作业1 Xmanager连接 rhel连接 作业2 首先确认你的虚拟机设置的是NAT 1-3 然后打开这篇blog&#xff0c;并完成第一步和第二步 因为我们是NAT&#xff0c;所以不需要连接网桥&#xff0c;即跳过第三步&#xff0c;但是这里ping一下测试网络连接 2- 如果到这里你发现提示yum…...

建筑智能,推动智慧社区发展

建筑智能已经成为现代城市建设的热门词汇。它不仅是提高城市建筑现代化水平的必由之路&#xff0c;也是未来城市智能化的重要标志。其中&#xff0c;智能社区是建筑智能化的重要环节之一。 智能社区是指以信息技术为基础&#xff0c;通过信息技术实现社区设施设备网络化、监管…...

conda 虚拟环境安装GDAL

一. 背景 换了新电脑&#xff0c;要重新安装GDAL。从前是下了GDAL的.wheel文件用pip安装&#xff0c;但平时下轮子的网站现在都打不开&#xff0c;比如https://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal&#xff0c;不晓得为什么。 后面看了这篇教程解决了问题&#xff08;h…...

STM32转AT32代码转换

1. 引言 在嵌入式开发中&#xff0c;我们经常会遇到更换单片机芯片的事情&#xff0c;若芯片是同一厂家的还好说&#xff0c;若是不同厂家的则需要重新写&#xff0c;重新调&#xff0c;重新去学习其底层驱动程序&#xff0c;比较费时费力。如&#xff1a;ST32转AT32、ST32转G…...

vue中怎么覆盖 sytle中的样式

好的&#xff0c;下面是一个具体的例子&#xff0c;展示如何在 Vue 组件中覆盖样式。 示例&#xff1a;覆盖组件样式 假设我们有一个组件 MyComponent.vue&#xff0c;其中包含一些样式&#xff1a; <template><div class"my-component"><h1>标…...

php中打印函数

在PHP中&#xff0c;打印函数主要用于输出或显示数据。常用的打印函数包括&#xff1a; 1.echo- 可以输出一个或多个字符串。 echo "Hello, World!"; echo "Hello", " ", "World!"; 2.print - 功能与echo相似&#xff0c;但print只能…...

[单master节点k8s部署]23.构建EFK日志收集平台(二)

部署elasticsearch集群 已经完成的工作&#xff1a;创建存储。首先配置了nfs存储提供商&#xff08;nfs-deployment.yaml&#xff09;&#xff0c;然后通过创建存储类&#xff08;storageclass.yaml&#xff09;来将nfs服务器与存储类绑定&#xff1a; [rootmaster 31efk]# c…...

C#的属性(Property)应用说明(二)

Property的应用说明补充&#xff1a; 一.自定义逻辑&#xff1a; 可以在 get 和 set 访问器中包含自定义的逻辑。 public class Person {private string name;public string Name{get { return name; }set{if (string.IsNullOrWhiteSpace(value))throw new ArgumentException…...

VUE.js笔记

1.介绍vue Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。 Vue 应用程序的基本…...

SpringBoot--yml配置文件的时间/大小的单位转换

原文网址&#xff1a;SpringBoot--yml配置文件的时间/大小的单位转换_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringBoot的yml&#xff08;properties&#xff09;配置文件的时间/大小的单位转换。 概述 SpringBoot可以将yml中的配置绑定到一个Java类的字段&#x…...

【算法业务】互联网风控业务中的拒绝推断场景算法应用分享(涉及半监督算法、异常检测、变分自编码、样本权重自适应调整、迁移学习等)

1. 业务目标和任务描述 该项目是很早期的一个工作&#xff0c;属于互联网信贷风控场景&#xff0c;研究并应用信贷中的拒绝推断任务&#xff0c;处理方式也许对于目前的一些业务还有参考意义&#xff0c;因此这里做下分享。拒绝推断是指在信贷业务中&#xff0c;利用已知的接受…...

Windows PowerShell相关笔记

之前我写的一篇&#xff0c;把我的PS&#xff08;power shell&#xff09;该了配置文件 pyqt5vscode 配置坑笔记_vscode使用pyqt command failed-CSDN博客 文件里写的自动加载conda #region conda initialize # !! Contents within this block are managed by conda init !!…...