【云计算】Docker特别版——前端一篇学会

docker学习

文章目录

    • 一、下载安装docker
      • (一)Windows桌面应用安装
      • (二)Linux命令安装
    • 二、windows注册登录docker
    • 三、Docker的常规操作
      • (一)、基本的 Docker 命令
      • (二)、镜像操作
      • (三)、容器的配置
      • (四)、登录远程仓库
    • 四、镜像管理
      • (一)、搜索官方仓库镜像
      • (二)、获取镜像
      • (三)、导出镜像
      • (四)、导入镜像
      • (五)、删除镜像
      • (六)、查看镜像详细信息
      • (七)、上传自己公共仓库
    • 五、管理docker容器
      • (一)、容器的启用/停止
      • (二)、进入容器的方法
      • (三)、容器与主机间的数据传输
    • 六、docker 数据卷的管理
      • (一)、挂载时创建卷
      • (二)、提前创建数据卷
    • 七、项目实战(附录)
          • 1,安装SSL证书
          • 2,配置nginx
          • 3,重启nginx服务器


前言:Docker 通过虚拟化安装和运行应用程序的操作系统来简化构建、运 行、管理和分发应用程序的过程。 目的是使应用程序在不同的系统环 境中高效工作。

一、下载安装docker

(一)Windows桌面应用安装

  1. 下载安装包

    官网:https://www.docker.com/

    在这里插入图片描述

  2. 安装Docker

    点击安装包,自动安装

    在这里插入图片描述

    在这里插入图片描述

    成功安装,重新启动

    在这里插入图片描述

  3. 重新启动如果版本不对会报错内存较低

    在这里插入图片描述

    报错使用命令进行安装

    wsl --update
    

    在这里插入图片描述

    在这里插入图片描述

    然后就可以正常打开了

    在这里插入图片描述

    在这里插入图片描述

(二)Linux命令安装

  1. 安装要求

    更新软件包索引并安装依赖包:

    sudo apt update
    sudo apt install apt-transport-https ca-certificates curl software-properties-common
    

    添加 Docker 官方 GPG 密钥:

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-			keyring.gpg
    

    添加 Docker APT 仓库:

    	echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu                        $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
  2. 添加国内yum源

    根据每个系统的不同的yum源进行配置

    windows:

    {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"features": {"buildkit": true},"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com"]
    }
    

    在这里插入图片描述

  3. 开始安装

    sudo apt update 
    sudo apt install docker-ce
    
  4. 启动docker服务

    sudo systemctl start docker
    
  5. 验证docker是否安装成功

    docker --version
    

二、windows注册登录docker

Linux系统直接去到官网或者使用的时候在进行注册

打开软件选择登录

在这里插入图片描述

登记注册账号

在这里插入图片描述

登录账号

在这里插入图片描述

打开桌面应用

在这里插入图片描述

登录中

在这里插入图片描述

登录成功

在这里插入图片描述

三、Docker的常规操作

(一)、基本的 Docker 命令

  1. 检查 docker 的版本

    docker --version
    

    在这里插入图片描述

  2. 活动容器的列表

    docker ps
    

    在这里插入图片描述

  3. 全部容器列表

    docker ps -a
    

    在这里插入图片描述

  4. 系统中镜像列表

    docker images
    

    在这里插入图片描述

  5. 使用镜像名称创建容器

    docker run ARGUMENT IMAGE-NAME
    

    这里的参数 -itd (或者 -i -t -d ) 是指:

    i ‒ 交互模式

    t ‒ 连接到显示终端

    d ‒ 后台运行模式

    我们可以使用我们所需的任何参数来运行容器

  6. 停止容器

    docker stop CONTAINER-ID/NAME
    

    在这里插入图片描述

    在这里插入图片描述

  7. 删除容器

    docker rm CONTAINER-ID/NAME
    docker rm -f CONTAINER-ID/NAME  //  强制删除
    

    在这里插入图片描述

  8. 删除镜像

    docker rmi IMAGE-ID
    

    在这里插入图片描述

  9. 访问容器

    docker exec -it container name /bin/bash
    

    在这里插入图片描述

