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

fiddler抓包工具与requests库构建自动化报告

一. Fiddler 抓包工具

1.1 Fiddler 工具介绍和安装

Fiddler 是一款功能强大的 HTTP 调试代理工具,能够全面记录并深入检查您的计算机与互联网之间的 HTTP 和 HTTPS 通信数据。其主界面布局清晰,主要包含菜单栏、工具栏、树形标签栏和内容栏

1.2 Fiddler 工具的基本结构介绍

对 Fiddler 各个组成部分的功能和作用进行详细说明:

  • 菜单栏:涵盖了丰富多样的操作和功能选项,例如 File(文件)用于文件相关操作,Edit(编辑)用于编辑会话等,而 Rules(规则)则用于设置各种捕获和处理规则。

    1.“File”(文件):负责文件的打开、保存、导入和导出等操作。

    2.“Edit”(编辑):提供对会话的编辑功能,如复制、删除、查找等。

    3.“Rules”(规则):允许自定义各种捕获和处理规则,以满足特定的调试需求。

    4.“Tools”(工具):包含一些辅助工具,如文本编码转换等。

  • 工具栏:集中了一系列常用功能的快捷按钮,像是“Capture Traffic”(捕获流量)按钮用于启动或停止捕获请求,“Clear Sessions”(清除会话)按钮用于一键清空捕获到的会话列表。

    1.“Capture Traffic”(捕获流量):控制捕获的开始与停止。

    2.“Decode”(解码):对数据进行自动解码,方便查看。

    3.“Find Session”(查找会话):快速定位特定的会话。

  • 树形标签栏:直观地展示了捕获到的 HTTP 会话列表,您可以依据不同的分类标准进行灵活的过滤和排序,迅速找到所需的会话。

    1.以清晰的树形结构展示会话,可按进程、主机、请求类型等分类。

    2.支持右键菜单进行更多操作,如重发请求等。

  • 内容栏:详细呈现了选中会话的全方位信息,涵盖请求头、响应头、请求体以及响应体等关键内容。

    • “Inspectors”(检查器)标签下:

      1.“Request Headers”(请求头):展示请求的头部信息,包括方法、URL、协议版本等。

      2.“Response Headers”(响应头):呈现响应的头部信息,如状态码、服务器类型等。

      3.“RequestBody”(请求体)和“ResponseBody”(响应体):分别显示请求和响应的具体数据内容。

1.3 Fiddler 工具抓包讲解

详细介绍如何运用 Fiddler 进行高效抓包操作,其中涵盖设置捕获规则(例如仅捕获特定域名的请求)、灵活启动/停止捕获等关键步骤。

1.启动捕获:轻松点击工具栏上醒目的“Capture Traffic”按钮,即刻开启捕获请求之旅。

2.设置捕获规则:通过“Rules”菜单下的“Customize Rules”选项,您能够量身定制捕获规则。比如,精准设定只捕获特定域名的请求,过滤掉无关的流量,让您的关注点更加集中。

3.停止捕获:再次点击“Capture Traffic”按钮或者运用快捷键,即可迅速停止捕获,及时定格您所需的通信数据。

1.4 Fiddler 中读接口数据进行分析

深入讲解如何在 Fiddler 中精准读取和透彻分析捕获到的接口数据,包括细致查看请求头、响应头、请求体和响应体等重要环节。

1.查看请求头:在内容栏中精心选定会话后,切换至“Inspectors”标签下的“Request Headers”部分,您将一目了然地查看请求头的丰富信息,包括请求方法、URL、客户端类型等关键细节。

2.查看响应头:同样在“Inspectors”标签下,切换至“Response Headers”部分,您能够清晰获取响应头的关键信息,如状态码、服务器类型、缓存策略等。

3.查看请求体和响应体:在“RequestBody”和“ResponseBody”部分,您可以分别深入查看请求和响应的主体内容,无论是表单数据、JSON 数据还是二进制数据,都能尽收眼底,为您的分析提供全面的数据支持。

1.5 Fiddler 常用功能讲解

