接口测试——接口协议抓包分析与mock_L1
目录:
- 接口测试价值与体系
- 常见的接口协议
- 接口测试用例设计
- postman基础使用
- postman实战练习
1.接口测试价值与体系
接口测试概念
- 接口:不同的系统之间相互连接的部分,是一个传递数据的通道
- 接口测试:检查数据的交换、传递和控制管理过程
接口测试的价值
- 传统的测试方法成本急剧上升
- 测试效率下降
分层测试体系
- 越往上,发现 Bug 的时间越晚,成本越高
- 接口测试(Service)相比 UI 测试,可以更早发现问题,更快的质量反馈
接口测试学习路线
接口测试与 mock 学习路线
形式 | 章节 | 描述 |
---|---|---|
知识点 | 接口测试价值与体系 | 了解接口测试的知识体系与学习路线 |
知识点 | 常见的接口协议 | 了解常见接口协议、重点掌握 HTTP 协议 |
知识点 | 接口测试用例设计 | 掌握接口测试用例设计思路 |
知识点 | postman 基础使用 | 掌握 postman 的安装和基础使用 |
实战 | postman 实战练习 | 使用 postman 完成接口测试 |
知识点 | 抓包工具 charles | 掌握 charles 的安装和基础配置 |
知识点 | 抓包工具 fiddler | 掌握 fiddler 的安装和基础配置 |
知识点 | 抓包工具证书配置 | 抓包工具证书配置 https 协议数据抓包 |
实战 | App 抓包实战练习 | 对雪球实现抓包 |
实战 | 接口测试实战练习 | 结合 postman 完成对宠物商店的接口测试 |
知识点 | 弱网测试 | 使用 charles 完成弱网测试 |
知识点 | mock 的价值与意义 | 了解 mock 测试的价值与意义 |
实战 | mock 实战练习 | 雪球 mock 实战练习 |
知识点 | 使用 curl 发送请求【选修】 | 了解 curl 命令的参数 |
知识点 | tcpdump 与 wireshark 的使用【选修】 | 了解 tcpdump 与 wireshark 的基本使用 |
2.常见的接口协议
网络模型
OSI七层模型:
- 物理层:物理层负责传输比特流,即0和1的电信号或光信号。它涉及到电气、机械和定时接口的规范,如电缆、集线器和中继器的使用。这一层的主要目的是确保原始数据可以在各种物理媒体上传输。
- 数据链路层:数据链路层负责将比特流组合成帧,并对帧进行错误检查和寻址。它定义了如何在网络硬件之间传输帧,包括如何使用物理层提供的服务来传输帧。这一层还包括诸如以太网、令牌环和点对点协议等具体的协议。
- 网络层:网络层负责将数据包从源地址发送到目的地址。它处理路由和转发,负责在数据链路层的基础上选择最佳路径,并将数据包从一个网络传输到另一个网络。网络层协议包括互联网协议(IP)、互联网控制消息协议(ICMP)和传输控制协议(TCP)。
- 传输层:传输层负责在源端和目的端之间建立、管理和终止会话。它将数据分段并重新组装,以确保数据的完整性和可靠性。同时,它还提供了错误检查和流量控制功能。传输层协议主要有传输控制协议(TCP)和用户数据报协议(UDP)。
- 会话层:会话层负责建立、管理和终止网络连接上的会话。它负责同步和对话控制,以及数据交换和分布式事务的处理。会话层还包括诸如远程过程调用(RPC)和SQL等协议。
- 表示层:表示层负责对数据进行编码和解码,以确保发送方和接收方之间的数据格式一致。它处理诸如数据压缩、加密和解密等数据转换操作。表示层协议包括MIME、TLS和SET等。
- 应用层:应用层负责处理用户和应用程序之间的通信。它为用户提供了网络服务接入点,允许应用程序使用网络进行通信。应用层协议包括HTTP、FTP、SMTP、DNS和Telnet等,这些协议为用户提供了访问网络资源的接口。
TCP/IP四层模型:
- 网络接口层(比特):这一层是物理层和数据链路层的统称,负责在物理媒体上传输原始的比特流。主要涉及电缆、集线器和中继器等硬件设备的规范和管理。
- 网络层(数据帧):网络层负责将数据包从源地址发送到目的地址。它处理路由和转发,负责在数据链路层的基础上选择最佳路径,并将数据包从一个网络传输到另一个网络。本层的功能通常由IP协议来实现。
- 传输层(数据包):传输层负责在源端和目的端之间建立、管理和终止会话。它将数据分段并重新组装,以确保数据的完整性和可靠性。同时,它还提供了错误检查和流量控制功能。本层的功能通常由TCP或UDP协议来实现。
- 应用层(数据段):应用层负责处理用户和应用程序之间的通信。它为用户提供了网络服务接入点,允许应用程序使用网络进行通信。本层的协议非常丰富,包括HTTP、FTP、SMTP、DNS和Telnet等,这些协议为用户提供了访问网络资源的接口。
五层体系结构:
- 应用层:这一层包括了所有能与用户直接交互的程序,比如网页浏览器、电子邮件客户端、聊天工具等等。应用层的协议包括HTTP、FTP、SMTP、POP3、IMAP等。
- 传输层:这一层的任务是确保数据能够在源端和目的端之间进行交换。传输层协议包括TCP和UDP两种,其中TCP是一种基于连接的协议,能够确保数据在发送端和接收端之间传输完整;而UDP则是一种无连接协议,它不会确保数据在发送端和接收端之间传输完整。
- 网络层:网络层负责确定数据包在网络中的路径,其协议包括IP、ICMP和ARP等。IP协议负责将数据包发送到正确的目的地;ICMP协议负责报告网络中的问题,例如丢失的数据包;ARP协议用于在网络中查找IP地址。
- 数据链路层:这一层的任务是在两台计算机之间传输数据。常见的协议包括以太网和无线局域网,以太网是最常用的数据链路层协议,它使用网线将计算机连接到网络;无线局域网使用无线信号将计算机连接到网络。
- 物理层:这一层包括了所有物理媒体,比如电缆、集线器、中继器等等。物理层的协议包括RS-232、USB和Fiber Channel等,RS-232是一种通过串行线将计算机连接到网络的协议;USB是一种通过USB接口将计算机连接到网络的协议;Fiber Channel是一种通过光纤将计算机连接到网络的协议。
常见接口协议
RPC 协议
- RPC(Remote Procedure Call)
- 以本地代码调用的方式实现远程执行
- 主要用于公司内部的服务调用
- 优点:传输效率更高、性能损耗更低、自带负载均衡策略、更好的服务治理能力
- 常见的 RPC 协议
- Dubbo:Java 基础之上的高性能 RPC 协议
- gRPC:高性能通用 RPC 框架,基于 Protocol Buffers。PB 是一个语言中立、平台中立的数据序列化框架
- Thrift:与 gRPC 类似的多语言 RPC 框架
HTTP 协议
- 请求
- 请求行:method url protocol
- 请求方法:GET、POST、PUT、DELETE、HEAD
- 请求头: Host Cookie User-Agent
- 请求参数 query
- 请求体:JSON XML FORM
- 响应:
- 响应状态行
- 响应头
- 响应体
URI 和 URL
- URI,统一资源标识符,用来唯一的标识一个资源。
- URL,统一资源定位符,它是一种具体的 URI
- URL 结构:
https://www.baidu.com/s?wd=海贼王&rsv_spt=1
- 协议:
http
- 域名:
www.baidu.com
- 端口:跟在域名后面,域名和端口之间使用“:”作为分隔符,非必须,如果省略端口部分将采用默认端口
- 路径:
/s
- 请求参数:
wd=海贼王&rsv_spt=**1
- 协议:
HTTP 请求报文
> GET /uploads/user/avatar/31438/8216a3.jpg HTTP/1.1
> Host: baidu.com
> Accept-Encoding: deflate, gzip
> Connection: keep-alive
> Pragma: no-cache
> Cache-Control: no-cache
> User-Agent: Mozilla/5.0
(Macintosh; Intel Mac OS X 10_15_0)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36
> Accept: image/webp,image/apng,image/*,*/*;q=0.8
> Referer: https://sougou.com/
> Accept-Language: en,zh-CN;q=0.9,zh;q=0.8
> Cookie: user_id=xx;_homeland_session=xx;
>
HTTP 响应报文
< HTTP/1.1 200 OK
< Server: nginx/1.10.2
< Date: Thu, 12 Mar 2020 09:13:44 GMT
< Content-Type: image/png
< Content-Length: 11390
< Connection: keep-alive
HTTP 响应状态码
- 1xx 临时响应,表示通知信息,请求收到了或正在进行处理
- 2xx 表示成功,接受或知道了
- 200 成功
- 3xx 表示重定向,要完成请求还必须才去进一步的行动
- 301 永久移动
- 302 临时移动
- 4xx 表示客户端请求错误
- 403 未授权
- 404 未找到
- 5xx 表示服务端错误
- 500 服务器内部错误
- 503 服务不可用
RESTful 架构
- Restful:Representational State Transfer
- 借助于 HTTP 协议的基本请求方法代表资源的状态切换
- GET:获取资源
- POST:新增或者更新
- PUT:更新资源
- DELETE:删除资源
3.接口测试用例设计
接口测试流程
接口测试用例设计思路
接口测试用例要素
- 用例名称
- 接口地址
- 请求方式
- 前置条件
- 请求头部
- 请求参数
- 响应状态码
- 预期响应结果
4.postman基础使用
Postman 介绍
- 快速构建请求
- 提供响应结果的比较功能
- 查看测试结果
- 批量运行
- 设置环境变量
Postman 安装
- 官网下载地址
- https://www.postman.com/downloads
Postman 使用
- 发送 GET 请求
- 新建请求
- 填写请求方式:GET
- 填写请求参数: para_key = para_value
- 发送 POST 请求
- 请求方式:POST
- 请求参数
- FORM 格式:Body –> form-data
- JSON 格式:Body –> raw –> JSON
- 文件格式:Body –> form-data –> File
- FORM 格式:Body –> form-data
操作头信息
- 添加请求头
- 修改请求头
查看接口响应
- 响应体
- 响应头
- 响应状态
5.postman实战练习
测试流程:
- 宠物商店接口文档分析
- 接口测试用例设计
- Postman 完成接口测试
宠物商店接口文档分析
- 接口文档:https://petstore.swagger.io
- 宠物的增删改查
接口测试用例设计
- 宠物的增删改查冒烟测试用例
文档地址:template: 用来存放开发模版 - Gitee.com
Postman 完成接口测试
- 创建测试集
- 编写断言
- 运行测试集
- 查看测试结果
新增宠物
查询宠物
更新宠物:
删除宠物:
断言
- 验证响应状态码
- 验证响应体中是否包含某个字符串
- 验证 JSON 中的某个值是否等于预期的值
- 验证响应体是否与某个字符串完全相同
- 验证响应头信息中的 Content-Type 是否存在
- 验证响应时间是否小于某个值
// Status Code:Code is 200
// 验证响应状态码
pm.test("响应状态码为 200", function () {pm.response.to.have.status(200);
});// Response Body:contains string
// 验证响应体中是否包含某个字符串
pm.test("响应体中包含预期的字符串", function () {pm.expect(pm.response.text()).to.include("doggie");
});// Response Body:JSON value check
// 验证 JSON 中的某个值是否等于预期的值
pm.test("宠物名称为 doggie", function () {var jsonData = pm.response.json();pm.expect(jsonData[0].name).to.eql("doggie");
});// Response Body:Is equal to a string
// 验证响应体是否与某个字符串完全相同
pm.test("响应体正确", function () {pm.response.to.have.body("response_body_string");
});// Response Body:Content-Type header check
// 验证响应头信息中的 Content-Type 是否存在
pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type");
});// Response time is less than 200ms
// 验证响应时间是否小于某个值
pm.test("Response time is less than 200ms", function () {pm.expect(pm.response.responseTime).to.be.below(200);
});
新增宠物断言:
json压缩转义成字符串:
查询宠物断言:
更新宠物断言:
json压缩转义成字符串:
删除宠物断言:
运行测试集
- 测试集页面 -> Run 按钮
宠物商店运行结果:
查看测试结果:
变量
- Postman 中变量的种类与作用域
- Data:在测试集中上传的数据
- Environment:环境范围
- Collection:集合范围
- Global:全局范围
- Local:在脚本中设置的变量
变量定义
- 全局变量:Environments -> Globals
- 测试集变量:测试集页面 -> Variables
- 环境变量:Environments -> +
全局变量:
全局变量的使用:
变量的使用
- 请求 URL, Params 参数或 Body 表格或JSON/XML 文本中通过
{{变量名}}
使用 - 在 Pre-request Script 和 Tests 脚本中使用封装好的语句获取或者设置对应变量
全局变量的使用:
Pre-request Script
在脚本中获取全局变量
测试集变量:
测试集变量的使用:
环境变量
环境变量的使用:
变量的优先级
- 优先级从高至低为:Data -> Enviroment -> Collection -> Global -> Local
相关文章:
接口测试——接口协议抓包分析与mock_L1
目录: 接口测试价值与体系常见的接口协议接口测试用例设计postman基础使用postman实战练习 1.接口测试价值与体系 接口测试概念 接口:不同的系统之间相互连接的部分,是一个传递数据的通道接口测试:检查数据的交换、传递和控制…...
四种常用的自动化测试框架
一直想仔细研究框架,写个流水账似的测试程序不难,写个低维护成本的测试框架就很难了,所以研究多种测试框架还是很有必要的,知道孰优孰劣,才能在开始编写框架的时候打好基础,今天读到了KiKi Zhao的翻译文章&…...
Fuxploider:一款针对文件上传漏洞的安全检测与研究工具
Fuxploider:一款针对文件上传漏洞的安全检测与研究工具 1.概述2. 工具使用1.概述 Fuxploider是一款功能强大的开源渗透测试工具,该工具专门针对文件上传漏洞而设计,可以帮助广大研究人员以自动化的方式检测和利用目标站点文件上传表单中的安全问题 由于该工具基于Python 3…...
Unity 安装及运行MLAgents
1、下载ML-Agents 下载地址 GitHub - Unity-Technologies/ml-agents: The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents using deep reinfo…...
LightDB-A 兼容oracle支持mod操作符
LightDB-A 兼容oracle支持mod操作符 LightDB-A 为了兼容oracle,从23.3版本开始支持mod操作符,其语义同 ‘%’ 操作符,使用案例如下: select 5 mod 2;?column? ----------1 (1 row)select 0 % 0; ERROR: division by zerosel…...
SpringMVC之自定义注解
目录 一、Java注解 1.1 注解简介 1.2 注解分类 1.3 JDK基本注解 1.4 JDK元注解 1.5 自定义注解 1.5.1 标记注解 1.5.2 元数据注解 1.6 如何自定义注解 二、自定义注解的基本案例 2.1 案例一(获取类、方法以及属性上的注解) 2.1.1 Ingerited的…...
QT:使用普通按钮、网格布局管理器、标签、行编辑器、水平布局管理器、垂直布局管理器做一个小项目
widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPushButton> //普通按钮 #include <QGridLayout> //网格布局管理器 #include <QLabel> //标签 #include <QLineEdit> //行编辑器 #include <QHBoxLayo…...
【小沐学写作】程序员必备技能:在线协作文档汇总
文章目录 1、简介2、微软Office在线文档2.1 功能简介2.2 使用费用2.3 用户体验 3、石墨文档3.1 功能简介3.2 使用费用 4、腾讯文档4.1 功能简介4.2 使用费用 5、语雀5.1 功能简介5.2 使用费用 6、飞书6.1 功能简介6.2 使用费用 7、印象笔记7.1 功能简介7.2 使用费用 结语 1、简…...
「工具|数据接口」免费公开的REST API 如何借助github搭建自己的fake API接口
本文主要介绍日常开发、测试、教学或者分享中,可能遇到的模拟数据问题。分享免费开发的测试数据接口,以及如何利用github快速搭建定制化的接口数据,避免使用真实数据的风险以及自己现编数据的麻烦。 文章目录 一、场景说明二、免费公开的Fak…...
leetcode 18. 四数之和
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复): 0 < a,…...
树上背包问题动态规划
目录 树状动态规划概述 示例 求解思路 树状动态规划概述 树状动态规划(Tree DP)是一种在树结构上进行动态规划的方法。在树状DP中,我们利用树的特殊结构性质,通过递归地向下更新子节点的状态,最终得到整个树的最…...
linux查看进程对应的线程(数)
首先,top或ps查看进程列表,确定要查看的进程pid,如下面40698 查看进程的线程情况 查看进程:top -p 40698 查看线程:top -p 40698 -d 3 -H 其中-d是刷新频率 可看到此进程共211个线程,运行中的是211个。…...
Python中的桌面应用开发库有哪些?
Python中有几个受欢迎的桌面应用开发库。以下是其中一些: Tkinter:这是Python的标准GUI库,它提供了构建简单的桌面应用程序的基本组件和功能。 PyQt:这是一个成熟的、功能强大的跨平台图形用户界面框架,它是Python绑定…...
【大数据】Neo4j 图数据库使用详解
目录 一、图数据库介绍 1.1 什么是图数据库 1.2 为什么需要图数据库 1.3 图数据库应用领域 二、图数据库Neo4j简介 2.1 Neo4j特性 2.2 Neo4j优点 三、Neo4j数据模型 3.1 图论基础 3.2 属性图模型 3.3 Neo4j的构建元素 3.3.1 节点 3.3.2 属性 3.3.3 关系 3.3.4 标…...
Windows11系统C盘用户文件夹下用户文件夹为中文,解决方案
说明: 1. 博主电脑为Windows11操作系统,亲测有效,修改后无任何影响,软件都可以正常运行! 2. Windows10系统还不知道可不可行,因为Windows11的计算机管理中没有本地用户和组,博主在csdn上看到很…...
Python正则表达式(re)
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为…...
【PyTorch 08】如果要手动安装对应的包
例如有时候我们要下载 PyG ,但是需要手动下载,需要进行以下步骤: 网站链接:https://data.pyg.org/whl/ 首先查看当前安装好的Pytorch版本和对应的cuda版本 1. pip list:查看torch版本 2. torch.version.cuda…...
黑马JVM总结(十二)
(1)五种引用_强软弱 实线箭头表示强引用,虚心线表示软弱虚终结器引用 在平时我们用的引用,基本都为强引用 ,比如说创建一个对象通过运算符赋值给了一个变量,那么这个变量呢就强引用了刚刚的对象 强引用的…...
彻底搞懂线程池原理以及创建方式
1. 为什么要使用线程池 在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处: 降低资源消耗。通过复用…...
FreeSWITCH 1.10.10 简单图形化界面9 - 鼎兴FXO网关SIP中继内网IPPBX落地
FreeSWITCH 1.10.10 简单图形化界面9 - 鼎兴FXO网关SIP中继内网IPPBX落地 0、 界面预览1、创建一个话务台2、创建PBX SIP中继并设置呼入权限3、设置呼出规则4、设置分机呼出权限5、设置FXO 网关相关信息6、设置FXO网关端口组呼入号码7、设置FXO网关的SIP中继8、设置FXO网关呼叫…...
Oracle数据如何迁移导入到MySQL
使用Navicat工具建立数据连接,进行数据传输 1、打开Navicat工具,分别连接Oracle数据库和MySQL数据库。 2、连接源选择你的oracle数据,目标选mysql 即可成功导入...
卡尔曼滤波(Kalman Filter)原理浅析-数学理论推导-1
目录 前言数学理论推导1. 递归算法2. 数学基础结语参考 前言 最近项目需求涉及到目标跟踪部分,准备从 DeepSORT 多目标跟踪算法入手。DeepSORT 中涉及的内容有点多,以前也就对其进行了简单的了解,但是真正去做发现总是存在这样或者那样的困惑…...
Linux 文件创建、查看
touch、cat、more命令 ①touch命令——创建文件 ②cat命令——查看文件内容全部显示 这是txt.txt文件内容 使用cat命令查看 ③more命令——查看文件内容支持翻页 在查看的过程中,通过空格翻页,通过q退出查看...
WPF 如何让xmal的属性换行显示 格式化
WPF 如何让UI的xmal 按照下面的格式化显示 首先格式化显示在VS中的快捷键是 Ctrl KD 然后需要配置,工具 选项 -文本编辑器 -xmal -格式化-间距 更改成如下就可以了...
Linux学习之MySQL主从复制
MySQL配置一主一从 环境准备: 两台服务器: Master:192.168.88.53,Slave:192.168.88.54 在两台服务器上安装mysql-server # 配置主服务器192.168.88.53 # 启用binlog日志 [rootmysql53 ~]# yum -y install mysql-ser…...
【JavaSE笔记】抽象类与接口
一、抽象类 1、概念 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 package demo2…...
详谈操作系统中的内核态和用户态
不知道大家有没有思考过这样一个问题:什么是处理器(CPU)的状态?🤔 其实CPU和人一样,没有执行程序的时候,是没有什么状态的,当它执行的程序是用户程序的时候就叫用户态,当执行的程序是操作系统的代码时就叫系统态或者内…...
OpenWrt KernelPackage分析
一. 前言 KernelPackage是OpenWrt用来编译内核模块的函数,其实KernelPackage后面会调用BuildPackage,这里会一块将BuildPackage也顺便分析,本文以gpio-button-hotplug驱动模块为例,讲解整个编译过程。 gpio-button-hotplug驱动编译…...
第 363 场 LeetCode 周赛题解
A 计算 K 置位下标对应元素的和 模拟 class Solution { public:int pop_cnt(int x) {//求x的二进制表示中的1的位数int res 0;for (; x; x >> 1)if (x & 1)res;return res;}int sumIndicesWithKSetBits(vector<int> &nums, int k) {int res 0;for (int i…...
ffplay源码解析-main入口函数
main入口函数 初始化 变量、缓存区、SDL窗口初始化等 int main(int argc, char **argv) {int flags;VideoState *is; // av_log_set_level(AV_LOG_TRACE);init_dynload();av_log_set_flags(AV_LOG_SKIP_REPEATED);parse_loglevel(argc, argv, options);/// av_log_set_le…...
专业网站建设行业现状/微信引流被加软件
在开发我的网页时,我遇到了使用HTML5的getUserMedia的一些困难.这是我第一次尝试实现此功能来录制用户音频输入. Flash不是此项目的选项,因为它也必须在移动设备上使用.我来这里看看是否有人有经验并知道如何用getUserMedia实现HTML5以记录用户麦克风一段时间(用PHP中的会话完成…...
钢琴网站建设原则/许昌网络推广外包
本文档以实战的形式介绍系统如何禁用 IPV6, 使用的操纵系统是 RHEL7.3更改/etc/sysctl.conf配置文件[rootJaking vsftpd]# vim /etc/sysctl.conf# sysctl settings are defined through files in# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.## Vendors settings…...
做ppt哪个网站好/免费行情网站app大全
一、特殊选择器 1、* 用于匹配任何的标记 2、> 用于指定父子节点关系 3、E F 毗邻元素选择器,匹配所有紧随E元素之后的同级元素F 4、E ~ F 匹配所有E元素之后的同级元素F 5、名称[表达式] 5.1 E[att] 匹配所有具有att属性的E元素([att]获取所有的定义…...
建设网站是什么意思/百度服务中心人工24小时电话
首先登陆mysql的交互shell,输入下面的命令查看当前数据库的编码方式 show variables like %character%; 从上面可以看出,mysql数据库装上之后初始并不均是utf8 退出刚才的交互shell,去修改下面的配置文件 输入下面的命令,打开第一…...
上海人才建交网/中山网站seo
我们知道,一张 HBase 表包含一个或多个列族。HBase 的官方文档中关于 HBase 表的列族的个数有两处描述:A typical schema has between 1 and 3 column families per table. HBase tables should not be designed to mimic RDBMS tables. 以及 HBase curr…...
研究院网站系统建设方案/seo简单优化操作步骤
Given a list of the elements and we have to sort the list in Ascending and the Descending order in Python. 给定一个元素列表,我们必须按Python的升序和降序对列表进行排序。 Python list.sort()方法 (Python list.sort() Method) sort() is a inbuilt meth…...