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

Postman接口测试工具的原理及应用详解(四)

本系列文章简介:

        在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景下,Postman作为一款功能强大、易于使用的接口测试工具,凭借其直观的操作界面和丰富的功能特性,受到了广大开发者和测试人员的青睐。

        Postman不仅仅是一个简单的HTTP请求发送工具,它更是一个完整的API开发环境。通过Postman,用户可以轻松构建和发送各种HTTP请求,包括GET、POST、PUT、DELETE等,同时还可以查看和分析API的响应结果。此外,Postman还支持模拟响应、断言验证、环境变量管理、集合创建与共享等高级功能,极大地提高了接口测试的效率和质量。

        本系列文章旨在深入探讨Postman接口测试工具的原理及应用。首先,我们将从HTTP请求与响应的基础出发,介绍Postman如何发送HTTP请求并接收响应。接着,我们将详细阐述Postman的核心功能,包括请求构建、响应查看、测试脚本编写、环境和变量管理以及集合的创建与共享等。然后,我们将结合具体案例,展示Postman在接口测试中的实际应用,包括测试流程的设计、与其他工具的集成、自动化测试的实现与优化等。最后,我们将分析Postman接口测试的局限性与挑战,并对未来接口测试工具的发展进行展望。

        通过本系列文章的阐述,大家将全面了解Postman接口测试工具的原理和应用,掌握其在接口测试中的使用方法和技巧,提高接口测试的效率和质量。同时,本系列文章也将为开发者和测试人员提供有益的参考和借鉴,推动接口测试技术的发展和应用。

        欢迎大家订阅《Java技术栈高级攻略》专栏(PS:近期会涨价),一起学习,一起涨分!

目录

一、引言

二、Postman核心功能及应用

2.1 请求构建与发送

2.2 响应查看与分析

2.3 测试脚本的编写与执行

2.3.1 JavaScript测试脚本的编写

2.3.2 测试脚本的自动化执行

2.4 环境和变量的管理

2.4.1 全局变量与环境变量的定义与使用

2.4.2 切换不同环境进行测试的方法

2.5 集合的创建与共享

2.5.1 将请求和测试脚本组织成集合

2.5.2 集合的导出与导入

三、Postman在接口测试中的应用实践

四、案例分析

五、Postman接口测试的局限性与挑战

六、结论与展望

七、结语


一、引言

        Postman是一个功能强大的接口测试工具,主要用于Web API和HTTP请求的调试。Postman是一个客户端工具,能够模拟用户发起的各类HTTP请求(如GET、POST、PUT、DELETE等)。它通过发送请求数据至服务端,并获取对应的响应结果,帮助开发人员验证响应中的数据是否与预期值相匹配。

        本文将跟随《Postman接口测试工具的原理及应用详解(三)》的进度,继续介绍Postman接口测试工具。希望通过本系列文章的学习,您将能够更好地理解Postman接口测试工具的内部工作原理,掌握Postman接口测试工具的使用技巧,以及通过合理的设计完成最佳实践,充分发挥优化Postman接口测试工具的潜力,为系统的高效运行提供有力保障。

二、Postman核心功能及应用

2.1 请求构建与发送

        详见《Postman接口测试工具的原理及应用详解(三)

2.2 响应查看与分析

        详见《Postman接口测试工具的原理及应用详解(三)

2.3 测试脚本的编写与执行

2.3.1 JavaScript测试脚本的编写

Postman的核心功能之一包括支持测试脚本的编写与执行,这使得用户可以在请求发送前后编写JavaScript脚本来进行各种测试和验证。以下是关于JavaScript测试脚本在Postman中编写与执行的详细说明:

1. 编写测试脚本的目的

  • 验证API响应的正确性。
  • 确保API满足预期的业务逻辑。
  • 捕获并报告潜在的问题或错误。

2. 测试脚本的编写位置

  • 在Postman中,测试脚本通常编写在请求的“Tests”选项卡下。

3. JavaScript测试脚本的编写

  • 使用pm对象:Postman提供了一个全局的pm对象,用于访问请求的响应和其他相关信息。
  • 编写断言:使用pm.test()函数编写断言,该函数接受一个描述性字符串和一个返回布尔值的函数。如果函数返回true,则断言通过;否则,断言失败。

4. 常见的断言示例

  • 断言响应状态码

pm.test("Status code is 200", function () { pm.response.to.have.status(200); });
  • 断言响应体内容

pm.test("Body contains user", function () { var jsonData = pm.response.json(); pm.expect(jsonData.name).to.eql("user"); });
  • 断言响应头信息

pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); });
  • 断言响应时间

pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); });


5. 执行测试脚本

  • 在Postman中发送请求后,测试脚本将自动执行。
  • 测试结果将显示在“Test Results”选项卡下,包括每个断言的结果(通过或失败)。

6. 测试脚本的调试

  • 如果测试脚本中有错误或不符合预期,可以使用Postman的“Console”选项卡进行调试,查看JavaScript的错误信息或打印的日志。

7. 注意事项

  • 编写测试脚本时,尽量保持简洁明了,避免冗余和复杂的逻辑。
  • 对于复杂的测试场景,可以考虑将测试脚本拆分成多个小的函数或模块,以提高可读性和可维护性。
  • 定期回顾和更新测试脚本,以确保它们与API的实际行为保持一致。

