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

一文搞定Postman(菜鸟必看)

什么是Postman?

Postman是一个可扩展的 API 测试工具,可以快速集成到 CI/CD 管道中。它于 2012 年作为 Abhinav Asthana 的一个副项目启动,旨在简化测试和开发中的 API 工作流程。API 代表应用程序编程接口,它允许软件应用程序通过 API 调用相互通信。

为什么使用Postman?

如今,Postman 软件拥有超过 400 万用户,已成为接口调试/测试首选工具,原因如下:

  1. 便捷性——要使用Postman工具,只要计算机上安装了Postman应用程序,登录自己的帐户,就可以随时随地轻松访问文件。
  2. collection的使用 – Postman 允许用户为其 Postman API 调用创建collection。每个collection可以创建子文件夹和多个请求。这有助于组织您的测试套件。
  3. 协作 – 可以导入或导出collection和环境,从而轻松共享文件。直接链接也可用于共享collection。
  4. 创建环境——拥有多个环境有助于减少测试的重复,因为可以使用相同的collection但用于不同的环境。这是进行参数化的地方,我们将在以后的课程中讨论这一点。
  5. 创建测试 – 可以将测试检查点(例如验证 HTTP 响应状态是否成功)添加到每个 Postman API 调用中,这有助于确保测试覆盖率。
  6. 自动化测试 – 通过使用 Collection Runner 或 Newman,可以多次迭代运行测试,从而节省重复测试的时间。
  7. 调试 – Postman 控制台有助于检查检索了哪些数据,从而可以轻松调试测试。
  8. 持续集成——凭借其支持持续集成的能力,可以维护开发实践。

如何使用Postman执行API

下面是Postman工作区。让我们逐步探索如何使用 Postman工具。

  1. 新建 – 在此处创建新的请求、collection或环境。
  2. 导入 – 用于导入collection或环境。有从文件、文件夹导入、链接或粘贴原始文本等选项。
  3. Runner – 可以通过 Collection Runner 执行自动化测试。这将在下一课中进一步讨论。
  4. 打开新窗口 – 单击此按钮打开新选项卡、Postman 窗口或 Runner 窗口。
  5. 我的工作区 – 您可以单独或作为团队创建新的工作区。
  6. invite – 通过邀请团队成员在工作空间中进行协作。
  7. 历史记录 – 您过去发送的请求将显示在历史记录中。这样可以轻松跟踪您所做的操作。
  8. collection – 通过创建collection来组织您的测试套件。每个collection可能有子文件夹和多个请求。请求或文件夹也可以复制。
  9. 请求选项卡 – 显示正在打开的请求标题。默认情况下,对于没有标题的请求,将显示“无标题请求”。
  10. HTTP 请求 – 单击此按钮将显示不同请求的下拉列表,例如 GET、POST、COPY、DELETE 等。在 Postman API 测试中,最常用的请求是 GET 和 POST。
  11. 请求URL – 可以在此处输入 API 。
  12. 保存 – 如果请求有更改,必须单击“保存”,以免新更改丢失或被覆盖。
  13. params – 可以在此处写入请求所需的参数,例如键值。
  14. 鉴权 – 为了访问 API,需要适当的授权。它可以是用户名和密码、不记名令牌等形式。
  15. headers – 可以根据组织的需要设置标头,例如内容类型 JSON。
  16. body – 可以在此处自定义 POST 请求中常用的请求中的详细信息。
  17. 请求预处理脚本 – 这些脚本将在请求之前执行。通常,设置环境的预请求脚本用于确保测试将在正确的环境中运行。
  18. 测试模块 – 这些是在请求期间执行的脚本。进行测试很重要,因为它设置检查点来验证响应状态是否正常、检索到的数据是否符合预期以及其他测试。

使用 GET 请求

Get 请求用于从给定 URL 信息。我们将在本 Postman 教程中的所有示例中使用以下 URL

https://jsonplaceholder.typicode.com/users		

在工作区中

  1. 将HTTP 请求设置为 GET。
  2. 在请求 URL 字段中输入链接
  3. 单击发送
  4. 将看到 200 OK 消息
  5. body 中应该有 10 个用户结果,这表明写的测试已成功运行。

处理 POST 请求

