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

Pytest 读取excel文件参数化应用

本文是基于Pytest框架,读取excel中的文件,传入页面表单中,并做相应的断言实现。

1、编辑媒体需求

首先明确一下需求,我们需要对媒体的表单数据进行编辑,步骤如下:

具体表单如下图所示

1、登录

2、点击我的媒体

3、点击媒体

4、点击编辑媒体

5、设置标题

6、设置媒体标题分类

7、设置标签001

8、设置产生日期

9、上传图片

10、描述

11、状态

12、启动评论

13、缩略图时刻

14、允许下载

然后点击"Update Media"后,就会跳转到这个媒体的界面上。可以查看提交的配置是否生效。

2、编辑媒体V1.0

第一版先定位到元素并手工实现。

2.1 登录

2.1.1  conftest.py配置

首先在conftest.py做好公共方法的配置工作,也就是登录退出等一些常用的方法。

conftest.配置特点

conftest.py配置脚本名称是固定的,不能改名称

conftest.py与运行的用例要在同一个package下,并且有————init__.py文件

测试用例文件不需要import conftest.py就能自动找到配置好的@pytest.fixture

import timeimport pytest
from selenium import webdriver@pytest.fixture(scope='session')
def driver():driver=webdriver.Firefox()driver.maximize_window()driver.implicitly_wait(10)yield drivertime.sleep(10)   # 如果需要观察程序运行过程,那么加时间等待;代码调试弯沉后,去掉时间等待。# driver.quit()@pytest.fixture(scope='session')
def login(driver):driver.get("https://svr-6-9010.share.51env.net/accounts/login/")# 3、输入用户名driver.find_element_by_id("id_login").send_keys("changcheng1211")# 4、输入密码driver.find_element_by_id("id_password").send_keys("changcheng1211")driver.find_element_by_id("id_captcha_1").send_keys("changcheng1211")# 5、点击登录driver.find_element_by_class_name("primaryAction").submit()yield driver

介绍一下

Pytest Fixture

作用

为每个测试用例完成一些公共的前置或者后置工作

限制范围

scope="function"每个方法调用一次

scope="class"每个类调用一次

scope="module"每一个.py文件调用一次

scope="session"多个.py文件只调用一次

用法

import pytest

打开浏览器  def driver():

登录功能   def login():

2.1.12 pytest之全局配置文件pytest.ini

[pytest]
addopts = -s -v
testpaths = test_cases/test_update_media.py

-s:表示输出调试信息,用于显示测试函数中print()打印的信息

-v:未加前只打印模块名,加v后打印类名、模块名、方法名,显示更详细的信息

-q:表示只显示整体测试结果

-vs:这两个参数可以一起使用

-n:支持多线程或者分布式运行测试用例(前提需安装:pytest-xdist插件)

–html:生成html的测试报告(前提需安装:pytest-html插件) 如:pytest -vs --html ./reports/result.html

testpaths 是指定执行的路径的。

2.2  编辑媒体test_update_media.py

首先在测试的目录下新建一个测试文件test_update_media.py,D:\python\autoFuncTest2\test_cases\test_update_media.py

from selenium.webdriver.support.select import Selectclass TestUpDateMedia:def test_update_meida(self,login):# 1、登录# 2、点击我的媒体login.find_element_by_partial_link_text('我的媒体').click()# 3、点击媒体login.find_element_by_class_name('item-thumb').click()# 4、点击编辑媒体login.find_element_by_link_text('编辑媒体').click()# 5、设置标题login.find_element_by_id('id_title').clear()login.find_element_by_id('id_title').send_keys('小猴子.MP4')# 6、设置媒体标题分类id_category = login.find_element_by_id('id_category')# 如果用ctrl键,可以多选,用click()方法不能多选。# Selenium给我们提供了一种方法 select_by_visible_text('Film')  可以多选select_category = Select(id_category)select_category.select_by_visible_text('Film')select_category.select_by_index(0)  # Artselect_category.select_by_value('2') # Documentary# 7、设置标签001id_new_tags = login.find_element_by_id('id_new_tags')id_new_tags.clear()id_new_tags.send_keys('001')# 8、设置产生日期id_add_date = login.find_element_by_id('id_add_date')id_add_date.clear()id_add_date.send_keys('2000/06/04 20:49')# 9、上传图片login.find_element_by_id('id_uploaded_poster').send_keys('D:\\niupeng2.png')# 10、描述id_description = login.find_element_by_id('id_description')id_description.clear()id_description.send_keys('今天我们去动物园,参观了小猴子')# 11、状态id_state = login.find_element_by_id('id_state')Select(id_state).select_by_visible_text('私有')# 12、启动评论login.find_element_by_id('id_enable_comments').click()# 13、缩略图时刻id_thumbnail_time = login.find_element_by_id('id_thumbnail_time')id_thumbnail_time.clear()id_thumbnail_time.send_keys('50')# 14、允许下载login.find_element_by_id('id_allow_download').click()# 15、点击Update Medialogin.find_element_by_class_name('primaryAction').submit()