2.3.2 测试脚本的自动化执行

Postman的核心功能之一便是支持测试脚本的编写与执行,尤其是在自动化测试方面,Postman提供了强大的支持。以下是关于Postman测试脚本自动化执行的详细解释:

1. 测试脚本的编写

Postman允许用户在发送请求后,通过编写JavaScript脚本来进行断言验证和测试。这些测试脚本可以附加在请求的“Tests”选项卡下。

1.1 编写测试脚本

  • 使用JavaScript:Postman的测试脚本使用JavaScript编写,这为用户提供了丰富的功能和灵活性。
  • 内置库:Postman内置了如Chai和SuperAgent等库,这些库提供了许多断言方法和HTTP请求工具,使得测试脚本的编写更为便捷。
  • 脚本示例:例如,检查响应状态码是否为200,可以使用pm.test("Status code is 200", function () { pm.response.to.have.status(200); });

1.2 脚本编写规范

  • 命名规范:使用驼峰命名法(camelCase)为常量、变量、参数和函数命名。
  • 注释规范:注释应简洁明了,使用//进行单行注释,使用/* ... */进行多行注释或代码段描述。
  • 缩进和空行:严格执行缩进规则,使用空行来区分代码块。

2. 测试脚本的执行

在Postman中,测试脚本是自动执行的。每当请求发送完成后,Postman会立即执行与该请求相关联的测试脚本。

2.1 执行顺序

  • Pre-request Scripts:在请求发送到服务器之前执行,通常用于设置环境变量或动态生成请求数据。
  • Tests:在接收到服务器响应后执行,用于验证响应数据是否符合预期。

2.2 执行结果

  • 断言结果:每个断言都会返回一个布尔值,表示该断言是否通过。
  • 测试套件结果:整个测试套件的结果由所有断言的结果决定,所有断言都通过则测试套件通过,否则失败。

3. 自动化执行

Postman的自动化执行主要体现在集合(Collections)和Runner功能上。

3.1 集合(Collections)

  • 定义:集合是一组相关请求的集合,可以包含多个请求和测试脚本。
  • 用途:通过集合,可以组织和管理多个API测试,方便进行批量测试和自动化测试。

3.2 Runner

  • 功能:Runner是Postman提供的一个用于批量执行集合的工具。
  • 自动化测试:通过Runner,可以设定循环次数、延迟时间等参数,自动执行集合中的所有请求和测试脚本。
  • 结果输出:Runner会输出每个请求的响应数据和测试结果,方便用户进行结果分析和问题定位。

归纳

Postman通过提供测试脚本的编写和执行功能,以及集合和Runner等自动化工具,为用户提供了强大的自动化测试支持。用户可以根据需要编写测试脚本,并通过Runner进行批量和自动化的测试执行,从而提高测试效率和准确性。

2.4 环境和变量的管理

2.4.1 全局变量与环境变量的定义与使用

Postman中的环境和变量管理是其核心功能之一,允许用户为不同的API请求定义和重用值,从而增加请求的灵活性和可维护性。以下是关于全局变量和环境变量的定义与使用的详细说明:

1. 全局变量(Global Variables)

定义

  • 全局变量在整个Postman工作区中都是可用的,这意味着它们可以在任何集合、环境或请求中被引用。
  • 全局变量适用于那些在整个API测试过程中都保持不变的值,如通用的请求头、基础URL等。

使用

  • 设置全局变量:在Postman中,可以通过“Environments”面板中的“Globals”选项来设置全局变量。只需输入变量名和对应的值,然后点击保存即可。
  • 引用全局变量:在请求的任何部分(如URL、请求头、请求体等)中,可以通过双花括号{{variable_name}}的形式来引用全局变量。

2. 环境变量(Environment Variables)

定义

  • 环境变量允许用户为不同的环境(如开发、测试、生产等)定义不同的值。这在进行API测试时非常有用,因为我们可以根据不同的环境使用不同的变量值。
  • 在Postman中,可以创建多个环境,并为每个环境设置不同的变量值。一次只能激活一个环境。

使用

  • 创建环境:在Postman的“Environments”面板中,点击“+”按钮来创建一个新的环境,并为其命名。然后,在该环境下添加所需的变量名和对应的值。
  • 激活环境:在发送请求之前,需要从下拉列表中选择要激活的环境。这样,在请求中引用的环境变量就会使用当前激活环境的值。
  • 引用环境变量:与全局变量类似,在请求的任何部分中,可以通过双花括号{{variable_name}}的形式来引用环境变量。

注意事项

  • 当一个变量在全局和环境中都被定义时,环境变量会覆盖全局变量的值。
  • 为了避免混淆和错误,建议在使用变量时尽量保持变量名的唯一性和一致性。
  • 可以通过编写脚本(如Pre-request Script和Tests)来动态地设置或更新全局或环境变量的值。

通过合理地使用全局变量和环境变量,可以极大地提高Postman测试脚本的可读性、可维护性和灵活性。

2.4.2 切换不同环境进行测试的方法