Post 请求与 Get 请求不同,因为用户将数据添加到端点时会进行数据操作。

步骤 1) 单击新选项卡以创建新请求。

步骤 2) 在新选项卡中

  1. 将 HTTP 请求设置为 POST。
  2. 在请求网址中输入相同的链接: https://jsonplaceholder.typicode.com/users
  3. 切换到“body”选项卡

步骤3)在body中,

  1. 单击原始
  2. 选择 JSON

步骤 4)仅复制并粘贴上一个获取请求的一个用户结果,如下所示。确保已使用成对的大括号和方括号正确复制代码。将 id 更改为 11,将 name 更改为任何所需的名称。您还可以更改其他详细信息,例如地址。

[{"id": 11,"name": "Krishna Rungta","username": "Bret","email": "Sincere@april.biz","address": {"street": "Kulas Light","suite": "Apt. 556","city": "Gwenborough","zipcode": "92998-3874","geo": {"lat": "-37.3159","lng": "81.1496"}},"phone": "1-770-736-8031 x56442","website": "hildegard.org","company": {"name": "Romaguera-Crona","catchPhrase": "Multi-layered client-server neural-net","bs": "harness real-time e-markets"}}
]

步骤 5) 接下来,

  1. 单击发送。
  2. 状态:显示201 created
  3. 发布的数据显示在body中。

如何参数化请求

数据参数化是 Postman 最有用的功能之一。可以使用带有参数的变量,而不是使用不同的数据创建相同的请求。这些数据可以来自数据文件或环境变量。参数化有助于避免重复相同的测试,并且迭代可用于自动化测试。

参数是通过使用双大括号创建的:{{sample}}。让我们看一下之前请求中使用参数的示例:

现在让我们创建一个参数化 get 请求。

步骤1)

  1. 将 HTTP 请求设置为 GET
  2. 输入此链接: https://jsonplaceholder.typicode.com/users。将链接的第一部分替换为参数,例如 {{url}}。请求 url 现在应为 {{url}}/users。
  3. 单击发送。

因为我们还没有设置参数的来源,所以不应该有任何响应。

步骤2)使用参数需要设置环境变量

  1. 单击“眼睛”图标
  2. 单击编辑将变量设置为可在所有collection中使用的全局环境。

步骤3) 在变量中,

  1. 将名称设置为 url,即 https://jsonplaceholder.typicode.com
  2. 单击“save”。

步骤 4)如果看到下一个页面,请单击“关闭”

步骤 5)返回请求,然后单击发送,展示请求结果。

如何创建Postman测试

Postman 测试是添加到请求中的 JavaScript 代码,可帮助用户验证结果,例如成功或失败状态、预期结果比较等。它通常以 pm.test 开头。它可以与其他工具中可用的断言、验证命令进行比较。

让我们使用 Postman 对上一课中的参数化请求进行一些基本的API 测试。

步骤 1)转到上一教程中的 GET 用户请求。

  1. 切换到测试选项卡,右侧是片段代码。
  2. 在代码片段部分中,单击“状态代码:代码为 200。

该窗格是自动填充的

步骤 2)现在单击发送,显示测试结果。

步骤 3)返回测试选项卡,让我们添加另一个测试。这次我们将预期结果与实际结果进行比较。

在代码片段部分中,单击“响应body:JSON 值检查”。我们将检查 Leanne Graham 是否具有用户 ID 1。

步骤4)

  1. 将代码中的“您的测试名称”替换为“检查 id1 的用户是否是 Leanne Graham”,以便测试名称准确指定我们要测试的内容。
  2. 将 jsonData.value 替换为 jsonData[0].name。要获取路径,请先检查获取结果中的body。由于 Leanne Graham 的用户 ID 为 1,因此 jsonData 位于第一个结果中,该结果应从 0 开始。如果您想获取第二个结果,请使用 jsonData[1] 等获取后续结果。
  3. 在 eql 中,输入“Leanne Graham”
pm.test("Check if user with id1 is Leanne Graham", function () {var jsonData = pm.response.json();pm.expect(jsonData[0].name).to.eql("Leanne Graham");
});

步骤 5)单击发送。现在有两个针对请求已通过的测试结果。

如何创建collections

collection在组织测试套件中发挥着重要作用,它可以导入和导出,从而可以轻松地在团队之间共享collection。在本教程中,我们将学习如何创建和执行collection。