(二)、镜像操作

从码头工人中心 (docker.com)上获取镜像

Docker 镜像仓库地址:地址格式一般是<域名/ip>[:端口号] ,默认地址是Dcoker Hub官方地址

仓库名:这里的仓库是两段式名称,即<用户名>/<软件名>,

  1. 查看本地拥有哪些镜像

    docker image
    
  2. 删除镜像

    docker rmi -f 镜像名称
    
  3. 查看docker中可以使用的操作

    docker --help
    
  4. 给镜像重新打上一个tag

    docker tag nginx nginx:test
    
  5. 将镜像导出成一个独立的文件

    docker save nginx >/tmp/nginx.tar.gz
    
  6. 如果无法连接到互联网,使用这个命令导出

    docker load</tmp/nginx.tar.gz
    

(三)、容器的配置

  • 启动第一个容器

    以某个镜像为基础运行一个容器

    docker run --name webserver -d -p:8100:80 nginx
    

    在这里插入图片描述

  • 访问容器地址

    在这里插入图片描述

(四)、登录远程仓库

  • 登录命令

    $ docker login
    
  • 退出登录

    $ docker logout
    

    在这里插入图片描述

四、镜像管理

(一)、搜索官方仓库镜像

docker search <imoge_name>

$ docker login$ docker search nginx | head -3
NAME                                              DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
nginx                                             Official build of Nginx.                         18888     [OK]
unit                                              Official build of NGINX Unit: Universal Web …   8         [OK]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKwrZnwG-1692692682546)(./images/image-20230822104621254.png)]

(二)、获取镜像

docker pull <imoge_name>:<tog>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wEA48DFt-1692692682546)(./images/image-20230822104723490.png)]

$ docker pull nginx:1.25.2-perl #下载1.25.2版本
1.25.2-perl: Pulling from library/nginx
52d2b7f179e3: Already exists
fd9f026c6310: Already exists
055fa98b4363: Already exists
96576293dd29: Already exists
a7c4092be904: Already exists
e3b6889c8954: Already exists
da761d9a302b: Already exists
60c2235cc8b6: Pull complete
Digest: sha256:da5e596e27292bedea3c1a59fbef9852e7b0b7e5c21178982c4cc78cb2d700f4
Status: Downloaded newer image for nginx:1.25.2-perl
docker.io/library/nginx:1.25.2-perlWhat's Next?View summary of image vulnerabilities and recommendations → docker scout quickview nginx:1.25.2-perl
$ docker image ls  # 查看镜像
REPOSITORY   TAG           IMAGE ID       CREATED      SIZE
nginx        1.25.2-perl   a465b9c519a0   5 days ago   236MB
nginx        latest        eea7b3dcba7e   5 days ago   187MB

(三)、导出镜像

docker image save <imoge_name>:<tog> >/路径/<imoge_name>.tar.gz

$ docker tag nginx nginx:test # 给镜像重新打上一个tag 
$ docker image save nginx:1.25.2-perl >  C:\Users\daiyu\Desktop\nginx-v2.0.tar.gz #Windows与Linux一样
$ docker load</tmp/nginx.tar.gz #如果没有办法访问外网的情况下可以使用这个命令进行导出

(四)、导入镜像

docker image load i <imoge_name>.tar.gz

$ docker image load i nginx-v2.0.tar.gz$ docker image ls

(五)、删除镜像

$ docker image rm nginx:1.25.2-perl

在这里插入图片描述

(六)、查看镜像详细信息