Postman在环境和变量的管理方面的核心功能为用户提供了在不同环境下进行API测试的便利。以下是关于如何使用Postman切换不同环境进行测试的详细方法:

1. 添加和编辑环境

  1. 打开环境管理器:点击Postman界面右上角的倒三角图标,选择“Manage Environments”。
  2. 添加新环境:点击“Add”按钮,输入新环境的名称(如“开发环境”、“测试环境”或“生产环境”)和描述(可选)。
  3. 设置环境变量:在新建或已有的环境中,可以添加和编辑变量。这些变量通常包括API的URL、端口、认证信息等。例如,可以添加名为“testip”和“testport”的变量,分别用于存储测试环境的IP地址和端口号。
  4. 保存环境:完成环境变量的设置后,点击“Add”或“Update”按钮保存环境。

2. 引用环境变量

  1. 在请求中使用环境变量:在创建或编辑API请求时,可以在URL、请求头、请求体等字段中引用环境变量。在Postman中,使用双大括号{{变量名}}的格式来引用变量。例如,在URL中引用“testip”和“testport”变量,可以写成http://{{testip}}:{{testport}}/api/resource
  2. 切换环境:在Postman界面的右上角,有一个环境选择器。点击这个选择器,可以选择之前创建的环境。选择不同的环境后,Postman会自动将请求中的环境变量替换为所选环境的对应值。

3. 使用集合(Collections)和文件夹(Folders)组织API请求

  1. 创建集合:在Postman中,可以创建集合来组织相关的API请求。集合可以包含多个请求,并可以设置集合级别的环境变量。
  2. 使用文件夹:在集合内部,可以使用文件夹来进一步组织请求。例如,可以将登录、注册、获取用户信息等相关的请求放在同一个文件夹中。

4. 自动化测试

  1. 使用Runner进行批量测试:Postman的Runner功能允许用户选择一个集合或文件夹,并设置运行次数、延迟等参数,自动执行其中的所有请求和测试脚本。这可以大大提高测试效率。
  2. 查看测试结果:Runner运行完成后,会生成一个详细的测试结果报告,包括每个请求的响应时间、状态码、响应数据等信息。用户可以根据这些信息来分析和定位问题。

归纳

Postman通过提供环境和变量的管理功能,使得用户能够轻松地在不同环境下进行API测试。通过添加和编辑环境、引用环境变量、使用集合和文件夹组织请求以及自动化测试等功能,用户可以更加高效地进行API开发和测试工作。

2.5 集合的创建与共享

2.5.1 将请求和测试脚本组织成集合

Postman的集合功能允许用户将相关的请求和测试脚本组织在一起,以便更有效地管理和执行API测试。以下是关于如何在Postman中创建和共享集合的详细步骤:

1. 创建集合

  1. 打开Postman:首先,确保你已经安装了Postman并打开了应用程序。
  2. 创建新集合
    • 在左侧导航栏中,点击“New”按钮。
    • 在弹出的菜单中,选择“Collection”。
  3. 输入集合信息
    • 在弹出的对话框中,为集合输入一个名称。
    • 你可以选择性地添加描述,以便更好地说明集合的用途或内容。
    • 点击“Create”按钮完成集合的创建。
  4. 添加请求到集合
    • 在新创建的集合中,点击“Add Request”来添加新的请求。
    • 输入请求的名称、URL、请求方法、请求头、请求体等信息,然后保存请求到该集合中。
  5. 组织请求
    • 根据需要,你可以在集合中创建文件夹来进一步组织请求。
    • 例如,你可以按照API的功能或模块来创建不同的文件夹,并将相关的请求放入对应的文件夹中。

2. 共享集合

Postman提供了多种方式来共享集合,以便团队成员或其他用户能够访问和使用这些集合。

  1. 通过链接共享
    • 在集合的右上角,点击“…”图标。
    • 选择“Share Collection”。
    • 在弹出的窗口中,选择“Collection Link”选项卡。
    • 点击“Generate Link”按钮生成集合的共享链接。
    • 将生成的链接分享给其他人,他们就可以通过该链接访问和使用你的集合了。
    • 注意:生成的链接将集合反映为时间的快照,如果更改了集合,必须重新生成链接,否则其他人不能看到集合的更改。
  2. 通过文件共享
    • 在集合的右上角,点击“…”图标。
    • 选择“Download”或“Export”选项。
    • 选择要导出的格式(如JSON),然后点击“Download”或“Export”按钮。
    • 将导出的文件发送给其他人,他们就可以将文件导入到Postman中并使用你的集合了。
  3. 通过Postman团队库共享(仅适用于Postman Pro用户):
    • 如果你使用的是Postman Pro版本,你还可以使用团队库来共享集合。
    • 这需要你先在Postman中创建一个团队,并将集合添加到团队库中。
    • 然后,团队成员就可以通过团队库来访问和使用这些集合了。

归纳

Postman的集合功能为用户提供了一个强大的工具来组织和管理API请求和测试脚本。通过创建集合,用户可以将相关的请求和测试脚本组合在一起,以便更有效地进行API开发和测试。同时,Postman还提供了多种方式来共享集合,使得团队成员或其他用户能够方便地访问和使用这些集合。

