阿里云容器镜像服务ACR(Alibaba Cloud Container Registry)推送镜像全过程及总结

news2025/1/12 20:47:25

前提:安装配置好docker,可参考我这篇 基于CentOS7安装配置docker与docker-compose。

一、设置访问凭证

1.1 容器镜像服务ACR

登录进入阿里云首页,点击 产品-容器-容器镜像服务ACR
在这里插入图片描述
点击管理控制台
在这里插入图片描述

1.2 进入控制台-点击实例列表

在这里插入图片描述
个人容器镜像托管服务,限额使用
在这里插入图片描述

1.3 创建个人版

在这里插入图片描述
个人容器镜像托管服务,限额使用
在这里插入图片描述
知晓个人版无SLA保障且有使用限制,请勿在生产业务中使用
在这里插入图片描述
创建中
在这里插入图片描述
创建成功
在这里插入图片描述

1.4 设置Registry登录密码

在这里插入图片描述
点击确定
在这里插入图片描述
点击确定
在这里插入图片描述
初始化成功
在这里插入图片描述

1.5 查看访问凭证

在上图中点击 “访问凭证”,按下图复制访问凭证

在这里插入图片描述

1.6 复制粘贴凭证 Login Succeeded

在这里插入图片描述
Login Succeeded
在这里插入图片描述

1.7 设置固定密码

在这里插入图片描述
设置固定密码,手机验证
在这里插入图片描述
全过程
在这里插入图片描述

1.8 个人版运行中

在这里插入图片描述

1.9 第一步 访问凭证-设置访问密码完成(右下角有显示)

在这里插入图片描述

1.10 容器镜像服务个人版将于2023年8月20日起取消个人版实例的镜像安全扫描-镜像同步功能

在这里插入图片描述

二、创建命名空间

2.1 创建命名空间相关说明

创建命名空间相关说明:
1、一个账号最多可以创建 3 个命名空间

2、命名空间创建参考:
推荐创建的命名空间用来对应一个公司、组织或个人用户,例如AliyunObama。不推荐用来对应一个模块
或系统,例如TomcatCentOS,应用或模块推荐使用仓库进行管理。

3、定义您的镜像仓库命名空间,设置后不可修改。长度为2-30位,可填写小写英文字母、数字,可使用的分隔
符包括“_”、“-”(分隔符不能在首位或末位)

2.2 点击右下角命名空间 第二步

在这里插入图片描述
在这里插入图片描述

2.3 创建命名空间-2023815_djc-命名空间创建参考

在这里插入图片描述
在这里插入图片描述
创建命名空间-2023815_djc成功
在这里插入图片描述

2.4 第二步-命名空间-创建命名空间完成

在这里插入图片描述

三、创建镜像仓库rep2023815

注意: 这里的镜像仓库名rep2023815有误,容易无法区分镜像,但过程和步骤没问题,建议直接从 四、创建镜像仓库mysql全过程五、将mysql镜像推送到Registry-镜像仓库mysql 开始阅读,再看 七、总结 ,减少无用功。

3.1 点击右下角镜像仓库 第三步

在这里插入图片描述

3.2 点击创建镜像仓库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 代码源选择本地仓库

代码源 选择本地仓库 ,。可以通过命令行推送镜像到镜像仓库
在这里插入图片描述

3.4 其他代码源介绍

3.4.1 代码源-Codeup介绍

在这里插入图片描述

3.4.2 代码源-GitHub

在这里插入图片描述

3.4.3代码源-Bitbucket

在这里插入图片描述

3.4.4代码源-私有GitLab

在这里插入图片描述

3.4.5 代码源-本地仓库

在这里插入图片描述

3.5 代码源选择本地仓库 -镜像仓库rep2023815创建成功

在这里插入图片描述

3.5.1 仓库rep2023815-基本信息-操作指南

在这里插入图片描述

3.5.2 镜像仓库rep2023815-基本信息-制品描述

在这里插入图片描述

3.6 镜像仓库rep2023815-触发器

在这里插入图片描述

3.7 仓库rep2023815-镜像版本

在这里插入图片描述

3.8 将jdk11镜像推送到Registry-镜像仓库rep2023815

docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
//输入之前设置的密码  
docker tag 526230ab6ddf registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:11

docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:11

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.9 将nginx镜像推送到Registry–镜像仓库rep2023815

docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com 
输入之前设置的密码  

