车载自动化项目:Python

news2024/11/17 9:33:37

1.  自动化测试用的什么框架?

第一种:Python+Selenium+uittest框架

首先是拿到需求文档,基于这个需求去进行搭建。
用pytest+request+allure 这些第三方库进行编写自动化脚本。

举个例子一般的话整个的一个自动化的搭建是分为6层嘛:

第一层:会去做一个公共层,里面去放一些方法,像可调用的公共函数、数据库之类的。(这些函数是放在yaml文件,存放一些数据库地址,还有URL路径还有业务中会用的比如车辆车型还有用户名密码这一些)

第二层:会做一个配置层,然后配置一些像config这样的yaml配置文件,log配置文件,环境配置文件,数据库的配置文件,里面会放一些路径,像我们业务当中会用到的一些密码信息之类的

第三层:数据层,里面会放一些比方说一些excle 表格

第四层:用例层,比方说云端升级任务。任务有分为手动、自动、预约。还有像任务的审核,审核之后下载,下发任务等。包括一些异常场景都在这个用例层里面。

第五层:主函数,就是调用以上分层里的方法实例。去执行这个测试用例吧。

最后就是报告层:生成一个allure 的报告大致就是这个样子。

第二种:如何介绍自动化项目

在面试过程中,要向面试官讲解自己做过的自动化项目。如何介绍,下面简单说下

可以参考:

面试官你好,最近我做的xxx项目中有接口自动化部分,下面简单给您介绍一下:

1.使用的技术主要是 Python + Pytest + Requests + CSV +pytest-html。

a.主要使用Python编程语言实现,

b.Requests 库主要用来模拟发送接口请求

c.Pytest 主要用来维护接口自动化测试用例。

d.CSV模块主要用来进行数据驱动(数据驱动也可以使用Excel文件,Excel文件使用 Openpyxl 库来操作)

e.pyhtml-html主要用来作为测试报告

2.另外在接口自动化也要处理接口的上下游传参

a.我在接口上下游传参的接口主要操作:

i.先定义字典格式的数据。

ii.在上游接口中编写用例,用例通过之后给字典赋值。

ii.在下游接口中引用字典中的字段值。

b.主要通过字典的方式继续上下游传参。

3针对单接口进行参数化处理的时候,主要使用 csv文件数据驱动

a.首先将测试数据保存到csv文件中

b通过Python的csv模块来读取csv文件中的内容

c借助pytes模块中的参数化功能进行数据驱动。

4.最后,自动化代码完成之后,将代码存放在公司的git服务器上,搭建Jenkins 平台,从Jenkins平台上运行接口代码,代码运行完成之后,通过Jenkins会自动发送邮件到公司邮箱。如果接口出现问题,可以第一时间收到通知。

以上就是我最近项目中使用的自动化。简单概括就是使用 Python+pytest+requests+Jenkins实现接口自动化平台的搭建。

3.python有哪些数据类型?

答:有基本数据类型和集合数据类型两种,基本数据类型有数字型(int,float,complex),字符串,布尔型;集合数据类型有列表,元祖,字典,集合。

4.列表和元祖的区别是什么?

答:共同点:访问数据,都是通过索引访问,都可以存放各种类型的数据

不同点:定义上---列表是[](中括号);元祖是()圆括号

使用上---可对列表进行增删改,元组不允许修改。

5.怎么把一个元祖转换为list?

答:python 把元组转为列表的方法是在元组前面添加list

list_a = (1, 9, 10, 6)
print(list_a)  # 打印结果 (1, 9, 10, 6) 元组是带小括号的
list_b = list(list_a)
print(list_b)  # 打印结果 [1, 9, 10, 6] 列表是带中括号的

6.List你怎么正向排序和反向排序?

答:正向排序(升序)--a.sort()

反向排序(降序)--a.sort(reverse=True)

7.列表和字典的区别是什么?

答:1.列表是有顺序的,如果按照某种顺序向列表添加元素,这些元素就会保持顺序;字典是无序的,如果向字典添加内容,显示的顺序可能会和添加的顺序不同

2.列表中的元素是使用索引访问的,而字典是使用键来访问的

8.Python循环体里面break和continue有什么区别?

答:break--在for循环或者while循环结构中使用break语句,用于结束整个循环

     continue--在for循环或while循环结构中使用break语句,用于跳过本次循环中的剩余语句,然后继续进行下一轮循环

