Docker部署私有仓库Harbor

Harbor构建Docker私有仓库

文章目录

  • Harbor构建Docker私有仓库
    • 资源列表
    • 一、部署Docker-Compose服务
      • 1.1、下载最新Docker-Compose
      • 1.2、查看Docker-Compose版本
    • 二、部署Harbor服务
      • 2.1、下载Harbor安装程序
      • 2.2、配置Harbor参数文件
      • 2.3、所需参数和可选参数
        • 2.3.1、所需参数
        • 2.3.2、可选参数
    • 三、启动Harbor
    • 四、查看Harbor启动镜像
    • 五、访问私有仓库
    • 六、创建一个新项目
    • 七、登录Harbor推送镜像
      • 7.1、登录Harbor
      • 7.2、下载镜像进行测试
      • 7.3、将镜像打标签
      • 7.4、上传镜像到Harbor
      • 7.5、Web-Harbor界面查看
    • 八、客户端上传镜像
      • 8.1、解决办法
      • 8.2、再次登录Harbor
      • 8.3、下载镜像进行测试
      • 8.4、将镜像打标签
      • 8.5、查看Harbor的Web管理界面
    • 九、Harbor日常操作管理
      • 9.1、通过Harbor Web创建项目
      • 9.2、创建Harbor用户
        • 9.2.1、创建用户并分配权限
        • 9.2.2、添加项目成员
        • 9.2.3、在客户端上使用普通账号操作镜像
      • 9.3、查看日志
    • 十、维护管理Harbor
      • 10.1、停止/启动/重启 Harbor
      • 10.2、修改Harbor.yml配置文件
      • 10.3、移除Harbor服务容器同时保留镜像数据/数据库
      • 10.4、如须重新部署,需要移除Harbor服务容器全部数据
    • 备注

资源列表

操作系统配置主机名IP所需软件
CentOS 7.92C4Gharbor192.168.93.165docker 26.1.2
docker-compose
harbor-offline-v1.1.2
CentOS 7.92C4Gclient192.168.93.166docker 26.1.2
  • 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
  • 关闭内核安全机制
setenforce 0
sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
  • 修改主机名
hostnamectl set-hostname harbor
hostnamectl set-hostname client

一、部署Docker-Compose服务

  • 部署Harbor是需要Docker-Compose服务做支撑的,所以先部署该服务

1.1、下载最新Docker-Compose

# 下载阿里云docker-compose二进制文件
[root@harbor ~]# curl -L https://mirrors.aliyun.com/docker-toolbox/linux/compose/1.21.2/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose
# 添加可执行权限
[root@harbor ~]# chmod +x /usr/local/bin/docker-compose

1.2、查看Docker-Compose版本

[root@harbor ~]# docker-compose -v
docker-compose version 1.21.2, build a133471

二、部署Harbor服务

  • Harbor被部署为多个Docker容器,因此可以部署在任何支持Docker的Linux发行版上。服务端主机需要安装Python、Docker和Docker Compose

2.1、下载Harbor安装程序

[root@harbor ~]# yum -y install wget
[root@harbor ~]# wget https://github.com/goharbor/harbor/releases/download/v2.6.1/harbor-offline-installer-v2.6.1.tgz
[root@harbor ~]# tar -zxvf harbor-offline-installer-v2.0.2.tgz -C /usr/local/

2.2、配置Harbor参数文件

# 拷贝一份Harbor的配置文件
[root@harbor ~]# cp /usr/local/harbor/harbor.yml.tmpl /usr/local/harbor/harbor.yml
[root@harbor ~]# vim /usr/local/harbor/harbor.yml
# 修改hostname,修改为自己的IP地址
hostname: 192.168.93.165
# 将https段的内容全部注释,这里不使用https访问
#################################################################https:# https port for harbor, default is 443#port: 443# The path of cert and key files for nginx#certificate: /your/certificate/path#private_key: /your/private/key/path################################################################# 对配置文件进行语法检查,将会自动拉取必要的镜像
[root@harbor ~]# /usr/local/harbor/prepare

2.3、所需参数和可选参数

2.3.1、所需参数
  • 这些参数需要在配置文件Harbor.yml中设置。如果用户更新他们并运行install.sh脚本重新安装Harbor,参数将生效