让我们开始创建一个collection:

步骤1)点击页面左上角的新建按钮。

步骤 2)选择collection,弹出创建collection窗口。

步骤3)输入所需的collection名称和描述,然后单击创建。

步骤4)返回之前的Get请求,单击“保存”

步骤5)

  1. 选择Postman测试collection。
  2. 单击“保存到 Postman Test collection”

步骤 6) Postman Test collection现在包含一个请求。

步骤 7)对之前的 Post 请求重复步骤 4-5,以便collection现在有两个请求。

如何使用 Collection Runner 运行collection

运行collection有两种方法,即 Collection Runner 和 Newman。让我们首先在 Collection Runner 中执行collection。

步骤 1)单击页面顶部“import”按钮旁边的“Runner”按钮。

步骤 2) Collection Runner 页面应如下所示,以下是各个字段的说明

步骤 3)通过设置以下内容来运行 Postman 测试collection:

  • 选择Postman Test collection-设置迭代次数为3
  • 设置延迟为2500毫秒
  • 单击运行 ...按钮

步骤 4) 单击“运行”按钮后,应显示“运行结果”页面,可以看到测试的执行情况。

  1. 测试完成后,可以查看测试状态(通过或失败)以及每次迭代的结果。
  2. 会看到获取请求的通过状态
  3. 由于我们没有对 Post 进行任何测试,因此有一条消息表明该请求没有进行任何测试。

如何使用 Newman 运行collection

运行collection的另一种方式是通过 Newman。Newman 和 Collection Runner 之间的主要区别如下:

  1. Newman 是 Postman 的附加组件。您需要将其与本机应用程序分开安装。
  2. Newman 使用命令行,而 Collection Runner 有 GUI。
  3. Newman可用于持续集成。

要安装 Newman 并从中运行我们的collection,请执行以下操作:

步骤1)使用此链接安装nodejs:Index of /download/

步骤2)打开命令行并输入

npm install -g newman

Newman 现在应该已安装在您的计算机上。

步骤 3)安装 Newman 后,让我们返回 Postman 工作区。在“collection”框中,单击三个点,现在应该出现选项,选择export。

步骤 4)选择将collection导出为collection v2.1(推荐),然后单击导出。

步骤 5)选择所需的位置,然后单击“保存”。建议为 Postman 测试创建一个特定的文件夹。

步骤 6)我们还需要导出我们的环境。单击“全局”中环境下拉列表旁边的眼睛图标,选择“下载为 JSON”。选择所需保存的位置,然后单击“保存”。建议环境与collection位于同一文件夹中。

步骤 7)现在应该将环境导出到与 Collection 相同的本地目录。

步骤 8)现在返回命令行并将目录更改为保存collection和环境的位置。

 cd C:\Users\Asus\Desktop\Postman Tutorial

步骤 9)使用以下命令运行collection:

 newman run PostmanTestCollection.postman_collection.json -e Testing.postman_globals.json

运行结果现在应如下所示。

作为指导,请参考一些用于执行的基本纽曼代码:

  1. 仅运行collection。如果没有环境或测试数据文件依赖性,则可以使用此方法。
newman run <collection name>
  1. 运行collection和环境。-e 指示符用于环境。
newman run <collection name> -e <environment name>
  1. 使用所需的编号运行collection。迭代次数。
newman run <collection name> -n <no.of iterations>
  1. 使用数据文件运行。
newman run <collection name> --data <file name>  -n <no.of iterations> -e <environment name>
  1. 设置延迟时间。这很重要,因为如果由于请求在端点服务器上的前一个请求完成处理之前就启动而没有延迟地运行,则测试可能会失败。
newman run <collection name> -d <delay time>

相关文章:

一文搞定Postman(菜鸟必看)

什么是Postman&#xff1f; Postman是一个可扩展的 API 测试工具&#xff0c;可以快速集成到 CI/CD 管道中。它于 2012 年作为 Abhinav Asthana 的一个副项目启动&#xff0c;旨在简化测试和开发中的 API 工作流程。API 代表应用程序编程接口&#xff0c;它允许软件应用程序通…...

位图+布隆过滤器+海量数据并查集(它们都是哈希的应用)