docker tag 0e901e68141f registry.cnhangzhou.aliyuncs.com/2023815_djc/rep2023815:v1.21.6   

docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v1.21.6

3.10 将mysql8.0.31镜像推送到Registry-镜像仓库rep2023815

//1-登录  在终端中输入访问凭证,登录Registry实例 
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码  

//2-tag
//docker images
//mysql        8.0.31          484689f290f   8 months ago    538MB
//docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:[镜像版本号]
docker tag  7484689f290f  registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v8.0.31       


3-push
//docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v8.0.31    


请根据实际镜像信息替换示例中的[ImageId][镜像版本号]参数。

3.12 镜像仓库一览

在这里插入图片描述

在这里插入图片描述
注意: 这里的镜像仓库名rep2023815有误,容易无法区分镜像,但过程和步骤没问题,建议直接从 四、创建镜像仓库mysql全过程五、将mysql镜像推送到Registry-镜像仓库mysql 开始阅读,再看 七、总结 ,减少无用功。

四、创建镜像仓库mysql全过程

4.1 首页

在这里插入图片描述

4.2 点击管理控制台

在这里插入图片描述

4.3 进入实例列表

在这里插入图片描述
在这里插入图片描述

4.4 点击进入镜像仓库

在这里插入图片描述
在这里插入图片描述

4.5 点击创建镜像仓库

在这里插入图片描述

点击“下一步”
在这里插入图片描述
在这里插入图片描述

4.6 镜像仓库mysql-基本信息

提示点击“添加仓库成功”
在这里插入图片描述

4.6.1 镜像仓库mysql-基本信息-操作指南

在这里插入图片描述

操作指南 

1. 登录阿里云Docker Registry
$ docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
//输入之前设置的密码 
您可以在访问凭证页面修改凭证密码。

2.Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]

3. 将镜像推送到Registry
$ docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId][镜像版本号]参数。

4. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。

5. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

$ docker images
REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB
$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
使用 "docker push" 命令将该镜像推送至远程。

$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

4.6.2 镜像仓库mysql-基本信息-制品描述

在这里插入图片描述

4.7 镜像仓库可以查看到刚刚创建好的mysql镜像仓库

在这里插入图片描述

五、将mysql镜像推送到Registry-镜像仓库mysql

5.1 将镜像推送到Registry-操作指南

参考 4.6.1 仓库mysql-基本信息-操作指南 中的第3点。

3. 将镜像推送到Registry
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码 

docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]

docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId][镜像版本号]参数。

5.2 docker images 查看需要上传push的镜像信息

IMAGE ID 与 镜像版本号(TAG)

请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

在这里插入图片描述

5.3 将mysql镜像推送到Registry-镜像仓库mysql

5.3.1 将mysql镜像推送到Registry-镜像仓库mysql-命令

3. 将镜像推送到Registry
//1-login
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码  
//2-tag
//这个命令并没有推送镜像,只是给镜像指定一个版本,这个版本不是指本地镜像的版本,而是推送后在阿里云仓库的版本。
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
//3-push
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]


-----------

//1-login
//连续上传,只需要登录一次
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码  

-------------mysql 8.0.29-----------------------
//2-tag
docker tag 33037edcac9b  registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.29  
//3-push
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.29  


-------------mysql 8.0.31-----------------------
//2-tag
docker tag 7484689f290f  registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.31  
//3-push
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.31 

【说明】:
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:[镜像版本号]
这个命令并没有推送镜像,只是给镜像指定一个版本,这个版本不是指本地镜像的版本,而是推送后在阿里云仓库的版本。

//tag后面的是你要推送的镜像id
//后面是你的镜像仓库地址,直接去创建好的仓库去复制 

5.3.2 将mysql镜像推送到Registry–镜像仓库mysql-截图

在这里插入图片描述

Digest:该镜像的摘要信息。当您下载镜像时,最后一行中会出现这个值。

镜像ID: 使用1.10以上版本的客户端推送、拉取镜像时,这个值在客户端和服务端能够保持一致。否则这个值
将是随机的不予提供。

5.4 mysql8.0.31推送到Registry-镜像仓库mysql的一些问题

镜像仓库rep2023815也推送了一个mysql8.0.31的镜像,见 3.10 将mysql8.0.31镜像推送到Registry-镜像仓库rep2023815
在这里插入图片描述

