PYTHON专题-(8)我错了该怎么整?
什么是异常处理?
- 异常处理是一种机制,用于在程序执行期间发生错误或异常时,对发生的异常进行捕获、处理和恢复,以确保程序能够继续执行或正确地终止。
- 异常处理可以包括捕获异常、处理异常,以及执行相应的操作来处理异常,如输出错误信息、记录日志、回滚操作等。
- 通过异常处理,可以提高程序的健壮性和可靠性,防止程序因异常而崩溃或出现未预期的错误结果。
为什么会发生程序异常?
程序异常发生的原因可能有多种,包括但不限于以下几种情况:
- 代码错误:程序中的语法错误、逻辑错误或者算法错误可能导致异常。这些错误可能包括错误的变量类型、错误的运算、错误的循环或条件判断等。
- 系统资源不足:程序在运行过程中可能需要访问系统的资源,例如内存、磁盘空间、网络等。如果资源不足,程序可能会抛出异常。
- 外部输入错误:程序可能会接收来自外部的输入,例如用户输入、文件读取等。如果输入格式错误或者输入数据不符合预期,程序可能会出现异常。
- 并发问题:在多线程或者多进程的程序中,不正确的同步操作可能导致异常。例如,多个线程同时写入同一个变量可能导致数据竞争和异常。
- 异常情况处理不完善:程序可能没有正确处理特殊情况和异常情况,导致异常的发生。例如,程序没有处理文件不存在的情况,或者没有处理网络连接中断的情况。
这些只是一些常见的造成程序异常的原因,实际上还有很多其他的可能性。在开发和调试程序时,需要仔细分析异常的原因,并进行相应的修复和处理。
什么是Python的异常处理机制?
Python的异常处理机制是一种处理程序运行过程中出现错误的方式。当程序出现错误时,会抛出一个异常对象,而不是直接停止程序的执行。异常处理机制可以捕获并处理这些异常,以避免程序的崩溃或异常情况的发生。Python中的异常处理机制包括以下几个关键词和语法结构:
- try-except语句:用于捕获并处理异常。try块中的代码是需要被监视的代码块,当try块中的代码抛出异常时,程序会跳转到对应的except块来处理异常。
- except语句:用于定义异常处理的代码块。可以使用多个except语句来捕获不同类型的异常,也可以使用一个except语句来捕获多种类型的异常。
- else语句:可选的语句块,当try块中的代码没有抛出异常时,会执行else块中的代码。
- finally语句:可选的语句块,无论try块中的代码是否抛出异常,都会执行finally块中的代码。
异常处理机制还可以使用一些内置的异常类以及自定义的异常类来表示不同的错误类型。当程序抛出异常时,可以在except块中使用异常类来捕获特定的异常,并进行相应的处理。例如:
try:# 需要被监视的代码块# 抛出异常 except ExceptionType1:# 处理类型1的异常 except ExceptionType2:# 处理类型2的异常 else:# 当没有异常时执行的代码 finally:# 无论是否有异常都会执行的代码
最常见的异常类型有哪些?
常见的异常类型有:
- NullPointerException(空指针异常):当试图访问一个空对象的属性或调用空对象的方法时发生。
- IndexOutOfBoundsException(下标越界异常):当访问数组、列表或字符串等数据结构时,使用了超出有效范围的索引。
- ArrayIndexOutOfBoundsException(数组下标越界异常):当试图访问数组中不存在的元素时发生。
- ClassCastException(类转换异常):当试图将一个对象强制转换为不兼容的类时发生。
- IllegalArgumentException(非法参数异常):当向方法传递了一个不合法或不适当的参数时发生。
- ArithmeticException(算术异常):当在数学运算中发生错误,例如除以零时发生。
- IOException(输入输出异常):当在输入输出操作中发生错误时发生,例如文件不存在或无法读写文件。
- FileNotFoundException(文件未找到异常):当试图打开一个不存在的文件时发生。
- NoSuchElementException(元素不存在异常):当尝试从空集合或迭代器中访问不存在的元素时发生。
- RuntimeException(运行时异常):包括一系列非受检异常,例如数组相关异常、类型转换异常等。这些异常不需要显式地捕获或声明,可以选择性地处理。
当我不确定会发生异常的类型该怎么处理?
- 当你不确定会发生异常的类型时,可以使用更通用的异常类型来处理,例如捕获Exception异常。这样可以确保无论发生什么类型的异常,都能被捕获并进行相应的处理。例如:
try: # 可能会发生异常的代码 except Exception as e: # 处理异常的代码 print("发生异常:", e)
- 另外,你也可以使用多个except块来处理不同类型的异常,然后在最后使用一个except块来处理未知类型的异常。例如:
try: # 可能会发生异常的代码 except ValueError: # 处理ValueError异常的代码 except TypeError: # 处理TypeError异常的代码 except Exception as e: # 处理其他类型的异常的代码 print("发生异常:", e)
什么是错误调用栈?
- 错误调用栈(Error call stack)是指在程序运行过程中发生错误时,记录错误发生位置和调用关系的数据结构。当程序出现错误时,错误调用栈会跟踪记录错误发生的位置,从错误发生的最内层函数开始,逐级记录调用的函数和位置,以便于在错误排查和调试过程中定位问题。
- 错误调用栈一般以栈的形式组织,每个栈帧代表一个函数调用,包含函数的返回地址、参数和局部变量等信息。当程序执行过程中发生错误,系统会将错误信息和当前的调用栈信息保存下来,以便后续分析和处理。
- 通过错误调用栈,开发人员可以追踪错误发生的路径,从而帮助定位错误的原因和位置。常见的错误调用栈信息包括函数名、文件名、行号等,利用这些信息可以快速定位到导致问题的代码,以便进行修复和优化。
- 错误调用栈在软件开发中是一种非常重要的调试工具,可以帮助开发人员快速定位和解决程序错误和异常。
python的错误调用栈是什么样的?
- Python的错误调用栈是一个记录代码执行过程中的函数调用情况的堆栈信息。当发生错误时,Python会将错误信息及调用栈打印出来,以便于开发人员定位错误的发生位置。
- 调用栈显示了函数调用的顺序,每一行显示了调用的函数名称和行号。最底部是错误的具体信息,最顶部是程序的入口点。例如:
Traceback (most recent call last):File "main.py", line 3, in <module>function1()File "main.py", line 7, in function1function2()File "main.py", line 11, in function2raise ValueError("Something went wrong") ValueError: Something went wrong
- 在这个例子中,错误的具体信息是
ValueError: Something went wrong
,错误发生在function2
的第11行。function2
被function1
调用,而function1
又被主程序调用。通过错误调用栈,可以逐级追溯函数调用过程,帮助开发人员找到错误发生的位置,并定位问题所在。
怎么主动抛出错误?
- 在Python中,可以使用
raise
关键字来主动抛出错误。def divide_numbers(a, b):if b == 0:raise ValueError("除数不能为0")return a / btry:result = divide_numbers(10, 0) except ValueError as e:print("发生错误:", str(e))
- 此代码中,定义了一个名为
divide_numbers
的函数,用于执行两个数字的除法运算。如果除数为0,则使用raise
关键字抛出一个ValueError
类型的错误,并通过ValueError
的构造函数传递错误消息。然后,使用try-except
语句捕获并处理这个错误,将错误消息打印出来。当运行这段代码时,将输出以下结果:发生错误: 除数不能为0
- 您可以根据具体的情况选择抛出不同类型的错误,例如
ValueError
、TypeError
等,或者您还可以自定义自己的错误类型。
怎么自定义错误类型?
- 要自定义错误类型,可以通过创建一个新的类来实现。例如:
class MyCustomError(Exception):def __init__(self, message):self.message = messagedef __str__(self):return self.message
- 在这个示例中,创建了一个名为
MyCustomError
的新类,它继承自Exception
类。我们可以在__init__
方法中定义自定义错误的初始化逻辑,并在__str__
方法中定义错误的字符串表示形式。然后,可以使用raise
语句来抛出自定义错误。示例如下:def divide_by_zero(number):if number == 0:raise MyCustomError("Cannot divide by zero")else:return 10 / numbertry:result = divide_by_zero(0) except MyCustomError as e:print(e)
- 在上面的示例中定义了一个名为
divide_by_zero
的函数,它尝试将一个数字除以零。如果数字为零,就抛出一个自定义错误,否则进行正常除法运算。在 try-except 块中,我们捕获了自定义错误,并打印错误消息。- 自定义错误类型可以让我们更好地组织和抛出自己定义的错误,以便在程序中更好地处理异常情况。
自定义的错误类型一般是继承哪个类?
- 一般情况下,自定义的错误类型会继承自内置的异常类Exception。
异常类Exception又是继承了哪个类?
- 异常类Exception继承自基类BaseException。
什么是调试代码?
- 调试代码是指在编程过程中检查和修复错误的过程。
- 调试代码的目的是找出导致程序运行不正确或崩溃的问题,并对代码进行修改以解决这些问题。
- 调试过程中常用的方法包括打印输出、断点调试、跟踪变量的值变化等。调试代码需要有耐心和细心,通过逐步调试排除错误,最终使程序达到预期的运行结果。
怎么调试python代码?
调试Python代码可以使用以下方法:
- 使用print语句:在代码的关键位置添加print语句输出变量的值,以便观察程序执行过程中变量的变化。
- 使用断点:在需要调试的代码行前添加断点(在大多数集成开发环境(IDE)中都可以通过点击行号实现),然后在程序运行时会暂停在该断点处,可以查看变量的值、单步执行代码等。
- 使用pdb模块:pdb是Python标准库中的一个调试器,可以通过在代码中插入pdb.set_trace()语句来进入调试模式,然后可以使用命令来控制程序的执行和查看变量的值。
- 使用IDE的调试工具:大多数IDE都提供了调试功能,可以设置断点、单步执行、查看变量值等功能,可以更方便地进行代码调试。
- 使用日志:在关键代码位置插入日志输出语句,将变量的值输出到日志文件中,然后通过查看日志文件来调试代码。
以上方法根据个人习惯和具体情况选择适合自己的调试方式。
什么是断言?
- 断言(Assertion)是编程中一种用于检查程序内部错误的方法。它会在程序执行过程中,对某个条件进行检测,如果该条件不符合预期,则会抛出异常或终止程序的执行。
- 断言通常用于检查程序的输入、输出,或者验证程序的逻辑是否正确。它可以帮助开发者在程序中发现潜在的问题,并在出现错误时提供有用的错误信息,以便更快地定位和修复问题。
- 断言通常包括一个条件表达式和一个可选的错误信息,当条件不满足时,断言会抛出一个异常或终止程序执行,并显示错误信息。在开发阶段,断言可以用来验证程序的正确性,而在发布版本中,断言通常会被禁用或移除,以提高程序的性能。
怎么使用断言?
- 在Python中,断言用于验证某个条件是否为真。如果条件为真,则程序继续执行;如果条件为假,则程序抛出 AssertionError 异常,并且执行被断言的语句。断言的语法格式为:
assert 条件, 错误信息
- 其中,条件是需要验证的条件表达式,错误信息是可选的,用于在断言失败时显示错误消息。
def divide(a, b):assert b != 0, "除数不能为0"return a / bprint(divide(10, 2)) # 输出: 5.0 print(divide(10, 0)) # 触发断言异常,输出: AssertionError: 除数不能为0
- 在上面的示例中,当调用 divide(10, 0) 时,由于除数为0,条件 b != 0 不满足,因此触发了断言异常,并且输出了错误信息 "除数不能为0"。
什么是单元测试?
- 单元测试是一种软件开发中的测试方法,用于测试软件的最小可测试单元,通常是一个函数、方法或类。单元测试可以确定软件的每个独立单元是否按照预期进行工作。它通常由开发人员编写并在软件开发过程中运行,以确保每个单元的功能和行为符合预期。
- 单元测试的目的是隔离和测试软件中的个别部分,以确保每个部分都可以独立地正常工作,而不会受到其他部分的影响。通过单元测试,开发人员可以快速发现和修复代码中的错误和缺陷,提高代码质量和可维护性。
- 单元测试通常使用自动化测试框架来编写和执行测试用例,并提供断言和验证方法来验证预期的输出和行为。它也可以模拟和替代外部依赖项,以便更好地控制测试环境和结果。
- 总之,单元测试是一种验证软件的最小可测试单元的功能和行为是否符合预期的测试方法。它是软件开发中的重要环节,可以提高代码质量、减少错误和缺陷,并增加软件的可靠性和可维护性。
怎么自动化测试框架来编写和执行测试用例?
编写和执行自动化测试用例的框架可以有多种方式,下面是一个常见的步骤:
选择一个适合你项目的自动化测试框架,例如Selenium、Appium、TestNG等。这些框架提供了丰富的功能和API来编写和执行测试用例。
安装和配置所选择的测试框架。通过使用构建工具(如Maven或Gradle)来管理依赖项,并确保框架的正确安装和设置。
创建一个测试项目。在项目中创建一个测试用例的目录结构,可以按功能或模块进行组织。在这些目录中,创建测试用例的类和方法。
编写测试用例。使用测试框架提供的API来编写测试用例。测试用例应该是独立和可重复的,每个测试用例应该测试特定的功能或场景。
运行测试用例。使用框架提供的运行器或插件来执行测试用例。可以通过命令行、集成开发环境(IDE)或连续集成工具(如Jenkins)来运行测试。
分析测试结果。框架通常会生成测试报告,用于显示测试用例的执行结果。可以查看测试报告来了解测试用例的通过情况和失败原因。
调试和修复失败的测试用例。如果测试用例失败,可以使用调试工具和日志来定位问题。修复问题后,重新运行测试用例。
定期执行测试用例。为了保持代码质量和功能稳定性,建议定期运行自动化测试。可以通过设置计划任务或使用持续集成工具来定期执行测试用例。
总而言之,编写和执行自动化测试用例的框架可以根据项目需求和技术栈的选择而有所不同。以上步骤提供了一个通用的指导来开始编写和执行测试用例。
什么是文档测试?
- 文档测试(Document testing)是一种软件测试方法,它以软件系统的相关文档(如需求文档、设计文档、用户手册等)为基础,通过对文档内容的验证和检查,来评估文档的准确性、完整性和一致性,以及文档与实际系统功能之间的匹配程度。
- 文档测试的目的是确认文档是否与实际系统相符,是否能够正确地引导开发人员、测试人员和用户进行软件开发、测试和使用。
怎么进行文档测试?
文档测试是一种评估软件文档质量和准确性的方法,以下是进行文档测试的步骤:
确定测试目标:明确需要测试的文档,例如需求规格说明书、设计文档、用户手册等。
设计测试用例:根据文档内容编写测试用例,用于检验文档中描述的功能是否正确、完整。
执行测试用例:根据设计的测试用例,按照文档中描述的步骤和预期结果进行测试。
记录测试结果:记录每个测试用例的执行结果,包括通过、失败或有问题等。
分析测试结果:对测试结果进行分析,查找文档中的错误或遗漏,并记录下来。
提出改进建议:根据测试结果,提出改进文档的建议,例如修正错误、添加更详细的说明等。
重复测试过程:根据改进建议进行文档修订后,重新执行测试用例,确认改进是否有效。
完成测试:当确认文档测试达到预期目标后,可认为文档测试完成。
注意事项:
- 在进行文档测试之前,确保文档已经完成且准备就绪。
- 在测试过程中,需要仔细阅读文档并理解其中的内容。
- 需要注意测试用例的覆盖范围和测试数据的准备。
- 测试结果需要准确记录,并及时反馈给相应的人员。
- 进行文档测试时,应该与其他形式的测试(例如单元测试、集成测试等)相结合,以获得更全面的测试覆盖。
相关文章:
PYTHON专题-(8)我错了该怎么整?
什么是异常处理? 异常处理是一种机制,用于在程序执行期间发生错误或异常时,对发生的异常进行捕获、处理和恢复,以确保程序能够继续执行或正确地终止。异常处理可以包括捕获异常、处理异常,以及执行相应的操作来处理异常…...
【自然资源】设施农业用地的学习梳理
【自然资源】设施农业用地的学习梳理 什么是设施农业用地? 2019年12月17日,自然资源部 、农业农村部印发的《关于设施农业用地管理有关问题的通知》规定:设施农业用地包括农业生产中直接用于作物种植和畜禽水产养殖的设施用地。其中&#x…...