一)位图: 首先计算一下存储一下10亿个整形数据&#xff0c;需要多大内存呢&#xff0c;多少个G呢&#xff1f; 2^3010亿&#xff0c;10亿个字节 byte kb mb gb 100000000个字节/1024/1024/10241G 所以10亿个字节就是1G&#xff0c;所以40亿个字节就是4G&#xff0c;也就是10个整…...

MYSQL:Select语句顺序

SELECT子句及其顺序整理表格&#xff1a; 子句 说明是否必须使用SELECT 要返回的列或表达式是FROM 从中检索数据的表仅在从表选择数据使用WHERE 行级过滤否GROUP BY 分组说明仅在按组计算聚…...

Pytest系列-数据驱动@pytest.mark.parametrize(7)

简介 unittest 和 pytest参数化对比&#xff1a; pytest与unittest的一个重要区别就是参数化&#xff0c;unittest框架使用的第三方库ddt来参数化的 而pytest框架&#xff1a; 前置/后置处理函数fixture&#xff0c;它有个参数params专门与request结合使用来传递参数&#x…...

【Qt】QGroundControl入门2:下载、编译、错误处理、运行

1、源码下载 git clone https://github.com/mavlink/qgroundcontrol.git 2、下载依赖库 2.1 查看依赖库的github路径 cat .gitmodules[submodule "src/GPS/Drivers"]path = src/GPS/Driversurl = https://github.com/PX4/GpsDrivers.git [submodule "libs/m…...

【深度学习】Pytorch 系列教程(十):PyTorch数据结构:2、张量操作(Tensor Operations):(4)索引和切片详解

目录 一、前言 二、实验环境 三、PyTorch数据结构 0、分类 1、张量&#xff08;Tensor&#xff09; 2、张量操作&#xff08;Tensor Operations&#xff09; 1. 数学运算 2. 统计计算 3. 张量变形 4. 索引和切片 使用索引访问单个元素 使用切片访问子集 使用索引和…...

2024字节跳动校招面试真题汇总及其解答(三)

6.jwt与cookie区别 JWT 和 Cookie 都是用于在客户端和服务器之间传输信息的常用方法。但是,它们之间存在一些关键差异。 JWT 是 JSON Web Token 的缩写,它是一种基于 JSON 的加密令牌。JWT 由三部分组成:Header、Payload 和 Signature。Header 包含令牌的类型、加密算法和…...

基于springboot+vue的便利店信息管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

在ubuntu18.04上编译C++版本jsoncpp/opencv/onnxruntime且如何配置CMakelist把他们用起来~

这篇文章背景是笔者在ubuntu上编译C代码&#xff0c;依赖一些包&#xff0c;然后需要编译并配置到CMakelist做的笔记。主要也是一直不太懂CMakellist&#xff0c;做个笔记以防忘记&#xff0c;也给读者提供一站式的参考&#xff0c;可能您需要的不是这几个包&#xff0c;但大同…...

大二上学期学习计划

这个学期主要学习的技术有SpringBoot&#xff0c;Vue&#xff0c;MybatisPlus&#xff0c;redis&#xff0c;还有要坚持刷题&#xff0c;算法不能落下&#xff0c;要坚持一天至少刷2道题目&#xff0c;如果没有布置任务就刷洛谷上面的&#xff0c;有任务的话就尽量完成任务&…...

【python爬虫—星巴克产品】

文章目录 需求爬取星巴克产品以及图片&#xff0c;星巴克菜单 python爬虫爬取结果 需求 爬取星巴克产品以及图片&#xff0c;星巴克菜单 网页分析&#xff1a; 首先&#xff0c;需要分析星巴克官方网站的结构&#xff0c;了解菜单栏的位置、布局以及菜单项的标签或类名等信息…...

shell SQL 变量 Oracle shell调用SQL操作DB

注意 &#xff1a; v\\\$ 用法, “v\\\$session ” ""不能用 sqlplus -S / as sysdba << EOF set pagesize 0 set verify off set feedback off set echo off col coun new_value v_coun select count(*) coun from dual; EOF value"$?"VALUE…...

【校招VIP】java线程池考点之核心线程数

