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

软件测试全攻略:从概念到实践

目录

测试指南针--概念篇

1. 什么是软件测试?

2. 软件测试和软件开发的关系是什么?

3. 测试需要哪些能力?

4. 测试流程是什么样的?

5. 什么是单元测试和集成测试?

6. 软件的生命周期是什么样的?

需求分析 — 计划 — 设计 —编码 — 测试—运行维护

7. 什么是Bug?

8. 描述bug的要素是什么?

 9. BUG的级别都有哪些呢?

10. 常见的测试模型有哪些呢?

11. 什么是测试用例?

12. 设计测试用例的方法是什么样的?如何编写?

设计测试用例的方法

编写测试用例

13. 为什么要对软件测试进行分类?

14. 软件测试按照测试目标(即验证的质量属性或业务需求)可分为哪些类型?请举例说明核心关注点。

15. 软件测试按执行方式可分为哪几类?

16. 软件测试按照测试方法(技术维度)可分为哪些类型?

17.什么是自动化测试?

18. 手动测试和自动化测试有什么优缺点?

手动测试

自动化测试

19. 自动化测试按测试对象(或技术层面)可分为哪几类?请举例说明适用场景。

20.自动化测试的意义是什么?都需要做些什么?

自动化测试的意义在于

21. 什么是性能测试?

22. 什么是压力测试?

23. 什么是负载测试?

24. 压力测试和负载测试的区别?

25. 什么是并发测试?

26. 什么是稳定性测试?


测试指南针--概念篇


1. 什么是软件测试?

  • 软件测试就是验证软件产品特性是否满足用户的需求。

2. 软件测试和软件开发的关系是什么?

  • 软件测试和软件开发是相互依赖的,开发人员负责实现功能,测试人员负责验证这些功能的正确性。开发人员和测试人员需要协同合作,共同保障产品的质量

3. 测试需要哪些能力?

  • 业务分析能力:分析整体业务流程、分析北侧业务数据、分析被测系统架构、分析被测业务模块、分析测试所需资源、分析测试完成目标。
  • 缺陷洞察能力:一般缺陷的发现能力、隐性问题的发现能力、发现连带问题的能力、发现问题隐患的能力、尽早发现问题的能力、发现问题根源的能力。
  • 团队协作能力:合理进行人员分工、协助组员解决问题、配合完成测试任务、配合开发重现缺陷、督促项目整体进度、出现问题勇于承担。
  • 专业技术能力:掌握测试基础知识、掌握计算机知识、熟练运用测试工具。
  • 逻辑思考能力:判断逻辑的正确性、对可行性逻辑分析、站在客观角度思考。
  • 问题解决能力:技术上的问题、工作中的问题、沟通问题。
  • 宏观把控能力:有效控制测试时间、有效控制测试成本、有效制定测试计划、有效进行风险评估、有效控制测试方向。

4. 测试流程是什么样的?

  • 需求测试—>概要设计测试—>详细设计测试—>单元测试—>集成测试—>系统测试—>验收测试

(来自W模型)

5. 什么是单元测试和集成测试?

  • 单元测试:完成最小的软件设计单元(模块)的验证工作。目标是确保模块被正确的编码,使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误,通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早发现和解决不易显现的错误。

  • 集成测试:通过测试发现与模块接口有关的问题。目标是把通过了单元测试的模块拿来,构造一个在设计中所描述的程序结构,应当避免一次性的集成(除非软件规模很小),而采用增量集成。

6. 软件的生命周期是什么样的?

  • 需求分析 — 计划 — 设计 —编码 — 测试—运行维护

7. 什么是Bug?

  • 定义:一个计算机bug指在计算机程序中存在的一个错误(error)、缺陷(flaw)、疏忽(mistake)或者故障(fault)。这些bug是程序无法正确的运行。Bug产生于程序的源代码或者程序设计阶段的疏忽或者错误。

8. 描述bug的要素是什么?

  • 问题出现的版本、问题出现的环境、问题出现的步骤、预期结果、实际结果。

 9. BUG的级别都有哪些呢?

  • BUG的级别一般分为:崩溃、严重、一般、次要。

崩溃:阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据丢失,与数据库连接错误,主要功能丧失,基本模块确实等问题。如:代码错误、死循环、数据库发生死锁、重要的一级菜单、功能不能使用等。

