容器镜像仓库

文章目录

  • 1、docker hub
    • 1_注册
    • 2_登录
    • 3_创建容器镜像仓库
    • 4_在本地登录Docker Hub
    • 5_上传容器镜像
    • 6_下载容器镜像
  • 2、harbor
    • 1_获取 docker compose二进制文件
    • 2_获取harbor安装文件
    • 3_获取TLS文件
    • 4_修改配置文件
    • 5_执行预备脚本
    • 6_执行安装脚本
    • 7_验证运行情况
    • 8_访问harborUI界面
    • 9_harbor重启时存在的问题
  • 3、docker镜像上传至Harbor及镜像下载
    • 1_修改docker daemon使用harbor
    • 2_docker tag
    • 3_docker push
    • 4_docker pull
    • 5_向 Harbor 和 Docker 提供证书
  • 4、阿里云容器镜像仓库
    • 1_创建命名空间
    • 2_创建镜像仓库
    • 3_本地登录
    • 4_使用容器镜像仓库
  • 5、总结

容器镜像仓库(Container Image Registry)是用来存储、管理、分发和共享容器镜像的系统。

容器镜像本质上是一个包含所有必要代码、库、配置文件以及环境依赖的可执行包,而镜像仓库则提供了一个集中管理这些镜像的平台,使得容器可以跨环境、跨平台共享和分发

容器镜像仓库的出现解决了本地存储镜像占用空间大且管理困难等多个问题,尤其是在大规模应用和分布式系统的环境中,带来了很大的便利。


1、docker hub

Docker Hub 是 Docker 官方推出的容器镜像仓库,旨在为开发者提供一个集中的公共存储库来存放和共享Docker 镜像。

Docker Hub 的推出使得开发人员能够快速地上传、下载和分享容器镜像,大大简化了容器的分发和管理过程。

Docker Hub 提供了数千个官方和社区镜像,包括操作系统镜像、数据库镜像、编程语言环境镜像等。

用户可以通过 Docker Hub 提供的 API 进行自动化操作,同时也可以直接使用命令行工具 docker pull 来从Docker Hub 拉取镜像,或者通过 docker push 上传镜像。

官方网址:https://hub.docker.com/ 。

1_注册

准备邮箱及用户ID,访问网址:https://www.docker.com/

在这里插入图片描述

在这里插入图片描述

2_登录

在这里插入图片描述

在这里插入图片描述

3_创建容器镜像仓库

在这里插入图片描述

创建时注意命名规范

在这里插入图片描述

我们这里是个人版,所以只能创建一个仓库,如果想要创建多个需要花钱$。

在这里插入图片描述

这里提示了我们推送镜像的命令,格式就是:docker push namespace/repository_name:tagname

4_在本地登录Docker Hub

默认可以不添加docker hub容器镜像仓库地址

docker login

执行后可以看到如下输出:

USING WEB-BASED LOGIN
To sign in with credentials on the command line, use 'docker login -u <username>'Your one-time device confirmation code is: VBZB-SCWC
Press ENTER to open your browser or submit your device code here: https://login.docker.com/activateWaiting for authentication in the browser…
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores

访问控制台提示地址(https://login.docker.com/activate)并填写验证码

在这里插入图片描述

完成后控制台将会输出登陆成功的消息

Login Succeeded 成功

登出

docker logout

5_上传容器镜像

在登录 Docker Hub 主机上传容器镜像,向全球用户共享容器镜像。

查看原始容器镜像

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
centos       latest    5d0da3dc9764   3 years ago   231MB

重新为容器镜像打标记

docker tag centos:latest shenyang112/centos:v1

重新打标记后容器镜像

[root@localhost ~]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
shenyang112/centos   v1        5d0da3dc9764   3 years ago   231MB
centos               latest    5d0da3dc9764   3 years ago   231MB

上传容器镜像至docker hub

[root@localhost ~]# docker push shenyang112/centos:v1
The push refers to repository [docker.io/shenyang112/centos]
74ddd0ec08fa: Pushed 
v1: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529

在这里插入图片描述

可以看到v1镜像已经成功上传至 docker hub 仓库中。

6_下载容器镜像

在其它主机上下载(我创建的时候仓库其实设置的是public所以都可以下载到)

docker pull shenyang112/centos:v1

控制台打印如下信息:

v1: Pulling from shenyang112/centos
a1d0c7532777: Pull complete 
Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Status: Downloaded newer image for shenyang112/centos:v1
docker.io/shenyang112/centos:v1

查看下载后容器镜像,下载成功

[root@centos ~]# docker images
REPOSITORY              TAG              IMAGE ID       CREATED         SIZE
shenyang112/centos      v1               5d0da3dc9764   3 years ago     231MB

2、harbor

Harbor 是一个开源的企业级 Docker 镜像仓库管理平台,它旨在提供高效、安全、易于使用的镜像管理功能,主要用于存储、管理和分发 Docker 镜像。

Harbor 提供了很多增强功能,使其适用于企业环境中的大规模容器化应用,我们主要了解如何使用 Harbor 搭建私有镜像仓库。

如果想要真正将 Harbor 应用到企业开发中的话,最低配置不要低于:cpu 2 mem 4g disk 160G 的标准。

1_获取 docker compose二进制文件

下载 docker-compose 二进制文件

wget https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64

注意 docker 20.10 以上版本自动集成 v2 的 docker compose ( 没有连词符- )

查看已下载二进制文件

[root@localhost ~]# ls
docker-compose-Linux-x86_64

查看当前环境变量,这几个目录选择哪个都可以

[root@localhost ~]# echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

移动二进制文件到/usr/bin目录,并更名为docker-compose

mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

为二进制文件添加可执行权限

chmod +x /usr/bin/docker-compose

安装完成后,查看docker-compse版本,v2 版本使用docker compose version(无连词符)

[root@localhost ~]# docker-compose version
docker-compose version 1.25.0, build 0a186604
docker-py version: 4.1.0
CPython version: 3.7.4
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

觉得版本比较老可以选择较新的稳定版,本机已经有docker compose的小伙伴可以选择跳过该步骤。

2_获取harbor安装文件

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

/home目录作为基础环境

cd /home

下载 harbor 离线安装包( 大约590MB,注意网络环境 )

wget https://github.com/goharbor/harbor/releases/download/v2.11.2/harbor-offline-installer-v2.11.2.tgz

查看已下载的离线安装包

[root@localhost home]# ls
harbor-offline-installer-v2.11.2.tgz

3_获取TLS文件

创建自签证书参考官网:https://goharbor.io/docs/2.11.0/install-config/configure-https/。

编辑如下系统文件

vim /etc/hosts

添加域名解析(添加本机IP):

192.168.150.145 hub.harbor.com # 这里的值与下面的证书的名称都需要保持一致

创建存放各种证书的文件夹

mkdir ssl
cd ssl

生成 CA 证书私有密钥

openssl genrsa -out ca.key 4096

生成 CA 证书

openssl req -x509 -new -nodes -sha512 -days 3650 \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=MyPersonal Root CA" \-key ca.key \-out ca.crt

生成 Harbor 服务器私钥

openssl genrsa -out hub.harbor.com.key 4096

生成 Harbor 服务器证书签名请求(CSR)

openssl req -sha512 -new \-subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=hub.harbor.com" \-key hub.harbor.com.key \-out hub.harbor.com.csr

生成域名配置 v3 扩展文件

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names[alt_names]
DNS.1=hub.harbor.com
EOF

使用v3.ext文件为 Harbor 主机生成证书。

openssl x509 -req -sha512 -days 3650 \-extfile v3.ext \-CA ca.crt -CAkey ca.key -CAcreateserial \-in hub.harbor.com.csr \-out hub.harbor.com.crt

crt转换为cert,以供 Docker 使用。

openssl x509 -inform PEM -in hub.harbor.com.crt -out hub.harbor.com.cert

完成后可以看到共计 8 个文件

[root@localhost ssl]# ls
ca.crt  ca.key  ca.srl  hub.harbor.com.cert  hub.harbor.com.crt  hub.harbor.com.csr  hub.harbor.com.key  v3.ext

想要真实证书可以根据域名去阿里云进行申请,本地测试环境就不这么做了。

4_修改配置文件

回到/home

cd /home

解压harbor离线安装包

tar xf harbor-offline-installer-v2.11.2.tgz

查看解压出来的目录

[root@localhost home]# ls
harbor

查看harbor目录

[root@hub home]# ls harbor
common.sh  harbor.v2.11.2.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare

创建配置文件

cd harbor/
mv harbor.yml.tmpl harbor.yml

修改配置文件内容

[root@localhost harbor]# vim harbor.yml# Configuration file of Harbor# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: hub.harbor.com	修改为域名,而且一定是证书签发的域名# http related config
http:# port for http, default is 80. If https enabled, this port will redirect to https portport: 80# https related config
https:# https port for harbor, default is 443port: 443# The path of cert and key files for nginxcertificate: /home/ssl/hub.harbor.com.crt	 证书(绝对路径)private_key: /home/ssl/hub.harbor.com.key	 密钥 绝对路径# enable strong ssl ciphers (default: false)# strong_ssl_ciphers: false.....# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: 123456  访问密码
.....

注意:配置文件中不要出现带有自定义的注释。

5_执行预备脚本

./prepare

输出

prepare base dir is set to /home/harbor
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Successfully called func: create_root_cert
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir

6_执行安装脚本

./install.sh

输出

[Step 0]: checking if docker is installed ...Note: docker version: 27.3.1[Step 1]: checking docker-compose is installed ...Note: Docker Compose version v2.29.7[Step 2]: loading Harbor images ...[Step 3]: preparing environment ...[Step 4]: preparing harbor configs ...
prepare base dir is set to /home/harbor[Step 5]: starting Harbor ...
WARN[0000] /home/harbor/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
[+] Running 10/10✔ Network harbor_harbor        Created                                                                                                                                                                     0.5s ✔ Container harbor-log         Started                                                                                                                                                                     0.7s ✔ Container registry           Started                                                                                                                                                                     3.1s ✔ Container harbor-db          Started                                                                                                                                                                     3.2s ✔ Container redis              Started                                                                                                                                                                     3.0s ✔ Container harbor-portal      Started                                                                                                                                                                     3.1s ✔ Container registryctl        Started                                                                                                                                                                     3.7s ✔ Container harbor-core        Started                                                                                                                                                                     4.0s ✔ Container harbor-jobservice  Started                                                                                                                                                                     4.7s ✔ Container nginx              Started                                                                                                                                                                     4.7s 
✔ ----Harbor has been installed and started successfully.----

这里运行了9个服务,如果有一个出现了问题,就会导致整体不可用,需要检查启动数量是否足够。

7_验证运行情况

[root@localhost harbor]# docker ps
CONTAINER ID   IMAGE                                 COMMAND                   CREATED         STATUS                   PORTS                                                                                NAMES
674230487f7b   goharbor/nginx-photon:v2.11.2         "nginx -g 'daemon of…"   5 minutes ago   Up 5 minutes (healthy)   0.0.0.0:80->8080/tcp, [::]:80->8080/tcp, 0.0.0.0:443->8443/tcp, [::]:443->8443/tcp   nginx
eb1ca760d0d7   goharbor/harbor-jobservice:v2.11.2    "/harbor/entrypoint.…"   5 minutes ago   Up 5 minutes (healthy)                                                                                        harbor-jobservice
e14e3c327b39   goharbor/harbor-core:v2.11.2          "/harbor/entrypoint.…"   5 minutes ago   Up 5 minutes (healthy)                                                                                        harbor-core
eba3e5fb662c   goharbor/redis-photon:v2.11.2         "redis-server /etc/r…"   5 minutes ago   Up 5 minutes (healthy)                                                                                        redis
3403899c9bb8   goharbor/registry-photon:v2.11.2      "/home/harbor/entryp…"   5 minutes ago   Up 5 minutes (healthy)                                                                                        registry
f144bcd948ce   goharbor/harbor-db:v2.11.2            "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes (healthy)                                                                                        harbor-db
5df0ee35e953   goharbor/harbor-portal:v2.11.2        "nginx -g 'daemon of…"   5 minutes ago   Up 5 minutes (healthy)                                                                                        harbor-portal
6e5c3c09473e   goharbor/harbor-registryctl:v2.11.2   "/home/harbor/start.…"   5 minutes ago   Up 5 minutes (healthy)                                                                                        registryctl
23a05a72e27f   goharbor/harbor-log:v2.11.2           "/bin/sh -c /usr/loc…"   5 minutes ago   Up 5 minutes (healthy)   127.0.0.1:1514->10514/tcp                                                            harbor-log

8_访问harborUI界面

在物理机通过浏览器访问

在这里插入图片描述

在这里插入图片描述

在DockerHost主机通过域名访问

将证书添加到系统的 CA 证书存储库 来信任证书(CentOS):

sudo cp /home/ssl/ca.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust

我们这里是使用OS级别信任证书来访问hub.harbor.com

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

这里是通过Linux本机的浏览器进行访问的,如果需要使用windows测试请编辑本机的hosts文件,并将ca.crt证书导入到本地受信根证书下(将证书下载本地后,双击安装即可)。

9_harbor重启时存在的问题

如果你的机器或docker重启了,你会发现原来如果有9个服务最终只启动了5个,即使将剩余的服务启动后依然无法正常访问。

如果出现这一问题,使用如下命令重启 Harbor 服务进行解决:

cd /home/harbor # 这就是服务单独存放一个固定目录的好处
docker compose down # 关闭 harbor 容器
docker compose up -d # 启动
docker ps # 查看启动的harbor服务是不是9个

注意: v1 版本的 docker compose 不要忘记添加连词符-


3、docker镜像上传至Harbor及镜像下载

在一台新的机器上尝试以下操作,原来配置 Harbor 的主机仅当做管理容器镜像的私有仓库。

1_修改docker daemon使用harbor

首先添加域名映射

vim /etc/hosts
192.168.150.145 hub.harbor.com

编辑etc/docker/daemon.json文件,如果不存在,需要手动添加

vim /etc/docker/daemon.json

添加如下内容,这段配置的意思是这是个非安全的仓库(跳过了HTTPS验证)

{"insecure-registries": ["hub.harbor.com"]
}

重启加载daemon配置

systemctl daemon-reload

重启 docker

systemctl restart docker

如果可以再将机器的时钟也顺便同步了,以防证书由于时间问题不生效。

2_docker tag

查看已有容器镜像文件

[root@centos ~]# docker images
REPOSITORY              TAG              IMAGE ID       CREATED         SIZE
redis                   latest           31f08b90668e   20 months ago   117MB

为已存在镜像重新添加tag

docker tag redis:latest hub.harbor.com/library/redis:v1

再次查看本地容器镜像

[root@centos ~]# docker images
REPOSITORY                     TAG              IMAGE ID       CREATED         SIZE
redis                          latest           31f08b90668e   20 months ago   117MB
hub.harbor.com/library/redis   v1               31f08b90668e   20 months ago   117MB

3_docker push

登录到私有仓库

[root@centos ~]# docker login hub.harbor.com
Username: admin  用户名 admin
Password: 		 密码   12345
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded 登陆成功

推送本地容器镜像到harbor仓库

docker push hub.harbor.com/library/redis:v1

在这里插入图片描述

4_docker pull

在其它主机上下载使用harbor容器镜像仓库中的容器镜像

在本地域名解析文件中vim /etc/hosts添加如下内容

192.168.150.145 hub.harbor.com

/etc/docker/daemon.json文件中添加本地主机访问的容器镜像仓库

{"insecure-registries": ["hub.harbor.com"]
}

更新配置

systemctl daemon-reload
systemctl restart docker

下载容器镜像

[root@centos ~]# docker pull hub.harbor.com/library/redis:v1
v1: Pulling from library/redis
Digest: sha256:94a25c195c764f7962087eda247471989797001c222f079d5d4dbb1c34cc4854
Status: Downloaded newer image for hub.harbor.com/library/redis:v1
hub.harbor.com/library/redis:v1

查看已下载的容器镜像

[root@centos ~]# docker images
REPOSITORY                     TAG                 IMAGE ID       CREATED         SIZE
hub.harbor.com/library/redis   v1                  31f08b90668e   20 months ago   117MB

在这里插入图片描述

5_向 Harbor 和 Docker 提供证书

之前配置的docker都是使用 insecure-registries 跳过证书验证来访问 Harbor 的,也就是说避免了配置docker的信任证书。

那么docker配置HTTPS验证该怎样操作呢? 所需证书在获取TLS文件这一小节都已经提前准备好了。

将服务器证书、密钥和 CA 文件复制到 Harbor 主机上的 Docker 证书文件夹和certficates文件夹中。

cd /home/ssl # cd 到我们存放证书的目录下
# 向 docker 提供证书, 目录不存在一定要先创建
mkdir -p /etc/docker/certs.d/hub.harbor.com/ # 文件夹的名字一定要对
cp hub.harbor.com.cert /etc/docker/certs.d/hub.harbor.com/
cp hub.harbor.com.key /etc/docker/certs.d/hub.harbor.com/
cp ca.crt /etc/docker/certs.d/hub.harbor.com/
# 向 Harbor 提供证书, 目录不存在一定要先创建
mkdir -p /data/cert/ # 文件夹的名字一定要对
cp hub.harbor.com.crt /data/cert/
cp hub.harbor.com.key /data/cert/
# 无论是向docker还是Harbor提供完证书都需要重启
systemctl restart docker # 重启后如果harbor不能提供正常服务,详见2_9小节

官网提供的示例证书的配置:

/etc/docker/certs.d/└── yourdomain.com:port # 如果将默认端口 443 映射到其他端口,创建此文件夹添加端口├── yourdomain.com.cert  <-- Server certificate signed by CA├── yourdomain.com.key   <-- Server key signed by CA└── ca.crt               <-- Certificate authority that signed the registry certificat

因为我们的 Harbor 主机本身就没有配置/etc/docker/daemon.json insecure-registry,所以我们在此服务器上直接尝试推送或拉取镜像即可,如果进行了相关配置,可以删掉再进行测试。

如果其他主机的 docker 容器想要访问 Harbor,将相关证书下载并拷贝到对应的目录下就可以使用了,只用向 docker 提供证书。

千万别忘记创建对应的目录、重启docker容器以及配置域名解析,另外多台机器之间的时钟一定要同步。


4、阿里云容器镜像仓库

在阿里云中搜索容器镜像服务,进行个人身份认证。根据需要选择个人版或企业版开通服务。个人版可免费使用,但功能可能受限。(我以个人版为例进行讲解)

在这里插入图片描述

1_创建命名空间

在容器镜像服务控制台中,选择“命名空间”进行创建,命名空间用于组织和管理多个镜像仓库。

在这里插入图片描述

输入命名空间名称时注意遵循命名规范,如使用公司名称或项目名称作为命名空间。

2_创建镜像仓库

在命名空间下,选择“创建镜像仓库”(也可以不创建,上传时自动创建)

在这里插入图片描述

输入仓库名称,选择仓库类型(如公开或私有),并设置其他相关属性(如仓库描述、是否启用自动构建等)。

3_本地登录

在本地 Docker环境中,使用docker login命令登录阿里云 Docker Registry 。

docker login --username=aliyunaccount registry.cn-your-region.aliyuncs.com

其中,--username后跟你的阿里云账号全名(或邮箱),registry.cn-your-region.aliyuncs.com替换为你的阿里云区域对应的镜像仓库地址。

也可以选择在阿里云控制台的访问凭证中直接复制

在这里插入图片描述

执行后输入创建时设置的登录密码即可成功。

在这里插入图片描述

4_使用容器镜像仓库

和我们之前使用的方式一样,都是 打tag、推送、拉取。

1 标记本地镜像:

docker tag [ImageId] registry.cn-your-region.aliyuncs.com/namespace/repository-name:[ImageVersion]

2 推送镜像:

docker push registry.cn-your-region.aliyuncs.com/namespace/repository-name:[ImageVersion]

测试推送redis:v1成功:

在这里插入图片描述

3 从阿里云私有镜像仓库拉取镜像

docker pull registry.cn-your-region.aliyuncs.com/namespace/repository-name:[ImageVersion]
标志说明
ImageId镜像ID,使用 镜像名称:tag 也可以
namespace创建的命名空间名字
repository-name仓库名称,阿里云中没有创建,会自动创建
ImageVersion镜像版本号,也就是我们自己打的tag

如果想要看到使用的详细操作指导,点击仓库就可以了

在这里插入图片描述


5、总结

在量小时云服务免费、方便,比较适合我们个人使用;作为企业来说还是搭建 harbor 这种企业私有镜像仓库统一管理、分发再合适不过了;而 docker hub 访问慢,在没有使用科学上网的方式下还是挺愁的。


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

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

相关文章

在paddle中安装python-bidi出错

翻看网上解决方式&#xff0c;是由于系统中缺少 Rust 及其包管理器 Cargo。python-bidi 依赖 Rust 来编译其扩展&#xff0c;如果没有安装 Rust 和 Cargo&#xff0c;安装过程将无法继续。 解决方式 curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh但是我的终端…

buuctf:被嗅探的流量

解压后用wireshark查看 flag{da73d88936010da1eeeb36e945ec4b97}

Windows 11 文件管理器隐藏主文件夹、图库和OneDrive

Windows 11 文件管理器隐藏主文件夹、图库和OneDrive 注册表编辑器⌈ 主文件夹 ⌋⌈ 图库 ⌋⌈ OneDrive ⌋ 注册表编辑器 使用 Windows R 快捷键打开「运行」对话框&#xff0c;执行 regedit 打开注册表编辑器。 ⌈ 主文件夹 ⌋ 注册表路径 &#xff1a; 计算机\HKEY_LOCA…

数据结构与算法-03链表-04

链表与递归 在链表操作中移除、反转经常会用到递归实现。通过力扣案例理解链表常规操作中的递归实现。 移除数据 删除链表的节点 问题 LCR 136. 删除链表的节点 - 力扣&#xff08;LeetCode&#xff09; 问题描述 给定单向链表的头指针和一个要删除的节点的值&#xff0c;定…

什么是敏捷(Agile)开发?Scrum和Kanban有什么关系?

最近面试过程中被问到和敏捷开发相关的内容&#xff0c;在产品实际工作中经常会涉及到敏捷开发&#xff0c;但其实我自己没有系列了解过敏捷开发&#xff0c;除了考PMP的时候接触了下&#xff0c;大多数都是在工作中实践积累的&#xff0c;太接地气&#xff0c;为了稍显理论知识…

OpenCV-平滑图像

二维卷积(图像滤波) 与一维信号一样&#xff0c;图像也可以通过各种低通滤波器&#xff08;LPF&#xff09;、高通滤波器&#xff08;HPF&#xff09;等进行过滤。LPF 有助于消除噪音、模糊图像等。HPF 滤波器有助于在图像中找到边缘。 opencv 提供了函数 **cv.filter2D()**&…

容积卡尔曼滤波(CKF)仿真抛物线运动

容积卡尔曼滤波&#xff08;CKF&#xff09;仿真抛物线运动 容积卡尔曼滤波&#xff08;Cubature Kalman Filter, CKF&#xff09;的MATLAB实现。CKF是一种用于非线性系统状态估计的算法&#xff0c;它通过在状态空间中采样点&#xff08;容积点&#xff09;来近似非线性函数的…

leetcode:1995. 统计特殊四元组(python3解法)

难度&#xff1a;简单 给你一个 下标从 0 开始 的整数数组 nums &#xff0c;返回满足下述条件的 不同 四元组 (a, b, c, d) 的 数目 &#xff1a; nums[a] nums[b] nums[c] nums[d] &#xff0c;且a < b < c < d 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3…

几个Linux系统安装体验: 开源欧拉系统

本文介绍开源欧拉系统&#xff08;openEuler&#xff09;的安装。 下载 下载地址&#xff1a; https://www.openeuler.org/zh/download/archive/detail/?versionopenEuler%2022.03%20LTS 本文下载的文件名称为openEuler-22.03-LTS-x86_64-dvd.iso。 帮助文档地址如下&…

Data Uncertainty Learning in Face Recognition 论文阅读

Data Uncertainty Learning in Face Recognition 论文阅读 Abstract1. Introduction2. Related Work3. Methodology3.1. Preliminaries3.2. Classification-based DUL for FR3.3. Regression-based DUL for FR3.4. Discussion of Related Works 4. Experiments4.1. Datasets an…

用友BIP与旺店通数据集成方案解析

用友BIP与旺店通企业奇门的供应商集成同步方案 在现代企业的数据管理中&#xff0c;跨平台的数据集成是实现高效业务运作的关键环节。本文将分享一个实际案例&#xff1a;如何通过轻易云数据集成平台&#xff0c;将用友BIP系统中的供应商数据无缝对接到旺店通企业奇门&#xf…

代码随想录Day34 本周小结动态规划,62.不同路径,63. 不同路径 II,343. 整数拆分,96.不同的二叉搜索树。

1.本周小结动态规划 周一 在关于动态规划&#xff0c;你该了解这些&#xff01; (opens new window)中我们讲解了动态规划的基础知识。 首先讲一下动规和贪心的区别&#xff0c;其实大家不用太强调理论上的区别&#xff0c;做做题&#xff0c;就感受出来了。 然后我们讲了动…

vue中使用socket.io统计在线用户

目录 一、引入相关模块 二、store/modules 中封装socketio 三、后端代码(nodejs) 一、引入相关模块 main.js 中参考以下代码 ,另外socketio的使用在查阅其它相关文章时有出入,还是尽量以官方文档为准 import VueSocketIO from vue-socket.io import SocketIO from socket.io-…

Agent Network Protocol技术白皮书:一个对标Anthropic MCP的协议

Agent Network Protocol技术白皮书&#xff1a;一个对标Anthropic MCP的协议 Anthropic MCP让人们看到智能体通过API或协议与外部数据对接的巨大潜力。我们在几个月之前就发布了Agent Network Protocol技术白皮书&#xff0c;一个和MCP类似的协议&#xff0c;致力于解决智能体…

dbeaver安装

数据库常用的管理工具就是navicat&#xff0c;页面简洁大方&#xff0c;且易上手&#xff0c;唯一不好的就是要收费&#xff0c;个人使用的话可以用dbeaver&#xff0c;一款开源的数据库管理工具。 下载地址&#xff1a;https://dbeaver.io/download/ 直接下载这个windows(inst…

每日计划-1206

1. 完成 300. 最长上升子序列 有两种办法&#xff0c;一是使用状态规划&#xff0c;二是用二分法&#xff0c;递推。利用桶排序思想&#xff0c;出自最长递增子序列&#xff08;nlogn 二分法、DAG 模型 和 延伸问题&#xff09; | 春水煎茶 代码实现&#xff1a; class Soluti…

PHP 表单处理

在php接口中创建一个html&#xff0c;并添加一个提交按钮&#xff0c;当填写完文本框里面的内容后&#xff0c;点击提交会自动使用post方法传过去我们写的shop.php接口中。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&q…

Altium Designer学习笔记 29 PCB布线_信号线

基于Altium Designer 23学习版&#xff0c;四层板智能小车PCB 更多AD学习笔记&#xff1a;Altium Designer学习笔记 1-5 工程创建_元件库创建Altium Designer学习笔记 6-10 异性元件库创建_原理图绘制Altium Designer学习笔记 11-15 原理图的封装 编译 检查 _PCB封装库的创建Al…

华为网络设备配置文件备份与恢复(上传、下载、导出,导入)

在日常运维工作中&#xff0c;会经常存在网络割接的情况&#xff0c;为了保证网络割接失败时能重新回退至原有配置&#xff0c;从而不影响原有的办公环境&#xff0c;在网络割接前的备份工作就非常有必要了。 备份方式&#xff1a;FTP 备份技术&#xff1a;PC客户端<---&g…

STM32编码器接口及编码器测速模板代码

编码器是什么&#xff1f; 编码器是一种将角位移或者角速度转换成一连串电数字脉冲的旋转式传感 器&#xff0c;我们可以通过编码器测量到底位移或者速度信息。编码器从输出数据类型上 分&#xff0c;可以分为增量式编码器和绝对式编码器。 从编码器检测原理上来分&#xff0…