$ docker  image inspect nginx
PS C:\Users\daiyu\Desktop> docker  image inspect nginx
[{"Id": "sha256:eea7b3dcba7ee47c0d16a60cc85d2b977d166be3960541991f3e6294d795ed24","RepoTags": ["nginx:latest"],"RepoDigests": ["nginx@sha256:104c7c5c54f2685f0f46f3be607ce60da7085da3eaa5ad22d3d9f01594295e9c"],"Parent": "","Comment": "","Created": "2023-08-16T09:50:55.765544033Z","Container": "50b019921f82064e1d8af7e2723929d4c5fafcfd6d8b03595711bd1e455dd3c4","ContainerConfig": {"Hostname": "50b019921f82","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.25.2","NJS_VERSION=0.8.0","PKG_RELEASE=1~bookworm"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"nginx\" \"-g\" \"daemon off;\"]"],"Image": "sha256:d59ed5fe14c2a306f94488f41ddc8fb060312ee31997f5e077a4c4b29b19114e","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"DockerVersion": "20.10.23","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"80/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","NGINX_VERSION=1.25.2","NJS_VERSION=0.8.0","PKG_RELEASE=1~bookworm"],"Cmd": ["nginx","-g","daemon off;"],"Image": "sha256:d59ed5fe14c2a306f94488f41ddc8fb060312ee31997f5e077a4c4b29b19114e","Volumes": null,"WorkingDir": "","Entrypoint": ["/docker-entrypoint.sh"],"OnBuild": null,"Labels": {"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"},"StopSignal": "SIGQUIT"},"Architecture": "amd64","Os": "linux","Size": 186639842,"VirtualSize": 186639842,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/a5a633a93c5ecaf9c0dd7c64176078a19f62e4902b72671aac868cea4f34d62c/diff:/var/lib/docker/overlay2/926886d52dd0b566a6a96ac3fe3481b9f5e5b92fa7ae354e8b19c3dc8e37ca69/diff:/var/lib/docker/overlay2/14689eb83ef85938fbfc46af9987f07c5ef1f4e058a75ab5b2021c97903a1028/diff:/var/lib/docker/overlay2/57a9f4fdcb8ba210cd81e460f116e30ea33be8abb820c8f3bdb49c965fb46e61/diff:/var/lib/docker/overlay2/5485a2ea4a95a9bdefe35136dc9c41958d5a860dd618171d0679fec6becdcc36/diff:/var/lib/docker/overlay2/145318f6dd8347b6db03a6f60e976f85a16c04067e6301cbe2dfe6ef5113a5f1/diff",                "MergedDir": "/var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/merged","UpperDir": "/var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/diff","WorkDir": "/var/lib/docker/overlay2/ff41488d38d52c94f16d3ef5bf823f2183235420cc795fb523f64a7ced1c5979/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:511780f88f80081112aea1bfdca6c800e1983e401b338e20b2c6e97f384e4299","sha256:4713cb24eeff341d0c36343149beba247572a5ff65c2be5b5d9baafb345c7393","sha256:d0a62f56ef413f60049bc87e43e60032b2a2ab8d931e15b86ee0286c85ae91a2","sha256:8a7e12012e6f60450e6d2d777b2a2c2256d34a0ccd84d605f72cc5329a87c8b8","sha256:e161c3f476b5199ab13856c7e190ed12a6562b7be059c7026ae9f594e1abbcaf","sha256:6fb960878295b567d25900b590157b976d080340caeaa8bf8c46d38c01b4537d","sha256:563c64030925e9016a2329d3a2b7d47b0c90931baf5d2d0aa926c4c8d94ab894"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}
]

(七)、上传自己公共仓库

公共仓库地址:nginx Tags (docker.com)

选择登录进行创建仓库

在这里插入图片描述

新建仓库

在这里插入图片描述

上传镜像

