云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件
一、Harbor部署
1.验证python版本
[root@docker2 ~]#python --version
2.安装pip
[root@docker2 ~]# yum -y install python2-pip
#由于版本过低,需要对其进行一个升级
#更新pip
[root@docker2 ~]#pip install --upgrade pip
3.指定版本号
[root@docker2 ~]# pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple
#查看pip版本
[root@docker2 ~]# pip list
Package Version
pip 20.3
4.安装docker-compose
[root@docker2 ~]# pip install docker-compose --ignore-installed requests -i https://mirrors.aliyun.com/pypi/simple#查看docker-compose版本[root@docker2 ~]# pip listPackage Versiondocker-compose 1.26.2
5.安装docker
#docker.sh脚本的具体内容如下:#---------------------------------------------------------------------------------------
# 创建一个配置文件,确保在系统启动时加载 overlay 和 br_netfilter 内核模块
cat << EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF # 立即加载 overlay 和 br_netfilter 内核模块
modprobe overlay
modprobe br_netfilter # 创建一个 sysctl 配置文件,配置 Kubernetes 网络设置
cat << EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1 # 允许对桥接接口的iptables过滤
net.bridge.bridge-nf-call-ip6tables = 1 # 允许对桥接接口的ip6tables过滤
net.ipv4.ip_forward = 1 # 启用 IPv4 转发,以支持 pod 网络
EOF # 重新加载 sysctl 配置,应用新的网络设置
sysctl --system # 安装 yum-utils、设备映射持久数据和 lvm2,这些是后续安装 Docker 所需的工具
yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加阿里云 Docker 仓库,以便于通过 yum 安装 Docker
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装 Docker 及相关组件,包括 Docker CLI、containerd、Buildx 和 Compose 插件
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y#---------------------------------------------------------------------------------------#拖拽安装docker的脚本[root@docker2 ~]# rz -E
rz waiting to receive.#查看[root@docker2 ~]# ls
anaconda-ks.cfg docker.sh#让docker.sh脚本生效[root@docker2 ~]# source docker.sh #上传daemon.json文件[root@docker2 harbor]# scp root@192.168.1.32:/etc/docker/daemon.json /etc/docker/#编辑daemon.json文件[root@docker2 harbor]# vim /etc/docker/daemon.json{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],"insecure-registries": ["http://192.168.1.24"]}#编辑docker.service文件[root@docker2 harbor]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd#启动docker[root@docker2 harbor]# systemctl start docker
Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.#重新加载daemon[root@docker2 harbor]# systemctl daemon-reload#再次启动docker[root@docker2 harbor]# systemctl start docker
6.安装harbor
#下载harbor包
[root@docker2 ~]# rz -E
rz waiting to receive.
#查看
[root@docker2 ~]# ls
anaconda-ks.cfg docker.sh harbor-offline-installer-v2.11.1.tgz#查看docker版本
[root@docker2 ~]# docker --versionDocker version 26.1.4, build 5650f9b#解压harbor
[root@docker2 ~]# tar -zxvf harbor-offline-installer-v2.11.1.tgz #查看[root@docker2 ~]# lsanaconda-ks.cfg docker.sh harbor harbor-offline-installer-v2.11.1.tgz#切入harbor目录[root@docker2 ~]# cd harbor/#查看[root@docker2 harbor]# lscommon.sh harbor.v2.11.1.tar.gz harbor.yml.tmpl install.sh LICENSE prepare
7.复制harbor.yml文件
[root@docker2 harbor]# cp harbor.yml.tmpl harbor.yml
8.编辑harbor.yml文件
[root@docker2 harbor]# vim harbor.yml
9.查看端口状态
[root@docker2 harbor]# netstat -lnput | grep 80[root@docker2 harbor]# netstat -lnput | grep 5000
10.执行
#执行prepare
[root@docker2 harbor]# ./prepare
#执行install.sh
[root@docker2 harbor]# ./install.sh
11.上传镜像
[root@docker2 harbor]# docker pull centos
12.打标签
[root@docker2 harbor]# docker tag centos:latest 192.168.1.24/library/ddcentos:v0
13.下载镜像
[root@docker2 harbor]# docker push 192.168.1.24/library/ddcentos:v0
14.登录docker镜像仓库
[root@docker2 harbor]# docker login http://192.168.1.24
Username: admin
Password:
Error response from daemon: Get "http://192.168.1.24/v2/": dial tcp 192.168.1.24:80: connect: connection refused
15.浏览器访问:
16.开启容器
#查看所有容器[root@docker2 harbor]# docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99c3f62458f4 goharbor/nginx-photon:v2.11.1 "nginx -g 'daemon of…" 32 minutes ago Up 3 seconds (health: starting) 0.0.0.0:80->8080/tcp, :::80->8080/tcp nginx
dd3ef1a8cdfc goharbor/harbor-jobservice:v2.11.1 "/harbor/entrypoint.…" 32 minutes ago Exited (128) 3 minutes ago harbor-jobservice
8999a3b7136d goharbor/harbor-core:v2.11.1 "/harbor/entrypoint.…" 32 minutes ago Exited (128) 2 minutes ago harbor-core
444ce3ab8f55 goharbor/harbor-portal:v2.11.1 "nginx -g 'daemon of…" 32 minutes ago Exited (128) 2 minutes ago harbor-portal
8a8cd273a779 goharbor/registry-photon:v2.11.1 "/home/harbor/entryp…" 32 minutes ago Exited (128) 2 minutes ago registry
dbf40ab53516 goharbor/redis-photon:v2.11.1 "redis-server /etc/r…" 32 minutes ago Up 2 minutes (healthy) redis
59f6ebcbaa18 goharbor/harbor-registryctl:v2.11.1 "/home/harbor/start.…" 32 minutes ago Exited (128) 2 minutes ago registryctl
a7b8abe38923 goharbor/harbor-db:v2.11.1 "/docker-entrypoint.…" 32 minutes ago Exited (128) 2 minutes ago harbor-db
9cc010ff2807 goharbor/harbor-log:v2.11.1 "/bin/sh -c /usr/loc…" 32 minutes ago Up 2 minutes (healthy) 127.0.0.1:1514->10514/tcp harbor-log#开启关闭的容器[root@docker2 harbor]# docker start harbor-jobservice harbor-core harbor-portal registry registryctl harbor-db
harbor-jobservice
harbor-core
harbor-portal
registry
registryctl
harbor-db
17.访问验证
#再次登录docker镜像仓库[root@docker2 harbor]# docker login http://192.168.1.24
Username: admin
Password:
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#再次下载镜像[root@docker2 harbor]# docker push 192.168.1.24/library/ddcentos:v0
The push refers to repository [192.168.1.24/library/ddcentos]
74ddd0ec08fa: Pushed
v0: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529
#浏览器访问验证:
能够看到我们所创建的镜像---ddcentos
18.共享镜像
切到docker机器:
#启动docker
[root@docker ~]# systemctl start docker
#编辑daemon.json文件
[root@docker ~]# vim /etc/docker/daemon.json
#重新启动docker
[root@docker ~]# systemctl restart docker
#到访问页面复制拉取命令
#使用复制的连接,添加同时共享的镜像[root@docker ~]# docker pull 192.168.1.24/library/ddcentos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
192.168.1.24/library/ddcentos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc: Pulling from library/ddcentos
Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Status: Downloaded newer image for 192.168.1.24/library/ddcentos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
192.168.1.24/library/ddcentos@sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc#查看镜像#可以看到被共享的镜像[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos httpd0 db3cae3b5002 2 days ago 280MB
192.168.1.32:5000/centos_nginx v0 1c2a0901c77a 3 days ago 368MB
centos nginx 1c2a0901c77a 3 days ago 368MB
centos httpd e9a1ee725b43 6 days ago 311MB
centos yum 82ca12d9b058 6 days ago 261MB
registry latest cfb4d9904335 11 months ago 25.4MB
centos latest 5d0da3dc9764 2 years ago 231MB
192.168.1.24/library/ddcentos <none> 5d0da3dc9764 2 years ago 231MB
二、部署Docker-compose
1.Docker-compose 核⼼概念
docker compose 是 docker 官⽅的开源项⽬,负责实现对 docker 容器集群的快速编排;
docker compose可以管理多个 docker 容器组成的应⽤;
需要定义⼀个 YAML 格式的配置⽂件 docker-compose.yml,写 好多个容器之间的调⽤关系;
Docker-compose 将管理的容器分为三层:⼯程(project)、 服务(service)、容器(container)
⼯程:
运⾏ compose 的⽬录下所有的⽂件,包括 dockercompose.yml、extends ⽂件、环境变量⽂件等组成⼀个⼯程, 若⽆特殊指定⼯程,⼯程名即为当前⽬录名。⼯程的默认配置⽂ 件为 docker-compose.yml,可通过环境变量 COMPOSE_FILE 或 -f 参数⾃定义配置⽂件,其定义了多个有依赖关系的服务及 每个服务运⾏的容器。
服务:
⼀个⼯程中包含多个服务,每个服务中定义了容器运⾏的镜像、参数、依赖等,⼀个服务中可包括多个容器实例。
容器:
被 docker-compose 管理或部署的容器集群,调⽤ docker 服务提供的 API 来对容器进⾏管理,只要操作的平台⽀ 持 docker API,即可在其上进⾏ compose 的容器编排。
2.YAML⽂件的格式和语法
1、YAML ⽂件格式
yaml 是⼀种标记语⾔很直观的数据序列化格式,可读性很⾼。 类似于 xml 描述性语⾔,语法⽐xml简单的很多。
yaml 数据结构通过缩进进⾏表示,连续的项⽬通过减号来表 示,键值对⽤冒号分隔,数组⽤中括号括起来,hash
⽤花括号括起来。
yaml ⽂件的基本格式由⼀系列键值对构成。每个键值对都⽤冒 号“: ”分隔
在 yaml 中,键和值之间只需要⼀个空格,这是为了保证 yaml ⽂件的可读性和⼀致性
key: value
对于字符串值,可以使⽤单引号或者双信号将其括起来,这样可以避免出现特殊字符或空格等问题
name: 'Meng Mr'
age: "34"
如果值包含特殊字符(如冒号或短横线),则应该使⽤引号将其括起来
description: "This is a YAML file: good for configuation files."
2、YAML 注意事项
(1)不⽀持制表符 tab 键缩进,需要使⽤空格缩进。
(2)通常开头缩进 2 个空格。
(3)字符后缩进 1 个空格,如:冒号,逗号,横杠。
(4)⽤ # 表示注释。
(5)如果包含特殊字符⽤单引号引起来。
(6)布尔值(true、false、yes、no、on、off)必须使⽤“”引号括起 来,这样分析器会将它们解释为字符串。
3、列表和数组
在yaml中,可以使⽤“-”符号表示⼀个列表和数组
4、嵌套数据结构
yaml⽀持嵌套数据结构,可以⽤缩进来表示不同层级之间的关系, 可使⽤ # 号表示注释信息。
3.docker compose 命令选项
1.build:重新构建服务2.ps:列出容器3.up:启动所有的docker-compose服务4.up -d:启动所有docker-compose服务并在后台运行5.exec:进入容器实例内部6.:指定一个服务器启动数量7.top:显示容器进程8.logs:查看容器输出日志9.down:停止并删除容器、网络、卷、镜像10.stop:停止服务11.start:启动服务12.restart:重启服务13.config:检查配置14.config -q:检查配置,有问题才有输出15.--version:查看版本
4.YAML⽂件内常⽤指令字段
(1)version
指定了Docker compose编排⽂件的版本
Docker Compose ⽬前有三个版本,分别为 Version1、Version2和Version3。
Version1 是较早的版本,它将来会被弃⽤。
Version2 是⽬前的稳定版本,⽀持更多的指令。
Version3 在功能上与 Version2 类似,但进⾏了⼀些改进和 扩展,例如增加了对 Docker BuildKit
的⽀持,可以加速构 建过程。
(2)services
指定了在 docker compose 编排中要运⾏的服务,每个服务都有⼀ 个名称,并指定要使⽤的镜像
和容器的配置选项。
(3)image
指定要使⽤的 docker 镜像。
(4)build
允许在 docker compose 编排中指定 dockerfile 的位置。
(5)environment
指定了要设置的环境变量。
(6)volumes
挂载宿主机路径或命名卷
(7)ports
指定了要宿主机映射到容器的端⼝,端⼝不能低于 60(宿主机端 ⼝:容器端⼝),如果选择的端
⼝号低于 60,可能会与系统保留的 知名端⼝冲突。
(8)expose
⽤于在 docker 容器内部暴露端⼝的选项。
(9)networks
加⼊⽹络,引⽤顶级 networks 条⽬.
(10)hostname
设定容器主机名
(11)command
指定容器启动时要运⾏的命令,覆盖构建时的默认命令
5.安装Docker-compose
1.下载pip
[root@docker3 ~]# yum -y install python2-pip
2.升级pip到最新版本
[root@docker3 ~]# pip install --upgrade pip
3.指定版本号
[root@docker3 ~]# pip install --upgrade pip==20.3 -i Simple Index
4.使用pip安装docker-compose
[root@docker3 ~]# pip install docker-compose -i Simple Index
rz waiting to receive.
5.安装docker
[root@docker3 ~]# lsanaconda-ks.cfg docker.sh
#让docker.sh脚本文件生效
[root@docker3 ~]# source docker.sh
6.远程复制daemon.json文件到本地目录
[root@docker3 test]# scp root@192.168.1.32:/etc/docker/daemon.json /etc/docker/
7.编辑配置文件
#编辑daemon.json 文件[root@docker3 test]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"hosts":["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],"insecure-registries": ["http://192.168.1.35"]}#编辑docker.service文件[root@docker3 test]# vim /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd
8.加载deamon
[root@docker3 test]# systemctl daemon-reload
9.启动docker
[root@docker3 test]# systemctl start docker
10.创建目录
#创建test目录
[root@docker3 ~]# mkdir test
#切入test目录
[root@docker3 ~]# cd test/[root@docker3 test]# ls
#创建html目录
[root@docker3 test]# mkdir html
#写入内容
[root@docker3 test]# echo "我是被编排的nginx" > ./html/index.html
#访问验证
#使用tree命令查看
[root@docker3 test]# tree
.
└── html
└── index.html1 directory, 1 file
11.创建yml文件
[root@docker3 test]# vim docker-compose.ymlversion: "3"
services:nginx:container_name: c1image: "nginx:latest"ports:- "80:80"volumes:- /root/test/html/:/usr/share/nginx/html/
12.启动docker-compose容器集群
[root@docker3 test]# docker compose up -d
WARN[0000] /root/test/docker-compose.yml: `version` is obsolete
[+] Running 8/8✔ nginx Pulled 89.7s ✔ e4fff0779e6d Pull complete 26.1s ✔ 2a0cb278fd9f Pull complete 31.0s ✔ 7045d6c32ae2 Pull complete 31.0s ✔ 03de31afb035 Pull complete 31.0s ✔ 0f17be8dcff2 Pull complete 31.0s ✔ 14b7e5e8f394 Pull complete 31.0s ✔ 23fa5a7b99a6 Pull complete 31.1s
[+] Running 2/2✔ Network test_default Created 0.1s ✔ Container c1 Started 0.9s
13.查看及验证
#查看镜像[root@docker3 test]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx latest 5ef79149e0ec 2 weeks ago 188MB#查看容器[root@docker3 test]# docker ps --allCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESebfbdb329f7a nginx:latest "/docker-entrypoint.…" 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp c1
相关文章:

云计算实训39——Harbor仓库的使用、Docker-compose的编排、YAML文件
一、Harbor部署 1.验证python版本 [rootdocker2 ~]#python --version 2.安装pip [rootdocker2 ~]# yum -y install python2-pip #由于版本过低,需要对其进行一个升级 #更新pip [rootdocker2 ~]#pip install --upgrade pip 3.指定版本号 [rootdocker2 ~]# p…...

lambda表达式用法——C#学习笔记
“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。 实例如下: 代码如下: using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.…...

【C++ Primer Plus习题】11.6
问题: 解答: main.cpp #include <iostream> #include "Stonewt.h" using namespace std; const int SIZE 6;int main() {Stonewt stone_arr[SIZE] { 253.6,Stonewt(8,0.35),Stonewt(23,0) };double input;Stonewt eleven Stonewt(11, 0.0);Stonewt max st…...
Redis八种数据结构简介
Redis数据结构 Redis新旧版本中一共出现过八种数据结构,分别是SDS、双向链表、压缩列表、整数集合、哈希表、跳表、quicklist、listpack。 SDS SDS是用于存储Redis中字符串的数据结构,Redis底层使用的语言是C语言,因此字符串也是C语言的字…...
数据治理策略:确保数据资产的安全与高效利用
数据治理策略:确保数据资产的安全与高效利用 在数字化时代,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长和数据来源的多样化,如何有效地管理和利用这些数据成为企业面临的重要挑战。数据治理策略的制定和执行&a…...