9.Pycharm的自动化脚本的流程是怎么样的?

首先根据需求文档,确定做自动化的内容,在具体编写自动化测试用例前,我们需要建一个测试类继承unittest(就内泰斯特)里面的TestCase类,继承这个类之后我们才是真正的使用unittest(就内泰斯特)框架去写测试用例,编写测试用例的步骤如下:

1)首先导入unittest(就内泰斯特)模块

2)再就是创建一个测试类,并继承unittest.TestCase()

3)然后用setup()(斯塔普)和tearDown()函数来定义初始化工作和收尾工作

4)其次中间定义测试方法,方法名必须以test_为前缀

5)再就是在用例中添加断言判断来判断运行结果

常见的断言:assertEqual(a,b)-断言a和b是否相等,相等则测试通过

               assertNotEqual(a,b)-断言a和b是否相等,不相等则测试用例通过

               assertTrue(x)-断言x是否True,是True则测试通过

               assertFalse(x)-断言x是否False,是false则测试通过

               assertIs(a,b)-断言a是否是b,是则测试通过

               assertNotIs(a,b)-断言a是否是b,不是则测试通过

               assertIn(a,b)-断言a是否在b中,在b中则测试通过

               assertNotIn(a,b)-断言a是否在b中,在b中则测试通过

6)最后使用HTMLTestRunner来生成测试报告,分析运行结果

10.在python数据型中,哪些可以切片处理呢?

答:python中符合序列的有序序列都支持切片,例如列表,字符串,元组。

11.如果我要将一个12345678的字符串通过切片倒过来显示输出需要怎么弄?

格式:[start:end:step]

start:起始索引,从0开始

end:结束索引

step:步长,步长为正时,从左向右取值。步长为负时,反向取值

注:切片取值是顾头不顾尾;切片的步长默认为1,不可为0

答: a=’12345678’

print(a[: : -1])

12.有大概统计过自己写个多少个自动化测试脚本吗?

一般是功能测试模块的10%-30%

我们那个项目写的自动化测试脚本写的比较少,我负责的模块写了50个                      

13.深拷贝以浅拷贝

一个对象有对象父级和对象子级中如果嵌套了其他类型

内部元素的type为number、str、tuple(不可变类型)类型的,改变其中的值,浅拷贝和深拷贝始终不变

内部元素的type为list、set、dict(可变类型,改变其中的值,浅拷贝地址值会变,深拷贝地址值不变

浅拷贝只会将父类复制到新的储存空间,子类的地址值使用原对象子类的地址值

深拷贝会将父级和子级全部复制到对应的新的储存空间,与原对象互不影响

14. setup 、teardown怎么用

setup和teardown是用来处理用例的开始前工作和结束后的工作

setup_module;teardown_module;(模块级别的,优先级最高)

最先执行的前置或者后置,且在整个 *.py 文件执行时只执行一次

setup_function;teardown_function;(不在类中)

只对函数用例(不在class里面的)生效,有多少条函数用例执行多少次

setup_class;teardown_class;(类级)

在类中运行的前置或者后置,只运行一次

setup_methond;teardown_methond;(方法级)

在类中每条用例前后运行的前置或后置,每条case分别运行一次

setup     teardown   (在类里面的)

既可以在类中运行,也可以在类外运行,每条用例前后分别执行一次

15.怎么理解装饰器///装饰器的原理

装饰器本身是一个函数\方法,它的入参和返回结果也是一个函数\方法。被标记的方法是装饰器的入参,装饰器会对这个方法进行功能改造返回一个新的方法,最后执行的就是这个新的方法。

16.测试固件(测试夹具)的作用域和使用方法

@pytest.fixture(autouse=True):声明固件时设置

@pytest.fixture(autouse=True):声明测试固件,并在要使用固件的用例中以参数形式传入固件(beanshell)

@pytest.fixture(autouse=True):声明测试固件,并对要使用固件的域用装饰器进行标记

@pytest.mark.usefixtures('beanshell')

function: 函数级,每个测试函数都会执行一次固件;

class: 类级别,每个测试类执行一次,所有方法都可以使用;

module: 模块级,每个模块执行一次,模块内函数和方法都可使用;

session: 会话级,一次测试只执行一次,所有被找到的函数和方法都可用。

17.怎么做数据驱动

就是在测试的时候,我们用的这些测试脚本和测试数据是分离管理的,使用文件存放测试数据(比如我经常使用的是excel),然后封装好一个加载测试数据的方法,在测试脚本中调用该方法获取测试数据,并对需要做数据驱动的测试方法用@pytest.mark.parametrize()(婆ruai母翘以斯)进行装饰,该测试方法就会在测试数据的驱动下重复执行,有多少条测试数据,该测试方法就执行多少次

1.定义:用测试数据驱动测试方法的执行,有多少条测试用例,测试方法就执行多少次

2.对测试方法进行装饰:@pytest.mark.parametrize('data',testdata)

18.最常用的第三方库有哪些

1)xlrd、xlwt    2)pymysql   3)requests   4)pyyaml    5)pytest    6)allure-pytest