5.5 推送mysql镜像到Registry-镜像仓库mysql后再次使用docker images

发现推送到Registry后会在本地也生成一个 相同IMAGE ID的镜像,如下图所示。
在这里插入图片描述

5.6 进入阿里云镜像仓库查看推送到Registry(镜像仓库mysql)的mysql镜像

在这里插入图片描述
点击mysql镜像仓库,点击镜像版本
在这里插入图片描述

六、将之前使用dockerfile手动构建JDK11镜像推送到Registry-镜像仓库jdk

文章见 使用dockerfile手动构建JDK11镜像运行容器并校验

3. 将镜像推送到Registry
docker login --username=djcking2020 registry.cn-hangzhou.aliyuncs.com
输入之前设置的密码  
//docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:[镜像版本号]
docker tag 526230ab6ddf  registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:11

//docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:11

请根据实际镜像信息替换示例中的[ImageId][镜像版本号]参数。

6.1 创建镜像仓库jdk

在这里插入图片描述
在这里插入图片描述

6.2 jdk镜像仓库-本地仓库-基本信息-操作指南

在这里插入图片描述
docker images
这里可以看到本地存在两个同IMAGE ID的镜像,TAG都是11,一个是在使用dockerfile手动构建JDK11镜像运行容器并校验 中手动使用 docker build -t java:11 . 命令构建的,另外一个则是在
3.9 将jdk11镜像推送到Registry-镜像仓库rep2023815推送到rep2023815镜像仓库后,后会在本地也生成一个 相同IMAGE ID的镜像。
在这里插入图片描述

6.3 将jdk镜像推送到Registry-镜像仓库jdk截图

在这里插入图片描述
可以发现,这里和正常推送到仓库成功后显示的信息不同,这里显示Mounted from 2023815_djc/rep2023815,

1、此时rep2023815和jdk这两个镜像仓库相同的是中都推送了jdk11这个镜像,并且IMAGE IDTAG都相同。

2、但是rep2023815镜像仓库中的REPOSITORY就是registry.cnhangzhou.aliyuncs.com/2023815_djc/rep2023815,
而且还存放了mysql8.0.31的镜像。

3、jdk镜像仓库的推送的jdk的REPOSITORY是registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk,只存放了jdk这一种镜像。

所以这里显示的 Mounted from 2023815_djc/rep2023815,应该是从和镜像仓库jdk同一命名空间2023815_djc,存放相同IMAGE IDjdk11镜像的镜像仓库rep2023815中(3.9 将jdk11镜像推送到Registry-镜像仓库rep2023815),直接把该jdk11镜像同步到了镜像仓库jdk,所以显示和正常推送的不同。
在这里插入图片描述

6.4 镜像仓库jdk

在这里插入图片描述
刚刚推送到Registry-镜像仓库jdk的jdk11镜像
在这里插入图片描述

6.5 镜像仓库jdk-安全扫描

在这里插入图片描述

6.6 镜像仓库jdk-镜像层信息

会发现这里镜像层信息与我们 使用dockerfile手动构建JDK11镜像运行容器并校验中的dockerfile文件内容大致相同。
在这里插入图片描述

七、总结

docker images 各参数说明:
REPOSITORY:表示镜像的仓库源名
TAG:镜像的标签或版本
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

1、同一镜像仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 jdk仓库源里,有 111213....20 等多个不同的版本,我们使用 REPOSITORY:TAG 来定义并区分不同的镜像,例如jdk:11,jdk:12,jdk:13,jdk:20等。

2、所以一个镜像仓库只存放一种镜像,镜像仓库名要见名知意,如镜像仓库jdk,就知道这个镜像仓库存放的是jdk11版本。
registry.cn-hangzhou.aliyuncs.com/2023815_djc/jdk:11 

如镜像仓库mysql,就知道这个镜像仓库存放的是mysql:8.0.29和mysql:8.0.31 
这两个版本。
registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.29
registry.cn-hangzhou.aliyuncs.com/2023815_djc/mysql:8.0.31 
如图一、图二所示。



3、所以rep2023815中存放了好几种镜像,mysql,jdk,nginx,是错误的存放方式,容易无法区分镜像,如图一、图二所示。
//jdk  
registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:11
//mysql
registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v8.0.31  
//nginx
registry.cn-hangzhou.aliyuncs.com/2023815_djc/rep2023815:v1.21.6