1、hostname:用于访问用户界面和register服务。他应该是目标机器的IP地址或完全限定域名(FQDN),例如192.168.93.165或hun.kgc.cn。不要使用localhost或172.0.0.12.ui_rul_protocol:(http或httpds,默认为http)用于访问UI和令牌/通知服务的协议。如果公证处于启用状态,则此参数必须为https3.max_job_workers:镜像复制作业线程4.db_password:用于db_auth的MySQL数据库root用户的密码5.customize_crt:该属性可设置为打开或关闭,默认打开,打开此属性时,准备脚本创建私钥和根整数,用于生成/验证注册表令牌。当由外部来源提供密钥和根证书时,将此属性设置为off6.ssl_cert:SSL证书的路路径,仅当协议设置为https时采应用7.ssl_cert_key:SSL密钥的路径,仅当协议设置为https时才应用8.secretkey_path:用于在复制策略中加密或解密远程register密码的的密钥路径
2.3.2、可选参数
  • 这些参数对于更新是可选的,即用户可以将其保留位默认值,并在启动Harbor后在Web UI上进行更新。如果进入Harbor.yml,只会在第一次启动Harbor时生效,随后对这些参数的更新,Harbor.yml将被忽略
  • 注意:如果选择通过UI设置这些参数,请确保在启动Harbour后立即执行此操作。具体来说,必须在测试或在Harbor中创建任何新用户之前设置所需的auth_mode。当系统中有用户时(除了默认的admin用户),auth_mode不能被修改
  • 另外,默认情况下,Harbour将镜像存储在本地文件系统上。在生产环境中,可以考虑使用其他存储后端而不是本地文件系统,如S3、Openstack Swif、Ceph等。但需要更新common/templates/registry/config.yml文件
1.Email:Harbor需要该参数才能向用户发送“密码重置”,并且只有在需要该功能时才需要。请注意,在默认情况下SSL连接时没有启动。如果SMTP服务器需要SSL,但不支持StartLS,那么应该通过设置启动SSL email_ssl = TRUE2.harbour_admin_password:管理员的处理密码,只在Harbour第一次启动时生效。之后,此设置将被忽略,并且应在UI设置管理员的密码。请注意,默认的用户名/密码时admin/Harbor123453.auth_mode:使用的认证类型,默认情况下,它时db_auth,即凭据存储在数据库中对于LADP身份验证,请将其设置位ldap_auth4.seif_registration:启动/禁用用户注册功能。禁用时,新用户只能由Admin用户创建只有管理员用户可以在Harbor中创建新用户。注意:当auth_mode设置为ldap_auth时,自动注册功能始终处理禁用状态,并且该标志被忽略5.Token_enpiration:由令牌服务创建的令牌的到期时间(分钟),默认位30分钟6.project_creation_restriction:用于控制哪些用户的权限项目的标志。默认情况下,每个人都可以创建项目。如果将其设置位"adminonly",那么只有admin可以创建项目7.verify_remote_cert:打开或关闭,默认打开。此标志决定了当Harbour与远程register实例通信时是否验证SSL/TLS证书。将此属性设置为off将绕过SSL/TLS验证,这在远程实例具有自签名或不可信证书时经常使用。

三、启动Harbor

# 需要一点时间,等待安装回显结束即可
[root@harbor ~]# sh /usr/local/harbor/install.sh

四、查看Harbor启动镜像

