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. 添加和编辑环境
- 打开环境管理器:点击Postman界面右上角的倒三角图标,选择“Manage Environments”。
- 添加新环境:点击“Add”按钮,输入新环境的名称(如“开发环境”、“测试环境”或“生产环境”)和描述(可选)。
- 设置环境变量:在新建或已有的环境中,可以添加和编辑变量。这些变量通常包括API的URL、端口、认证信息等。例如,可以添加名为“testip”和“testport”的变量,分别用于存储测试环境的IP地址和端口号。
- 保存环境:完成环境变量的设置后,点击“Add”或“Update”按钮保存环境。
2. 引用环境变量
- 在请求中使用环境变量:在创建或编辑API请求时,可以在URL、请求头、请求体等字段中引用环境变量。在Postman中,使用双大括号
{{变量名}}
的格式来引用变量。例如,在URL中引用“testip”和“testport”变量,可以写成http://{{testip}}:{{testport}}/api/resource
。 - 切换环境:在Postman界面的右上角,有一个环境选择器。点击这个选择器,可以选择之前创建的环境。选择不同的环境后,Postman会自动将请求中的环境变量替换为所选环境的对应值。
3. 使用集合(Collections)和文件夹(Folders)组织API请求
- 创建集合:在Postman中,可以创建集合来组织相关的API请求。集合可以包含多个请求,并可以设置集合级别的环境变量。
- 使用文件夹:在集合内部,可以使用文件夹来进一步组织请求。例如,可以将登录、注册、获取用户信息等相关的请求放在同一个文件夹中。
4. 自动化测试
- 使用Runner进行批量测试:Postman的Runner功能允许用户选择一个集合或文件夹,并设置运行次数、延迟等参数,自动执行其中的所有请求和测试脚本。这可以大大提高测试效率。
- 查看测试结果:Runner运行完成后,会生成一个详细的测试结果报告,包括每个请求的响应时间、状态码、响应数据等信息。用户可以根据这些信息来分析和定位问题。
归纳
Postman通过提供环境和变量的管理功能,使得用户能够轻松地在不同环境下进行API测试。通过添加和编辑环境、引用环境变量、使用集合和文件夹组织请求以及自动化测试等功能,用户可以更加高效地进行API开发和测试工作。
2.5 集合的创建与共享
2.5.1 将请求和测试脚本组织成集合
Postman的集合功能允许用户将相关的请求和测试脚本组织在一起,以便更有效地管理和执行API测试。以下是关于如何在Postman中创建和共享集合的详细步骤:
1. 创建集合
- 打开Postman:首先,确保你已经安装了Postman并打开了应用程序。
- 创建新集合:
- 在左侧导航栏中,点击“New”按钮。
- 在弹出的菜单中,选择“Collection”。
- 输入集合信息:
- 在弹出的对话框中,为集合输入一个名称。
- 你可以选择性地添加描述,以便更好地说明集合的用途或内容。
- 点击“Create”按钮完成集合的创建。
- 添加请求到集合:
- 在新创建的集合中,点击“Add Request”来添加新的请求。
- 输入请求的名称、URL、请求方法、请求头、请求体等信息,然后保存请求到该集合中。
- 组织请求:
- 根据需要,你可以在集合中创建文件夹来进一步组织请求。
- 例如,你可以按照API的功能或模块来创建不同的文件夹,并将相关的请求放入对应的文件夹中。
2. 共享集合
Postman提供了多种方式来共享集合,以便团队成员或其他用户能够访问和使用这些集合。
- 通过链接共享:
- 在集合的右上角,点击“…”图标。
- 选择“Share Collection”。
- 在弹出的窗口中,选择“Collection Link”选项卡。
- 点击“Generate Link”按钮生成集合的共享链接。
- 将生成的链接分享给其他人,他们就可以通过该链接访问和使用你的集合了。
- 注意:生成的链接将集合反映为时间的快照,如果更改了集合,必须重新生成链接,否则其他人不能看到集合的更改。
- 通过文件共享:
- 在集合的右上角,点击“…”图标。
- 选择“Download”或“Export”选项。
- 选择要导出的格式(如JSON),然后点击“Download”或“Export”按钮。
- 将导出的文件发送给其他人,他们就可以将文件导入到Postman中并使用你的集合了。
- 通过Postman团队库共享(仅适用于Postman Pro用户):
- 如果你使用的是Postman Pro版本,你还可以使用团队库来共享集合。
- 这需要你先在Postman中创建一个团队,并将集合添加到团队库中。
- 然后,团队成员就可以通过团队库来访问和使用这些集合了。
归纳
Postman的集合功能为用户提供了一个强大的工具来组织和管理API请求和测试脚本。通过创建集合,用户可以将相关的请求和测试脚本组合在一起,以便更有效地进行API开发和测试。同时,Postman还提供了多种方式来共享集合,使得团队成员或其他用户能够方便地访问和使用这些集合。
2.5.2 集合的导出与导入
Postman中的集合(Collection)功能允许用户将多个相关的API请求组织在一起,以便进行统一的管理、测试和分享。以下是关于集合的导出与导入的详细步骤和说明:
集合的导出
- 导出步骤:
- 打开Postman,在左侧导航栏中找到你想要导出的集合。
- 右键点击该集合,选择“Export”(导出)选项。
- 在弹出的窗口中,你可以选择导出的格式,通常建议选择“Collection v2.1”(推荐)格式,因为它提供了更好的兼容性和更多的功能。
- 选择保存文件的位置和文件名,然后点击“Save”(保存)按钮。
- 导出信息:
- 导出的文件是一个JSON格式的文件,它包含了集合的所有信息,如请求、响应、测试脚本、预请求脚本、环境变量等。
- 通过导出集合,你可以将集合备份到本地,或者与其他人分享你的集合。
集合的导入
- 导入步骤:
- 打开Postman,点击左上角的“Import”(导入)按钮。
- 在弹出的窗口中,你可以选择要导入的文件。如果你之前导出的是一个文件夹,你也可以选择导入整个文件夹。
- 选择文件后,点击“Open”(打开)按钮。
- Postman会解析你选择的文件,并将其中的集合导入到当前的工作空间中。
- 导入注意事项:
- 如果导入的集合与当前工作空间中的集合有重名的情况,Postman会提示你选择是覆盖原有的集合,还是作为副本导入。
- 如果导入的集合中包含了环境变量或全局变量,而这些变量在当前工作空间中已经存在,Postman会根据导入的变量值进行更新或覆盖。
集合的共享
除了导出和导入集合外,Postman还提供了在线分享集合的功能。但需要注意的是,这个功能在Postman的免费版中可能有一定的限制。
- 分享步骤:
- 在集合的右侧,点击“...”按钮,选择“Share”(分享)选项。
- 你可以选择将集合分享给特定的团队成员,或者生成一个公共的链接,让任何人都可以访问。
- 在分享之前,请确保集合中没有包含任何敏感信息,如API密钥等。
- 分享管理:
- 分享后,你可以在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. …...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...

elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

【Linux】使用1Panel 面板让服务器定时自动执行任务
服务器就是一台24小时开机的主机,相比自己家中不定时开关机的主机更适合完成定时任务,例如下载资源、备份上传,或者登录某个网站执行一些操作,只需要编写 脚本,然后让服务器定时来执行这个脚本就可以。 有很多方法实现…...