严重:系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用但是不影响其他功能的测试。功能设计与需求严重不符,模块无法启动或调用,程序重启、自动退出,关联程序键调用冲突,安全问题、稳定性等。

一般:功能没有完全实现但是不影响使用,功能菜单存在缺陷但不会影响系统的稳定性。

次要:界面、性能缺陷,建议类问题,不影响操作功能的执行,可以优化性能的方案等。

10. 常见的测试模型有哪些呢?

  • V模型和W模型

V模型是瀑布模型的变种。

优点:

  • 明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系,有效提升测试的质量和效率。

V模型指出:

  • 单元和集成测试应检测程序的执行是否满足软件设计的需求;
  • 系统测试应检测系统功能、性能的质量特征是否达到系统要求的指标;
  • 验收测试确定软件的实现是否满足用户需求或合同需求

缺点:

  • 仅仅把测试作为在编码之后的一个阶段,未在需求阶段就介入测试。

W模型

  • W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字模型组成,分别代表测试与开发的过程,图中明确表示出了测试与开发的并行关系,
  • 特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。

优点

  • 有利于尽早地全面的发现问题,例如需求分析完成后,测试人员就应该参与到对需求验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。

缺点

  • 需求、设计、编码等活动被视为串行的;
  • 测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。
  • 重流程,无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模型并不能解除。测试管理面临着困惑。

11. 什么是测试用例?

  • 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。

12. 设计测试用例的方法是什么样的?如何编写?

设计测试用例的方法

黑盒测试

1)等价类划分

        等价类划分是将系统的输入域划分为若干个部分,然后从每个部分选取少量代表性数据进行测试。等价类可以划分为有效等价类和无效等价类,设计测试用例的时候要考虑这两种等价类。

2)边界值分析法

        边界值分析法是对等价类划分的一种补充,因为多数错误都在输入输出的边界上,边界值分析就是假定大多数错误出现在输入条件的边界上,如果便捷附件取值不会导致程序出错,那么其他取值出错的可能性也就很小。

3)正交试验法

        正交是从大量的试验点中挑选出适量的、有代表性的点。正交试验设计师研究多因素多水平的一种设计方法,他是一种基于正交表的高效率、快速、经济的试验设计方法。

4)状态迁移法

        状态迁移法是对一个状态在给定的条件内能够产生需要的状态编号,有没有出现不可达的状态和非法的状态,状态迁移法是设计足够的用例达到对系统状态的覆盖、状态、条件组合、状态迁移路径的覆盖。

5)流程分析法

        流程分析法主要针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,这是从白盒测试中路径覆盖分析法接俩的一种很重要的方法。

6)输入域测试法

        输入域测试法是针对输入会有各种各样的输入值的一个测试,他主要考虑极端测试,中间范围测试,特殊值测试。

7)输出域分析法

        输出域分析法是对输出域进行等价类和边界值分析,确定是要覆盖的输出域样点,反推得到应该输入的输入值,从而构造出测试用例,他的目的是为了达到输出域的等价类和边界值覆盖。

8)判定表分析法

        判定表是分析和表达多种输入条件下执行不同动作的工具,他可以把复杂的逻辑关系和多种条件组合的情况表达的既具体又明确。

9)因果图法

        因果图是用于描述系统输入输出之间的因果关系、约束关系。因果图的回执过程是对北侧系统的外部特征的建模过程,根据输入输出间的因果图可以得到判定表,从而规划处测试用例。

10)错误猜测法

        错误猜测法主要是针对系统对于错误操作时对于操作的处理法的猜测法,从而设计测试用例

11)异常分析法

        异常分析法是针对系统有可能存在的异常操作,软硬件缺陷引起的故障分析,分析发生错误时系统对于错误的处理能力和回复能力依次设计测试用例。

白盒测试

白盒测试也称为结构测试逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或者程序验证。白盒测试法检查程序内部逻辑结构,对所有的逻辑进行测试,是一种穷举路径的测试方法,但即使每条路径都测试过了,但仍然有可能存在错误,因为,穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序,穷举路径测试不可能检查出程序因为遗漏路径而出错,穷举路径测试发现不了一些与数据相关的错误。