下面介绍一下代码的实现

from selenium.webdriver.support.select import Selectclass TestUpDateMedia:def test_update_meida(self,login):

首先导入一个Select的包,因为里面有用到下拉框选择。

新建一个class TestUpDateMedia  的类。

def test_update_meida(self,login):    

并在里面声明一个‘test_update_meida’的方法,它继承自conftest.py的login的类。这里是直接调用登录功能。

        # 2、点击我的媒体login.find_element_by_partial_link_text('我的媒体').click()# 3、点击媒体login.find_element_by_class_name('item-thumb').click()# 4、点击编辑媒体login.find_element_by_link_text('编辑媒体').click()

先点我的媒体,点击媒体,再点击编辑媒体

        # 5、设置标题login.find_element_by_id('id_title').clear()login.find_element_by_id('id_title').send_keys('小猴子.MP4')

设置标题前应先清空输入框

        # 6、设置媒体标题分类id_category = login.find_element_by_id('id_category')# 如果用ctrl键,可以多选,用click()方法不能多选。# Selenium给我们提供了一种方法 select_by_visible_text('Film')  可以多选select_category = Select(id_category)select_category.select_by_visible_text('Film')select_category.select_by_index(0)  # Artselect_category.select_by_value('2') # Documentary

设置媒体的标题分类

这里涉及到下拉框的操作

下拉框操作
    假设有一个元素使select标签,这时需要选择其中一个/多个选项
    这时就不是click或者sendKeys这样的操作,而是应该使用”选择“操作
    代码实现步骤
        1.首先定位下拉框
            WebElement element = driver.findElement(By...)
        2.把定位到的元素转成下拉框类型
            Select select = new Select(element);
        3、执行”选择“操作
            select.deselectAll()
                清空选择
            选择某个元素,有三种方式
                select.select_by_visible_text('界面可见的文字')
                select.select_by_index(0) #选项的value属性
                select.select_by_value('2')  #第几个选项

        # 7、设置标签001id_new_tags = login.find_element_by_id('id_new_tags')id_new_tags.clear()id_new_tags.send_keys('001')# 8、设置产生日期id_add_date = login.find_element_by_id('id_add_date')id_add_date.clear()id_add_date.send_keys('2000/06/04 20:49')

设置标签和产生日期。

        # 9、上传图片login.find_element_by_id('id_uploaded_poster').send_keys('D:\\niupeng2.png')# 10、描述id_description = login.find_element_by_id('id_description')id_description.clear()id_description.send_keys('今天我们去动物园,参观了小猴子')# 11、状态id_state = login.find_element_by_id('id_state')Select(id_state).select_by_visible_text('私有')

正常定位元素并发送值就可以。

        # 12、启动评论login.find_element_by_id('id_enable_comments').click()# 13、缩略图时刻id_thumbnail_time = login.find_element_by_id('id_thumbnail_time')id_thumbnail_time.clear()id_thumbnail_time.send_keys('50')# 14、允许下载login.find_element_by_id('id_allow_download').click()# 15、点击Update Medialogin.find_element_by_class_name('primaryAction').submit()

到这后,第一版已经完成了。已经实现了基本的功能。

在命令行界面输入pytest,会显示执行完成。

3、编辑媒体V2.0