考点介绍&#xff1a; 线程池是这一两年java大厂提问频度飙升的考点&#xff0c;需要从池子的概念理解相关参数和方法 java线程池考点之核心线程数-相关题目及解析内容可点击文章末尾链接查看&#xff01; 一、考点试题 1、请列举一下启动线程有哪几种方式&#xff0c;之后再…...

[每周一更]-(第61期):Rust入门策略(持续更新)

一门语言的学习&#xff0c;就要从最基本的语法开始认识&#xff0c;再分析不同语言的区别&#xff0c;再加上实战&#xff0c;才能更快的学会&#xff0c;领悟到作者的设计思想&#xff1b; 介绍 Rust编程练习 开发工具VSCode及插件 社区驱动的 rust-analyzerEven Better T…...

线程安全问题的原因及解决方案

要想知道线程安全问题的原因及解决方案&#xff0c;首先得知道什么是线程安全&#xff0c;想给出一个线程安全的确切定义是复杂的&#xff0c;但我们可以这样认为&#xff1a;如果多线程环境下代码运行的结果是符合我们预期的&#xff0c;即在单线程环境应该的结果&#xff0c;…...

基于matlab中点放炮各类地震波时距曲线程序

完整程序&#xff1a; clear all dx50;x-500:dx:500;%炮检距 h100;V11500; theta25*pi/180; V2V1/sin(theta); t1sqrt(x.*x4*h*h)/V1;%反射波时距曲线 t2abs(x)./V1;%直达波时距曲线 %折射波时距曲线 xm2*h*tan(theta);%求盲区 k1; for i1:length(x) if x(i)<-xm …...

vue中el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案 使用强制提前加载dialog方法

问题描述 在没有进行任何操作的时候&#xff0c;使用 this.$refs.xxxx 无法获取el-dialog中的内部元素&#xff0c;这个问题会导致很多bug&#xff0c;其中目前网络上也有许多关于这个问题的解决方案&#xff0c;但是大多数是使用el-dialog中的open在dialog打开的时候使用thi…...

vue-h5移动Web的rem配置

H5移动的适配方案 rem rem适配方案是兼容性比较好的移动端适配方案&#xff0c;rem支持大部分的移动端系统和机型。 rem是相对于根元素的字体大小的单位。本质上就是一个相对单位&#xff0c;和em的区别是&#xff1a;em是依赖父元素的字体来计算&#xff0c;rem是依赖根元素…...

企业级数据仓库-数仓实战

数仓实战 安装包大小 安装清单 环境搭建 一、环境搭建01&#xff08;机器准备&#xff09; 准备好三台虚拟机&#xff0c;并进行修改hostname、在hosts文件增加ip地址和主机名映射 。 1、设置每个虚拟机的hostname vi /etc/sysconfig/network 修改HOSTNAMEnode02修改hostna…...

Spring Boot 下载文件(word/excel等)文件名中文乱码问题|构建打包不存在模版文件(templates等)

Spring Boot 下载文件(word/excel等)文件名中文乱码问题&#xff5c;构建打包不存在模版文件(templates等) 准备文件&#xff0c;这里我放在resource下的templates路径 在pom中配置构建打包的资源&#xff0c;更新maven 如果使用了assembly打包插件这样配置可能仍不生效&#…...

Ansible数组同步至Shell脚本数组中

1、ansible中定义数组&#xff0c;我以 ccaPojectList 数组为例子,如下图数组内容 2、需要写一个j2模板的Shell脚本&#xff0c;在j2模板的Shell脚本中引用ansible的 ccaPojectList 数组&#xff0c;大致如下图&#xff1a; {% for item in ccaPojectList %} "{{ item }…...

私域流量的优势

私域流量是指由自身品牌或个人拥有并具备完全掌控权的流量资源。它相比于传统的广告推广&#xff0c;拥有独特的优势。 首先&#xff0c;私域流量能够更加精准地定位目标用户&#xff0c;实现精准传播。不再盲目投放广告&#xff0c;而是通过建立自身社群、粉丝群&#xff0c;获…...

Java 中“1000==1000”为false,而”100==100“为true?

如果你运行下面的代码: Integer a 1000, b 1000; System.out.println(a b);//1Integer c 100, d 100; System.out.println(c d);//2你会得到: false true基本知识&#xff1a;我们知道&#xff0c;如果两个引用指向同一个对象&#xff0c;用表示它们是相等的。如果两…...