全面阐述如设置断点、过滤请求、模拟请求等常见且实用功能的具体使用方法。

1.设置断点:通过“Rules”菜单下的“Breakpoints”选项,您可以巧妙设置请求或响应的断点。当数据在发送或接收过程中触及断点时,Fiddler 会自动暂停,为您提供宝贵的时机来仔细检查和修改数据,确保通信的准确性和完整性。

2.过滤请求:运用工具栏上的“Filters”按钮或者便捷的快捷键,轻松打开过滤器窗口。在这里,您可以灵活设置过滤条件,例如只显示特定主机、特定进程或者特定请求类型的会话,让您在繁杂的数据中迅速聚焦关键信息,提高工作效率。

3.模拟请求:通过“Composer”菜单下的“New Request”选项,您能够手动构建并随心所欲地发送自定义的 HTTP 请求。无论是测试新的接口、验证不同的参数组合还是模拟异常情况,都能在 Fiddler 的模拟请求功能中轻松实现,为您的开发和调试工作提供强大的支持。

1.6 Fiddler 其他常用操作及流程

  • 修改请求和响应:在设置断点后,可以对请求头、请求体、响应头和响应体进行修改,然后点击“Run to Completion”继续发送请求或接收响应,观察修改后的效果。

    • 操作流程:设置断点 -> 暂停会话 -> 修改数据 -> 继续执行。

  • 保存会话:可以将捕获到的重要会话保存下来,以便后续分析或与他人分享。

    • 操作流程:选中会话 -> 右键 -> “Save” -> 选择保存位置和格式。

  • 导出会话数据:将捕获的会话数据导出为文本、XML 等格式。

    • 操作流程:选择要导出的会话 -> “File” -> “Export Sessions” -> 选择导出格式和保存路径。

  • 设置会话备注:为方便区分和记忆,可以给特定会话添加备注信息。

    • 操作流程:选中会话 -> 右键 -> “Comment” -> 输入备注内容。

  • 性能分析:Fiddler 可以提供关于请求响应时间等性能指标的分析。

    • 操作流程:“Statistics”标签 -> 查看各项性能数据,如总请求数、平均响应时间等。

二. 用 requests 库实现接口测试

2.1 requests 库的介绍

requests 库是一个用于发送 HTTP 请求的 Python 库,它提供了简单易用的 API,非常适合用于接口测试。

2.2 构建 GET 和 POST 请求

import requests# GET 请求
response_get = requests.get('https://www.example.com')
print(response_get.text)# POST 请求
data = {'key1': 'value1', 'key2': 'value2'}
response_post = requests.post('https://www.example.com', data=data)
print(response_post.text)

2.3 实现接口参数化

说明如何将接口中的参数进行动态设置。

params = {'param1': 'value1', 'param2': 'value2'}
response = requests.get('https://www.example.com', params=params)
print(response.url)  # 验证参数是否已正确附加到 URL 上

2.4 实现接口断言

介绍如何对接口返回的结果进行断言判断。

import requests
import unittestclass TestInterface(unittest.TestCase):def test_get_request(self):response = requests.get('https://www.example.com')self.assertEqual(response.status_code, 200)  # 断言状态码为 200self.assertIn('expected_text', response.text)  # 断言响应文本中包含特定内容if __name__ == '__main__':unittest.main()

2.5 实现接口关联

讲解接口之间数据传递和关联的处理方法,如从上一个接口的响应中提取数据,并作为下一个接口的请求参数。

2.6 实现 cookie、session、token 的处理

展示如何在 requests 中处理这些会话相关的元素。

# 处理 Cookie
response = requests.get('https://www.example.com', cookies={'cookie_name': 'cookie_value'})
print(response.cookies)# 处理 Session
session = requests.Session()
response = session.get('https://www.example.com')
# 在同一 session 中进行后续请求,将保持相同的 cookie 和其他会话信息
response2 = session.post('https://www.example.com/post', data={'key': 'value'})# 处理 Token
headers = {'Authorization': 'Bearer your_token'}
response = requests.get('https://www.example.com', headers=headers)
print(response.json())