2.5.2 集合的导出与导入

Postman中的集合(Collection)功能允许用户将多个相关的API请求组织在一起,以便进行统一的管理、测试和分享。以下是关于集合的导出与导入的详细步骤和说明:

集合的导出

  1. 导出步骤
    • 打开Postman,在左侧导航栏中找到你想要导出的集合。
    • 右键点击该集合,选择“Export”(导出)选项。
    • 在弹出的窗口中,你可以选择导出的格式,通常建议选择“Collection v2.1”(推荐)格式,因为它提供了更好的兼容性和更多的功能。
    • 选择保存文件的位置和文件名,然后点击“Save”(保存)按钮。
  2. 导出信息
    • 导出的文件是一个JSON格式的文件,它包含了集合的所有信息,如请求、响应、测试脚本、预请求脚本、环境变量等。
    • 通过导出集合,你可以将集合备份到本地,或者与其他人分享你的集合。

集合的导入

  1. 导入步骤
    • 打开Postman,点击左上角的“Import”(导入)按钮。
    • 在弹出的窗口中,你可以选择要导入的文件。如果你之前导出的是一个文件夹,你也可以选择导入整个文件夹。
    • 选择文件后,点击“Open”(打开)按钮。
    • Postman会解析你选择的文件,并将其中的集合导入到当前的工作空间中。
  2. 导入注意事项
    • 如果导入的集合与当前工作空间中的集合有重名的情况,Postman会提示你选择是覆盖原有的集合,还是作为副本导入。
    • 如果导入的集合中包含了环境变量或全局变量,而这些变量在当前工作空间中已经存在,Postman会根据导入的变量值进行更新或覆盖。

集合的共享

除了导出和导入集合外,Postman还提供了在线分享集合的功能。但需要注意的是,这个功能在Postman的免费版中可能有一定的限制。

  1. 分享步骤
    • 在集合的右侧,点击“...”按钮,选择“Share”(分享)选项。
    • 你可以选择将集合分享给特定的团队成员,或者生成一个公共的链接,让任何人都可以访问。
    • 在分享之前,请确保集合中没有包含任何敏感信息,如API密钥等。
  2. 分享管理
    • 分享后,你可以在Postman中跟踪谁在使用你的集合,并管理他们的访问权限。
    • 如果需要,你可以随时收回分享权限或停止分享。

通过集合的导出、导入和分享功能,你可以更方便地管理和使用你的API请求集合,提高工作效率和协作效率。

三、Postman在接口测试中的应用实践

        详见《Postman接口测试工具的原理及应用详解(五)

四、案例分析

        详见《Postman接口测试工具的原理及应用详解(六)

五、Postman接口测试的局限性与挑战

        详见《Postman接口测试工具的原理及应用详解(六)

六、结论与展望

        详见《Postman接口测试工具的原理及应用详解(六)

七、结语

        文章至此,已接近尾声!希望此文能够对大家有所启发和帮助。同时,感谢大家的耐心阅读和对本文档的信任。在未来的技术学习和工作中,期待与各位大佬共同进步,共同探索新的技术前沿。最后,再次感谢各位的支持和关注。您的支持是作者创作的最大动力,如果您觉得这篇文章对您有所帮助,请分享给身边的朋友和同事!

相关文章:

Postman接口测试工具的原理及应用详解(四)

本系列文章简介: 在当今软件开发的世界中,接口测试作为保证软件质量的重要一环,其重要性不言而喻。随着前后端分离开发模式的普及,接口测试已成为连接前后端开发的桥梁,确保前后端之间的数据交互准确无误。在这样的背景…...

扛鼎中国AI搜索,天工凭什么?

人类的创作不会没有瓶颈,但AI的热度可不会消停。 大模型之战依旧精彩,OpenAI选择在Google前一天举行发布会,两家AI企业之间的拉扯赚足了热度。 反观国内,百模大战激发了大家对于科技变革的热切期盼,而如今行业已逐渐…...

【Ant Design Vue的更新日志】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...

Elasticsearch环境搭建|ES单机|ES单节点模式启动|ES集群搭建|ES集群环境搭建

文章目录 版本选择单机ES安装与配置创建非root用户导入安装包安装包解压配置JDK环境变量配置single-node配置JVM参数后台启动|启动日志查看启动成功,访问终端访问浏览器访问 Kibana安装修改配置后台启动|启动日志查看浏览器访问 ES三节点集群搭建停止es服务域名配置…...

System.currentTimeMillis() JAVA 转C#

JAVA中的System.currentTimeMillis() ,指获取当前时间与1970年1月1日00:00:00 GMT之间所差的毫秒数的方法。 这个方法返回的是一个long类型的值,表示从某个固定时间点(通常是UNIX纪元,即1970年1月1日00:00:00 GMT)到…...

人机交互新维度|硕博电子发布双编码器操作面板、无线操作面板等新品

6月15日,硕博电子召开了一场新品发布会,向业界展示了多项前沿技术成果,其中备受瞩目的当属SPM-KEYP-D08双编码器操作面板、SPM-KEYP-D16W无线操作面板、SPR-HT-XK12A无线手持发射端以及SPQ-WT-B01洒水车专用控制面板。这些创新产品的亮相&…...