4、所以镜像仓库名一般写成应用名就可以了,如mysql,oracle,jdk等。

5、发现推送到Registry(某镜像仓库)后会在本地也生成一个相同IMAGE ID的镜像,如图一、图二所示。

7.1 图一如下

在这里插入图片描述

7.2 图二如下

图一

八、容器镜像服务ACR个人版产品功能调整公告 相关(2023年8月20日)

容器镜像服务ACR个人版产品功能调整公告 更新时间:2023-06-26 14:25
尊敬的阿里云容器镜像服务ACR用户:
容器镜像服务ACR计划从2023年8月20日起取消容器镜像服务ACR个人版的镜像安全扫描、镜像同步功能,如果有镜像安全及跨地域镜像高效分发需求,建议提前规划迁移至容器镜像服务ACR企业版实例。具体操作,请参见个人版迁移。

变更内容
自2023年8月20日起,容器镜像服务ACR个人版镜像安全扫描、镜像同步功能将不再支持发起新任务,所有已执行完成的任务将不再支持查询任务状态及详情。请及时关注本次产品变更内容,以免影响您的后续使用,感谢您的配合。

在这里插入图片描述2023-8-18 05:27:45
个人版迁移
访问VPC的服务关联角色
个人版实例镜像导入到企业版实例
使用个人版域名访问企业版实例

【转载aliyun官方-容器镜像服务 ACR】Docker常见问题
使用dockerfile手动构建JDK11镜像运行容器并校验

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

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

相关文章

numpy与matplotlib 常用日常代码

matplotlab 和 numpy 可能是python 数据处理工作中用的最多的库了, 官网的文档十分详细,但是就是因为数量庞大,很多时候常用的功能和生僻冷门的功能混在一起,找不到重点。按照二八原则,掌握20%的功能就已经能应付绝大多…

无法打开程序因为msvcp140.dll丢失,msvcp140.dll丢失的解决方法

前几天看到有小伙伴再问什么是msvcp140.dll文件,相信很多人都不知道这是什么吧,如果电脑msvcp140.dll文件丢失的话会怎么样呢?丢失了应该如何找回呢?其实这些都是一些比较常见的电脑知识,我们是需要去了解一下的&#…

Spring Framework中的Bean生命周期

目录 一.Bean生命周期的简介 1.基本概念 2.Spring生命周期的几大阶段 3.注意点及小结 4.生活案例 5.Spring容器管理JavaBean的初始化过程 二. Bean的单例选择与多例选择 1.单例选择与多例选择的优缺点 1.1单例模式的优点: 1.2单例模式的缺点: 1…

HC32L110的串口不定长接收及PCA和IRQ的部分问题

show you the code: https://gitee.com/yangfei_addoil/hc32-l110-b6-test 另:程序中使用帕斯卡命名法的是从官方例程上复制的;使用下划线命名法的是博主的; 串口不定长接收 注意串口要自己绑定/指定到一个定时器上&#xff1b…

【仿写tomcat】一、tomcat工作流程

仿写tomcat 简介tomcat简介流程分析tomcat是怎么和访问者交互的?流程图 简介 作者前不久刚仿写了一个简易的tomcat,在此分享给各位,此篇为对tomcat的简介和流程分析,具体仿写内容后续会贴在这里 扫描java文件,获取带…

基于IMX6ULLmini的Linux裸机开发系列六:中断向量表

ARMv7-A 一级查表 等中断真正发生的时候,自动跳转指定位置(基址偏移) 习惯放在代码的起始地方,复位中断放在代码的零地址,被定义的指定中断放在代码的第四个字节的位置 addrTYPEFUNCTIONMODE0x00Reset复位中断SVC0x04Undefined instructi…

Vue-13.创建完整的Vue项目(vue+vue-cli+js)

前言 之前写了命令创建Vue项目,但是事实上我们可以直接用编译器直接创建项目,这里我使用webstorm(因为我是前后端兼修的所以我习惯使用Idea家族的编译器) 只写前端的推荐用VsCode前后端都写的推荐用webstorm 新建项目 项目初始…

31.Netty源码之客户端启动流程

highlight: arduino-light 客户端启动主要流程 如果看了服务器端的启动流程,这里简单看下就可以了。 java package io.netty.server; ​ import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import …

酒店要如何应对旅游旺季?报修工单管理系统哪家好?