2.7 介绍 unittest 框架执行用例并且生成报告

解释如何使用 unittest 框架组织和执行接口测试用例,并生成测试报告。

import unittest
from HTMLTestRunner import HTMLTestRunner
import requestsclass TestInterface(unittest.TestCase):def test_get_request(self):response = requests.get('https://www.example.com')self.assertEqual(response.status_code, 200)# 可以添加更多断言if __name__ == '__main__':suite = unittest.TestSuite()suite.addTest(TestInterface('test_get_request'))# 可以添加更多测试用例到 suite 中with open('test_report.html', 'wb') as f:runner = HTMLTestRunner(stream=f, title='Test Report', description='Interface Test')runner.run(suite)

三. Python 接口自动化测试 DDT 数据驱动

3.1 重构操作 Excel 函数

讲解如何优化和重构对 Excel 文件的操作函数,以便更高效地读取和写入测试数据。

'''
在接口自动化测试中,经常需要与 Excel 文件进行交互,读取测试数据和写入测试结果。原始的 Excel 操作函数可能存在代码冗余、可读性差等问题。重构操作 Excel 函数可以通过使用合适的库(如 `openpyxl` 或 `pandas`),将读取和写入的逻辑进行封装,提高代码的复用性和可维护性。
​
例如,使用 `openpyxl` 库读取 Excel 文件中的数据:
'''
​
from openpyxl import load_workbook
​
def read_excel_data(file_path, sheet_name):wb = load_workbook(file_path)sheet = wb[sheet_name]data = []for row in sheet.iter_rows(min_row=2, values_only=True):data.append(row)return data

3.2 封装获取常量的方法

介绍将常量获取进行封装的方法和好处,如将 API URL、请求头等常量封装到一个单独的模块中。

'''
将常量(如 API 的 URL、请求头、认证信息等)进行封装有诸多好处。可以将这些常量集中定义在一个模块中,方便管理和修改。
'''
​
#创建一个 constants.py 文件
API_URL = 'https://www.example.com/api'
REQUEST_HEADERS = {'Content-Type': 'application/json','Authorization': 'Bearer your_token'
}

3.3 封装获取接口数据

为了在多个测试用例中重复使用获取接口数据的逻辑,可以将其封装为一个函数。

import requests
​
def get_interface_data(url, params=None, headers=None):response = requests.get(url, params=params, headers=headers)return response.json()

3.4 POST、GET 基类封装

对 POST 和 GET 请求的基类进行封装,以便简化测试用例的编写。

class BaseRequest:def __init__(self, base_url):self.base_url = base_urldef get(self, url, params=None, headers=None):response = requests.get(f'{self.base_url}{url}', params=params, headers=headers)return responsedef post(self, url, data=None, headers=None):response = requests.post(f'{self.base_url}{url}', data=data, headers=headers)return response# 使用示例
base_request = BaseRequest('https://www.example.com/api')
response = base_request.get('/endpoint', params={'param': 'value'})

3.5 主流程封装及错误解决调试

说明接口自动化测试主流程的封装以及错误处理和调试方法,如使用 try-except 语句捕获异常,并记录错误信息。

'''
接口自动化测试的主流程通常包括发送请求、获取响应、验证结果等步骤。可以将这个主流程封装为一个函数,并在其中处理可能出现的错误。
'''
def run_test_case(url, method, data=None, params=None, expected_result=None):try:if method == 'GET':response = base_request.get(url, params=params)elif method == 'POST':response = base_request.post(url, data=data)else:raise ValueError("Invalid method")
​# 验证结果if response.status_code == expected_result['status_code']:print("测试通过")else:print(f"测试失败,状态码: {response.status_code},预期: {expected_result['status_code']}")except Exception as e:print(f"出现错误: {e}")

3.6 获取接口返回状态

解释如何获取接口返回的状态信息,如状态码、响应头等。

response = requests.get('https://www.example.com/api')
status_code = response.status_code
response_headers = response.headers

3.7 通过预期结果判断 case 是否执行

