基于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语言编写的,可在TomcatDocker等流行的容器中运行,也可独立运行。

通俗的讲,比如把编译、打包、上传、部署到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的;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux Day06

目录 一、printf输出问题 二、复制进程fork 2.1进程 2.2 pid_t fork(void); 注意: 2.3逻辑地址和物理地址 2.4写时拷贝技术 一、printf输出问题 printf 函数并不会直接将数据输出到屏幕,而是先放到缓冲区中,只有一下三种情况满 足&a…

24考研数据结构-第五章:树与二叉树

目录 第五章:树5.1树的基本概念5.1.1树的定义5.1.2 基本术语5.1.3 树的性质 5.2二叉树的概念5.2.1 二叉树的定义与特性5.2.2 几种特殊的二叉树5.2.3 二叉树的性质5.2.4 完全二叉树的性质5.2.5 二叉树的存储结构1. 顺序存储重要的基本操作非完全二叉树2. 链式存储逆向…

【Paper】2020_网络化多智能体系统的事件触发一致性研究_徐勇

徐勇. 网络化多智能体系统的事件触发一致性研究[D].浙江大学,2020.DOI:10.27461/d.cnki.gzjdx.2020.001385. 文章目录 5 已知 DoS 攻击策略下多智能体系统的事件触发安全一致性分析5.1 引言5.2 数学模型与问题描述5.3 控制器和事件触发条件的设计5.5 数值仿真程序 Main.m程序 M…

使用FreeMarker导出word文档(支持导出图片)

今天跟大家分享一下工作中比较实用的导出word 带图片的功能。 对于在idea开发中我们需要引入以下依赖: 2.对于eclipse 开发我们需要进入对应的jar包 这个必须放在lib下,同样也需要在当前项目的环境是加入该依赖 需要在MEAT-INF加入 首先制定word 导出…

UE5 半透明覆层材质

文章目录 前言介绍示例1示例2示例3 前言 本文采用虚幻5.2.1版本演示,介绍半透明覆层材质(覆层材质)。 介绍 半透明覆层材质是 UE5.1 版本 更新的功能,使用半透明覆层材质,可以轻松的给物体表面附着一层材质。 在UE5…

Python3 处理PDF之PyMuPDF 入门

PyMuPDF 简介 PyMuPDF是一个用于处理PDF文件的Python库,它提供了丰富的功能来操作、分析和转换PDF文档。这个库的设计目标是提供一个简单易用的API,使得开发者能够轻松地在Python程序中实现PDF文件的各种操作。 PyMuPDF的主要特点如下: 跨平台兼容性&a…

Aspose.Imaging for Python via .NET Crack

Aspose.Imaging for Python via .NET Crack Aspose.Imaging for Python via.NET是一个提供高级图像处理功能的库。您可以使用此API轻松创建、加载、操作、转换或压缩图像。另外,Aspose.Imaging for Python通过.NET支持绘图和使用图形基元。图像导出和转换-API的核心…

SpringCloud(29):Nacos简介

1 什么是配置中心 1.1 什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数、启动参数等。 配置主要有以下几个特点: 配置是独立于程序的只读变量 …

编译LightGBM错误处理记录

在LightGBM源码中新建文件夹build,然后在build目录下运行命令 cmake -A x64 -DUSE_GPU1 -DBOOST_ROOTC:\local\boost_1_82_0 -DBOOST_LIBRARYDIRC:\local\boost_1_82_0\lib64-msvc-14.3 .. 报错 错误原因: miniconda3\Library\lib\cmake\中boost版本是…

状态模式(State)

状态模式是一种行为设计模式,允许一个对象在其内部状态改变时改变它的行为,使其看起来修改了自身所属的类。其别名为状态对象(Objects for States)。 State is a behavior design pattern that allows an object to change its behavior when its inter…

前端个人年度工作述职报告(二十篇)

前端个人年度工作述职报告篇1 尊敬的各位领导、各位同仁: 大家好!按照20__年度我公司就职人员工作评估的安排和要求,我认真剖析、总结了自己的工作情况,现将本人工作开展情况向各位领导、同仁做以汇报,有不妥之处,希…

【前瞻】视频技术的发展趋势讨论以及应用场景

视频技术的发展可以追溯到19世纪初期的早期实验。到20世纪初期,电视技术的发明和普及促进了视频技术的进一步发展。 1)数字化:数字化技术的发明和发展使得视频技术更加先进。数字电视信号具有更高的清晰度和更大的带宽,可以更快地…

ospf减少LSA更新

实验及实验要求 一、思路 1.根据区域划分IP地址 2.使公网可通---写缺省 3.使R3成为MGRE中心站点,R5、R6、R7为分支站点 4.一个个去配置ospf区域和RIP区域,确保每个区域配置无误 5.区域0要更改OSPF在接口的工作类型为broadcast ,并使R3为…

【C++】容器篇(五)—— map和set的基本介绍

序言: 在之前,我们已经对STL中的 序列式容器 进行了相关的学习。本期,我将给大家介绍的则是另外一类容器 —— 关联式容器 !!! 目录 (一)容器回顾 💨【顺序容器】 &a…

【二进制安全】堆漏洞:Double Free原理

参考:https://www.anquanke.com/post/id/241598 次要参考:https://xz.aliyun.com/t/6342 malloc_chunk 的源码如下: struct malloc_chunk { INTERNAL_SIZE_T prev_size; /*前一个chunk的大小*/ INTERNAL_SIZE_T size; /*当前chunk的…

无涯教程-Perl - binmode函数

描述 此函数设置在区分两者的操作系统上以二进制形式读取和写入FILEHANDLE的格式。非二进制文件的CR LF序列在输入时转换为LF,在LF时在输出时转换为CR LF。这对于使用两个字符分隔文本文件中的行的操作系统(MS-DOS)至关重要,但对使用单个字符的操作系统(Unix,Mac OS,QNX)没有影…

C#中XML文档与Treeview控件操作的数据同步

在前文《C#使用XML和Treeview结合实现复杂数据采集功能》中,使用Treeview展示了XML的数据,问题是如果在Treeview上进行了操作,怎样同步更改XML数据的内容呢? 这个问题看似简单,实现起来有一点小麻烦。 要实现的操作功能…

6.s081/6.1810(Fall 2022)Lab2: System calls

文章目录 前言其他篇章参考链接0. 前置准备1. System call tracing (moderate)1.1 简单分析1.2 Hint 11.3 Hint 21.4 Hint 31.5 Hint 41.6 Hint 51.7 测试 2. Sysinfo (moderate)2.1 声明2.2 实现2.2.1 框架2.2.2 用户态与内核态交互2.2.3 计算空闲内存的大小2.2.4 计算非UNUSE…

postgresql表膨胀处理之pgcompacttable部署及使用

环境: 1)redhat-release:CentOS Linux release 7.6.1810 (Core) 2)database version:postgresql 14.6 一、添加pgstattuple pgcompacttable工具使用过程中需要依赖pgstattuple,因此需先添加pgstattuple…

工业控制系统安全控制应用指南

工业控制系统安全控制应用 指南 工业控制系统(ICS)(包括监控和数据采集系统(SCADA)、分布式控制系统(DCS)、可编程逻辑控制器(PLC)等产品)在核设施、航空航天、先进制造、石油石化、油气管网、电力系统、交…