酒店在高峰旅游时期是其最为繁忙的阶段,这时要处理的报修事项比较多,因此应对措施变得尤为重要。填补酒店房间、应对设备故障等情况,造成了来宾数量和压力的急增,因此需要考虑并采用更加有效的安全保障和服务措施,以确…

传输层协议——TCP(上)

文章目录 1. TCP协议1.1 TCP协议段格式1.2 确认应答(ACK)机制1.3 16位窗口大小1.4 6位标志位1.4.1 TCP三次握手 1.5 确认应答(ACK)机制1.6 超时重传机制1.7 连接管理机制1.7.1 理解TIME_WAIT状态1.7.2 理解 CLOSE_WAIT 状态 1. TCP协议 TCP全称为传输控制协议,意思…

Unity 找不到 Navigation 组件的解决

当我们想利用unity 里面的Navigation 组件来实现我们的物体的自动导航时,有时竟然会发现我们的菜单栏里面找不到 该组件 这时我们应该怎么办? 请确保你的项目中已经导入了Unity的AI模块。要导入该模块,请打开"Project Settings"&am…

论文学习——PixelSNAIL:An Improved Autoregressive Geenrative Model

文章目录 引言论文翻译Abstract问题 Introduction第一部分问题 第二部分问题 Model Architecture网络结构第一部分问题第二部分问题 Experiments实验问题 Conclusion结论问题 总结参考 引言 这篇文章,是《PixelSNAIL:An Improved Autoregressive Geenrative Model》…

在自定义数据集上使用 Detectron2 和 PyTorch 进行人脸检测

本文讲讲述如何使用Python在自定义人脸检测数据集上微调预训练的目标检测模型。学习如何为Detectron2和PyTorch准备自定义人脸检测数据集,微调预训练模型以在图像中找到人脸边界。 人脸检测是在图像中找到(边界的)人脸的任务。这在以下情况下…

STM32F40X系列FSMC8路驱动LCD显示屏(LY-TFT30-39P-1509 芯片hx8352)

hx8352_8080_8bit_FMSC板级驱动 1.LCD相关1.1LCD参数1.2 LCD引脚1.3 LCD实物1.4 LCD引脚解释 2.接线关系3.STM32F40x基于FMSC16bit修改1)地址偏移2)删除多余GPIO3)修改FMSC的配置4)LCD初始化寄存器 3.板驱动程序4.运行结果 1.LCD相关 1.1LCD参数 LCD控制芯片&…

C数据结构与算法——无向图(最小生成树) 应用

实验任务 (1) 掌握Kruskal最小生成树算法; (2) 掌握Prim最小生成树算法。 实验内容 (1) 随机生成一个无向网 G ( V, E ),V { A, B, C, D, E, F },| E | 11,边的权值取值范围为 [ 1, 40 ]; (2) 使用Prim算法求出图…

离散化思想——只处理有效数据的优化思想

离散化思想——只处理有效数据的优化思想 什么是离散化离散化题目——校门外的树(超强版,1e9)题目描述输入格式输出格式样例样例输入样例输出 提示 思路分析朴素做法离散化!!代码分析数组循环 什么是离散化 离散化思想…

C语言之浮点数_数据存储篇(2)

目录 浮点数 什么是浮点数呢? 为什么叫浮点数? 浮点数家族 浮点数表示的范围? 浮点数存储的例子 浮点数的存储方式 写成规定形式是怎样的? 那SME在内存中如何分配的呢? 为什么要这样存储? 浮点…

44、TCP报文(二)

接上节内容,本节我们继续TCP报文首部字段含义的学习。上节为止我们学习到“数据偏移”和“保留”字段。接下来我们学习后面的一些字段(暂不包含“检验和”的计算方法和选项字段)。 TCP首部结构(续) “数据偏移”和“保…

人工智能在车牌识别中的应用与影响

引言:车牌识别技术是基于人工智能的一种重要应用,通过对监控视频中的车辆图像进行处理和分析,可以快速、准确地识别车牌号码。这项技术的广泛应用可以帮助交通管理、停车场管理,甚至追踪犯罪嫌疑人的车辆。本文将详细探讨车牌识别…

从LeakCanary看ViewModel生命周期监控

前面两篇文章中已经了解了LeakCanary中Service和Fragment生命周期监控的实现,那么ViewModel生命周期监控又是怎么实现的呢? 同样的,要了解ViewModel生命周期监控,我们首先应该清楚在代码结构中ViewModel是如何存储获取的&#xf…