介绍根据预期结果来决定测试用例是否执行的方法,如使用断言来判断实际结果是否与预期结果一致,从而决定测试用例是否通过。

import unittest
​
class TestCase(unittest.TestCase):def test_example(self):actual_result = get_interface_data('https://www.example.com/api')expected_result = {...}  # 预期的结果self.assertEqual(actual_result['key'], expected_result['key'])

3.8 将预测结果写入到 Excel 中

展示如何将测试的预测结果写入到 Excel 文件中,以便后续分析和统计。from openpyxl import Workbook
​
def write_prediction_to_excel(result, file_path, sheet_name):wb = Workbook()sheet = wb.activesheet.title = sheet_name
​sheet.append(['预测结果'])for item in result:sheet.append([item])
​wb.save(file_path)

3.9 数据依赖问题通过 case_id 获取 case 数据

讲解如何通过 case_id 解决数据依赖问题并获取相应的测试数据,如从 Excel 文件中根据 case_id 查找对应的测试数据。

def get_case_data_by_id(case_id, file_path, sheet_name):data = read_excel_data(file_path, sheet_name)for row in data:if row[0] == case_id:#设case_id在第一列return rowreturn None

3.10 数据依赖问题之根据规则提取响应数据

说明根据特定规则从响应数据中提取所需信息的方法,如使用正则表达式或 JSON 解析来提取数据。

import re
import json
​
def extract_data_from_response(response, rule):if rule.startswith('/'):  # 假设是 JSON 路径data = json.loads(response.text)return jsonpath.jsonpath(data, rule)elif re.match(r'\[.*\]', rule):  # 假设是正则表达式return re.findall(rule, response.text)else:raise ValueError("Invalid rule")

3.11 构建发送邮件服务

介绍如何构建发送测试结果邮件的服务,如使用 smtplib 库发送邮件

import smtplib
from email.mime.text import MIMEText
​
def send_email(subject, body, recipient):sender = 'your_email@example.com'password = 'your_password'
​msg = MIMEText(body)msg['Subject'] = subjectmsg['From'] = sendermsg['To'] = recipient
​server = smtplib.SMTP('smtp.example.com', 587)server.starttls()server.login(sender, password)server.sendmail(sender, recipient, msg.as_string())server.quit()

3.12 结果统计并发送报告

结果统计及自动整理发送报告代码

import pandas as pd
​
def generate_report(results_file_path):data = pd.read_excel(results_file_path)passed_cases = data[data['Status'] == 'Passed'].count()['Test Case ID']failed_cases = data[data['Status'] == 'Failed'].count()['Test Case ID']
​report_body = f"测试结果统计:\n通过的测试用例数:{passed_cases}\n失败的测试用例数:{failed_cases}"
​send_email('测试报告', report_body, 'recipient@example.com')

先整理一下,fiddler抓包工具与requests库构建自动化报告笔记,后续继续整理更新fiddler具体操作JMeterpostman , Appium 以及unittest框架的各自笔记

整理不易,诚望各位看官点赞 收藏 评论 予以支持,这将成为我持续更新的动力源泉。若您在阅览时存有异议或建议,敬请留言指正批评,让我们携手共同学习,共同进取,吾辈自当相互勉励!

相关文章:

fiddler抓包工具与requests库构建自动化报告

一. Fiddler 抓包工具 1.1 Fiddler 工具介绍和安装 Fiddler 是一款功能强大的 HTTP 调试代理工具,能够全面记录并深入检查您的计算机与互联网之间的 HTTP 和 HTTPS 通信数据。其主界面布局清晰,主要包含菜单栏、工具栏、树形标签栏和内容栏。 1.2 Fid…...

Docker login 报证书存储错误的解决办法

文章目录 docker login 出现错误,提示:Error saving credentials: error storing credentials - err: exit status 1, out: Cannot autolaunch D-Bus without X11 $DISPLAY 环境 使用的是 Mint Linux ,容器为 docker-ce 最新版 1 2 3 4 $…...

【自动化Selenium】Python 网页自动化测试脚本(上)