$ docker tag nginx daiyunjie/adlerian_nginx
$ docker image ls
REPOSITORY                 TAG       IMAGE ID       CREATED      SIZE
nginx                      latest    eea7b3dcba7e   5 days ago   187MB
daiyunjie/adlerian_nginx   latest    eea7b3dcba7e   5 days ago   187MB
$ docker push daiyunjie/adlerian_nginx
Using default tag: latest
The push refers to repository [docker.io/daiyunjie/adlerian_nginx]
563c64030925: Mounted from library/nginx
6fb960878295: Mounted from library/nginx
e161c3f476b5: Mounted from library/nginx
8a7e12012e6f: Mounted from library/nginx
d0a62f56ef41: Mounted from library/nginx
4713cb24eeff: Mounted from library/nginx
511780f88f80: Mounted from library/nginx
latest: digest: sha256:48a84a0728cab8ac558f48796f901f6d31d287101bc8b317683678125e0d2d35 size: 1778

上传成功

在这里插入图片描述

五、管理docker容器

(一)、容器的启用/停止

$ docker  container ls  #查看已经启动的容器
$ docker stop  43737ef7d61e #终止运行中的容器
$ docker start 43737ef7d61e #重新启动之前终止过的容器
$ docker  kill 43737ef7d61e #终止运行中的容器
$ docker  container rm  43737ef7d61e  #强制删除某个容器

(二)、进入容器的方法

$ docker run --name <name> -d -p:8100:80 nginx #创建一个容器<name>自己起名字
$ docker exec -it <name/ID> /bin/bash  #进入容器
$ cat /etc/nginx/conf.d/default.conf  #nginx配置文件
$ exit #退出

(三)、容器与主机间的数据传输

$ docker cp webserver:/etc/nginx/conf.d/default.conf .  #传输到主机
$ vim default.conf  #修改
$ docker cp default.conf webserver:/etc/nginx/conf.d/default.conf  #传输到容器
$ docker restart webserver # 重启

在这里插入图片描述

在这里插入图片描述

六、docker 数据卷的管理

(一)、挂载时创建卷

$ mkdir /opt/docker-volumes
PS C:\Users\daiyu\Desktop> mkdir /opt/docker-volumes  #创建卷目录: C:\optMode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2023/8/22     15:10                docker-volumes$ docker rm -f $(docker ps -a -q)  #强制删除所用容器$ docker container run -itd --name webserver -p 8080:80 -v /opt/docker-volumes/webserver:/usr/share/nginx/html nginx
025e425bcf03148bce7ceffbec1a1bf41e43f14dab5b70af021edacef049f6cc$ curl http://localhost:8080
$ echo "hello docker volume" >  /opt/docker-volumes/webserver/index.html$ curl http://localhost:8080

(二)、提前创建数据卷

$ docker volume create --name webserver \
$ docker volume create --name webserver \
$ docker volume inspect webserver
$ docker container run -itd --name webserver -p 8080:80 -v webserver:/usr/share/nginx/html nginx
$ curl http://localhost:8081
$ echo "hello docker webserver" >  /var/lib/docker/volumes/webserver/index.html
$ curl -i http://localhost:8081

七、项目实战(附录)

在Ubuntu上运行一个项目,并且使用nginx反向代理通过域名访问

1,安装SSL证书

首先,需要安装Python及相关组件。可以通过以下命令来完成:

$ sudo apt-get update
$ sudo apt-get install python3-certbot-apache

需要安装Certbot证书颁发机构的证书

$ sudo certbot certonly --standalone --agree-tos --email 邮箱账号 --domains 域名

最后,需要在Ubuntu系统中启用SSL

sudo certbot enable-ssl --apache --cert-file /etc/letsencrypt/live/example.com/fullchain.pem --key-file      								     /etc/letsencrypt/live/example.com/privkey.pem
2,配置nginx

​ 需要在etc/nginx/sites-available/目录下创建一个新的空白文件,然后进行以下配置