白盒测试需要遵循的原则:

1.  保证一个模块中的所有独立路径至少被测试一次。

2.  所有逻辑值均需要测试真(true)和假(false)。

3.  检查程序的内部数据结构,保证其结构的有效性。

4.  在上下边界及可操作范围内运行所有循环。

白盒测试方法:

静态测试:不用运行程序的测试,包括代码检查、静态结构分析、代码质量度量、文档测试等等,它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具(Fxcop)自动进行。

动态测试:需要执行代码,通过运行程序找到问题,包括功能确认与接口测试,覆盖率分析、性能分析、内存分析等。

白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖,条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化,

1.  语句覆盖每条语句至少执行一次。

2.  判定覆盖每个判定的每个分支至少执行一次。

3.  条件覆盖每个判定的条件应取到各种可能的值。

4.  判定/条件覆盖同时满足判定覆盖条件覆盖。

5.  条件组合覆盖每个判定中各条件的每一种组合至少出现一次。

6.  路径覆盖使程序中每一条可能的路径至少执行一次。

编写测试用例

1. 测试人员尽早介入,彻底理解清楚需求,这个是写好测试用例的基础。

2. 如果以前有类似的需求,可以参考类似需求的测试用例,然后还需要看类似需求的bug情况。

3. 清楚输入输出的各种可能性,以及各种输入的之间的关联关系,理解清楚需求的执行逻辑,通过等价类、边界值、判定表等方法找出大部分用例。

4. 找到需求相关的一些特性,补充测试用例。

5. 根据自己的经验分析遗漏的测试场景。

6. 多总结类似功能点的测试点,才能够写出质量越来越高的测试用例。

7. 书写格式一定要清晰。

13. 为什么要对软件测试进行分类?

  • 软件测试是软件生命周期中的一个重要环节,具有较高的复杂性,对于软件测试,可以从不同的角度加以分类,使开发者在软件开发过程中的不同层次、不同阶段对测试工作进行更好的执行和管理测试的分类方法。

14. 软件测试按照测试目标(即验证的质量属性或业务需求)可分为哪些类型?请举例说明核心关注点。

  • 界面测试

  • 功能测试

  • 性能测试

  • 可靠性测试

  • 安全性测试

  • 易用性测试

15. 软件测试按执行方式可分为哪几类?

  • 静态测试

  • 动态测试

16. 软件测试按照测试方法(技术维度)可分为哪些类型?

  • 黑盒测试

  • 白盒测试

  • 集成测试

  • 系统测试

  • 冒烟测试

  • 回归测试

  • 验收测试

17.什么是自动化测试?

自动化测试(Automation Testing)就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单来说 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。自动化测试比如功能测试自动化、性能测试自动化、安全测试自动化。自动化测试按照测试对象来分,还可以分为接口测试、UI测试等。接口测试的ROI(产出投入比)要比UI测试高。

18. 手动测试和自动化测试有什么优缺点?

手动测试

缺点

1)重复的手工回归测试,代价昂贵,容易出错。

2)依赖于软件测试人员的能力。

优点

1)测试人员具有经验和错误的猜测能力。

2)测试人员具有审美能力和心理体验。

3)测试人员具有是非判断和逻辑推理能力。

自动化测试

缺点

1)不能取代手工测试

2)手工测试比自动化测试发现的缺陷更多

3)对测试质量的依赖性极大

4)测试自动化不能提高有效性

5)测试自动化可能会制约软件开发。由于自动化测试比手动测试更脆弱,所以维护会受到限制,从而制约软件的开发。

6)工具本身无想象力

19. 自动化测试按测试对象(或技术层面)可分为哪几类?请举例说明适用场景。

20.自动化测试的意义是什么?都需要做些什么?

自动化测试的意义在于

1)可以对程序的新版本自动执行回归测试

2)可以执行手工测试困难或者不可能实现的测试,如压力测试,并发测试

3)能够更好的利用资源,节省时间和人力

执行自动化测试之前首先判断这个项目是不是和推广自动化测试,然后对项目做需求分析,指定测试计划,搭建自动化测试框架,设计测试用例,执行测试,评估。