简要说明一下代码的结构。首先新建了一个叫autoFuncTest2的工程。里面按顺序resource下面有test_data.xlsx的测试数据文件。test_cases下面的conftest.py的配置文件和test_update_media2.py的测试用例文件,utils里面有一个专门读取xlsx文件的excel_utils.py文件。最后是一个pytest.ini的全局配置文件。

执行顺序为,首先命令行,输入pytest,会读取pytest.ini配置文件,按照里面的路径执行测试test_cases下面的测试用例test_update_media2.py。test_update_media2.py再调用conftest.py进行登录,登录完成后调用utils里面有一个专门读取xlsx文件的excel_utils.py文件,读取resource下面有test_data.xlsx的测试数据文件,进行操做。

3.1 pytest之全局配置文件pytest.ini

把代码的执行路径改了。因为我们要重新编写V2.0版本。我们要将待执行的命令指向要执行的文件。

[pytest]
addopts = -s -v
testpaths = test_cases/test_update_media2.py

3.2 测试数据文件test_data.xlsx

这个是要读取的excel文件

其中,里面有一些参数,是我们要读取的。

title, category, tag, date, image, description, state, enable_comments, thumbnail_time, allow_download,verify_state, verify_date, verify_enable_comments,verify_allow_download

3.3 test_update_media2.py

这个要从excel里面读取数据,进行参数化。

import timeimport pytest
from selenium.webdriver.support.select import Selectfrom utils import excel_utilsclass TestUpDateMedia:test_data = excel_utils.read(__file__)@pytest.mark.parametrize('title, category, tag, date, image, description, state,'' enable_comments, thumbnail_time, allow_download,'' verify_state, verify_date, verify_enable_comments,'' verify_allow_download', test_data)def test_update_media(self,login,title, category, tag, date, image, description,state, enable_comments, thumbnail_time, allow_download,verify_state, verify_date, verify_enable_comments,verify_allow_download):# 1、登录# 2、点击我的媒体if 'Media was edited!' in login.page_source:login.find_element_by_xpath('//i[text()="menu"]').click()# 如果页面出现了'Media was edited!',那么需要先点击左上角的”i“标签,三个横线的按钮login.find_element_by_partial_link_text('我的媒体').click()# except Exception as e:#     login.find_element_by_xpath('//i[text()="menu"]').click()# 3、点击媒体login.find_element_by_class_name('item-thumb').click()# 4、点击编辑媒体login.find_element_by_link_text('编辑媒体').click()# 5、设置标题login.find_element_by_id('id_title').clear()login.find_element_by_id('id_title').send_keys(title)# 6、设置媒体标题分类id_category = login.find_element_by_id('id_category')# 如果用ctrl键,可以多选,用click()方法不能多选。# Selenium给我们提供了一种方法 select_by_visible_text('Film')  可以多选select_category = Select(id_category)select_category.deselect_all()for c in category.split(','):select_category.select_by_visible_text(c)# select_category.select_by_index(0)  # Art# select_category.select_by_value('2') # Documentary# Experimental,Music,TV# 7、设置标签001id_new_tags = login.find_element_by_id('id_new_tags')id_new_tags.clear()id_new_tags.send_keys()# 8、设置产生日期id_add_date = login.find_element_by_id('id_add_date')id_add_date.clear()id_add_date.send_keys(date)# 9、上传图片login.find_element_by_id('id_uploaded_poster').send_keys(image)# 10、描述id_description = login.find_element_by_id('id_description')id_description.clear()id_description.send_keys(description)# 11、状态id_state = login.find_element_by_id('id_state')Select(id_state).select_by_visible_text(state)# 12、启动评论id_enable_comments = login.find_element_by_id('id_enable_comments')if enable_comments == '启用评论' and id_enable_comments.is_selected():passelif enable_comments == '不启用评论' and  not id_enable_comments.is_selected():passelse:id_enable_comments.click()# 13、缩略图时刻id_thumbnail_time = login.find_element_by_id('id_thumbnail_time')id_thumbnail_time.clear()id_thumbnail_time.send_keys(thumbnail_time)# 14、不允许下载                            allow_download,id_allow_download = login.find_element_by_id('id_allow_download')if allow_download == '允许下载' and id_allow_download.is_selected():passelif allow_download == '不允许下载' and not id_allow_download.is_selected():passelse:id_allow_download.click()# 15、点击Update Medialogin.find_element_by_class_name('primaryAction').submit()# 16.断言# 检查标题assert login.find_element_by_css_selector('.media-title-banner h1').text == title# 检查分类for c in category.split(','):assert c in login.page_source# 检查标签assert tag in login.page_source# 检查日期assert verify_date in login.page_source# 检查描述assert description in login.page_source# 检查状态if state == '公开':assert 'private' not in login.page_sourceassert 'unlisted' not in login.page_sourceelse:assert verify_state in login.page_source# 检查评论assert verify_enable_comments in login.page_source# 检查是否允许评论  form-textareaif 'Add a comment...' == verify_enable_comments:assert login.find_element_by_class_name('form-textarea').get_attribute('placeholder') == 'Add a comment...'else:assert verify_enable_comments in login.page_source# 检查是否允许下载if verify_allow_download == '允许下载':# login.find_element_by_xpath('//span[text()="下载"]')assert '下载' in login.page_sourceelse:assert '下载' not in login.page_source