简单shell

目录 预备知识 fork 进程等待 wait waitpid 环境变量 概念 分类 常见的环境变量及其用途 环境变量的查看与设置 exec系列 函数解释 命名理解 简单shell 预备知识 fork fork 是 Linux 和许多其他类 Unix 系统中的一个重要系统调用,它用于创建一个新的…...

Spring Boot + FreeMarker 实现动态Word文档导出

Spring Boot FreeMarker 实现动态Word文档导出 在现代企业应用中,文档自动化生成是一项提升工作效率的重要功能。Spring Boot与FreeMarker的组合,为开发者提供了一个强大的平台,可以轻松实现动态Word文档的导出。本文将指导你如何使用Sprin…...

3D生物打印的未来:多材料技术的突破

多材料生物打印技术是近年来发展迅速的一项技术,为组织工程和再生医学带来了新的机遇,可以帮助我们更好地理解人体组织的结构和功能,并开发新的治疗方法。 1. 组织构建 复杂性模拟:多材料生物打印技术能够构建具有层次结构和异质…...

充电宝口碑哪个好?好用充电宝品牌有哪些?好用充电宝推荐

充电宝作为我们日常生活和出行的重要伙伴,其品质和性能直接影响着我们的使用体验。今天,就来和大家探讨一下充电宝口碑哪个好,为大家盘点那些备受赞誉的好用充电宝品牌,并向您推荐几款值得入手的充电宝,外出时不再担心…...

Pytorch-----(6)

一 、问题 如何计算基于不同变量的操作如矩阵乘法。 二、具体实现 0.4版本以前,张量是包裹在变量之中的,后者有三个属性grad、volatile和 requires_grad属性。(grad 就是梯度属性,requires_grad属性就是 是否需要存储梯度&#x…...

leetcode hot100 第三题:最长连续序列(Java)

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,1,3,2] 输出:4 解…...

利用Jaspar进行转录因子结合位点预测

前期我们介绍了如何进行ChIP-qPCR验证,里面提到了一个比较重要的因素——扩增范围的选择及引物的设计。相比双荧光素酶、酵母单杂-点对点验证等允许完整启动子验证的实验,ChIP-qPCR要求单次验证的范围尽量控制在150-200bp内。但一个基因的启动子一般有2-…...

Ubuntu添加系统字体

(2024.6.30) 系统字体保存路径在/usr/share/fonts下,如果此目录下缺少字体,则使用其他可视化api(如Python的pygame库)的默认配置时可能会出现乱码问题。 往Ubuntu中添加字体的方法 方法一:手…...

深度学习相关概念及术语总结2

目录 76.AUC77.DBSCAN聚类78.贝叶斯个性化排序79.BPRBandit算法 76.AUC AUC(Area Under the Curve)是一种常用的评价指标,用于衡量分类模型的性能。AUC值代表了模型在不同阈值下的真阳性率(True Positive Rate)和假阳…...

基于改进滑模、经典滑模、最优滑模控制的永磁同步电机调速系统MATLAB仿真

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 针对永磁同步电机调速系统的响应性能和抗干扰能力问题,本文做了四个仿真,分别为:永磁同步电机的PID控制调速系统、基于传统滑模控制的永磁同步电机的调速系统、最…...

windows环境下创建python虚拟环境

windows环境下创建python虚拟环境 使用virtualenv库创建虚拟环境,可使不同的项目处于不同的环境中 安装方法: pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple pip install virtualenvwrapper-win -i https://pypi.tuna.tsinghua…...

Fragment切换没变化?解决办法在这里

大家好,今天跟大家分享下如何避免fragment切换失败。方法其实很简单,只要在onCreate方法中初始化一个默认的fragment即可。 //开始事务FragmentTransaction transaction getActivity().getSupportFragmentManager().beginTransaction();transaction.rep…...

Linux系统防火墙iptables(下)

备份与还原iptables规则设置 1、yum -y install iptables iptables-services 安装iptables软件包 2、systemctl start iptables.service 开启服务 3、systemctl enable iptables.service 开机自启 我们对iptables命令行中的设置,都是临时设置,只要遇到服…...

你需要精益管理咨询公司的N+1个理由

近年来,精益管理作为一种被全球众多知名企业验证过的成功管理模式,越来越受到企业的青睐。但是,为何在实施精益管理的过程中,众多企业纷纷选择请咨询公司来协助呢?今天,我们就来一起揭秘这背后的原因。 1. …...

[机器学习]-3 万字话清从传统神经网络到深度学习

神经网络(Neural Networks, NNs)是机器学习的一种重要方法,灵感来源于生物神经系统,由大量互联的节点(称为神经元或单元)组成,通过调整这些节点间的连接权重来学习和表示复杂的非线性关系。传统…...

网络安全等级保护2.0(等保2.0)全面解析

一、等保2.0的定义和背景 网络安全等级保护2.0(简称“等保2.0”)是我国网络安全领域的基本制度、基本策略、基本方法。它是在《中华人民共和国网络安全法》指导下,对我国网络安全等级保护制度进行的重大升级。等保2.0的发布与实施&#xff0c…...

