基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程
基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程
- 1 Jenkins是什么?
- 2 Jenkins目标是什么?
- 3 什么是CI/CD?
- 3.1 CI持续集成
- 3.2 CD持续部署
- 3.3 CD持续交付
- 4 Ubuntu环境
- 4.1 环境需求
- 4.2 实现思路
- 5 Ubuntu下安装Docker
- 6 安装Jenkins
- 6.1 拉取Jenkins镜像
- 6.2 启动Jenkins
- 6.3 修改jenkins权限
- 7 Jenkins初始配置
- 7.1 查看容器日志
- 7.2 插件选择
- 7.3 创建管理员用户
- 7.4 安装插件
- 7.4.1 git插件安装
- 7.4.2 Docker插件安装
- 7.4.3 HTML Publisher插件安装
- 7.4.4 Email Extension插件安装
- 7.4.5 JDK、Maven、SSH插件(可选)
- 8 Jenkins详细配置
- 8.1 新建任务
- 8.2 配置任务
- 8.2.1 配置构建记录保留规则
- 8.2.2 Git仓库配置
- 8.2.3 配置构建后操作
- 8.3 配置邮件
- 9 构建python镜像
- 9.1 导出依赖包
- 9.2 创建app目录
- 9.3 创建Dockerfile
- 9.4 执行镜像构建命令
- 10 build.sh设计
- 11 构建任务
- 12 解决报告样式
- 13 查看邮件
1 Jenkins是什么?
- 学习官网:Jenkins官网,Jenkins中文官网;
Jenkins是一款开源CI&CD软件,用于自动化各种任务,包括构建、测试和部署软件;- 用
Java语言编写的,可在Tomcat、Docker等流行的容器中运行,也可独立运行。
通俗的讲,比如把编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL(代码仓库地址),将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到Tomcat容器中。
2 Jenkins目标是什么?
- 持续、自动地构建软件项目或者自动化测试项目;
- 帮助快速定位问题,提升开发效率;
- 自动化测试中可帮助提升测试效率。
3 什么是CI/CD?
3.1 CI持续集成
- CI:即
Continuous integration持续集成; - 强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起;
- 团队需要为每个新功能、代码改进、或者问题修复创建自动化测试用例;
- 需要一个持续集成服务器,它可以监控代码提交情况,对每个新的提交进行自动化测试;
- 尽可能快的提交代码;
- 以下图片来源于网络,可帮助理解,仅供参考:

- 优势:
① 提早拿到回归测试的结果,避免问题到生产环境中;
② 发布编译将会更加容易;
③ 减少工作问题切换,快速获得构建失败的消息,快速解决问题;
④ 测试成本大幅降低,包括时间和人力成本等;
⑤ 节省QA团队时间,侧重质量文化建设。
3.2 CD持续部署
-
CD:即
continuous deployment持续部署; -
通过自动化的构建、测试和部署循环来快速交付高质量的产品;
-
团队应具有完善的测试理念;
-
单元测试尤为重要;
-
文档和部署频率需要保持一致;
-
优势:
① 发布频率快;
② 风险降低,问题可很快修复;
③ 客户可很快看到产品的交付结果。
3.3 CD持续交付
- CD:即
Continuous Delivery持续交付; - 可让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况;
- 在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中;
- 目标在于让软件的构建、测试与释出变得更快以及更频繁;
- 需要有强大的持续集成组件和足够多的测试项可以满足代码的需求;
- 部署需要自动化;
- 以下图片来源与网络,仅供参考:

4 Ubuntu环境
4.1 环境需求
- 我的环境是:
在Windows10操作系统上安装虚拟机Hyper-V,然后在虚拟机里安装Ubuntu操作系统,自动化测试在Ubuntu上运行;
- 后续根据自身的环境选择合适的安装步骤,如果是以上环境,可参考以下:
LinuxGUI自动化测试框架搭建(三)-虚拟机安装(Hyper-V或者VMWare)
# 我们的环境是:
1、Linux服务器一台(我的是Ubuntu),在虚拟机中的,哈哈
2、在服务器上正确安装docker
3、拉取jenkins镜像:jenkins/jenkins:lts
4、拉取python3镜像:docker pull python:3.7
4.2 实现思路
1、在Linux服务器安装docker;
2、创建jenkins容器;
3、根据自动化项目依赖包构建python镜像(构建自动化python环境);
4、运行新的python容器,执行jenkins从仓库中拉下来的自动化项目
5、执行完成之后删除容器。
5 Ubuntu下安装Docker
- 详细的安装步骤请参考:Docker笔记3 | 在Ubuntu下安装Docker;
- 此处不再赘述了。
6 安装Jenkins
6.1 拉取Jenkins镜像
- 使用
docker拉取Jenkins镜像:
docker pull jenkins/jenkins:lts