目录 1、Selenium介绍 2、Selenium环境安装 3、创建浏览器、设置、打开 4、打开网页、关闭网页、浏览器 5、浏览器最大化、最小化 6、浏览器的打开位置、尺寸 7、浏览器截图、网页刷新 8、元素定位 9、元素交互操作 10、元素定位 (1)ID定位 &…...

什么是MyBatis?

MyBatis简介 MyBatis是一款优秀的持久层框架,用于简化Java应用程序对数据库的操作。它曾是Apache的一个开源项目,名为iBatis,2010年迁移到Google Code并改名为MyBatis,2013年11月又迁移到了GitHub。 一、MyBatis的作用 在JavaE…...

TortoiseGit 将本地已有仓库推送到远程

TortoiseGit 将本地已有仓库推送到远程 一、创建线上仓库二、创建本地仓库三、提交内容到本地仓库四、添加远程仓库地址补充 一、创建线上仓库 在gitlab管理面页面按这前讲过的步骤创建一个空仓库。(通常我们把服务器上这个仓库叫远程仓库,把我们自己电…...

腾讯云OCR车牌识别实践:从图片上传到车牌识别

在当今智能化和自动化的浪潮中,车牌识别(LPR)技术已经广泛应用于交通管理、智能停车、自动收费等多个场景。腾讯云OCR车牌识别服务凭借其高效、精准的识别能力,为开发者提供了强大的技术支持。本文将介绍如何利用腾讯云OCR车牌识别…...

TailwindCss 总结

目录 一、简介 二、盒子模型相关 三、将样式类写到一个类里面apply 四、一款TailWind CSS的UI库 一、简介 官方文档:Width - TailwindCSS中文文档 | TailwindCSS中文网 Tailwind CSS 的工作原理是扫描所有 HTML 文件、JavaScript 组件以及任何 模板中的 CSS 类…...

Java与C#

Java和C#(C Sharp)是两种流行的面向对象编程语言,它们在很多方面非常相似,因为它们都受到了类似的编程范式和语言设计理念的影响。然而,它们之间也存在一些重要的区别。 平台依赖性: Java:Java是…...

leetcode:222完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最…...

[STM32]从零开始的STM32 FreeRTOS移植教程

一、前言 如果能看到这个教程的话,说明大家已经学习嵌入式有一段时间了。还记得嵌入式在大多数时候指的是什么吗?是的,我们所说的学习嵌入式大部分时候都是在学习嵌入式操作系统。从简单的一些任务状态机再到复杂一些的RTOS,再到最…...

java——Tomcat连接池配置NIO、BIO、APR

Tomcat连接池的配置涉及不同的IO模型,包括NIO(Non-blocking IO,非阻塞IO)、APR(Apache Portable Runtime,Apache可移植运行库)和BIO(Blocking IO,阻塞IO)。以…...

跨域相关的一些问题 ✅

当网页从一个源(https://baidu.com)请求另一个源(如 https://taobao/api)的资源时,就发生了跨域。由于安全原因(防止恶意网站通过脚本访问用户在其他网站上的数据),浏览器对跨域请求…...

RPC学习

一、什么是 RPC RPC(Remote Procedure Call),即远程过程调用,是一种计算机通信协议,它允许运行在一台计算机上的程序调用另一台计算机上的子程序或函数,就好像调用本地程序中的函数一样,无需程序…...

coe文件转mif(c语言)

1 mif文件格式 DEPTH=1024; --The size of data in bits WIDTH=16; --The size of memory in words ADDRESS_RADIX = DEC; --The radix for address values DATA_RADIX = UNS...

【leetcode】动态规划

31. 873. 最长的斐波那契子序列的长度 题目&#xff1a; 如果序列 X_1, X_2, ..., X_n 满足下列条件&#xff0c;就说它是 斐波那契式 的&#xff1a; n > 3对于所有 i 2 < n&#xff0c;都有 X_i X_{i1} X_{i2} 给定一个严格递增的正整数数组形成序列 arr &#xff0…...

介绍一下atoi(arr);(c基础)

hi , I am 36 适合对象c语言初学者 atoi(arr)&#xff1b;是返回整数(int型)&#xff0c;整数是arr数组中字符中数字 格式 #include<stdio.h> atoi(arr); 返回值arr数组中的数字 未改变arr数组 #include<stdlib.h>//atoi(arr); 返 <stdlib> int main(…...

docker入门学习笔记

docker的定义 docker是一个用于构建、运行、传送 应用程序的平台。 为什么要使用docker &#xff1f; 在开发测试库环境中测试成功后&#xff0c;打包成集装箱&#xff0c;到生产环境也是能够成功的。而传统的安装方式不仅繁琐&#xff0c;并且在测试环境安装后&#xff0c;到…...

使用Python和Pybind11调用C++程序(CMake编译)

目录 一、前言二、安装 pybind11三、编写C示例代码四、结合Pybind11和CMake编译C工程五、Python调用动态库六、参考 一、前言 跨语言调用能对不同计算机语言进行互补&#xff0c;本博客主要介绍如何实现Python调用C语言编写的函数。 实验环境&#xff1a; Linux gnuPython3.10…...

tableau-制作30个图表

制作条形图 步骤: 1、横轴是数值,对应了某一个度量值,纵轴是一个标签 战区的成交额,条形图横轴是战区,纵轴是成交额 下钻条形图 1、增加业务架构-战区右键点击,分层结构,增加分层结构 调整业务架构,将战区,城市,小组移动到业务架构下方 此时的条形图上方有➕号展开后…...

2024APMCM亚太杯数学建模C题【宠物行业】原创论文分享

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了2024 年APMCM亚太地区大学生数学建模竞赛C题的成品论文。 给大家看一下目录吧&#xff1a; 目录 摘 要&#xff1a; 10 一、问题重述 14 二&#xff0e;问题分析 15 2.1问题一 15 2.2问题二 15 2.3问题三…...

C语言解析命令行参数

原文地址&#xff1a;C语言解析命令行参数 – 无敌牛 欢迎参观我的个人博客&#xff1a;无敌牛 – 技术/著作/典籍/分享等 C语言有一个 getopt 函数&#xff0c;可以对命令行进行解析&#xff0c;下面给出一个示例&#xff0c;用的时候可以直接copy过去修改&#xff0c;很方便…...

推荐一款龙迅HDMI2.0转LVDS芯片 LT6211UX LT6211UXC

龙迅的HDMI2.0转LVDS芯片LT6211UX和LT6211UXC是两款高性能的转换器芯片&#xff0c;它们在功能和应用上有所差异&#xff0c;同时也存在一些共同点。以下是对这两款芯片的详细比较和分析&#xff1a; 一、LT6211UX 主要特性&#xff1a; HDMI2.0至LVDS和MIPI转换器。HDMI2.0输…...

libmodbus 源码学习笔记

1.核心函数_框架_数据结构 整个通信的过程 就是上面这个框架 下面就是具体过程 <1> 主设备 我们首先要初始化 我们要使用的串口 然后 设置我们要访问的哪一个设备 最后打开串口 <2>从机设备 也是我们要初始化我们的串口 然后随后立即设置我们的串口设备地址 最后…...

通用网络安全设备之【防火墙】

概念&#xff1a; 防火墙&#xff08;Firewall&#xff09;&#xff0c;也称防护墙&#xff0c;它是一种位于内部网络与外部网络之间的网络安全防护系统&#xff0c;是一种隔离技术&#xff0c;允许或是限制传输的数据通过。 基于 TCP/IP 协议&#xff0c;主要分为主机型防火…...

Vue.js基础——贼简单易懂!!(响应式 ref 和 reactive、v-on、v-show 和 v-if、v-for、v-bind)

Vue.js是一个渐进式JavaScript框架&#xff0c;用于构建用户界面。它专门设计用于Web应用程序&#xff0c;并专注于视图层。Vue允许开发人员创建可重用的组件&#xff0c;并轻松管理状态和数据绑定。它还提供了一个虚拟DOM系统&#xff0c;用于高效地渲染和重新渲染组件。Vue以…...

Mybatis 执行存储过程,获取输出参数的值

数据库环境&#xff1a;SQL Server 2008 R2 存储过程 alter procedure proc_generateOuterApplyId acceptType varchar(4),acceptGroupId int,outerApplyId varchar(20) output as begin set nocount onset outerApplyId 24GD6688--select outerApplyId as …...

RAG架构类型

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

Oracle 数据库 IDENTITY 列的性能选项

在上一篇文章Oracle 数据库 IDENTITY 列中&#xff0c;我们介绍了Oracle IDENTITY列的基础知识。本文将介绍IDENTITY列的几个性能选项。由于IDENTITY列内部使用sequence机制&#xff0c;因此也等同于是sequence的性能选项。 由于sequence是递增的&#xff0c;在高并发时&#…...

计算(a+b)/c的值

计算&#xff08;ab&#xff09;/c的值 C语言代码C语言代码Java语言代码Python语言代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 给定3个整数a、b、c&#xff0c;计算表达式(ab)/c的值&#xff0c;/是整除运算。 输入 输入仅一行&…...

OpenCV从入门到精通实战(八)——基于dlib的人脸关键点定位

本文使用Python库dlib和OpenCV来实现面部特征点的检测和标注。 下面是代码的主要步骤和相关的代码片段&#xff1a; 步骤一&#xff1a;导入必要的库和设置参数 首先&#xff0c;代码导入了必要的Python库&#xff0c;并通过argparse设置了输入图像和面部标记预测器的参数。…...

新手学做网站 下载/网站seo优化运营

Openlayers中加载大数据量的vectors时 其渲染效果就会很差&#xff0c;解决这一问题的有效方法就是对这些vectors进行Cluster 在Openlayers的官方Examples中有相关的示例&#xff1a;http://openlayers.org/dev/examples/strategy-cluster-threshold.html 我对这个示例做了下修…...

网上做翻译兼职网站好/国内看不到的中文新闻网站

###一、首先在[HCaaS官网](https://cubepaas.com/?spreadd1b6ce7d228b4363946da18b66fe8948qf7sneblgv "HCaaS官网")&#xff0c;注册账号(注册成功领取最高300元平台金)&#xff0c;进入主面板选择 容器虚拟机-->创建虚拟机------------![](/upload/images/2020…...

重庆网站建设推广服务/seo学校培训班

PS CC2019更新也有一段时间了&#xff0c;版本升级后&#xff0c;之前的滤镜都不能用了。所以米朵给大家收集整理了10款Photoshop滤镜合集领取方式见文末DR4.5汉化版Delicious Retouch Panel 4.5&#xff08;简称DR4.5扩展面板&#xff09;是一款操作简单的Photoshop人像磨皮美…...

没网站怎么做二维码扫描连接/盛大游戏优化大师

在数据分析领域&#xff0c;最热门的莫过于Python和R语言&#xff0c;此前有一篇文章《别老扯什么Hadoop了&#xff0c;你的数据根本不够大》指出&#xff1a;只有在超过5TB数据量的规模下&#xff0c;Hadoop才是一个合理的技术选择。这次拿到近亿条日志数据&#xff0c;千万级…...

外贸公司应该怎样做外贸网站/网站自助搭建

Linux基本命令-文件及目录处理命令一、Linux命令基本知识二、目录处理命令列出目录:ls创建目录&#xff1a;mkdir切换目录:cd显示目前所在的目录:pwd删除空的目录:rmdir复制文件或目录:cp移除文件或目录:rm移动文件与目录&#xff0c;或修改名称:mv三、文件处理命令创建空文件命…...

专门做租房的网站/企业官网

微信扫码关注公众号 &#xff1a;前端前端大前端&#xff0c;追求更精致的阅读体验 &#xff0c;一起来学习啊关注后发送关键资料,免费获取一整套前端系统学习资料和老男孩python系列课程 学习资源推荐 react与node结合下载官方脚手架编写前台代码编译安装express在build目录下…...