【秋招笔试】24-07-27-OPPO-秋招笔试题(后端卷)
🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 💡 01.二进制反转游戏 问题描述 K小姐…...

JS 补充内容
一、dir 打印对象 二、获取 html 中的元素 常用的两种方式 其他获取元素的方法 三、 innerText 四、innerHTML 五、修改元素的值 六、鼠标放上去,显示图片的提示文字 img . title 七、获取 N ~ M 之间的随机整数 八、修改属性样式 1. style 2. className 将后面 …...

H5+JS 4096小游戏
主要实现 1.使用WASD或方向按钮控制游戏 2.最高值4096,玩到4096视为胜利 3.随机生成2、4、8方块 4.移动方块 5.合并方块 JS代码干了什么 初始化游戏界面:创建游戏板和控制按钮。 定义游戏相关变量:如棋盘大小、棋盘状态、得分等。 初始化棋…...

常见中间件漏洞(二、WebLogin合集)
目录 二、WebLogic Weblogic介绍 2.1 后台弱口令GetShell 漏洞描述 影响范围 环境搭建 漏洞复现 2.2 CVE-2017-3506 漏洞描述 影响版本 环境搭建 漏洞复现 2.3 CVE-2019-2725 漏洞描述 影响版本 环境搭建 漏洞复现 2.4 CVE-2018-2628 漏洞描述 漏洞影响 环…...