ts格式转mp4,四款亲测好用软件推荐!
在这个数字视频时代,我们经常会遇到各种视频格式兼容性问题,尤其是从网络下载的高清电影或电视剧集,很多时候都是以TS格式存储。然而,当我们想要在移动设备、社交媒体或视频编辑软件中播放、上传时,MP4格式因其广泛的兼…...

10、Django Admin修改标题
admin from django.contrib import admin from .models import Category, Origin, Hero, Villain # 添加以下代码 admin.site.site_header "系统管理" admin.site.site_title "管理员界面" admin.site.index_title "欢迎来到这里ÿ…...

ESRI ArcGIS Pro 3.1.5新功能及安装教程和下载
ESRI ArcGIS Pro 3.1.5 主要新功能包括: 改进的数据编辑和管理:支持更多数据格式和更精细的属性表操作。增强的空间分析工具:新增和优化空间分析工具,提高数据分析效率。更好的3D可视化:改进3D渲染性能,支…...

人工智能,语音识别也算一种人工智能。
现在挺晚了,还是没有去睡觉,自己在想什么呢,也不确定。 这是一篇用语音写的文章,先按自己的想法说出来,然后再适当修改,也许就是一个不错的文章。 看来以后就不需要打字了,语音识别度很高&#…...
Token和Refresh Token
获取令牌(Token) 和 刷新令牌(Refresh Token) 在认证和授权机制中有不同的使用场景和目的,二者主要的区别和为什么需要刷新令牌可以通过以下几点解释: 1. 获取令牌和刷新令牌的区别 获取令牌(Token&#x…...

STM32(一)简介
一、stm32简介 1.外设接口 通过程序配置外设来完成功能 2.系统结构 3.引脚定义 4.启动配置 5.最小系统电路...

接口测试工具:Postman详解
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、前言 在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性…...
Linux中全局变量配置,/etc/profile.d还是/etc/profile
全局环境变量可以放在 /etc/profile 或 /etc/profile.d/ 中,但两者的使用方式和目的有所不同: /etc/profile 作用: /etc/profile 是一个系统范围的启动脚本,在用户登录时执行。它主要用于设置全局环境变量和配置,适用于所有用户。…...

【java入门】关键字、标识符与变量初识
🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养ǹ…...
Java常用类库
Java常用类库 1. **Java基础类库**1.1 **java.lang**1.2 **java.util**1.3 **java.io**1.4 **java.nio**1.5 **java.time** 2. **第三方类库**2.1 **Apache Commons**2.2 **Google Guava**2.3 **Jackson**2.4 **Lombok** 3. **Spring相关类库**4. **并发类库**4.1 **java.util.…...

2024年高教社杯数学建模国赛C题超详细解题思路分析
本次国赛预测题目难度,选题人数如下所示 难度评估 A:B:C 1.8:1.3:1 D:E1.5:1 选题人数 A:B:C 1:1.5:2.8 D:E0.5:1.2 C题一直以来都是竞赛难度最低、选题人数最多的一道本科生选题,近三年C题的选题人数一直都是总参赛队伍的一半左右,2023年…...

深度学习(七)-计算机视觉基础
计算机视觉 计算机视觉在广义上是和图像相关的技术总称。包括图像的采集获取,图 像的压缩编码,图像的存储和传输,图像的合成,三维图像重建,图像增强,图像修复,图像的分类和识别,目…...

机器人笛卡尔空间轨迹规划原理与MATLAB实现
机器人笛卡尔空间轨迹规划是指在给定的笛卡尔坐标系(通常是三维空间坐标系)中规划机器人的末端执行器(如抓手、焊枪等)的移动路径。这种规划方式直观且易于理解,因为它直接关联到任务空间中机器人的位置和姿态。下面将…...
数据结构:树与二叉树
1、树的基本概念 1.1树的定义 树是n个结点的有限集。 若n0,称为空树;若n>0称为非空树,非空树有且仅有一个称之为根的结点。 除根结点以外的其余结点可分成m个互不相交的有限集T1,T2,......Tm,每个有限集合本身又是一棵树,并…...

BUUCTF—[网鼎杯 2020 朱雀组]phpweb
题解 打开题目是这样子的。 啥也不管抓个包看看,从它返回的信息判断出func后面的是要调用的函数,p后面的是要执行的内容。 那我们直接执行个系统命令看看,可以看到返回了hack,估计是做了过滤。 funcsystem&pls 直接读取源码…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...

【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...

深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...