21. 什么是性能测试?

  • 性能测试是软件测试的重要组成部分,旨在通过模拟系统实际运行环境的各类负载条件,评估系统的性能指标(如响应时间、吞吐量、资源利用率、稳定性等),确保系统在不同场景下能够稳定、高效地运行。其核心目标是发现系统潜在的性能瓶颈、缺陷或优化点,为系统调优、容量规划和架构设计提供数据支持。

22. 什么是压力测试?

  • 压力测试(Stress Testing)用于评估被测系统在高于预期、高于指定容量负载需求或低于最少需求资源的行为。压力测试关注被测系统处理超出预期或峰值负载的能力,也可以用于评估系统在资源匮乏时的处理能力,比如在可用的计算能力、带宽和内存资源不足的条件下系统的表现。进行压力测试时通常采用逐步增加系统负载的方式,使系统某些资源达到饱和甚至失效,从而发现哪些只有在高负载条件下,才会出现的缺陷,如同步问题、内存泄露等。通过对被测系统进行压力测试,也能找出被测系统的性能拐点,获得系统所能提供的最大服务级别(系统所能承受的最大压力),评估系统在峰值负载或超出最大负载情况下的处理能力。压力测试主要用于性能诊断、性能调优和容量规划等场景。

23. 什么是负载测试?

  • 负载测试(Load Testing)是性能测试的一种测试类型,用于评估被测系统在预期的不同负载下的行为。负载测试关注系统处理不同负载的能力,这些负载可通过控制并发用户或者进程的数量来实现。进行负载测试时,通过对系统不断增加并发访问负载,监测系统性能的变化,直到系统的某项或多项性能指标达到安全临界值,最终确定在满足该安全临界值的性能指标下,系统所能承受的最大负载量。简而言之,负载测试是通过逐步加载的方式来确定系统的处理能力。

24. 压力测试和负载测试的区别?

  • 负载测试是在保持性能指标的要求下测试系统能够承受的最大负载,而压力测试则是测试系统性能达到极限的状态。

25. 什么是并发测试?

  • 并发测试(Concurrency Tsesting)用于评估被测系统的某些特定草错同时发生时的性能表现,例如,被测系统被多个用户同时登录时的响应能力,或系统的某一功能被多个用户同时操作时的性能表现。通过并发测试,不仅可以获得被测系统在多用户并发操作时的性能指标,还可以发现被测系统在并发条件下可能发生的问题,如内存泄露、线程锁、资源争用问题。例如,通过模拟多个用户同时访问某一条件数据,或模拟多个用户同时更新数据,可能会发现被测系统的数据库访问错误、写入错误等。几乎所有的性能测试都会设计一些并发测试。但并发测试对并发时间要求比较苛刻,通常需借助专门的性能测试工具,采用多线程或多进程的方式来模拟多个虚拟用户并发性操作。

26. 什么是稳定性测试?

  • 在负载测试的基础上,执行较长时间的测试以检查系统的稳定性。通常较长时间指3*24小时以上。

相关文章:

软件测试全攻略:从概念到实践

目录 测试指南针--概念篇 1. 什么是软件测试? 2. 软件测试和软件开发的关系是什么? 3. 测试需要哪些能力? 4. 测试流程是什么样的? 5. 什么是单元测试和集成测试? 6. 软件的生命周期是什么样的? 需求…...

linux hungtask detect机制分析

1,机制概述‌ hungtask detect 是 Linux 内核用于检测长时间阻塞("hung")任务的机制,主要针对因死锁、死循环或资源竞争导致无法调度的任务 ‌触发条件‌:任务在 TASK_UNINTERRUPTIBLE 状态持续超过预设阈值…...

影刀处理 Excel:智能工具带来的高效变革

1. 高效的数据处理能力 1.1 快速读取与写入数据 影刀在处理 Excel 数据时展现出显著的读取与写入速度优势。传统方法处理大型 Excel 文件时,读取速度可能仅为每秒 100 行左右,而影刀通过优化底层代码和采用高效的文件解析算法,读取速度可达…...

2021ICPC四川省赛个人补题ABDHKLM

Dashboard - The 2021 Sichuan Provincial Collegiate Programming Contest - Codeforces 过题难度: A K D M H B L 铜奖 5 594 银奖 6 368 金奖 8 755 codeforces.com/gym/103117/problem/A 模拟出牌的过程,打表即可 // Code Start Here int t…...