server {    listen       443 ssl;    server_name  test.thesky-xh.cn;    ssl_certificate     下载的ssl目录地址;    ssl_certificate_key  		ssl密钥的地址;   location / {       proxy_pass         http://localhost:5678; } 
}

配置nginx.conf文件:

server {listen 80;server_name test.thesky-xh.cn www.test.thesky-xh.cn;location / {return 301 https://$host$request_uri;}}server {listen 443 ssl;server_name test.thesky-xh.cn www.test.thesky-xh.cn;ssl_certificate /etc/letsencrypt/live/test.thesky-xh.cn/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/test.thesky-xh.cn/privkey.pem;location / {proxy_pass http://127.0.0.1:5700;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}
3,重启nginx服务器
$ sudo systemctl stop nginx
$ sudo systemctl start nginx

EDN

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL 数据库

安装配置 【1】 MySQL安装配置教程&#xff08;超级详细、保姆级&#xff09; 【2】 MySQLNavicat安装配置教程&#xff08;超级详细、保姆级&#xff09; 学习资料 【戴师兄】SQL入门免费教程 刷题链接&#xff1a;https://share.mubu.com/doc/4BHMMbbvIMb 学习笔记&#xf…

C语言入门 Day_9 条件判断

目录 前言&#xff1a; 1.if判断 2.else判断 3.易错点 4.思维导图 前言&#xff1a; 我们知道比较运算和逻辑运算都会得到一个布尔型的数据&#xff0c;要么为真&#xff08;true&#xff09;&#xff0c;要么为假&#xff08;false&#xff09;。 今天我们来学习真和假在…

什么是软件压力测试?软件压力测试工具和流程有哪些?

软件压力测试 一、含义&#xff1a;软件压力测试是一种测试应用程序性能的方法&#xff0c;通过模拟大量用户并发访问&#xff0c;测试应用程序在压力情况下的表现和响应能力。软件压力测试的目的是发现系统潜在的问题&#xff0c;如内存泄漏、线程锁、资源泄漏等&#xff0c;…

无涯教程-PHP - preg_replace()函数

preg_replace() - 语法 mixed preg_replace (mixed pattern, mixed replacement, mixed string [, int limit [, int &$count]] ); preg_replace()函数的操作与POSIX函数ereg_replace()相同&#xff0c;不同之处在于可以在模式和替换输入参数中使用正则表达式。 可选的输…

IDEA项目实践——VUE介绍与案例分析

系列文章目录 IDEA项目实践——JavaWeb简介以及Servlet编程实战 IDEA项目实践——Spring集成mybatis、spring当中的事务 IDEA项目实践——Spring当中的切面AOP IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——Spring框架简介&#xff0c;以及IOC注解 I…

完成出版工作

书籍完成出版&#xff0c;正式上线售卖。若有需要&#xff0c;可在淘宝&#xff0c;当当&#xff0c;京东这些平台上都可以搜索到&#xff0c;书名是《多智能体机器人系统控制及其应用》&#xff0c;提前感谢&#xff0c;封面如下。 至于本专栏&#xff0c;留作大家讨论和书籍…

怎么维护自己的电脑

文章目录 我的电脑日常维护措施维护技巧键盘&屏幕清洁清理磁盘空间控制温度 电脑换电池 无论是学习还是工作&#xff0c;电脑都是IT人必不可少的重要武器&#xff0c;一台好电脑除了自身配置要经得起考验&#xff0c;后期主人对它的维护也是决定它寿命的重要因素&#xff0…

学习笔记|课后练习解答|电磁炉LED实战|逻辑运算|STC32G单片机视频开发教程(冲哥)|第八集(下):课后练习分析与解答

文章目录 课后练习解答需求分解增加KEY3控制代码如下&#xff1a; 第一版代码问题分析Tips&#xff1a;STC-ISP的设置 Tips&#xff1a;定时器实现完整电磁炉显示功能的代码测试流程 总结 课后练习解答 增加按键3&#xff0c;按下后表示启动&#xff0c;选择的对应的功能的LED…

Rust之自动化测试(一):如何编写测试

开发环境 Windows 10Rust 1.71.1 VS Code 1.81.1 项目工程 这里继续沿用上次工程rust-demo 编写自动化测试 Edsger W. Dijkstra在他1972年的文章《谦逊的程序员》中说&#xff0c;“程序测试可以是一种非常有效的方法来显示错误的存在&#xff0c;但它对于显示它们的不存在…

.NET 8 Preview 7 中的 ASP.NET Core 更新

作者&#xff1a;Daniel Roth 排版&#xff1a;Alan Wang .NET 8 Preview 7 现在已经发布&#xff0c;其中包括了对 ASP.NET Core 的许多重要更新。 以下是预览版本中新增功能的摘要&#xff1a; 服务器和中间件 防伪中间件 API 编写 最小 API 的防伪集成 Native AOT 请求委托…

2023国赛数学建模A题思路模型代码汇总 高教社杯

本次比赛我们将会全程更新思路模型及代码&#xff0c;大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社…

mybatis讲解(2)之动态SQL的运用

目录 经典面试题&#xff1a; 1.mybatis动态sql 2.模糊查询&#xff08;3种方式&#xff09; 3.查询返回结果集 总结&#xff1a; 前言&#xff1a;在我上篇已经学习了Mybatis简介以及如何去连接数据库&#xff0c;具有增删改查的方法。那么我们今天来学习Mybatis的第二节关…

SpringCloud入门实战(十四)Sentinel微服务流量防卫兵简介

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

GitLab与GitLab Runner安装(RPM与Docker方式),CI/CD初体验

背景 GitLab 是一个强大的版本控制系统和协作平台&#xff0c;记录一下在实际工作中关于 GitLab 的安装使用记录。 一开始使用 GitLab 时&#xff0c;是在 CentOS7 上直接以 rpm 包的方式进行安装&#xff0c;仅作为代码托管工具来使用&#xff0c;版本&#xff1a; 14.10.4 …

人机界面通过RJ45口无线连接多台PLC

人机界面是系统和用户之间进行交互和信息交换的媒介&#xff0c;它实现信息的内部形式与人类可以接受形式之间的转换。人机界面产品由硬件和软件两部分组成&#xff0c;硬件部分包括处理器、显示单元、输入单元、通讯接口、数据存贮单元等&#xff0c;HMI软件一般分为两部分&am…

React+Typescript 父子组件事件传值

好 之前我们将 state 状态管理简单过了一下 那么 本文 我们来研究一下事假处理 点击事件上文中我们已经用过了 这里 我们就不去讲了 主要来说说 父子之间的事件 我们直接来编写一个小dom 我们父组件 编写代码如下 import Hello from "./components/hello";functio…

opencv-dnn

# utils_words.txt 标签文件 import osimage_types (".jpg", ".jpeg", ".png", ".bmp", ".tif", ".tiff")def list_images(basePath, containsNone):# return the set of files that are validreturn list_file…

iPhone卫星通信SOS功能如何在灾难中拯救生命

iPhone上的卫星紧急求救信号功能在从毛伊岛野火中拯救一家人方面发挥了至关重要的作用。这是越来越多的事件的一部分&#xff0c;在这些事件中&#xff0c;iPhone正在帮助人们摆脱危及生命的情况。 卫星提供商国际通信卫星组织负责移动的高级副总裁Mark Rasmussen在接受Lifewir…

WPS office 最新未公开 0Day漏洞警示

一、事件描述 近日&#xff0c;网传监测发现WPS Office for Windows版本 存在0day漏洞&#xff0c;攻击者可以利用该0day漏洞在受害者主机上执行任意恶意文件&#xff0c;高危级别&#xff0c;官方尚未对此发布修复漏洞&#xff0c;目前建议只能临时弃用wps或者不要点开未知文件…

flink checkpoint时exact-one模式和atleastone模式的区别

背景&#xff1a; flink在开启checkpoint的时候有两种模式可以选择&#xff0c;exact-one和atleastone模式&#xff0c;那么这两种模式有什么区别呢&#xff1f; exact-one和atleastone模式的区别 先说结论&#xff1a;exact-one可以完全做到状态的一致性&#xff0c;而atle…