19. pytest装饰器

pytest装饰器

跳过不执行  @pytest.mark.skip( )

有条件跳过  @pytest.mark.skipif( )

标记测试方法为失败  @pytest.mark.xfail( )

标记测试用例的执行顺序  @pytest.mark.run(order=3)  需要安装:pip install pytest-ordering

对测试失败的用例进行重试一共重试3次,每次间隔2秒   @pytest.mark.flaky(reruns =3 , reruns_delay=2)

需要安装:pip instal

20.使用pytest生成测试报告

使用pytest生成测试报告

1安装测试报告所使用的第三方库:pip install pytest html

2运行测试用例并生成测试报告:pytest.main(['-vs','./test_pytest_251.py',

'--hum]=../report/result.htmI'])

21.使用allute生产测试报告

使用allute生成测试报告

pytest.main(["--alluredir"/report/allure_ison''_-clean-alluredir''/T)

1    -alluredir:使用allure运行测试用例

2    ./ report/allureison:定义运行结果数据存储的位置(json格式的结果)

3.   -clean-alluredir:每次执行前先清除历史数据

4    ./:运行当前文件所在路径下的所有测试模块

os.system ('allure generate report/ allure_json -o report/allure_report --clean'

- 将json格式的结果数组装成html格式

22.常见的异常

NameError

IndexEttor:下标越

TypeError

ValueError

KeyError

ZeroDivisionError:  被除数为0

异常从高到低  OFF. FATAL. ERROR, WARN, INFO, DEBUG. TRACE, ALL

23.方法与函数的区别

1. 方法是写在类里面的函数,函数是直接写在python模块里面的

 2. 方法只能被类的对象调用,函数可以被导入到其他任意模块,无条件的调用

 3. 方法的第一参数要写self    《赛额复》

 4. 私有方法只能在当前类中被调用,类的对象无法调用

24.继承

一个类继承另一个类的属性和方法,子类的实例可以访问父类的属性和方法

25.方法重写(方法覆盖)

如果从父类继承的方法不能满足子类的需求,可以对其进行改写。这个过程叫方法的覆盖(override)也称之为方法的重写,子类的实例调用该方法时调用的是重写之后的方法,父类的实例调用这个方法时,调用的是原方法,多个父类有同名方法时,继承时写在前面的父类的方法的优先级高

26.xlrd

Path=”../路径“

     file=xlrd.open_ workbook(path) #创建文件对象

     sheets= file.sheet_names0 #茯取该文件的所有sheet,以列表返回

     sheet1=file.sheet_by_index(0)#通过下标选取要读取的sheet

     sheet2=file.sheet_by_name('name')#通过名称选取要读取的sheet

     name = sheet.name #获取sheet的名宇

     nrow=sheet1.nrows #获取当前sheet的总行数

     ncol=sheet1.ncols #获取当前sheet的总列数

     data_row=sheet1.row_values(rowx, start_colx=0,end_colx=None)#读取某一行

     data_col=sheet1.col_values(colx, start_rowx=0, cnd_ rowx=None)#读取某一列

     data_cell= sheet1.cell_value(×, y). value#读取某一个单元格的值

27.pymysql

conn = pymysgl.connect(host,user,password,database)#获取连接对象

     cursor = conn.cursor( )  创建游标

     cursor.execute(sql)      执行sql

     cursor.fetchone( )       获取查询结果的一条数据

     cursor.fetchall( )          获取所有查询结果

     conn.commit( )               提交(增删改之后都妥提交)

     cursor.close( )             关闭游标

     conn .close( )              关闭连接

     conn .rollback( )          发生错误时回滚

先关闭游标,再关闭连接

28.pytest

文件名以test_*.py或*_test.py

类要以Test开头,不能包含_init_方法

以test开头的方法

如果类不以Test开头,类中的方法即使是以test开头也不会执行

运行该模块下所有的测试用的

pytest.main(["./ test pytest_01.py"])#运行指定模块

-s-v-g 命令参数

#运行指定模块,

-V是详细信息模式,输出更详细的执行用例信息

pytest.main(['-s', './ test_ pytest_ 01-Py'])

#运行指定模块,-q是静默模式,只显示运行结果

pytest.main([‘-q','./test_pytest_01.py'])

#运行指定模块,

#-s是显示用例中的打印信息和日志信息

Pytest.main(['-s','./test_pytest_01.py'])

29.测试夹具

fixture概念和作用

1 fixture是pytest 用于在测试前后进行预备、清理工作的代码处理机制。

2fixture优势

fixrure相对于unittest中的setup和teardown来说有以下几点优势:

1. fixure命名更加灵活,局限性比较小;

2. conftest.py 配置里面可以实现数据共享,不需要import就能自动找到一些配置;

3. scope=”session”可以实现多个py跨文件使用一个session来完成多个用例。

Fixture是pytest精髓所在,就像unittest中的setup和teardown一样,但相对之下它的功能更加强大和灵活。

(详解)试前后的初始化设置,如测试数据准备,链接数据库,打开浏览器等这些操作都可以使用fixture来实现

2.测试用例的前置条件可以使用fixture实现

3.支持经典的xunit fixture ,像unittest使用的setup和teardown

4.fixture可以实现unittest不能实现的功能,比如unittest中的测试用例和测试用例之间是无法传递参数和数据的,

但是fixture却可以解决这个问题

不需要会)用return返回初始化浏览器,return后面的后置条件不会执行,因此需要将return改成yield,后置条件就会被调用执行。

Yield是Python中的一个关键字,表示生成器。测试夹具的前置条件遇到yield时返回一个结果,然后将测试夹具挂起,

转而去执行测试用例,最后回来测试夹具中执行后置条件。Return和yield后面可以不写任何返回值,

表示空没有数据返回

30.常见的配置文件的格式

yaml文件;.properties文件(扑扑替斯);.ini文件;.json文件;.xml文件

31.sql注入

就是通过把SQL命令插入到Web表单递交或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令

防止SQL注入的方法和理念:

1:永远不要信任用户的输入

2:永远不要使用动态拼装SQL

3:不要使用管理员权限

4:密码要加密

32. log是什么,log的级别,log的作用

og是什么:是详细的记录程序运行过程的文件

log的级别:error(爱柔)错误;warn(物嗯)警告; info信息;debug调试

log的作用:方便找到BUG

          Log.v 的调试颜色为黑色的

          Log.d的输出颜色是蓝色的

  Log.i的输出为绿色

Log.w的意思为橙色

 Log.e为红色,可以想到error错误

33. pytest框架下文件、类、方法的命名规范

文件名以test_.py开头

以Test开头的类,不能包含__int__方法

以小写的test开头的方法

如果类不以Test开头的类,即使类里面的方法是test开头也不会执行(默认的是这样,可以自定义更改)

34.最常见的断言

assert   == ;

!= ;   <= ;    >= ; 

is True;    is not True ;

is Flase    ; is not Flase ;

in ;  not in ;

35.用过哪些装饰器(pytest,allure)

Plaintext

@allure.severity('blocker')

@allure.epic(爱呸克)("总描述")

@allure.feature(费切)("测试模块描述")

@allure.story(斯刀锐)("测试描述")

@allure.parent_suite(拍润特,斯锐迟)("上海车进科技信息有限公司-Demo1")

@allure.suite(斯锐迟)('上海车进-注册登录')

@allure.sub_suite('登录')

@allure.description(第斯克瑞斯)("描述内容的意思")

@allure.title(抬头)("用例名称")

@allure.severity(斯歪瑞情)('blocker'):(用例等级)

等级severity_level介绍

   blocker:阻塞缺陷(功能未实现,无法下一步)

   critical:严重缺陷(功能点缺失)

normal:一般缺陷(边界情况,格式错误)

   minor:次要缺陷(界面错误与ui需求不符)

   trivial:轻微缺陷(必须项无提示,或者提示不规范)

36.如何生成测试报告

pytest自带的测试报告不够优美,我们使用allure生成最终的测试报告

37.自动化测试框架的搭建

a.    简历: 基于python + pytest + request + allure 编写接口自动化脚本

b.    安装pytest、request、allure

c.     配置配置文件:log配置文件,环境配置文件、数据库配置文件

d.    封装工具类和方法:http请求的工具类、数据库操作的工具类、测试数据读取的工具类……

e.    对业务中常用的一些操作进行封装

f.     开发测试脚本

g.    组装测试套件(suit),生成allure测试报告

38.python的定位方式?

答:有八种,分别是by.id,by.name,by.class name,by.tag name,by.link text,by.partial link text,by.xpath,by.css selector。我常用的有id,name,class name,link text,xpath。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1443635.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPIO结构

GPIO简介 GPIO(General Purpose Input Output)通用输入输出口 可配置为8种输入输出模式 引脚电平&#xff1a;0V~3.3V,部分引脚可容忍5V 输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电平或电压&#x…

算法学习——LeetCode力扣字符串篇

算法学习——LeetCode力扣字符串篇 344. 反转字符串 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; 描述 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地…

STM32CubeMX,定时器之定时功能,入门学习,如何设置prescaler,以及timer计算PWM输入捕获方法(重要)

频率变小&#xff0c;周期变长 1&#xff0c;参考链接&#xff08;重要&#xff09; STM32CubeMX——定时器之定时功能&#xff08;学习使用timer定时器的设置&#xff09; STM32测量PWM信息&#xff08;学习使用设置pwm输入捕获&#xff09; 通用定时器中两个重要参数的设置心…

[C# WPF] DataGrid选中行或选中单元格的背景和字体颜色修改

问题描述 WPF中DataGrid的选中行或选中者单元格&#xff0c;在焦点失去后&#xff0c;颜色会很淡&#xff0c;很不明显&#xff0c;不容易区分。 解决方法 在失去焦点的情况下&#xff0c;如何设置行或单元格与选中的时候颜色一样&#xff1f; <DataGrid.Resources>&…

【Linux】构建模块

&#x1f525;博客主页&#xff1a;PannLZ &#x1f38b;系列专栏&#xff1a;《Linux系统之路》 &#x1f94a;不要让自己再留有遗憾&#xff0c;加油吧&#xff01; 文章目录 构建第一个模块1模块的makefile2内核树内构建3内核树外构建 构建第一个模块 可以在两个地方构建模…

Linux操作系统基础(七):Linux常见命令(二)

文章目录 Linux常见命令&#xff08;二&#xff09; 一、kill命令 二、ifconfig命令 三、clear命令 四、重启与关机命令 五、which命令 六、hostname命令 七、grep命令 八、|管道 九、useradd命令 十、userdel命令 十一、tar命令 十二、su命令 十三、ps命令 Linu…

滑块识别验证

滑块识别 1. 获取图片 测试网站&#xff1a;https://www.geetest.com/adaptive-captcha-demo 2. 点击滑块拼图并开始验证 # 1.打开首页 driver.get(https://www.geetest.com/adaptive-captcha-demo)# 2.点击【滑动拼图验证】 tag WebDriverWait(driver, 30, 0.5).until(la…

Python爬虫——请求库安装

目录 1.打开Anaconda Prompt 创建环境2.安装resuests3.验证是否安装成功4.安装Selenium5.安装ChromeDriver5.1获取chrom的版本5.1.1点击浏览器右上三个点5.1.2点击设置5.1.3下拉菜单&#xff0c;点击最后关于Chrome&#xff0c;获得其版本 5.2 打开网址 [chromedriver](https:/…

SolidWorks学习笔记——入门知识1

目录 1、固定最近文档 2、根据需要自定义菜单栏 3、根据需要增添选项卡 4、命令搜索框 5、鼠标右键长按快速切换视图 6、鼠标笔势 自定义鼠标笔势 1、固定最近文档 图1 固定最近文档 2、根据需要自定义菜单栏 图2 根据需要自定义菜单栏 3、根据需要增添选项卡 图3 根据…

服务器被黑,安装Linux RootKit木马

前言 疫情还没有结束&#xff0c;放假只能猫家里继续分析和研究最新的攻击技术和样本了&#xff0c;正好前段时间群里有人说服务器被黑&#xff0c;然后扔了个样本在群里&#xff0c;今天咱就拿这个样本开刀&#xff0c;给大家研究一下这个样本究竟是个啥&#xff0c;顺便也给…

尚硅谷 Vue3+TypeScript 学习笔记(中)

目录 三、路由 3.1. 【对路由的理解】 3.2. 【基本切换效果】 3.3. 【两个注意点】 3.4.【路由器工作模式】 3.5. 【to的两种写法】 3.6. 【命名路由】 3.7. 【嵌套路由】 3.8. 【路由传参】 query参数 params参数 3.9. 【路由的props配置】 3.10. 【 replace属性…

HiveSQL——sum(if()) 条件累加

注&#xff1a;参考文章&#xff1a; HiveSql面试题10--sum(if)统计问题_hive sum if-CSDN博客文章浏览阅读5.8k次&#xff0c;点赞6次&#xff0c;收藏19次。0 需求分析t_order表结构字段名含义oid订单编号uid用户idotime订单时间&#xff08;yyyy-MM-dd&#xff09;oamount订…

日本的便宜服务器有哪些?

年底之际&#xff0c;无非是云服务器优惠的黄金时期&#xff0c;对于个人用户和独立开发者来说&#xff0c;无论你是搭建个人网站还是个人博客&#xff0c;现在都是行动的好时机。那么&#xff0c;对于这时要入手日本服务器的用户&#xff0c;该怎么找便宜厂商呢&#xff1f;这…

机器学习系列——(十三)多项式回归

引言 在机器学习领域&#xff0c;线性回归是一种常见且简单的模型。然而&#xff0c;在某些情况下&#xff0c;变量之间的关系并不是线性的&#xff0c;这时候我们就需要使用多项式回归来建模非线性关系。多项式回归通过引入高次项来扩展线性回归模型&#xff0c;从而更好地拟…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Toggle组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之Toggle组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Toggle组件 组件提供勾选框样式、状态按钮样式及开关样式。 子组件 仅当Toggl…

python从入门到精通(十六):python爬虫的BeautifulSoup4

python爬虫的BeautifulSoup4 BeautifulSoup4导入模块解析文件创建对象python解析器beautifulsoup对象的种类Tag获取整个标签获取标签里的属性和属性值Navigablestring 获取标签里的内容BeautifulSoup获取整个文档Comment输出的内容不包含注释符号BeautifulSoup文档遍历Beautifu…

【北邮鲁鹏老师计算机视觉课程笔记】02 filter

1 图像的类型 二进制图像&#xff1a; 灰度图像&#xff1a; 彩色图像&#xff1a; 2 任务&#xff1a;图像去噪 噪声点让我们看得难受是因为噪声点与周边像素差别很大 3 均值 滤波核 卷积核 4 卷积操作 对应相乘再累加起来 卷积核记录了权值&#xff0c;把权值套到要卷积…

HiveSQL——连续增长问题

注&#xff1a;参考文章&#xff1a; SQL连续增长问题--HQL面试题35_sql判断一个列是否连续增长-CSDN博客文章浏览阅读2.6k次&#xff0c;点赞6次&#xff0c;收藏30次。目录0 需求分析1 数据准备3 小结0 需求分析假设我们有一张订单表shop_order shop_id,order_id,order_time…

【数学建模】【2024年】【第40届】【MCM/ICM】【D题 五大湖的水位控制问题】【解题思路】

一、题目 &#xff08;一&#xff09; 赛题原文 2024 ICM Problem D: Great Lakes Water Problem Background The Great Lakes of the United States and Canada are the largest group of freshwater lakes in the world. The five lakes and connecting waterways const…

如何解决利用cron定时任务自动更新SSL证书后Nginx重启问题

利用cron定时任务自动更新SSL证书后&#xff0c;用浏览器访问网站&#xff0c;获取到的证书仍然是之前的。原因在于没有对Nginx进行重启。 据说certbot更新完成证书后会自动重启Nginx,但显然经我检测不是这回事儿。 所以我们需要创建一bash脚本&#xff0c;然后定时调用这个脚…