HarmonyOS 影视应用APP开发--配套的后台服务go-imovie项目介绍及使用

网上有小伙伴对影视应用感兴趣,也想搞个自己的免费观影APP玩玩儿。前期博主开源的有uniapp版本和harmonyOS原生版本影视客户端,但是对博主开源的这个影视后台接口服务不太了解,不知道怎么用起来。这里总结介绍下该go-imove后台接口服务项目介…...

JAVA SE 多线程(上)

文章目录 📕1. Thread类及常见方法✏️1.1 创建线程✏️1.2 Thread 的常见构造方法✏️1.3 Thread 的几个常见属性✏️1.4 启动一个线程---start()✏️1.5 中断一个线程---interrupt()✏️1.6 等待一个线程---join()✏️1.7 获取当前线程引用✏️1.8 休眠当前线程 &…...

基于Bootstrap 的网页html css 登录页制作成品

目录 前言 一、网页制作概述 二、登录页面 2.1 HTML内容 2.2 CSS样式 三、技术说明书 四、页面效果图 前言 ‌Bootstrap‌是一个用于快速开发Web应用程序和网站的前端框架,由Twitter的设计师Mark Otto和Jacob Thornton合作开发。 它基于HTML、CSS和JavaScri…...

AUTOSAR图解==>AUTOSAR_SRS_Transformer

AUTOSAR Transformer 详解 基于AUTOSAR标准的Transformer组件技术解析 目录 1. AUTOSAR Transformer 概述 1.1 Transformer的作用1.2 Transformer在AUTOSAR中的位置2. Transformer架构设计 2.1 整体架构2.2 类结构设计2.3 交互流程3. Transformer类型与实现 3.1 SOME/IP Transf…...

iOS APP启动页及广告页的实现

iOS APP启动页及广告页的实现涉及UI布局、数据加载、倒计时控制、广告跳转等多个关键环节。以下是我的一些使用心得: 1. UI实现方案 双Window方案 原理:同时创建两个Window,主Window位于底层,广告Window覆盖在其上。通过切换mak…...

图绘Linux:基础指令脉络阁

目录 Linux命令行介绍 目录操作 ls 目录所含文件信息 ls 常用选项 pwd 在那个目录下 cd 进入目录 mkdir 创建目录 文件操作 touch 创建普通文件 echo向文件写入 cat 输出文件内容 cp 拷贝文件/目录 mv剪切重命名 rm 删除文件/目录 查找 * 匹配符 man 查找指令 …...

数字格式化库 accounting.js的使用说明

accounting.js 是一个用于格式化数字、货币和金额的轻量级库,特别适合财务和会计应用。以下是其详细使用说明: 安装与引入 通过 npm 安装: bash 复制 下载 npm install accounting 引入: javascript 复制 下载 const accounting …...

ngx_http_proxy_protocol_vendor_module 模块