用Lobe Chat部署本地化, 搭建AI聊天机器人

Lobe Chat可以关联多个模型,可以调用外部OpenAI, gemini,通义千问等, 也可以关联内部本地大模型Ollama, 可以当作聊天对话框消息框来集成使用 安装方法参考: https://github.com/lobehub/lobe-chat https://lobehub.com/zh/docs/self-hosting/platform/…...

基于ARM的通用的Qt移植思路

文章目录 实验环境介绍一、确认Qt版本二、确认交叉编译工具链三、配置Qt3.1、修改qmake.conf3.2、创建autoConfig.sh配置文件 四、编译安装Qt五、移植Qt安装目录六、配置Qt creator6.1、配置qmake6.2、配置GCC编译器6.3、配置G编译器6.4、配置编译器套件6.5、创建应用 七、总结…...

IT专业入门,高考假期预习指南

七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。 一、基础课程预习指南 IT专业是一个广泛的领域,涵盖了从软件开…...

芯片详解——AD7606C

芯片详解——AD7606C AD7607C 是一款由 Analog Devices(模拟器件公司)生产的 6 通道同步采样模数转换器(ADC),适用于高速数据采集系统。 工作原理 AD7607C 的工作原理主要包括以下几个步骤: 模拟信号输入:AD7607C 有六个模拟输入通道,可以同时进行采样。这些模拟信号…...

IDEA 编译单个Java文件

文章目录 一、class文件的生成位置二、编译单个文件编译项目报错Error:java: 无效的源发行版: 8 一、class文件的生成位置 file->project structure->Modules 二、编译单个文件 选中文件,点击recompile 编译项目报错 Error:java: 无效的源发行版: 8 Fi…...

人工智能业务分析

人工智能业务分析的组成图 #mermaid-svg-SKV0WrbMSANzQz4U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SKV0WrbMSANzQz4U .error-icon{fill:#552222;}#mermaid-svg-SKV0WrbMSANzQz4U .error-text{fill:#552222;s…...

随机文本生成器