片上网络(1)概述

前言 NoC&#xff1a;On-Chip Networks&#xff0c;片上网络。 由于多核乃至众核时代的到来&#xff0c;用于连接它们的可扩展、低延迟、大带宽的通信结构变得至关重要。 在核心较少时&#xff0c;总线Bus和矩阵/交叉开关Crossbar是主要的互联结构。总线可以提供较低的传输延迟…...

使用 React Native 针对 Android 进行开发

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 概述 通过安装所需工具开始使用 React Native 创建新的 React Native 项目 本指南将有助于开始使用 Windows 上的…...

LeetCode 每日一题 2023/9/11-2023/9/17

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 9/11 630. 课程表 III9/12 1462. 课程表 IV9/13 2596. 检查骑士巡视方案9/14 1222. 可以攻击国王的皇后9/15 LCP 50. 宝石补给9/16 198. 打家劫舍9/17 9/11 630. 课程表 II…...

Linux系统调试篇——GDBSERVER远程调试

文章目录 安装 GDBSERVERgdbserver 用法具体步骤 本篇讲解如何使用gdbserver对目标开发板上的程序进行远程调试。 安装 GDBSERVER 首先在开发板上安装 gdbserver&#xff1a; apt install gdbservergdbserver 用法 gdbserver用法描述&#xff1a; Usage: gdbserver [OPTION…...

前端实现打字效果

前端实现打字效果 不带光标 只一次播放 HTML <!-- 需要在初始化的时候不显示文字 --> <div id"typing"></div>CSS #typing {position: relative;font-size: 24px;font-family: Arial, sans-serif;padding: 10px; }JS const text "要显…...

Unix和Linux、GNU和GPL、RHEL和Centos、Debian和Ubuntu

文章目录 Unix和LinuxGNU和GPLGNU/Linux名称的来源RHEL和CentosDebian和Ubuntu 以上都是操作系统&#xff0c;服务器操作系统、桌面操作系统。 对于刚刚接触Linux系统或者从事运维相关工作的人来说&#xff0c;肯定会听过很多名词&#xff0c;但是不知道他们的区别和联系&#…...

InfiniBand vs 光纤通道,存储协议的选择

数字时代&#xff0c;数据量爆发增长&#xff0c;企业越来越迫切地追求高吞吐量、低延迟和更高性能的网络基础设施&#xff0c;存储协议的选择变得愈发至关重要。在众多存储协议中&#xff0c;InfiniBand和光纤通道备受关注。本文旨在深入探讨InfiniBand和光纤通道作为存储协议…...

大连建网站策划/网课免费平台

概述 PowerJob是新一代分布式任务调度与计算框架&#xff0c;支持CRON、API、固定频率、固定延迟等调度策略&#xff0c;提供工作流来编排任务解决依赖关系&#xff0c;能让您轻松完成作业的调度与繁杂任务的分布式计算。 为什么选择PowerJob&#xff1f; 当前市面上流行的作…...

最牛视频网站建设/长沙seo网站推广

你心中的阳光房是什么样的&#xff1f;又宽又厚的钢结构加上钢化玻璃组成的非常笨重的阳光房&#xff1f;冬天还好&#xff0c;可一到夏天升温极快&#xff0c;非常的闷热吗&#xff1f;情愿只做一个阳光顶用来遮阳挡雨也不做阳光房吗&#xff1f;现在这些都是过去式了&#xf…...

企业营销的网站/东莞seo网络营销

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01;http://www.swiper.com.cn/下载&#xff1a;…...

做果蔬零售的网站/深圳全网推广托管

1viewdidLoad在什么时候调用&#xff1a;viewDidLoad在代码运行到[self.view addSubview : x.view]时调用。...

要点营销网站/seo优化常识

https://www.cnblogs.com/niuben/p/12558841.html...

cnetos 做网站服务/官网排名优化方案

文章目录加法运算用加法代替减法移码参考加法运算 用加法代替减法 10-37 和 &#xff08;109&#xff09; 19 &#xff0c;然后 19 mod 127&#xff0c;从而达到减法和加法的效果一样 存储单元为8bit时&#xff0c;计算机作加减运算时&#xff0c;都可以看成 mod 2^8 移码…...