[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# docker-compose psName                     Command                  State                      Ports                
--------------------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up (healthy)                                       
harbor-db           /docker-entrypoint.sh            Up (healthy)   5432/tcp                            
harbor-jobservice   /harbor/entrypoint.sh            Up (healthy)                                       
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up (healthy)   127.0.0.1:1514->10514/tcp           
harbor-portal       nginx -g daemon off;             Up (healthy)   8080/tcp                            
nginx               nginx -g daemon off;             Up (healthy)   0.0.0.0:80->8080/tcp,:::80->8080/tcp
redis               redis-server /etc/redis.conf     Up (healthy)   6379/tcp                            
registry            /home/harbor/entrypoint.sh       Up (healthy)   5000/tcp                            
registryctl         /home/harbor/start.sh            Up (healthy) 

五、访问私有仓库

  • 访问地址:http://192.168.93.165
  • 用户名:admin
  • 密 码:Harbor12345
    在这里插入图片描述

六、创建一个新项目

  • 在WEB UI界面创建新项目的操作步骤如下。

  • 输入用户名和面膜登录界面后可以创建一个新项目。点击“+新建项目”按钮
    在这里插入图片描述

  • 填写项目名称为“myproject-kgc”
    在这里插入图片描述

  • 点击“确定”按钮,成功创建新项目后,页面效果如下
    在这里插入图片描述

  • 此时可使用Docker命令在本地通过127.0.0.1来登录和推送镜像。默认情况下Register服务器在端口80上侦听

七、登录Harbor推送镜像

7.1、登录Harbor

[root@harbor ~]# docker login -u admin -p Harbor12345 http://127.0.0.1
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

7.2、下载镜像进行测试

[root@harbor ~]# docker pull cirros

7.3、将镜像打标签

# push上传镜像必须要以,以下格式进行打标签
# 格式:私有仓库IP地址/项目名称/镜像标签
[root@harbor ~]# docker tag cirros:latest 127.0.0.1/myproject-kgc/cirros:v1

7.4、上传镜像到Harbor

[root@harbor ~]# docker push 127.0.0.1/myproject-kgc/cirros:v1 
The push refers to repository [127.0.0.1/myproject-kgc/cirros]
d8083b07a8e2: Pushed 
b42b2edd1b7f: Pushed 
032cc20cbfb2: Pushed 
v1: digest: sha256:d573d48afdade1ef2c5bba38681e8c8ce0794e985409e7d5c35a2c3653c547aa size: 943

7.5、Web-Harbor界面查看

  • 在harbor界面myproject-kgc目录下可看见此镜像及相关信息
  • 点击项目名称超链接,即可看到如下信息
    在这里插入图片描述

八、客户端上传镜像

  • 以上操作都是在Harbor服务器本地操作。如果其他客户端上传镜像到Harbor,就会报错误。出现这问题的原因Docker Registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP。所以与私有镜像交互时就会报错如下内容
[root@client ~]# docker login -u admin -p Harbor12345 http://192.168.93.165
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://192.168.93.165/v2/": dial tcp 192.168.93.165:443: connect: connection refused

8.1、解决办法

  • 在Docker客户端配置操作
  • 解决办法是:在Docker server启动的时候,增加启动参数,默认使用HTTP访问
# 解决办法1
[root@client ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.93.165
[root@client ~]# systemctl daemon-reload 
[root@client ~]# systemctl restart docker# 解决办法2
cat > /etc/docker/daemon.json << EOF
{# 这个是修改为国内的镜像源,使用国内的源访问速度会快一点"registry-mirrors": ["https://r9xxm8z8.mirror.aliyuncs.com"],# 指定私有仓库IP地址"insecure-registries":["192.168.93.156"]
}
EOF
[root@client ~]# systemctl daemon-reload 
[root@client ~]# systemctl restart docker.service 

8.2、再次登录Harbor

[root@client ~]# docker login -u admin -p Harbor12345 http://192.168.93.165
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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

8.3、下载镜像进行测试

[root@client ~]# docker pull nginx

8.4、将镜像打标签

  • 将镜像打标签上传到myproject-kgc项目里面
[root@client ~]# docker tag nginx:latest 192.168.93.165/myproject-kgc/nginx:v1# 上传镜像
[root@client ~]# docker push 192.168.93.165/myproject-kgc/nginx:v1

8.5、查看Harbor的Web管理界面

  • myproject-kgc项目里面有两个镜像
    在这里插入图片描述

九、Harbor日常操作管理

  • 在Harbor仓库中,任何镜像在被push到registry之前都必须有一个自己所属的项目

9.1、通过Harbor Web创建项目

  • 单击“+新建项目”,填写项目名称。本案例中项目级别为“公有”,则所有对此项目下的镜像拥有读权限,命令行中不需要执行“Docker login”即可下载镜像,镜像操作与Docker Hub一致

9.2、创建Harbor用户

9.2.1、创建用户并分配权限
  • 在Web管理界面中单击系统管理-》用户管理-》+创建用户,填写用户名为“kgc-user01”,邮箱为kgc-user01@kgc.cn,全名为“课超新人”,密码为“A123a456”,注释为“管理员”
    在这里插入图片描述

  • 用户创建成功后,单击左侧“…”按钮可将上述创建的用户设置为管理员角色或进行删除操作。本案例不做任何设置
    在这里插入图片描述

9.2.2、添加项目成员
  • 单击项目-》myproject-kgc-》成员-》+成员,填写上述创建的用户并分配角色为“开发人员”
    在这里插入图片描述

  • 此时单击左侧“…”按钮仍然可以对成员角色进行变更或者删除操作
    在这里插入图片描述

9.2.3、在客户端上使用普通账号操作镜像
  • 1、删除上述打标签的本地镜像
[root@client ~]# docker rmi 192.168.93.165/myproject-kgc/nginx:v1
  • 2、先退出当前用户,然后使用上述创建的用户kgc-user01登录
# 退出账号
[root@client ~]# docker logout 192.168.93.165
Removing login credentials for 192.168.93.165# 登录账号
[root@client ~]# docker login -u kgc-user01 -p A123a456 http://192.168.93.165
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
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
  • 3、下载服务器192.168.93.165/myproject-kgc/nginx标签为v1的镜像
[root@client ~]# docker pull 192.168.93.165/myproject-kgc/nginx:v1
v1: Pulling from myproject-kgc/nginx
09f376ebb190: Pull complete 
5529e0792248: Pull complete 
9b3addd3eb3d: Pull complete 
57910a8c4316: Pull complete 
7b5f78f21449: Pull complete 
b7923aa4e8a6: Pull complete 
785625911f12: Pull complete 
Digest: sha256:0db204f933b6d1def0c0c15578f61a80091f8316b04150918413fc4d5c87be69
Status: Downloaded newer image for 192.168.93.165/myproject-kgc/nginx:v1
192.168.93.165/myproject-kgc/nginx:v1

9.3、查看日志

  • Web界面日志,操作日志按时间顺序记录用户相关操作
  • 点击“myproject-kgc”超链接即可进入此页面
    在这里插入图片描述

十、维护管理Harbor

  • 可以使用docker-compose管理Harbor。一些有用的命令如下所示,必须在与docker-compose.yml相同的目录中运行

10.1、停止/启动/重启 Harbor

[root@harbor ~]# cd /usr/local/harbor/
[root@harbor harbor]# docker-compose stop | start | restart

10.2、修改Harbor.yml配置文件

  • 要更改Harbour的配置文件时,请先停止现有的Harbour实例并更新harbor.yml;然后运行prepare脚本来填充配置;最后重新创建并启动Harbour的实例
  • 如上文所说,如修改所需参数,需要重新运行install.sh,如修改可选参数,则需运行脚本 ./prepare 将配置文件内容进行重新生效
[root@harbor harbor]# docker-compose down -v
Stopping harbor-jobservice ... done
Stopping nginx             ... done
Stopping harbor-core       ... done
Stopping harbor-portal     ... done
Stopping redis             ... done
Stopping registryctl       ... done
Stopping registry          ... done
Stopping harbor-db         ... done
Stopping harbor-log        ... done
Removing harbor-jobservice ... done
Removing nginx             ... done
Removing harbor-core       ... done
Removing harbor-portal     ... done
Removing redis             ... done
Removing registryctl       ... done
Removing registry          ... done
Removing harbor-db         ... done
Removing harbor-log        ... done
Removing network harbor_harbor
[root@harbor harbor]# ./prepare 
[root@harbor harbor]# docker-compose up -d

10.3、移除Harbor服务容器同时保留镜像数据/数据库

# 这条命令将停止和移除Docker Compose中定义的所有容器,并且会同时删除关联的所有卷。 `-v`选项表示同时删除所有卷。
[root@harbor harbor]# docker-compose up -d

10.4、如须重新部署,需要移除Harbor服务容器全部数据

  • 持久数据,如镜像,数据库等在宿主机的/data/目录下,日志在宿主机的/var/log/Harbor/目录下
[root@harbor ~]# rm -rf /data/database/
[root@harbor ~]# rm -rf /data/registry/

备注

# 目前,微服务架构也在潜移默化的改变应用的部署方式,其提倡将应用分割成一系列细小的服务,每个服务专注于单一业务功能,服务之间采用轻量级通信机制相互沟通。同时,数据库解决方案也在发生变化,多种持久化混合方案提倡将数据存放在最适合的数据库解决方案中,而传统的数据库解决方案将数据存放在同一个数据库服务中# 服务数量的增加也就意味着容器数量的增多,逐渐增加的容器数量为容器部署、运行及管理带来了挑战。Docker Compose的出现解决多个容器部署的问题并提高了多个容器解决方案的可移植性# Docker官方镜像仓库是一个用于管理公共镜像的地方,用户可以在上面找到想要的镜像,也可以把自己的镜像推送上去。但是,有时候服务器无法访问互联网,或者不希望自己的镜像放到互联网上,那么九需要用到Docker Registry私有仓库,它咳哟用来存储和管理自己的镜像。

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

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

相关文章

CP AUTOSAR标准之MemoryDriver(AUTOSAR_CP_SWS_MemoryDriver)

1 简介和功能概述 该规范描述了AUTOSAR基础软件模块内存驱动程序(Mem)的功能、API和配置。   内存驱动程序提供访问不同类型内存设备的基本服务,如读取、写入、擦除和空白检查。   尽管闪存仍然是最常见的非易失性存储器技术,但内存驱动程序规范考虑了所有相关的内存设备…

虚拟警示教育馆如何革新安全教育?揭秘其深远意义与实际优势

一、推动警示教育的创新与普及 虚拟警示教育馆是将传统警示教育与现代科技相结合的新型教育模式。其意义主要体现在以下几个方面&#xff1a; 1、增强教育的互动性和沉浸感&#xff1a;虚拟警示教育馆通过3D建模、VR等技术&#xff0c;创建逼真的警示场景。这种身临其境的体验能…

(资料收藏)王阳明传《知行合一》共74讲,王阳明知行合一音频讲解资料

今天给大家带来的不是软件&#xff0c;而是一份精神食粮——《知行合一》的教程福利。这可不是一般的教程&#xff0c;它关乎心灵&#xff0c;关乎智慧&#xff0c;关乎我们如何在纷繁复杂的世界中找到自己的位置。 咱们得聊聊王阳明&#xff0c;这位明代的大儒&#xff0c;他…

餐饮业应该购置精酿啤酒设备吗?

近几年&#xff0c;啤酒行业刮起了一股“精酿风”&#xff0c;它不只是一种饮品口味上的变化&#xff0c;更像是一个生活方式的升级。精酿啤酒的兴起&#xff0c;不仅体现在味道的多样性和层次感上&#xff0c;更重要的是它代表了一种生活态度&#xff0c;是对品质生活的追求。…

可复用验证的测试用例 5大编写技巧

编写可复用验证的测试用例&#xff0c;节省了编写新测试用例的时间和资源&#xff0c;提高了测试效率和项目质量&#xff0c;减少错误修复成本&#xff0c;有利于实现较高的投入产出比。缺乏可复用的测试用例会导致测试团队不断重复创建相似的测试场景&#xff0c;消耗大量时间…

每日一练:攻防世界:Ditf

这是难度1的题吗&#xff1f;&#xff1f;&#xff1f; 拿到一个png图片&#xff0c;第一反应就是CRC爆破&#xff0c;结果还真的是高度被修改了 这里拿到一个字符串&#xff0c;提交flag结果发现不是&#xff0c;那么只可能是密钥之类的了 看看有没有压缩包&#xff0c;搜索…

IMU应用于体操训练

考虑到在艺术体操训练与竞赛中艺术体操的训练与比赛中&#xff0c;地板项目导致的伤率最高&#xff0c;最近&#xff0c;一个来自澳大利亚的科研团队利用IMU评估运动员执行基础翻腾技巧训练时&#xff0c;他们上肢与下肢所承受的冲击负荷。 本次实验共有十四名艺术体操运动员参…

(五)React受控表单、获取DOM

1. React受控表单 概念&#xff1a;使用React组件的状态&#xff08;useState&#xff09;控制表单的状态 准备一个React状态值 const [value, setValue] useState()通过value属性绑定状态&#xff0c;通过onChange属性绑定状态同步的函数 <input type"text"…

计算机网络期末复习1(最后一天才开始学版)

1.一个PPP帧的数据部分&#xff08;用十六进制写出&#xff09;是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。试问真正的数据是&#xff08;用十六进制写出&#xff09; 由于PPP帧的标志字段为7E,因此,为了区别标志字段和信息字段,将信息字段中出现的每一个0x7E转变成(0x7D,0x5E),0x7…

PIL保存后的图像莫名的失真,部分不失真部分很失真

原图片是这样的&#xff1a; PIL会自行**“自救”被正则化的图片&#xff0c;导致自救过曝&#xff0c;部分颜色非常失真&#xff0c;但是部分又保存的还行。现象如下&#xff1a; 这里你检查一下你保存的是不是被正则化的图片**&#xff0c;如果是&#xff0c;改改。 查看一…

【vue大作业-端午节主题网站】【预览展示视频和详细文档】

vue大作业-端午节主题网站介绍 端午节&#xff0c;又称为龙舟节&#xff0c;是中国的传统节日之一&#xff0c;每年农历五月初五庆祝。这个节日不仅是纪念古代爱国诗人屈原的日子&#xff0c;也是家人团聚、共享美食的时刻。今天&#xff0c;我们非常高兴地分享一个以端午节为…

宝塔面板使用技巧(pure-FTP)上传文件和文件夹默认权限644的修改

前言 科技在进步各种各样的开源软件和库让我们应接不暇&#xff0c;我估计现在所有做php开发的人员都知道宝塔面板&#xff0c;我就经常用&#xff0c;但是不知道大家出现过一个问题不就是在我们开发过程中需要实时的给服务器上传我们开发的文件那么就涉及到了宝塔自带的pure-F…

【unity小技巧】unity3D寻路指示轨迹预测

最终效果 文章目录 最终效果前言设置好LineRenderer线组件配置&#xff0c;用于绘制寻路轨迹代码烘培导航网格运行效果参考 前言 最近刷到b站up主山长操作库的内容&#xff0c;感觉很有意思&#xff0c;于是就简单整理了一下。注意本文的实现思路完全是按这位up整理的&#xf…

JAVAEE之网络原理(2)_传输控制协议(TCP)、概念、格式、确认应答及超时重传机制

前言 在上一节中&#xff0c;我们介绍了 UDP (用户数据报) 的相关知识&#xff0c;在这一节中我们将继续介绍传输层中另一种更为重要的协议。 一、什么是TCP协议&#xff1f; 1.1 TCP 基本概念 TCP协议全称&#xff1a;传输控制协议&#xff08;TCP&#xff0c;Transmission C…

python基础语法 002 - 4 字符串

1 字符串 字符串&#xff1a;引号括起来的数据类型 # 双引号 a "yuze wang"# 单引号 a ’yuze wang‘# 三引号 a ’‘’yuze‘‘’ a """yuze"""注意&#xff1a;所有格式表示都是半角&#xff0c;全角会报错 1.1 引号表示 …

HSE在企业中的重要性:健康、安全与环境的全面保障

在当今企业运营中&#xff0c;健康、安全与环境&#xff08;HSE&#xff09;管理体系已经成为不可或缺的一部分。HSE管理不仅保护员工的健康和安全&#xff0c;还致力于环境的可持续发展。本文将简洁明了地阐述HSE在企业中的关键作用及其带来的综合效益。 员工健康保护 健康风…

深入理解Qt状态机的应用(一)

Qt的状态机框架提供了一种管理复杂系统状态的方法&#xff0c;它基于经典的有限状态机&#xff08;FSM&#xff09;理论。这种框架在开发涉及多种状态和状态之间需要明确转换的应用程序时特别有用&#xff0c;如用户界面交互、网络协议、游戏开发等场景。 什么是有限状态机&a…

手写一个JSON可视化工具

前言 JSON 平时大家都会用到&#xff0c;都不陌生&#xff0c;今天就一起来实现一个 JSON 的可视化工具。 大概长成下面的样子&#xff1a; 树展示 相比于现有的一些 JSON 格式化工具&#xff0c;我们今天制作的这个小工具会把 JSON 转为树去表示。其中&#xff1a; 橙色标…

跟TED演讲学英文:A tale of mental illness -- from the inside by Elyn Saks

A tale of mental illness – from the inside Link: https://www.ted.com/talks/elyn_saks_a_tale_of_mental_illness_from_the_inside Speaker: Elyn Saks Date: June 2012 文章目录 A tale of mental illness -- from the insideIntroductionVocabularySummaryTranscriptA…

全新AI图像擦处理工具上线,手机电脑版资源合集下载

下载地址&#xff1a; 安卓手机版&#xff1a; 点击下载 苹果手机版&#xff1a; 点击下载 电脑版&#xff08;支持Mac和Windows&#xff09;&#xff1a; 点击下载 图像处理技术在当今迅速发展&#xff0c;为了满足广大用户的需求&#xff0c;我们推出了一款强大的图像优化…