LeetCode LCR147.最小栈
LeetCode LCR147.最小栈 思路🤔: 建立两个栈,一个栈正常入栈出栈,一个栈只用于出入最小数,当push值小于minst栈顶才入栈,当pop值等于minst栈顶才出栈。 代码🔎: class MinStack { pu…...
目标检测的算法有哪些
目标检测是计算机视觉领域的一个重要任务,它涉及识别图像或视频中的对象,并确定它们的位置和类别。随着深度学习的发展,出现了许多高效且准确的目标检测算法。以下是一些主要的目标检测算法: 两阶段检测器(Region-bas…...
HDU多校-交通管控
Problem - 7498 (hdu.edu.cn) 直接dfs显然不行,达到了2^500,那么我们可以考虑枚举所有红绿灯的状态,总共有三种状态,k的范围小于等于10,因此所有状态数为3^10不会超,所以通过三进制状压dp即可完成…...

【C++】string类
🚀个人主页:奋斗的小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、标准库中的string类💥1.1string类的常用接口💥string类对象常见…...
Python中各类常用内置转换函数
Python中各类常用内置转换函数 函数功能说明int(x)将 x 转换为整数类型float(x)将 x 转换为浮点数类型str(x)将 x 转换为字符串repr(x)将 x 转换为表达式字符串eval(str)计算在字符串中的有效Python表达式,并返回一个对象list(s)将序列 s 转换为一个列表tuple(s)将…...
LangChain与JWT:构建安全认证的桥梁
LangChain与JWT:构建安全认证的桥梁 在现代Web应用和微服务架构中,安全认证是保护数据和资源访问的关键。JSON Web Tokens(JWT)作为一种广泛使用的开放标准,为安全传输提供了一种简洁而自包含的方式。LangChain&#…...

ai写作软件哪个好用?怎么帮自己找到好用的ai写作软件?
ai写作软件的出现是随着ai技术的迅猛发展下的产物,它主要应用于内容创作领域,可以是文章内容创作、视频内容创作、绘图创作等等,不同的ai写作软件可能应用的领域不同,但也有的ai写作软件应用的范围却是比较广。今天小编主要来跟大…...
关于gunicorn+flask+docker模型的高并发部署
这是一个结合了现代Web技术的高效部署方案,旨在提高Web应用的并发处理能力和可扩展性。以下是对该模型高并发部署的详细解析: 一、模型概述 GunicornFlaskDocker模型结合了Flask的轻量级和灵活性、Gunicorn的高并发处理能力以及Docker的容器化优势&…...
35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入:…...

ViT论文详解
文章目录 前言一、ViT理论二、模型结构三、实验结果总结 前言 ViT是谷歌团队在2021年3月发表的一篇论文,论文全称是《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》一张图片分成16x16大小的区域:使用Transformer进行按比…...

常见中间件漏洞(三、Jboss合集)
目录 三、Jboss Jboss介绍 3.1 CVE-2015-7501 漏洞介绍 影响范围 环境搭建 漏洞复现 3.2 CVE-2017-7504 漏洞介绍 影响范围 环境搭建 漏洞复现 3.3 CVE-2017-12149 漏洞简述 漏洞范围 漏洞复现 3.4 Administration Console弱囗令 漏洞描述 影响版本 环境搭建…...
ios如何动态添加控件及动画
在ViewController中添加 // // ViewController.m // iosstudy2024 // // Created by figo on 2024/8/5. //#import "ViewController.h"interface ViewController () property (weak, nonatomic) IBOutlet UIButton *xigua; - (IBAction)xigua:(id)sender;endimpl…...

【数学建模】——【A题 信用风险识别问题】全面解析
目录 1.题目 2.解答分析 问题1:指标筛选 1.1 问题背景 1.2 数据预处理 1.3 特征选择方法 1.4 多重共线性检测 1.5 实现步骤 问题2:信用评分模型 2.1 问题背景 2.2 数据分割 2.3 处理不平衡数据 2.4 模型选择与理由 问题3:模型对…...

javascript:检测图片的宽高
1 方案描述 JavaScript提供了非常方便的FileReader和Image对象,可以帮助我们轻松实现这个功能。具体步骤如下: 获取文件输入框:首先,我们需要获取到用户选择的文件。读取文件内容:然后,通过FileReader对象…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...

Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
ffmpeg(三):处理原始数据命令
FFmpeg 可以直接处理原始音频和视频数据(Raw PCM、YUV 等),常见场景包括: 将原始 YUV 图像编码为 H.264 视频将 PCM 音频编码为 AAC 或 MP3对原始音视频数据进行封装(如封装为 MP4、TS) 处理原始 YUV 视频…...
Spring事务传播机制有哪些?
导语: Spring事务传播机制是后端面试中的必考知识点,特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发,全面剖析Spring事务传播机制,帮助你答得有…...
零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)
经过前面几期的内容我们学习了很多网络安全的知识,而这期内容就涉及到了前面的第六期-RCE模块,第七期-File inclusion模块,第八期-Unsafe Filedownload模块。 什么是"遍历"呢:对学过一些开发语言的朋友来说应该知道&…...