目录 开头程序程序的流程图程序打印的效果(不必细看&#xff0c;因为字符太多)例1例2例3 结尾 开头 大家好&#xff0c;我叫这是我58。看&#xff01;这下面有一个程序。 程序 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <random> #includ…...

java中输入输出流的继承关系

在 Java 中,输入输出流的继承关系主要围绕两个抽象基类展开:字节流基类 InputStream 和 OutputStream,以及字符流基类 Reader 和 Writer。这些类形成了 Java I/O 系统的基础,提供了丰富的子类以适应不同的输入输出需求。 字节流 字节流用于处理原始的二进制数据。 Input…...

c++应用网络编程之一基本介绍

一、网络编程介绍 c编程的应用场景在前面分析过&#xff0c;一个重要的方向就是网络编程。一般来说&#xff0c;开发者说的服务端编程在c方向上简单的可以认为是网络编程。首先需要说明的&#xff0c;本系列不对网络编程的相关基础知识展开详细的说明&#xff0c;因为这种知识…...

Web后端开发概述环境搭建项目创建servlet生命周期

Web开发概述 web开发指的就是网页向后再让发送请求,与后端程序进行交互 web后端(javaEE)程序需要运行在服务器中 这样前端才可以对其进行进行访问 什么是服务器? 解释1: 服务器就是一款软件,可以向其发送请求,服务器会做出一个响应.可以在服务器中部署文件&#xff0c;让…...

Java 位运算详解

位运算是一种直接在二进制位上进行操作的方式。位运算符包括按位与 (&)、按位或 (|)、按位异或 (^)、按位非 (~)、左移 (<<)、右移 (>>) 和无符号右移 (>>>)。这些操作符用于操作整型数据类型&#xff0c;如 int 和 long。 一、按位与 (&) 按位…...

智能体实战:开发一个集成国内AI平台的GPTs,自媒体高效智能助手

文章目录 一&#xff0c;什么是GPTs二&#xff0c;开发GPTs1&#xff0c;目标2&#xff0c;开发2.1 打开 GPTS&#xff1a;https://chat.openai.com/gpts2.2 点击 Create 创建一个自己的智能体 2.3 配置GPTs2.4 配置外挂工具2.4.1 配置Authentication-授权2.4.1.1 生成语聚AI的…...

完美世界|单机版合集(共22个版本)

前言 我是研究单机的老罗&#xff0c;今天给大家带来的是完美世界的单机版合集&#xff0c;一共22个版本。本人亲自测试了一个版本&#xff0c;运行视频如下&#xff1a; 完美世界|单机版合集 先看所有的版本的文件&#xff0c;文件比较大&#xff0c;准备好空间&#xff0c;差…...

Jenkins的一些记录

设置环境变量 在 Jenkins 流水线中&#xff0c;取决于使用的是声明式还是脚本式流水线&#xff0c;设置环境变量的方法不同。 声明式流水线支持 environment 指令&#xff0c;而脚本式流水线的使用者必须使用 withEnv 步骤。 pipeline {agent anyenvironment { CC clang}stag…...

讲讲js中的prototype和__proto__

在Javascript中&#xff0c;prototype和__proto__是两个重要的概念&#xff0c;在对象的原型链中扮演重要的角色。 prototype prototype是js函数的内置属性&#xff0c;每个函数都有一个prototype属性&#xff0c;它是一个指针&#xff0c;指向一个对象&#xff08;原型对象&a…...

JavaScript的学习之DOM的查询(一)

一、获得元素 通过document对象调用&#xff1a; getElementById()&#xff1a;通过id属性获取一个元素节点对象getElementsByTagName()&#xff1a;通过标签名获取一组元素节点对象getElementsByName()&#xff1a;通过name属性来获取一组元素节点对象 核心学习代码 <scrip…...

充电宝哪个品牌比较好一点?多维度实测西圣、绿联、倍思充电宝!

在这个快节奏的时代&#xff0c;智能手机已成为我们日常生活不可或缺的一部分&#xff0c;而充电宝作为其能量补给站&#xff0c;重要性不言而喻。面对市场上琳琅满目的充电宝品牌与型号&#xff0c;如何挑选一款既实用又高效的充电伴侣&#xff0c;成为了许多消费者的难题。今…...

ubuntu安装QT

以QT5.15.14为例 下载地址&#xff1a;Index of /archive/qt 安装步骤&#xff1a; 解压qt-everywhere-src-5.15.14运行&#xff1a; cd qt-everywhere-src-5.15.14 mkdir build cd build ../configure -prefix /opt/qt5.15.14 -opensource -confirm-license make -j16 sudo…...

DataGrip 2024 po for Mac 数据库管理工具解

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件&#xff08;适合自己的M芯片版或Intel芯片版&#xff09;&#xff0c;将其从左侧拖入右侧文件夹中&#xff0c;等待安装完毕2、应用程序显示软件图标&#xff0c;表示安装成功3、打开访达&#xff0c;点击【文…...

《C++ Primer》导学系列:第 13 章 - 拷贝控制

13.1 拷贝、赋值与析构函数 拷贝控制是C++中类设计的重要组成部分,用于管理对象的复制、赋值和销毁过程。理解并正确实现拷贝控制函数(拷贝构造函数、拷贝赋值运算符和析构函数)对于编写健壮和高效的C++程序至关重要。 13.1.1 拷贝构造函数 拷贝构造函数用于创建对象的副…...

c++ 图论2 深度优先算法和广度优先算法

修改一下深度优先算法和广度优先算法&#xff0c;标出每一个节点相对于遍历起始位置的层级&#xff0c;遍历起始起点为第一层&#xff0c;和第一层相连的节点为第二层&#xff0c;以此类推 定义一个新的结构 struct NodeWithLevel {TreeNode* node;int level;NodeWithLevel(T…...

【Qt】初识QtQt Creator

一.简述Qt 1.什么是Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式&#xff0c;开发者可以通过简单的拖拽和组合来实现…...

Android 11.0 修改系统显示大小导航栏消失

Android 11.0 修改系统显示大小导航栏消失 1.显示大小设置为大时&#xff0c;导航栏图标不显示。 设置为大&#xff0c;较大&#xff0c;最大时&#xff0c;导航栏图标不显示。 2.开始怀疑是导航栏被隐藏了&#xff0c;各种折腾无效。 3.发现&#xff1a; frameworks/base/pa…...

RocketMQ源码学习笔记:Producer启动流程

这是本人学习的总结&#xff0c;主要学习资料如下 马士兵教育rocketMq官方文档 目录 1、Overview1.1、创建MQClientInstance1.1.1、检查1.1.1、MQClientInstance的ID 1.2、MQClientInstance.start() 1、Overview 这是发送信息的代码样例&#xff0c; DefaultMQProducer produ…...

Node.js 和浏览器环境中都使用 WebSocket

使用WebSocket为什么不适配双端 浏览器环境本身就支持 WebSocket&#xff0c;直接使用 JavaScript 内置的 WebSocket 对象来建立连接。 Node中本身并没有内置 WebSocket 协议的支持&#xff0c;所以需要使用第三方库 ws来实现 WebSocket 功能。 一. 使用跨平台 WebSocket 库 …...

css美化滚动条样式

效果展示 实现 滚动条宽&#xff0c;高度 /* 整体滚动条 */ ::-webkit-scrollbar {width: 10px; }/* 滚动条轨道 */ ::-webkit-scrollbar-track {background-color: #ffffff;border-radius: 6px; }/* 滚动条滑块 */ ::-webkit-scrollbar-thumb {background-color: #888;borde…...

由浅入深,走进深度学习(补充篇:转置卷积和FCN)

本期内容是针对神经网络层结构的一个补充&#xff0c;主要内容是&#xff1a;转置卷积和全连接卷积网络 相关内容&#xff1a; 由浅入深&#xff0c;走进深度学习&#xff08;2&#xff09;_卷积层-CSDN博客 由浅入深&#xff0c;走进深度学习&#xff08;补充篇&#xff1a…...

Linux基础篇——目录结构

基本介绍 Linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构中的最上层是根目录"/"&#xff0c;然后在根目录下再创建其他的目录 在Linux中&#xff0c;有一句经典的话&#xff1a;在Linux世界里&#xff0c;一切皆文件 Linux中根目录下的目录 具体的…...

2024西安国际储能产业博览会将于12月5日开幕!

2024西部国际储能产业博览会 同期举办&#xff1a;2024西部国际氢能源及燃料电池产业博览会 2024年12月5-7日 西安国际会展中心 规划展会规模&#xff1a; 50,000 ㎡ 450 60000人次 20场 展区面积 预邀展商 专业观众 行业…...

NSSCTF-Web题目18(反序列化)

目录 [NISACTF 2022]babyserialize 1、题目 2、知识点 3、思路 [SWPUCTF 2022 新生赛]ez_ez_unserialize 4、题目 5、知识点 6、思路 [NISACTF 2022]babyserialize 1、题目 2、知识点 反序列化、绕过过滤、命令执行 3、思路 <?php include "waf.php";…...

8625 火车上的无奈

这个问题可以通过计数来解决。对于每个case&#xff0c;我们可以计算出F和M的数量。如果F和M的数量相等&#xff0c;那么就可以形成一个环&#xff0c;否则就不能。 以下是一个C的解决方案&#xff1a; #include <iostream> #include <string>using namespace st…...

CVD-Risk-Prevent 个性化心血管健康推荐系统:基于医学指南的规则框架与 LLM 的结合

CVD-Risk-Prevent 个性化心血管健康推荐系统&#xff1a;基于医学指南的规则框架与 LLM 的结合 提出背景推荐算法的选择选择疑问健康指标管理心血管风险因素目标设定实现目标的计划推荐的多维性 算法关键点&#xff1a;如何将心血管健康指标转换为多维推荐&#xff1f;确定风险…...

数据结构历年考研真题对应知识点(数组和特殊矩阵)

目录 3.4数组和特殊矩阵 3.4.2数组的存储结构 【二维数组按行优先存储的下标对应关系(2021)】 3.4.3特殊矩阵的压缩存储 【对称矩阵压缩存储的下标对应关系(2018、2020)】 【上三角矩阵采用行优先存储的应用(2011)】 【三对角矩阵压缩存储的下标对应关系(2016)】 3.4.…...

Word中输入文字时,后面的文字消失

当在Word中输入文字时&#xff0c;如果发现后面的文字消失&#xff0c;通常是由以下3个原因造成的&#xff1a; 检查Insert键状态&#xff1a;首先确认是否误按了Insert键。如果是&#xff0c;请再次按下Insert键以切换回插入模式。在插入模式下&#xff0c;新输入的文字会插入…...

QLExpress入门及实战总结

文章目录 1.背景2.简介3.QLExpress实战3.1 基础例子3.2 低代码实战3.2.1 需求描述3.2.1 使用规则引擎3.3.2 运行结果 参考文档 1.背景 最近研究低代码实现后端业务逻辑相关功能&#xff0c;使用LiteFlow作为流程编排后端service服务, 但是LiteFlow官方未提供图形界面编排流程。…...

对北京新发地当时菜品三十天内价格分布式爬取(1)---(获取当时菜品数据并构建请求数据推入redis)

本次项目网页url 北京新发地: http://www.xinfadi.com.cn/priceDetail.html 我们首先创建一个爬虫用于收集url与请求的data然后b,c,d使用RedisCrawlSpider来对数据进行分布式爬取 在此篇中我们仅介绍爬虫a 一.获取当天所有菜品数据 这是一条请求的负载我们只需要对pubDateSta…...

开源大模型与闭源大模型那个更好?

开源大模型和闭源大模型各有其优势和劣势&#xff0c;究竟哪个更好取决于具体的应用场景、组织目标、资源和能力等因素。以下是两种模型的一些优势对比&#xff1a; 开源大模型的优势&#xff1a; 1. 社区支持与合作&#xff1a;开源大模型能够借助全球开发者社区的力量&#x…...

闲话 .NET(7):.NET Core 能淘汰 .NET FrameWork 吗?

前言 虽然说&#xff0c;目前 .NET FrameWork 上的大部分类都已经移植到 .NET Core 上&#xff0c;而且 .NET FrameWork 也已经停止了更新&#xff0c;未来必然是 .NET Core 的天下&#xff0c;但要说现在 .NET Core 就能淘汰 .NET FrameWork&#xff0c;我觉得为时尚早&#…...

工厂电子看板显示屏让生产信息推送更便捷

在当今竞争激烈的制造业领域&#xff0c;高效的生产管理至关重要。而工厂电子看板显示屏作为一种先进的信息展示工具&#xff0c;正逐渐成为工厂提升生产效率和管理水平的得力助手。 一、工厂电子看板配备了统一的管理后台 这一创新设计带来了极大的便利。通过电子看板后台&am…...

YOLOv10 论文学习

论文链接&#xff1a;https://arxiv.org/pdf/2405.14458 代码链接&#xff1a;https://github.com/THU-MIG/yolov10 解决了什么问题&#xff1f; 实时目标检测是计算机视觉领域的研究焦点&#xff0c;目的是以较低的延迟准确地预测图像中各物体的类别和坐标。它广泛应用于自动…...