一、前置要求 启用 PROXY 协议 在 listen 指令中添加 proxy_protocol 参数,例如: server {listen 80 proxy_protocol;listen 443 ssl proxy_protocol;… }商业订阅 本模块仅在 Nginx 商业版中提供。 二、示例配置 http {# 将 GCP 的 PSC 连接 ID 添…...

C++11-(2)

文章目录 (一)C11新增功能1.1 引用折叠1.1.1 在模板中使用引用折叠的场景1.1.2 引用折叠是如何实现的 1.2 完美转发1.3 lambda表达式语法1.3.1 定义1.3.2 lambda的使用场景1.3.3 捕捉列表1.3.4 mutable语法1.3.5 lambda的原理 (一&#xff09…...

LeetCode算 法 实 战 - - - 双 指 针 与 移 除 元 素、快 慢 指 针 与 删 除 有 序 数 组 中 的 重 复 项

LeetCode算 法 实 战 - - - 双 指 针 与 移 除 元 素、快 慢 指 针 与 删 除 有 序 数 组 中 的 重 复 项 第 一 题 - - - 移 除 元 素方 法 一 - - - 双 重 循 环方 法 二 - - - 双 指 针方 法 三 - - - 相 向 双 指 针(面 对 面 移 动) 第 二 题 - - -…...

QT6 源(106):阅读与注释重要的基类控件 QWidget,这是其精简版,完整注释版为篇 37

(1)原篇幅 37 为最开始整理,整理的不是太完善。重点不突出。故重新整理,但删除了大量的注释,重在突出本 QWidget类的内部逻辑,更易观察其包含了哪些内容。至于不理解的成员函数与属性,内容已不太…...

【Bluedroid】蓝牙HID DEVICE错误报告处理全流程源码解析

本文基于Android蓝牙协议栈代码,深入解析HID设备在接收非法指令(如无效的SET_REPORT)时的错误处理全流程,涵盖错误映射、协议封装、传输控制三大核心模块。重点剖析以下机制: HID协议规范错误码的动态转换策略 控制通…...

Day29 类的装饰器

类也有修饰器,他的逻辑类似:接收一个类,返回一个修改后的类。例如 添加新的方法或属性(如示例中的 log 方法)。修改原有方法(如替换 init 方法,添加日志)。甚至可以返回一个全新的类…...

学习黑客Active Directory 入门指南(二)

Active Directory 入门指南(二):深入逻辑结构与物理组件 🌳🏢 大家好!欢迎回到 “Active Directory 入门指南” 系列的第二篇。在上一篇中,我们初步认识了Active Directory,了解了其…...

为什么el-select组件在下拉选择后无法赋值

为什么el-select组件在下拉选择后无法赋值 https://blog.csdn.net/ZHENGCHUNJUN/article/details/127325558 这个链接解决了大模型无法解决的问题 大模型能够写基础且高级一些的代码,但是遇到再深入一些的问题,还是得问百度。对于我这种小白来说问题原因…...

FreeRTOS的学习记录(临界区保护,调度器挂起与恢复)

临界区 在 FreeRTOS 中,临界区(Critical Section) 是指程序中一段必须以原子方式执行的代码区域,在此区域内不允许发生任务切换或中断干扰,以保护共享资源或执行关键操作。FreeRTOS 提供了多种机制来实现临界区&#…...

给个人程序加上MCP翅膀

背景 最近MCP这个词真是到处都是,看起来特别高大上。我平时没事的时候也一直在关注这方面的技术,知道它是怎么一回事,也懂该怎么去实现。但可惜一直抽不出时间来自己动手搞一个MCP服务。网上关于MCP的教程一搜一大把,但基本上都是…...

2023年河南CCPC(ABCEFHK)

文章目录 2023河南CCPCA. 小水獭游河南(字符串)B. Art for Rest(数组切割)C. Toxel与随机数生成器(水)E. 矩阵游戏(dp)F. Art for Last(区间最小差分)H. Travel Begins(数学思维)K. 排列与质数(规律)总结 2023河南CCPC A. 小水獭…...

【 Redis | 实战篇 秒杀优化 】

目录 前言: 1.分布式锁 1.1.分布式锁的原理与方案 1.2.Redis的String结构实现分布式锁 1.3.锁误删问题 1.4.锁的原子性操作问题 1.5.Lua脚本解决原子性问题 1.6.基于String实现分布式锁存在的问题 1.7.Redisson分布式锁 2.秒杀优化 3.秒杀的异步优化 3.1…...

【Spring】核心机制:IOC与DI深度解析

目录 1.前言 2.正文 2.1三层架构 2.2Spring核心思想(IOC与AOP) 2.3两类注解:组件标识与配置 2.3.1五大类注解 2.3.1.1Controller 2.3.1.2Service 2.3.1.3Repository 2.3.1.4Configuration 2.3.1.5Component 2.3.2方法注解&#x…...

1-机器学习的基本概念

文章目录 一、机器学习的步骤Step1 - Function with unknownStep2 - Define Loss from Training DataStep3 - Optimization 二、机器学习的改进Q1 - 线性模型有一些缺点Q2 - 重新诠释机器学习的三步Q3 - 机器学习的扩展Q4 - 过拟合问题(Overfitting) 一、…...

ARM A64 STR指令

ARM A64 STR指令 1 STR (immediate)1.1 Post-index1.1.1 32-bit variant1.1.2 64-bit variant 1.2 Pre-index1.2.1 32-bit variant1.2.2 64-bit variant 1.3 Unsigned offset1.3.1 32-bit variant1.3.2 64-bit variant 1.4 Assembler symbols 2 STR (register)2.1 32-bit varia…...

虚幻引擎5-Unreal Engine笔记之`GameMode`、`关卡(Level)` 和 `关卡蓝图(Level Blueprint)`的关系

虚幻引擎5-Unreal Engine笔记之GameMode、关卡(Level) 和 关卡蓝图(Level Blueprint)的关系 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之GameMode、关卡(Level) 和 关卡蓝图(Level B…...

软件工具:批量图片区域识别+重命名文件的方法,发票识别和区域选择方法参考,基于阿里云实现

基于阿里云的批量图片区域识别与重命名解决方案 图像识别重命名 应用场景 ​​企业档案管理​​:批量处理扫描的合同、文件等图片,根据合同编号、文件标题等关键信息重命名文件​​医疗影像处理​​:识别X光、CT等医学影像中的患者ID、检查日…...

.NET外挂系列:1. harmony 基本原理和骨架分析

一:背景 1. 讲故事 为什么要开这么一个系列,是因为他可以对 .NET SDK 中的方法进行外挂,这种技术对解决程序的一些疑难杂症特别有用,在.NET高级调试 领域下大显神威,在我的训练营里也是花了一些篇幅来说这个&#xf…...

深入理解位图(Bit - set):概念、实现与应用

目录 引言 一、位图概念 (一)基本原理 (二)适用场景 二、位图的实现(C 代码示例) 三、位图应用 1. 快速查找某个数据是否在一个集合中 2. 排序 去重 3. 求两个集合的交集、并集等 4. 操作系…...

React Flow 边事件处理实战:鼠标事件、键盘操作及连接规则设置(附完整代码)

本文为《React Agent:从零开始构建 AI 智能体》专栏系列文章。 专栏地址:https://blog.csdn.net/suiyingy/category_12933485.html。项目地址:https://gitee.com/fgai/react-agent(含完整代码示​例与实战源)。完整介绍…...

【计算机网络】第一章:计算机网络体系结构

本篇笔记课程来源:王道计算机考研 计算机网络 【计算机网络】第一章:计算机网络体系结构 一、计算机网络的概念1. 理论2. 计算机网络、互连网、互联网的区别 二、计算机网络的组成、功能1. 组成2. 功能 三、交换技术1. 电路交换2. 报文交换3. 分组交换4.…...

实战设计模式之状态模式

概述 作为一种行为设计模式,状态模式允许对象在其内部状态改变时,改变其行为。这种模式通过将状态逻辑从对象中分离出来,并封装到独立的状态类中来实现。每个状态类代表一种特定的状态,拥有自己的一套行为方法。当对象的状态发生变…...

[C++入门]类和对象中(2)日期计算器的实现

目录 一、运算符重载 1、格式 2、简单举例 2、前置,后置 3、日期生成器的实现 1、声明与定义 1、友元函数 2、print函数 3、运算符重载 4、GetMonthDay 5、,-,,-的实现 6、重载流操作符 2、实现 3、定义源码 一、运算…...

数据质量问题的形成与解决

在数字化时代,数据已成为企业和组织发展的核心资产,数据质量的高低直接影响着决策的准确性、业务的高效性以及系统的稳定性。然而,数据质量问题频发,严重阻碍了数据价值的充分发挥。 一、数据质量问题的成因分析 1.信息因素 元数…...

论文阅读(四):Agglomerative Transformer for Human-Object Interaction Detection

论文来源:ICCV(2023) 项目地址:https://github.com/six6607/AGER.git 1.研究背景 人机交互(HOI)检测需要同时定位人与物体对并识别其交互关系,核心挑战在于区分相似交互的细微视觉差异&#…...

【机器学习】工具入门:飞牛启动Dify Ollama Deepseek

很久没有更新文章了,最近正好需要研究一些机器学习的东西,打算研究一下 difyOllama 以下是基于FN 的dify本地化部署,当然这也可能是全网唯一的飞牛部署dify手册 部署 官方手册:https://docs.dify.ai/en/getting-started/install-self-hos…...

课外活动:再次理解页面实例化PO对象的魔法方法__getattr__

课外活动:再次理解页面实例化PO对象的魔法方法__getattr__ 一、动态属性访问机制解析 1.1 核心实现原理 class Page:def __getattr__(self, loc):"""魔法方法拦截未定义属性访问"""if loc not in self.locators.keys():raise Exce…...

面试题总结二

1.mybatis三个范式 第一范式:表中字段不能再分,每行数据都是唯一的第二范式:满足第一范式,非主键字段只依赖于主键第三范式:满足第二范式,非主键字段没有传递依赖 2.MySQL数据库引擎有哪些 InnoDB&#…...

代码随想录算法训练营第六十六天| 图论11—卡码网97. 小明逛公园,127. 骑士的攻击

继续补,又是两个新算法,继续进行勉强理解,也是训练营最后一天了,六十多天的刷题告一段落了! 97. 小明逛公园 97. 小明逛公园 感觉还是有点难理解原理 Floyd 算法对边的权值正负没有要求,都可以处理。核心…...

编程技能:字符串函数07,strncat

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:编程技能:字符串函数06,strcat 回到目录…...

[Java实战]Spring Boot整合RabbitMQ:实现异步通信与消息确认机制(二十七)

[Java实战]Spring Boot整合RabbitMQ:实现异步通信与消息确认机制(二十七) 摘要:本文通过完整案例演示Spring Boot与RabbitMQ的整合过程,深入讲解异步通信原理与消息可靠性保证机制。包含交换机类型选择、消息持久化配…...

数据库中关于查询选课问题的解法

前言 今天上午起来复习了老师上课讲的选课问题。我总结了三个解法以及一点注意事项。 选课问题介绍 简单来说就是查询某某同学没有选或者选了什么课。然后查询出该同学的姓名,学号,课程号,课程名之类的。 sql文件我上传了。大家可以尝试练…...

用 UniApp 开发 TilePuzzle:一个由 CodeBuddy 主动驱动的拼图小游戏

我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 起心动念:从一个小游戏想法开始 最近在使用 UniApp 做练手项目的时候,我萌生了一个小小…...

golang 安装gin包、创建路由基本总结

文章目录 一、安装gin包和热加载包二、路由简单场景总结 一、安装gin包和热加载包 首先终端新建一个main.go然后go mod init ‘项目名称’执行以下命令 安装gin包 go get -u github.com/gin-gonic/gin终端安装热加载包 go get github.com/pilu/fresh终端输入fresh 运行 &…...

组态王|组态王中如何添加西门子1200设备

哈喽,你好啊,我是雷工! 最近使用组态王采集设备数据,设备的控制器为西门子的1214CPU, 这里边实施边记录,以下为在组态王中添加西门子1200PLC的笔记。 1、新建 在组态王工程浏览器中选择【设备】→点击【新建】。 2、选择设备 和设备建立通讯要通过对应的设备驱动。 在…...

碎片笔记|PromptStealer复现要点(附Docker简单实用教程)

前言:本篇博客记录PromptStealer复现历程,主要分享环境配置过程中的一些经验。 论文信息:Prompt Stealing Attacks Against Text-to-Image Generation Models. USENIX, 2024. 开源代码:https://github.com/verazuo/prompt-stealin…...

Docker配置SRS服务器 ,ffmpeg使用rtmp协议推流+vlc拉流

目录 演示视频 前期配置 Docker配置 ffmpeg配置 vlc配置 下载并运行 SRS 服务 推拉流流程实现 演示视频 2025-05-18 21-48-01 前期配置 Docker配置 运行 SRS 建议使用 Docker 配置 Docker 请移步: 一篇就够!Windows上Docker Desktop安装 汉化完整指…...

c++学习之--- list

目录 ​编辑 一、list的定义: 二、list的模拟实现: 1、list的基本框架: 2、list的普通迭代器: 设计思想: 迭代器的一个特殊需求(c 对于重载->的一颗语法糖): 代码实现: 3、cons…...

【C++】set、map 容器的使用

文章目录 1. set 和 multiset 的使用1.1 set类的介绍1.2 set的构造和迭代器1.3 set 的增删查1.4 insert和迭代器调用示例1.5 find和erase使用示例1.6 multiset和set的差异 2. map 和 multimap 的使用2.1 map 类的介绍2.2 pair 类型介绍2.3 map 的构造和迭代器2.4 map 的增删查2…...