下面解释一下

@pytest.mark.parametrize('excel中的标题',test_data)

接下来将这些参数传进去。并将里面的响应参数替换成传进去的参数。

def test_update_media(self,login,title, category, tag, date, image, description,state, enable_comments, thumbnail_time, allow_download,verify_state, verify_date, verify_enable_comments,verify_allow_download):

有时隐式等待一些元素需要用一些条件触发,可以用一些条件判断代替。

if 'Media was edited!' in login.page_source:login.find_element_by_xpath('//i[text()="menu"]').click()

有时一个参数里面有多个值,比如category里面有Experimental,Music,TV,下拉框里面需要选多个值,需要用for循环遍历,并用逗号隔开他们。

        # 6、设置媒体标题分类id_category = login.find_element_by_id('id_category')# 如果用ctrl键,可以多选,用click()方法不能多选。# Selenium给我们提供了一种方法 select_by_visible_text('Film')  可以多选select_category = Select(id_category)select_category.deselect_all()for c in category.split(','):select_category.select_by_visible_text(c)

有时需要判断同时页面上是否勾选,如果勾选,并且excel中要求启用评论,那么不操作,反之就勾选。这里面涉及到一个多重判断。

        # 12、启动评论id_enable_comments = login.find_element_by_id('id_enable_comments')if enable_comments == '启用评论' and id_enable_comments.is_selected():passelif enable_comments == '不启用评论' and  not id_enable_comments.is_selected():passelse:id_enable_comments.click()

相关文章:

Pytest 读取excel文件参数化应用

本文是基于Pytest框架,读取excel中的文件,传入页面表单中,并做相应的断言实现。 1、编辑媒体需求 首先明确一下需求,我们需要对媒体的表单数据进行编辑,步骤如下: 具体表单如下图所示 1、登录 2、点击我…...

qt 一个可以拖拽的矩形

1.概要 2.代码 2.1 mycotrl.h #ifndef MYCOTRL_H #define MYCOTRL_H#include <QWidget> #include <QMouseEvent>class MyCotrl: public QWidget {Q_OBJECT public://MyCotrl();MyCotrl(QWidget *parent nullptr); protected:void paintEvent(QPaintEvent *even…...

C# 启动exe 程序

(1) publicbool Start () System.Diagnostics.Process process new System.Diagnostics.Process(); process.StartInfo.FileName "iexplore.exe"; //IE浏览器&#xff0c;可以更换 process.StartInfo.Arguments "http://www.baidu.com"; process.…...

Netty中的Reactor模型实现

Netty版本&#xff1a;4.1.17 Reactor模型是Doug Lea在《Scalable IO in Java》提出的&#xff0c;主要是针对NIO的。 其中的主从Reactor模式在Netty中的配置如下&#xff1a; EventLoopGroup bossGroup new NioEventLoopGroup(1); EventLoopGroup workerGroup new NioEv…...