6.2 启动Jenkins
docker run
-dit
--name=jenkins
-p 8080:8080
-u=root
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
jenkins/jenkins:lts
- 参数说明:
参数说明
-i:表示运行容器
-t:表示容器启动后会进入其命令行
-d:守护式方式创建容器在后台运行
--name:容器名称
-p 8080:8080:端口映射,宿主机端口:jenkins容器端口
-u=root:指定容器用户为root用户
-v /var/run/docker.sock:/var/run/docker.sock:将docker.sock映射到jenkins容器中
docker.sock文件是docker client与docker daemon通讯的文件
-v /usr/bin/docker:/usr/bin/docker:将宿主机docker客户端映射到jenkins容器中

6.3 修改jenkins权限
- 如果
docker安装jenkins运行失败; - 查看日志提示权限不够:
docker logs jenkin
- 则修改以上目录
/var/jenkins_home的权限:
chown -R 1000 /var/jenkins_home
-
或者运行容器时,以
root权限运行,加-u=root。 -
浏览器输入地址:8080即可:

7 Jenkins初始配置
7.1 查看容器日志
docker logs jenkins

- 以上就是我们的
jenkins密码,复制后解锁即可;

7.2 插件选择
- 进入如下页面:

- 如下会进行插件安装,如果报错,点重试即可:

7.3 创建管理员用户
- 插件安装完进入如下界面:

- 记住自己填的用户名和密码,然后保存继续;

- 继续保存进行下一步。

7.4 安装插件
7.4.1 git插件安装
-
我们之前插件安装的时候,选的是默认插件安装,那么
git插件已经是安装好了的,可从以下图示查看:

-
点击【
install plugins】可以查看已经安装的插件:

-
点击【
available plugins】可选择下载自己需要的插件,这里我安装下gitee;

7.4.2 Docker插件安装
-
如下搜索
docker安装即可:

-
安装完后,如下所示:

7.4.3 HTML Publisher插件安装
- 如下搜索:

7.4.4 Email Extension插件安装
- 如下所示:

7.4.5 JDK、Maven、SSH插件(可选)
- 安装
JDK:


- 输入账号和密码:

- 安装
maven:

- 配置
SSH:

- 设置主机和端口,点击【添加】:

- 如果添加无反应,点击右上角的用户名添加一个即可:


- 可以自行尝试是否ok即可。
以上步骤完成后,安装完成后重启jenkins容器
docker restart jenkins

8 Jenkins详细配置
8.1 新建任务
- 重新登陆
jenkins,点New Item如图:

- 输入项目名称,构建方式根据自己项目选择即可,我这里直接选第一个(创建自由风格的项目):

8.2 配置任务
8.2.1 配置构建记录保留规则
- 在
General选项中,设置如下:

8.2.2 Git仓库配置
- 输入git仓库的地址、账号和密码:

8.2.3 配置构建后操作
-
添加构建后操作模块,
linux下选shell:

-
配置运行脚本:

-
配置
jenkins中展示的测试报告路径:


-
配置邮件触发器:



-
与以上步骤完成后,保存即可。
8.3 配置邮件
jenkins管理-系统配置-Jenkins Location。在系统管理员邮件地址,输入对应的邮件地址:

jenkins管理-系统配置-Extended E-mail Notification,填写对应的smtp服务器相关内容,点击高级,输入对应的邮箱地址和smtp登录的授权码,勾选ssl:


- 配置邮件触发器:
jenkins管理-系统配置-Default Triggers,默认是勾选失败才发,可以配置总是发送(或根据需求勾选),那么每次运行项目时都会发送邮件。