dll丢失应该怎么解决,总结5种解决DLL丢失问题的方法

在数字时代&#xff0c;我们与计算机的每一天都密不可分。然而&#xff0c;就像所有技术产品一样&#xff0c;我们的计算设备也时不时地会出现一些问题&#xff0c;让人头疼不已。就在上周&#xff0c;我遭遇了一个令人崩溃的技术挑战——DLL文件丢失。这个看似微不足道的小问题…...

dial tcp 10.96.0.1:443: connect: no route to host

1、创建Pod一直不成功&#xff0c;执行kubectl describe pod runtime-java-c8b465b98-47m82 查看报错 Warning FailedCreatePodSandBox 2m17s kubelet Failed to create pod sandbox: rpc error: code Unknown desc failed to setup network for…...

VScode创建ROS项目 ROS集成开发环境

ROS使用VScode创建项目步骤 1.创建ROS工作空间2.启动VScode3.VScode编译ROS4.创建ROS功能包C语言开发Python语言开发 本文章介绍了如何在Ubuntu18.04系统下搭建VScode 的ROS项目 搭建项目分为一下几个步骤&#xff1a; 1.创建ROS工作空间 创建一个demo的ROS工作空间&#xff0…...

nodejs从基础到实战学习笔记-nodejs简介

一、Node.js简介 • Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。 • Node采用Google开发的V8引擎运行js代码&#xff0c;使用事件驱动、非阻塞和异步I/O模型等技术来提高性能&#xff0c;可优化应用程序的传输量和规模。 1.1 特性 …...

2024年最新版------二进制安装部署Kubernetes(K8S)集群

Kubernetes二进制集群部署 文章目录 Kubernetes二进制集群部署资源列表基础环境一、环境准备1.1、绑定映射关系1.2、所有主机安装Docker1.3、所有主机设置iptables防火墙 二、生成通信加密证书2.1、master上成功CA证书2.2.1、创建证书存放位置并安装证书生成工具2.2.2、拷贝证书…...

【mysql】关键词搜索实现

关键词搜索实现两种方式 -- 方式1 模糊匹配搜索 -- 场景一&#xff1a;搜索出来地址内包含‘李’和‘中国’的 select * from tn_md_cust_link where address like concat (%李%) or address like concat (%中国%) -- 场景二&#xff1a;搜索地址或者名称包含 ‘181’ 的 …...

Python面试十问2

一、如何使用列表创建⼀个DataFrame # 导入pandas库 import pandas as pd# 创建一个列表&#xff0c;其中包含数据 data [[A, 1], [B, 2], [C, 3]]# 使用pandas的DataFrame()函数将列表转换为DataFrame df pd.DataFrame(data, columns[Letter, Number]) # 列名# 显示创建的…...

C# OpenCvSharp 图像处理函数-颜色通道-cvtColor

使用 OpenCvSharp 中的 cvtColor 函数进行图像颜色转换 在图像处理领域,颜色空间转换是一个非常常见的操作。OpenCvSharp 提供了一个强大的函数 cvtColor 来处理这类转换。本文将详细介绍 cvtColor 函数的使用方法,并通过具体的示例演示如何在实际项目中应用这些知识。 函数…...

总结之LangChain(三)——模型IO缓存

一、聊天模型缓存 LangChain为聊天模型提供了一个可选的缓存层。这有两个好处&#xff1a; 如果您经常多次请求相同的完成结果&#xff0c;它可以通过减少您对LLM提供程序的API调用次数来帮您节省费用。 它可以通过减少您对LLM提供程序的API调用次数来加快您的应用程序速度。…...

判断一个Java服务是不是GateWay

方法 直接在对应服务的url后变加上后缀/actuator/gateway/routes&#xff0c;看是否会返回Gateway的路由信息。 如果返回了GateWay的路由列表&#xff0c;则该服务为Gateway服务。...

三次插值曲线--插值技术

三次插值曲线 1.1.三次样条曲线 三次样条曲线的基本思想是&#xff0c;在给定的一系列点&#xff08;称为控制点或数据点&#xff09;之间&#xff0c;通过一系列三次多项式曲线段来拟合这些点&#xff0c;使得整个曲线既平滑又准确地通过所有控制点。 1.1.1.数学定义 给定…...

python循环结构

1.while 循环 语句&#xff1a; while 循环条件表达式&#xff1a; 代码块 else&#xff1a; 代码块 小练&#xff1a; 设计一百以内的偶数相加 n 0 while n < 100:n 1if n % 2 0 :print(n) 判断是不是闰年&#xff08;四年一润和百年不润&#xff0c;或者四百年一润&am…...

深入理解Netty的Pipeline机制:原理与实践详解

深入理解Netty的Pipeline机制&#xff1a;原理与实践详解 Netty是一个基于Java的高性能异步事件驱动的网络应用框架&#xff0c;广泛应用于高并发网络编程。&#xff08;学习netty请参考&#xff1a;深入浅出Netty&#xff1a;高性能网络应用框架的原理与实践&#xff09;Nett…...

直方图均衡化示例

禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》 图3-17...

私域电商新纪元:消费增值模式的创新与成功实践

大家好&#xff0c;我是吴军&#xff0c;很高兴能够与您分享私域电商领域的魅力与机遇。今天&#xff0c;我将为大家呈现一个令人瞩目的成功案例&#xff0c;这个案例充分展现了私域电商的巨大潜力和无限可能。 在短短一个月的时间里&#xff0c;我们的客户成功实现了业绩的飞跃…...

Java——IO流(一)-(6/8):字节流-FileInputStream 每次读取多个字节(示例演示)、一次读取完全部字节(方式一、方式二,注意事项)

目录 文件字节输入流&#xff1a;每次读取多个字节 实例演示 注意事项 文件字节输入流&#xff1a;一次读取完全部字节 方式一 方式二 注意事项 文件字节输入流&#xff1a;每次读取多个字节 用到之前介绍过的常用方法&#xff1a; 实例演示 需求&#xff1a;用每次读取…...

服务器SSH 免密码登录

1. 背景 为了服务器的安全着想&#xff0c;设置的服务器密钥非常长。但是这导致每次连接服务器都需要输入一长串的密码&#xff0c;把人折腾的很痛苦&#xff0c;所以我就在想&#xff0c;能不能在终端SSH的时候无需输入密码。 windows 可以使用 xshell 软件&#xff0c;会自…...

Linux安装MySQL以及远程连接

1、Linux安装MySQL 1.1、准备解压包 MySQL5.x解压包 提取码&#xff1a;9y7n 1.2、通过rpm脚本安装 切记安装顺序&#xff1a;common --> libs --> client --> server 因为它们之间存在依赖关系&#xff0c;所以务必按照顺序安装 安装前请确保当前目录/文…...

SQL Server 数据库分页技术详解:选择最佳方法优化查询性能”。

当今数据驱动的应用程序中&#xff0c;数据库分页技术在优化查询性能和提升用户体验中扮演着重要角色。在 SQL Server 环境下&#xff0c;开发者面对大数据集时&#xff0c;常常需要选择合适的分页方法以平衡功能需求和性能优化。本文将详细介绍 SQL Server 中几种主要的分页技…...

electron录制-镜头缩放、移动

要求 1、当录屏过程中&#xff0c;鼠标点击&#xff0c;镜头应该往点击处拉近&#xff0c;等一段时间还原 2、录屏过程中&#xff0c;可能会发生多次点击&#xff0c;但是点击位置偏差大&#xff0c;可能会导致缩放之后&#xff0c;画面没出来&#xff0c;因此需要移动镜头帧 …...

红队内网攻防渗透:内网渗透之内网对抗:信息收集篇自动项目本机导出外部打点域内通讯PillagerBloodHound

红队内网攻防渗透 1. 内网自动化信息收集1.1 本机凭据收集类1.1.1、HackBrowserData 快速获取浏览器的账户密码1.1.2、Searchall 快速搜索服务器中的有关敏感信息还有浏览器的账户密码1.1.3、Pillager 适用于后渗透期间的信息收集工具,可以收集目标机器上敏感信息1.2 对外打点…...

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发&#xff08;发布&#xff09;-SelectCamelWords[选中驼峰单词]&#xff08;idea源代码&#xff09; 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址&#xff1a;https://github.com/yangfeng…...