9 构建python镜像
9.1 导出依赖包
- 构建有项目执行环境的python镜像;
- 在本地
Python运行环境中将项目依赖包导出来到requirements.txt文件中;
pip freeze > requirements.txt
- 我的如下:
adbutils==0.11.0
alembic==1.6.5
allure-pytest==2.8.12
allure-python-commons==2.8.12
altgraph==0.17.2
amqp==5.0.6
anyjson==0.3.3
apipkg==1.5
apkutils2==1.0.0
Appium-Python-Client==0.50
asgiref==3.3.1
atomicwrites==1.4.0
attrs==20.3.0
BeautifulReport==0.1.3
beautifulsoup4==4.9.3
billiard==3.6.4.0
blinker==1.4
cached-property==1.5.2
celery==5.0.5
certifi==2020.12.5
cffi==1.14.5
chardet==3.0.4
cigam==0.0.3
click==7.1.2
click-didyoumean==0.0.3
click-plugins==1.1.1
click-repl==0.2.0
colorama==0.4.4
comtypes==1.1.8
configparser==5.0.2
coreapi==2.3.3
coreschema==0.0.4
coverage==5.5
cryptography==3.2.1
cycler==0.10.0
DataRecorder==3.2.2
ddt==1.4.2
decorator==5.0.9
defusedxml==0.7.1
Deprecated==1.2.12
deprecation==2.1.0
diff-match-patch==20200713
Django==2.2.16
django-bootstrap==0.2.4
django-bootstrap3==15.0.0
django-bootstrap4==2.3.1
django-celery==3.3.1
django-celery-beat==2.2.0
django-ckeditor==6.1.0
django-cors-headers==3.7.0
django-crispy-forms==1.12.0
django-crontab==0.7.1
django-filter==2.4.0
django-haystack==3.0
django-import-export==2.5.0
django-js-asset==1.2.2
django-mdeditor==0.1.18
django-ranged-response==0.2.0
django-redis==4.12.1
django-rest-framework-mongoengine==3.4.1
django-simple-captcha==0.5.13
django-simpleui==2021.6.2
django-timezone-field==4.1.2
django-tinymce==3.3.0
djangorestframework==3.12.2
djangorestframework-jwt==1.11.0
dnspython==1.16.0
docopt==0.6.2
docutils==0.17.1
dogtail==0.9.10
dominate==2.6.0
DownloadKit==0.5.0
drf-extensions==0.7.0
drf-haystack==1.8.10
DrissionPage==3.1.1
easygui==0.98.2
elasticsearch==2.4.1
et-xmlfile==1.0.1
eventlet==0.30.2
execnet==1.8.0
facebook-wda==1.4.3
filelock==3.0.12
Flask==1.1.2
Flask-Bootstrap==3.3.7.0
Flask-Excel==0.0.7
Flask-Login==0.5.0
Flask-Mail==0.9.1
Flask-Migrate==2.0.0
Flask-Moment==1.0.1
Flask-Script==2.0.5
Flask-SQLAlchemy==2.4.4
FlowViewer==0.2.2
freetype-py==2.2.0
fsspec==2022.8.2
future==0.18.2
greenlet==1.1.0
HTMLReport==2.3.1
idna==2.10
importlib-metadata==2.1.1
iniconfig==1.1.1
itsdangerous==1.1.0
itypes==1.2.0
jdcal==1.4.1
Jinja2==2.11.2
jsonpath==0.82
kiwisolver==1.3.1
kombu==5.1.0
lml==0.1.0
loguru==0.7.0
logzero==1.7.0
lxml==4.6.3
Mako==1.1.4
Markdown==3.3.4
MarkupPy==1.14
MarkupSafe==1.1.1
matplotlib==3.3.3
mock==3.0.5
mongoengine==0.22.1
more-itertools==8.7.0
mpmath==1.2.1
mutagen==1.44.0
mysql-connector==2.2.9
mysqlclient==2.0.3
numpy @ file:///C:/Users/Administrator/Downloads/numpy-1.21.0-cp37-cp37m-win_amd64.whl
odfpy==1.4.1
opencv-python==4.7.0.72
openpyxl==3.0.5
packaging==20.8
pandas==1.1.5
ParamUnittest==0.2
pefile==2021.9.3
Pillow==8.3.1
pipreqs==0.4.11
pluggy==0.13.1
progress==1.6
prompt-toolkit==3.0.19
psutil==5.8.0
py==1.10.0
pyasn1==0.4.8
pycparser==2.20
pycryptodomex==3.9.4
pyelftools==0.27
pyexcel==0.6.6
pyexcel-io==0.6.4
pyexcel-webio==0.1.4
pyexcel-xlsx==0.6.0
pygame==2.0.1
Pygments==2.9.0
pyinstaller==4.10
pyinstaller-hooks-contrib==2022.2
PyJWT==1.7.1
pymongo==3.11.3
PyMySQL==0.10.1
PyOpenGL==3.1.5
pyOpenSSL==19.1.0
pyparsing==2.4.7
PyQt5==5.15.4
pyqt5-plugins==5.15.4.2.2
PyQt5-Qt5==5.15.2
PyQt5-sip==12.11.0
pyqt5-tools==5.15.4.3.2
pytest==6.2.4
pytest-assume==2.4.3
pytest-cov==2.8.1
pytest-forked==1.1.3
pytest-html==2.0.1
pytest-ignore-flaky==2.0.0
pytest-metadata==1.8.0
pytest-ordering==0.6
pytest-repeat==0.9.1
pytest-rerunfailures==10.3
pytest-xdist==1.31.0
python-alipay-sdk==3.0.1
python-crontab==2.5.1
python-dateutil==2.8.1
python-dotenv==0.21.0
python-editor==1.0.4
pythonnet==2.5.1
pytz==2021.1
pywebview==3.4
pywin32==300
pywin32-ctypes==0.2.0
pywinauto==0.6.8
PyYAML==6.0
QQLoginTool==0.3.0
qt5-applications==5.15.2.2.2
qt5-tools==5.15.2.1.2
redis==3.5.3
requests==2.24.0
requests-file==1.5.1
retry==0.9.2
rsa==4.8
ruamel.yaml==0.17.21
ruamel.yaml.clib==0.2.7
scipy @ file:///C:/Users/Administrator/Downloads/scipy-1.7.0-cp37-cp37m-win_amd64.whl
selenium==3.141.0
Serializer==0.2.1
simplejson==3.17.2
six==1.15.0
sklearn==0.0.post5
soupsieve==2.0.1
SQLAlchemy==1.3.20
sqlparse==0.4.1
sympy==1.7.1
tablib==3.0.0
texttable==1.6.3
tldextract==3.4.0
toml==0.10.2
tornado==6.1
turtle==0.0.2
Twisted==20.3.0
ua-parser==0.10.0
uiautomation==2.0.10
uiautomator2==2.16.7
uritemplate==3.0.1
urllib3==1.25.11
user-agents==2.2.0
vine==5.0.0
visitor==0.1.3
wcwidth==0.2.5
websocket-client==1.5.0
weditor==0.6.4
Werkzeug==1.0.1
whichcraft==0.6.1
win32-setctime==1.1.0
WMI==1.5.1
wordninja==2.0.0
wrapt==1.12.1
wxgl==0.7.2
wxPython==4.1.1
xlrd==1.2.0
xlrd2==1.2.6
XlsxWriter==3.0.2
xlutils==2.0.0
xlwings==0.21.4
xlwt==1.3.0
xmltodict==0.12.0
yarg==0.1.9
zipfile37==0.1.3
zipp==1.2.0
- 其实要不了这么多,看你项目需要吧,也可以进入项目根目录,使用以下命令导出项目的依赖包:
pipreqs . --encoding=utf8 --force
9.2 创建app目录
- 在宿主机(安装
docker的机子)上新建一个目录(我的目录是在我的家目录下创建app),将requirements.txt文件复制进去:


9.3 创建Dockerfile
- 在
app目录下创建Dockerfile文件(文件名必须是Dockerfile,没有后缀)
Dockerfile内容以及解释如下:
FROM python:3.7 #基于python:3.7这个基础镜像镜像构建镜像
WORKDIR /home/noamanelson/app #切换工作空间目录
ADD ./requirements.txt /home/noamanelson/app #将python项目依赖包文件添加到镜像
RUN pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple #安装依赖包
CMD ["python3", "main.py"] #设置容器执行后自动执行的命令,这里start_all.py是我们自动化框架的执行入口文件
9.4 执行镜像构建命令
- 在
app目录下执行镜像构建命令(此步骤也可以放到build.sh,每次jenkins构建时重新构建镜像,但是速度会慢,所以如果环境稳定的话建议提前构建好)
docker build -t python3.7:autopy .
-t:镜像名称
点(.):点表示Dockerfile文件所在的目录,我现在在app目录下,点表示当前目录
- 构建成功后会看到一个新的镜像:


10 build.sh设计
build.sh内容如下,注释要另起一行写:
echo "运行容器python执行自动化"
#输出日志
#-w=$WORKSPACE:指定workspace
#--volumes-from=jenkins_save01:将jenkins容器中的workspace映射到python容器中,此时jenkins中git拉下来的代码就会被映射进去
docker run --rm -w=$WORKSPACE --volumes-from=jenkins python3.7:autopy
echo "python执行自动化执行成功"
- 将
build.sh复制到你的项目根目录下:

- 提交代码到
Git仓库:
git add .git commit -am'update'git push
11 构建任务
- 之前我们已经创建了任务:

- 立即构建:

- 构建历史:

- 控制台输出:

- 查看测试报告会没有样式,因为被
Jenkins禁用了CSS样式,需要手动解决:

12 解决报告样式

- 写入如下代码:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")

- 执行后结果为空说明是ok的;
- 重新构建可以看到有样式的测试报告:

- 上边这个方法只是临时的,jenkins重启又得设置,所以安装Groovy插件可以永久解决这个问题:


13 查看邮件
- 从图上看邮件也是ok的;

相关文章:
基于Jenkins+Python+Ubuntu+Docker的接口/UI自动化测试环境部署详细过程
基于JenkinsPythonUbuntuDocker的接口/UI自动化测试环境部署详细过程 1 Jenkins是什么?2 Jenkins目标是什么?3 什么是CI/CD?3.1 CI持续集成3.2 CD持续部署3.3 CD持续交付 4 Ubuntu环境4.1 环境需求4.2 实现思路 5 Ubuntu下安装Docker6 安装Jenkins6.1 拉…...
Linux|ubuntu下运行python
参考:ubuntu系统下切换python版本的方法 文章目录 python版本问题查看ubuntu下的所有python版本通过apt-get install可以安装不同版本python查看python版本号更新update-alternatives替代列表查看update-alternatives下的python版本切换python版本删除python版本 p…...
使用FreeMarker导出word文档(支持导出图片)
今天跟大家分享一下工作中比较实用的导出word 带图片的功能。 对于在idea开发中我们需要引入以下依赖: 2.对于eclipse 开发我们需要进入对应的jar包 这个必须放在lib下,同样也需要在当前项目的环境是加入该依赖 需要在MEAT-INF加入 首先制定word 导出…...
C/C++中变量按位操作
一、按位写入1 uint32_t writeBit (1 << 5) // 第5位的掩码 uint32_t value 0x12341234; // 设置第5位为1 value | writeBit;原理就是原值与掩码… 00010000进行按位相与,与0相交的位还是等于原来的值,与1相交的位则变为1。 二、按位写入0…...
uni、css——制作表格样式的模型
案例展示 这里以5列做展示(可随意调节) 案例代码 <view class"list"><view class"item" v-for"(item,index) in list" :key"index">1</view> <!-- 有内容 --><view clas…...
mac前端代码编辑 Sublime Text 4 Dev 中文v4.0(4151)
Sublime Text 4 for Mac是一款功能强大的代码编辑器,适合所有需要高效编写代码和进行代码管理的程序员使用。 快速响应:Sublime Text 4在加载文件和执行命令时非常快速,能够让用户在高效的开发过程中体验到无缝的交互。 多种语言支持&#…...
面试之HashMap
1.什么是集合框架 Java的集合主要有两个根接口Collection和Map派生出来的,Collection派生出来了三个子接口:List,Queue,Set。因此Java集合大致可分为List,Queue,Set,Map四种体系结构。 2.HashMap与TreeMap HashMap是直接实现Map接口,而Tree…...
promethues mysql-rules
groups: - name: mysql.rules rules: - alert: MysqlDown expr: mysql_up 0 for: 1s labels: severity: critical annotations: title: MySQL down description: "Mysql实例: 【{{ $labels.instance }}】, MySQL instance is down…...
Maven项目中Lifecycle和Plugins下的install的区别
在Maven中,如果你的web和service在不同的模块下,如果直接用用tomcat插件运行web层,那么运行时会报错 Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.5.2:install (default-cli) on project springboot: The pack…...
02-状态模式
1 意图 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。(这里的对象指的就是模型中的Context,行为指的就是State的子类) 2 动机 考虑一个问题:实现一个表示网络连接的类TCPConnection&am…...
Python异常处理中异常的种类有哪些?你知道几个?
前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 在python中不同的异常可以用不同的类型(python中统一了类与类别,类型即类)取标识,一个异常标识一种错误。 1.常见语法错误 AttributeError 试图访问一个对象没有的属性&#x…...
COBOL语言介绍及使用场景
COBOL(Common Business-Oriented Language)是一种面向业务的通用计算机编程语言,最初于1959年由美国国家标准学会(ANSI)开发。COBOL的设计目标是为了处理商业应用程序,尤其是大型企业级应用。本文将介绍COB…...
【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 1 日论文合集)
文章目录 一、分割|语义相关(16篇)1.1 DPMix: Mixture of Depth and Point Cloud Video Experts for 4D Action Segmentation1.2 Investigating and Improving Latent Density Segmentation Models for Aleatoric Uncertainty Quantification in Medical Imaging1.3 Domain Ada…...
Jetson nano 安装swapfile 解决Cannot allocate memory 问题
在jetson nano上执行一些程序的时候,由于nano的内存只有4GB,因此可能会出现以下报错信息,例如:OSError:Cannot allocate memory 的问题。可以尝试用下面的方法解决:通过安装 swapfile,可以解决这个问题。 …...
ElasticsSearch基础概念和安装
ElasticSearch基础概念以及可视化界面安装 文章目录 ElasticSearch基础概念以及可视化界面安装1、引言2、基本概念3、倒排索引机制3.1、倒排索引 4、使用docker安装ElasticSearch4.1、下载镜像文件4.2 、创建实例,启动es 5.安装Kibana 1、引言 Elastic 的底层是开源库 Lucene。…...
【GEMM预备工作】行主序和列主序矩阵的内存中的连续性,解决理解问题
在内存存储中,默认矩阵是按照行优先储存的,即矩阵的每一列在内存中是连续的。行优先矩阵储存中行数据是不连续的。 而对于列主序的矩阵,是按照列优先储存的,即矩阵的每一行在内存中是连续的。列优先矩阵储存中列数据是不连续的&am…...
利用el-button 画圆 ,通过border-radius >50% 就成圆形
<el-button type"danger" style"border-radius: 100%; height: 100px;width: 100px;" plain><span style"font-weight: bold;">工艺分析</span></el-button>通过border-radius >50% 就成圆形。 border-radius: 50% …...
在tensorflow分布式训练过程中突然终止(终止)
问题 这是为那些将从服务器接收渐变的员工提供的培训功能,在计算权重和偏差后,将更新的渐变发送到服务器。代码如下: def train():"""Train CIFAR-10 for a number of steps."""g1 tf.Graph()with g1.as_de…...
windows永久暂停更新
目录 1.winr,输入regedit打开注册表 2.打开注册表的这个路径: 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 右键空白地方新建QWORD值命名为:FlightSettingsMaxPauseDays 3.双击FlightSettingsMaxPauseDays,修改里面的值为100000,右边基数设置…...
Android 9系统源码_音频管理(一)按键音效源码解析
前言 当用户点击Android智能设备的按钮的时候,如果伴随有按键音效的话,会给用户更好的交互体验。本期我们将会结合Android系统源码来具体分析一下控件是如何发出按键音效的。 一、系统加载按键音效资源 1、在TV版的Android智能设备中,我们…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