【网络安全】网络安全基础精讲 - 网络安全入门第一篇

目录 一、网络安全基础 1.1网络安全定义 1.2网络系统安全 1.3网络信息安全 1.4网络安全的威胁 1.5网络安全的特征 二、入侵方式 2.1黑客 2.1.1黑客入侵方式 2.1.2系统的威胁 2.2 IP欺骗 2.2.1 TCP等IP欺骗 2.2.2 IP欺骗可行的原因 2.3 Sniffer探测 2.4端口扫描技术…...

初识 GPT-4 和 ChatGPT

文章目录 LLM 概述理解 Transformer 架构及其在 LLM 中的作用解密 GPT 模型的标记化和预测步骤 想象这样⼀个世界&#xff1a;在这个世界里&#xff0c;你可以像和朋友聊天⼀样快速地与计算机交互。那会是怎样的体验&#xff1f;你可以创造出什么样的应用程序&#xff1f;这正是…...

【C语言】解决C语言报错:Array Index Out of Bounds

文章目录 简介什么是Array Index Out of BoundsArray Index Out of Bounds的常见原因如何检测和调试Array Index Out of Bounds解决Array Index Out of Bounds的最佳实践详细实例解析示例1&#xff1a;访问负索引示例2&#xff1a;访问超出上限的索引示例3&#xff1a;循环边界…...

【C++】一个极简但完整的C++程序

一、一个极简但完整的C程序 我们编写程序是为了解决问题和任务的。 1、任务&#xff1a; 某个书店将每本售出的图书的书名和出版社&#xff0c;输入到一个文件中&#xff0c;这些信息以书售出的时间顺序输入&#xff0c;每两周店主会手工计算每本书的销售量、以及每个出版社的…...

网站淘宝推广怎么做/百度账号人工客服电话

导读&#xff1a; 什么情况下需要使用全局上下文呢&#xff0c;情况有以下几点&#xff1a; 例如在Service服务中不能通过参数传过来&#xff0c;但是又需要用到这个context参数&#xff0c;这种情况下就需要使用全局上下文。例如工具类中&#xff0c;频繁传递上下文参数的话&a…...

网站空间 默认文档/网络营销有哪些推广方法

文章目录 数据结构算法题Java 基础Java 高级三大框架数据库操作系统计算机网络分布式/集群等高级主题技术开放题数据结构 HashMap的原理,内部数据结构? 底层使用哈希表(数组 + 链表),当链表过长会将链表转成 红黑树以实现 O(logn) 时间复杂度内查找讲一下 HashMap 中 put …...

怎么用域名做邮箱网站/包就业的培训机构

Mysql常用函数的汇总&#xff0c;可看下面文章 https://www.cnblogs.com/poloyy/p/12890763.html substring 的作用 截取指定范围的字符串&#xff0c;学过Java的同学&#xff0c;对这个应该不陌生&#xff0c;字符串函数也有一个substring&#xff0c;作用一样哈 substring 的…...

博客式笑话网站织梦源码/潍坊seo招聘

Spring AOP AOP介绍 Aop为Aspect Oriented Programming的缩写&#xff0c;面向切面编程&#xff0c;是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。 AOP 是 OOP 的延续&#xff0c;是软件开发中的一个热点&#xff0c;也是Spring框架中的一个重要内容&…...

信息网站设计案例/企业网站推广的方法有

题意&#xff1a; 给定一棵树&#xff0c;n个节点&#xff0c;若删除点v使得剩下的连通快最大都不超过n/2&#xff0c;则称这样的点满足要求。求所有这样的点&#xff0c;若没有这样的点&#xff0c;输出NONE。 思路&#xff1a; 只需要拿“求树的重心”的代码改一行就OK了。因…...

门户网站建设工作总结/seo需求

本文转载&#xff1a;https://www.linuxidc.com/Linux/2016-12/138302.htmXPath简介 XPath是W3C的一个标准。它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计。目前有XPath1.0和XPath2.0两个版本。其中Xpath1.0是1999年成为W3C标准&#xff0c;而XPath2.0标准…...