当前位置: 首页 > news >正文

kubernetes入门到进阶(5)

目录

镜像仓库:怎么用好docker hub这个宝藏

什么是镜像仓库(Registry)

什么是docker hub

如何在docker hub上挑选镜像

docker hub上进行概念股命名规则是什么

该怎么上传自己的镜像

离线环境该怎么办

小结


镜像仓库:怎么用好docker hub这个宝藏

好,我们继续来说一下往后的章节,上章节里面呢,我们学习了dockerfile和docker build的用法,知道了如何创建自己的镜像,那么镜像文件应该如何管理呢,具体来说,应该如何存储,检索,分发,共享镜像呢?不解决这些问题,我们容器化应用还是无法顺利地实施。

今天,我们来谈一下这个话题,聊聊什么是镜像仓库,还有该怎么用好镜像仓库。

什么是镜像仓库(Registry)

之前我们已经用过docker pull命令拉取镜像,也说过有一个镜像仓库(Registry)的概念,那到底什么是镜像仓库呢?

还是来看看docker的官方架构图:

图里右边的区域就是镜像仓库,术语叫Registry,直译是所有镜像的Repository都在这里登记保管,就像是一个巨大的档案馆。

然后我们再来看看左边的docker pull,虚线显示了它的工作流程,先到docker daemon,再到Registry,只有当Registry里存有镜像才能真正把他下载到本地。

当然了,拉取镜像只是镜像仓库最基本的一个功能,他还会提供更多的功能,比如上传,查询,删除等等,是一个全面的镜像管理服务站点。

你也可以把镜像仓库比成手机上的应用商店,里面分门别类放了许多容器化的应用,需要什么去找一下就行了,有了它,我们使用镜像才能免除后顾之忧。

什么是docker hub

不过,你应该没有注意到,在使用docker pull 获取镜像的时候我们并没有明确指定镜像仓库,在这种情况下,动车可就会使用一个默认的镜像仓库,也就是大名鼎鼎的docker hub 

https://hub.docker.com

docker hub是docker公司搭建的官方registry服务,创立于2014年6月,和docker 1.0同时发布,他号称是世界上最大的镜像仓库,和Git hub一样,几乎成为了容器世界的基础设施。

docker hub里面不仅有docker自己打包的镜像,而且还对公众免费开放,任何人都可以上传自己的作品,经过这8年的发展,docker hub已经不再是一个单纯的镜像仓库了,更应该说是一个丰富而繁荣的容器社区

你可以看看下面的这张截图,里面列出的都是下载量超过十亿次的最受欢迎的应用程序,比如nginx,MongoDB,node.js,Redis,openJDK,等等,显然,把这些容器化的应用引入到我们自己的系统里,就像是站在了巨人的肩膀上,一开始就会有一个高水平的起点

但和Github,App Store一样,面向所有人公开的docker hub也有一个不可避免的缺点,就是良莠不齐。

在docker hub搜索框里输入关键字,比如NGINX,MySQL,她立即就会给出几百上千个搜索结果,有点乱花迷人眼的感觉,这么多镜像,应该如何挑选出最适合自己的呢?下面我们来说说自己在这方面的一些经验。

如何在docker hub上挑选镜像

首先,你应该知道,在docker hub上有官方镜像,认证镜像,和非官镜像的区别

官方镜像是指docker公司官方提供的高质量镜像,GitHub - docker-library/official-images: Primary source of truth for the Docker "Official Images" program

都经过了严格的漏洞扫描和安全检查,支持x86,arm64等多种硬件架构,还具有清晰易读的文档,一般来说使我们构建镜像的首选,也是我们编写dockerfile的最佳范例

官方镜像目前大概100多个,基本上囊括了现在的各种流行技术,下面就是官方的nginx镜像网页截图:

你会看到,官方镜像会有一个特殊的Official image的标记,这就表示这个镜像经过了docker公司的认证,有专门的团队负责审核,发布,更新,质量上绝对可以放心。

第二类是认证镜像,标记是Verified publisher,也就是认证发行商,比如Bitnami,Rancher,ubuntu等,他们都是颇具规模的大公司,具有不逊于docker公司的实力,所以就在docker hub上开了个认证账号,发布自己打包的镜像,有点类似我们微博上的大V。

这些镜像有公司背书,当然也很值得信赖,不过他们难免会有戴上一些各自公司的烙印,比如Bitnami的镜像就统一以minideb为基础,灵活性上比docker官方镜像略差,有的时候也许会不符合我们的需求。

除了官方镜像和认证镜像,剩下的就都属于非官方镜像了,不过这里面也可以分出两类。

第一类是“半官网”镜像,因为成为Verified publisher 是要给docker公司交钱的,而很多公司不想花这个冤枉钱,所以只在docker hub上开了公司账号,但并不加入认证

这里我以openresty为例,看一下它的docker hub页面,可以看到显示的是openresty官方发布的,但并没有经过docker正式认证,所以难免就会存在一些风险,有被冒名顶替的可能,需要我们在使用的时候留心鉴别一下,不过一般来说,这种办官方镜像也是比较可靠的

第二类就是纯粹的民间镜像了,通常是个人上传到docker hub的,因为条件有限,测试不完全甚至没有测试,质量上难得以保证,下载的时候需要小心谨慎。

除了查看镜像是否为官方认证,我们还可以再结合其他的条件来判断镜像质量是否足够好,做法和GitHub差不多,就是看它的下载量,星数,还有更新历史,简单的来说就是好评数量

一般来说下载量是最重要的参考依据,好的镜像下载量通常都在百万级别(超过1M)而有的镜像虽然也是官方认证,但缺乏维护,更新不及时,用的人很少,星数,下载数都寥寥无几,那么还是应该选择下载量最多的镜像,通俗来说就是随大流

下面这张截图就是openresty在docker hub上的搜索结果,可以看到,有两个认证发行商的镜像(Bitnami , IBM),但是下载量都很少,还有一个民间镜像下载量虽然超过了1M,但更新时间是三年前,所以毫无疑问,我们应该选择排在前三位,但下载量超过10m,有360多个星的半官方镜像

看了这么多docker hub上的镜像,你一定注意到了,应用都是一样的名字,比如都是NGINX,redis,openresty,该怎么区分不同作者打包出的镜像呢?

如果你很熟悉GitHub,就会发现docker hub也使用了同样的规则,就是用户名/应用名的形式,比如bitnami/nginx、ubuntu/nginx、rancher/nginx等等

所以,我们在使用docker pull下载这些非官方镜像的时候,就必须把用户名也带上,否则默认就会使用官方镜像:

docker pull bitnami/nginx

docker pull ubuntu/nginx 

docker hub上进行概念股命名规则是什么

确定了这个镜像还不够,因为镜像还会有许多不同的版本,也就是标签(tag)

直接使用默认的latest虽然简单方便,但在生产环境里是一种非常不负责任的做法,会导致版本不可控,所以我们还需要理解dockerhub标签命名的含义,才能挑选出最适合我们自己的镜像版本。

下面我就那官方的redis镜像作为例子,解释一下这些标签都是什么意思

通常来说,镜像标签的格式是应用的版本号加上操作系统,

版本号你应该比较了解吧,及把他那都是主版本号+次版本号+补丁号的形式,有的还会在正式发布前出rc版(候选版本,release candidate),而操作系统的情况略微复杂一些,应为各个Linux发型版的命名方式太多了

alpine,centos的命令比较简单明了,就是数字的版本号,像这里的alpine3.15.而ubuntu、Debian则才用了代号的形式,比如ubuntu.18.04是bionic,ubuntu20.04是focal,Debian9是stretch,Debian10是buster,Debian11是bullseye

另外,有的标签还会加上slim,fat,来进一步表示这个镜像的内容是经过精简的,还是包含了较多的辅助工具,通常slim镜像会比较小。运行效率高,而fat镜像会比较大,适合用来开发调试

下面我就列出几个标签的例子来说明一下。

- nginx:1.21.6-alpine,表示版本号是1.21.6,基础镜像是最新的Alpine。

- redis:7.0-rc-bullseye,表示版本号是7.0候选版,基础镜像是Debian 11。

- node:17-buster-slim,表示版本号是17,基础镜像是精简的Debian 10。

该怎么上传自己的镜像

现在,我想你应该对如何在docker hub上选择镜像有了比较全面的了解,那么接下来的问题就是我们用dockerfile创建的镜像该如何上传到docker hub上呢?

这件事其实一点也不难,只需要4个步骤就能完成

第一步,你需要在docker hub上注册一个用户,这个就不必再多说了

第二步,你需要在本机上使用docker login命令,用刚才注册的用户名和密码认证身份登录,像这里就用了我的用户名chronolaw

第三步很关键,需要使用docker tag 命令,给镜像改成带用户名的完整名字,表示镜像是属于还整个用户的,或者简单一点,直接用docker build -t在创建镜像的时候就起好名字,这里我就用上次章节里的ngx-app作为例子,给他改名成chronolaw/ngx-app:1.0

docker tag ngx-app chronolaw/ngx-app:1.0

第四步,用docker push 把这个镜像推上去,我们的镜像发布工作就大功告成了:

docker push chronolaw/ngx-app:1.0

你还可以登录docker hub网站验证一下镜像发布的效果,可以看到他会自动为我们生成一个页面模板。,里面还可以进一步丰富完善,比如添加描述信息,使用说明等等;

现在你就可以把这个镜像的名字(用户名/应用名:标签)告诉你的同事,让他去用docker pull 下载部署了

离线环境该怎么办

使用docke hub来管理镜像的确是非常方便,不过有一种场景它却是无法发挥作用,那就是企业内网的离线环境,连不上外网,自然也就不能使用docker push。docker pull来同送拉取镜像了

那这种情况有没有解决办法呢?

方法当然有,而且有很多,最佳的方法就是在内网环境里仿造docker hub,创建一个自己的私有registry服务,有他来管理我们的镜像,就想我们自己搭建gitlab做版本管理一样

自建registry已经有很多成熟的解决方案,比如docker registry,还有CNCF Harbor,不用使用他们还需要一些目前没有讲到的知识,步骤也有点繁琐,所以我会在后续的章节里再介绍

下面我们说一说存储,分发镜像的一种笨方法,虽然比较原始,但简单易行,可以作为临时的应急手段

docker提供了save和load这两个镜像归档命令,可以把镜像导出成压缩包,或者从压缩包导入docker,而压缩包是非常容易保管和传输的,可以联机拷贝,FTP共享,甚至存在U盘上随身携带

需要注意的是,这两个命令默认使用标准流作为输入输出(为了方便linux管道操作)所以一般会用-o、-i参数来使用文件的形式,例如:

docker save ngx-app:latest -o ngx.tar

docker load -i ngx.tar

小结

好了,今天我们一起学习了镜像仓库,了解了docker hub的使用方法,整理一下要点方便你加深理解:

1-镜像仓库(registry)是一个提供综合镜像服务的网站,最基本的功能是长传和下载

2-docker hub是目前最大的镜像仓库,拥有很多高质量的镜像和,尚明的镜像非常多,选择的标准有官方认证,下载量,星数等,需要综合评估

3-镜像也有很多版本,应该根据版本号和操作系统仔细确认合适的标签

4-在docker hub注册之后就可以上传自己的镜像,用docker tag打上标签再用docker push推送

5-离线环境可以自己搭建私有镜像仓库,或者使用docker save把镜像存成压缩包,再用docker load从压缩包恢复成镜像

最后我还是提问几个问题,留给大家来思考:

1-很多应用,比如nginx,redis,go,都已经有了docker官方镜像,为什么其他公司(Bitnami,Rancher)还要重复劳动,发布自己打包的镜像呢?

2-你能否对比一下GitHub和docker hub,说说他们两个在功能,服务对象,影响范围,等方面的异同点呢?

记得在留言区参与讨论哦,我看到后会第一时间回复,我们下个章节再见~

相关文章:

kubernetes入门到进阶(5)

目录 镜像仓库:怎么用好docker hub这个宝藏 什么是镜像仓库(Registry) 什么是docker hub 如何在docker hub上挑选镜像 docker hub上进行概念股命名规则是什么 该怎么上传自己的镜像 离线环境该怎么办 小结 镜像仓库:怎么用好docke…...

【字典树Trie】LeetCode-139. 单词拆分

139. 单词拆分。 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s "leetcode&q…...

pytest常用的第三方插件介绍

本节介绍了如何安装和使用第三方插件。如果你想要编写自己的插件,请参阅“编写插件”。 通过pip可以轻松安装第三方插件: pip install pytest-NAME pip uninstall pytest-NAME如果已经安装了插件,pytest会自动找到并集成它,无需手…...

【经验】VSCode连接远程服务器(可以使用git管理、方便查看和编辑Linux源码)

1、查看OpenSSH Windows10通常自带OpenSSH不需要安装。 Windows10下检查是否已经安装OpenSSH的方法: 1)按下快捷键Win + X,选择Windows PoweShell(管理员) 2)输入以下指令: Get-WindowsCapability -Online | ? Name -like ‘OpenSSH*’ 3)如果电脑未安装OpenSSH,…...

机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?

一、 引言 乳腺癌是女性最常见的恶性肿瘤之一,也是全球范围内女性死亡率最高的癌症之一。据统计,每年全球有超过200万人被诊断为乳腺癌,其中约60万人死于该疾病。因此,乳腺癌的早期诊断和风险评估对于预防和治疗乳腺癌具有非常重要…...

MySQL学习笔记1: 数据库的简单介绍

目录 1. 数据库是什么2. 数据库这一类软件中的一些典型代表2.1. Oracle2.2. MySQL2.3. SQL Server2.4. SQLite (lite 轻量版) 3. 数据库的类型3.1. 关系型数据库3.2. 非关系型数据库 4. 总结 1. 数据库是什么 数据库是一类软件,这一类软件可以用来管理数据&#xf…...

【Docker】安装ELK(Docker Compose)

一、创建挂载目录 mkdir -p /docker/elk/elasticsearch/{plugins,data} mkdir -p /docker/elk/logstash 二、给目录授权 chmod 777 /docker/elk/elasticsearch/data 创建logstash配置文件 vim /docker/elk/logstash/logstash.conf input {tcp {mode => "server" h…...

【机器学习:欧氏距离 】机器学习中欧氏距离的理解和应用

【机器学习:欧氏距离 】机器学习中欧氏距离的理解和应用 距离公式二维更高的维度点以外的物体属性欧几里得距离的平方概括历史 在数学中,欧氏距离’是指欧氏空间中任意两点之间的直线距离。这种距离可以通过应用勾股定理来计算,利用两点的笛卡…...

系统安全及应用

1、基本安全措施 1.1、系统账号清理 在Linux系统中,除了用户手动创建的各种账号之外,还包括随系统或程序安装过程而生产的其他大量账号。除了超级用户root之外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允…...

Danil Pristupov Fork(强大而易用的Git客户端) for Mac/Windows

在当今软件开发领域,团队协作和版本控制是非常重要的方面。在这个过程中,Git成为了最受欢迎的版本控制工具之一。然而,对于Git的使用,一个好的客户端是至关重要的。 今天,我们要为大家介绍一款强大而易用的Git客户端—…...

最新GPT4.0使用教程,AI绘画,ChatFile文档对话总结+GPT语音对话使用,DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画,文档对话总结DALL-E3文生图,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和…...

【ARM 嵌入式 编译系列 7.2 -- GCC 链接脚本中 DEFINED 函数与 “AT>“ 符号详细介绍】

文章目录 GCC 链接脚本中 DEFINED 函数DEFINED() 函数> (放置在哪个区域)AT> (加载地址) (填充字节) 在链接脚本中,组合示例 GCC 链接脚本中 DEFINED 函数 在 ARM GCC 链接脚本(.ld 文件)中,DEFINED() 是一种内置函数&…...

Linux基础——进程初识(二)

1. 对当前目录创建文件的理解 我们知道在创建一个文件时&#xff0c;它会被默认创建到当前目录下&#xff0c;那么它是如何知道当前目录的呢&#xff1f; 对于下面这样一段代码 #include <stdio.h> #include <unistd.h>int main() {fopen("tmp.txt", …...

国科大图像处理2024速通期末——汇总2017-2019、2023回忆

国科大2023.12.28图像处理0854期末重点 图像处理 王伟强 作业 课件 资料 一、填空 一个阴极射线管它的输入与输出满足 s r 2 sr^{2} sr2&#xff0c;这将使得显示系统产生比希望的效果更暗的图像&#xff0c;此时伽马校正通常在信号进入显示器前被进行预处理&#xff0c;令p…...

编程笔记 html5cssjs 026 HTML输入类型(2/2)

编程笔记 html5&css&js 026 HTML输入类型&#xff08;2/2&#xff09; 输入类型&#xff1a;date输入类型&#xff1a;color输入类型&#xff1a;range输入类型&#xff1a;month输入类型&#xff1a;week输入类型&#xff1a;time输入类型&#xff1a;datetime输入类型…...

Vue2 - 数据响应式原理

目录 1&#xff0c;总览2&#xff0c;Observer3&#xff0c;Dep4&#xff0c;Watcher5&#xff0c;Schedule 1&#xff0c;总览 vue2官网参考 简单介绍下上图流程&#xff1a;以 Data 为中心来说&#xff0c; Vue 会将传递给 Vue 实例的 data 选项&#xff08;普通 js 对象&a…...

基于华为云解析服务实现网站区域封禁

前言 中国大陆以外的网络攻击不断&#xff0c;个人博客时常遭受不明个人或组织的攻击&#xff0c;给网站的安全运行带来了巨大的风险&#xff0c;同时DDoS、CC攻击等还会消耗服务器的资源&#xff0c;站长可能需要因此支付高昂的服务器、CDN的流量费用。 因此&#xff0c;如果…...

在 Docker 中配置 MySQL 数据库并初始化 Project 项目

1. 文件准备 1.1. 添加 SQL 文件头部内容 每个 SQL 文件的头部需要添加以下内容&#xff1a; DROP DATABASE IF EXISTS xx_..; CREATE DATABASE xx_..; USE xx_..;1.2. 修改 AUTO_INCREMENT 在每个 SQL 文件中&#xff0c;将 AUTO_INCREMENT 修改为 1。 1.3. 插入机型 在 SQL…...

生活中的物理3——神奇陷阱(随机倒下的抽屉柜门)

1实验 材料&#xff1a;大自然&#xff08;风&#xff09;、抽屉门松掉的抽屉 实验 1、找一个大风的日子&#xff0c;打开窗户&#xff08;不要找下雨天&#xff0c;不然你会被你亲爱的嫲嫲KO&#xff09; 2、让风在抽屉面前刮过 3、你发现了什么&#xff1f;&#xff1f;&…...

数模学习day08-拟合算法

这里拟合算法可以和差值算法对比 引入 插值和拟合的区别 与插值问题不同&#xff0c;在拟合问题中不需要曲线一定经过给定的点。拟 合问题的目标是寻求一个函数&#xff08;曲线&#xff09;&#xff0c;使得该曲线在某种准则下与所 有的数据点最为接近&#xff0c;即曲线拟…...

第13课 利用openCV检测物体是否运动了

FFmpeg与openCV绝对是绝配。前面我们已经基本熟悉了FFmpeg的工作流程&#xff0c;这一章我们重点来看看openCV。 在前面&#xff0c;我们已经使用openCV打开过摄像头并在MFC中显示图像&#xff0c;但openCV能做的要远超你的想像&#xff0c;比如可以用它来实现人脸检测、车牌识…...

C#之反编译之路(一)

本文将介绍微软反编译神器dnSpy的使用方法 c#反编译之路(一) dnSpy.exe区分64位和32位,所以32位的程序,就用32位的反编译工具打开,64位的程序,就用64位的反编译工具打开(个人觉得32位的程序偏多,如果不知道是32位还是64位,就先用32位的打开试试) 目前只接触到wpf和winform的桌…...

使用CentOS 7.6搭建HTTP隧道代理服务器

在现代网络环境中&#xff0c;HTTP隧道代理服务器因其灵活性和安全性而受到广泛关注。CentOS 7.6&#xff0c;作为一个稳定且功能强大的Linux发行版&#xff0c;为搭建此类服务器提供了坚实的基础。 首先&#xff0c;我们需要明确HTTP隧道代理的基本原理。HTTP隧道代理允许客户…...

Swift爬虫使用代理IP采集唯品会商品详情

目录 一、准备工作 二、代理IP的选择与使用 三、使用Swift编写唯品会商品爬虫 四、数据解析与处理 五、注意事项与优化建议 六、总结 一、准备工作 在开始编写爬虫之前&#xff0c;需要准备一些工具和库&#xff0c;以确保数据抓取的顺利进行。以下是所需的工具和库&…...

高性价比LDR6028Type-C转3.5mm音频和PD快充转接器

随着市面上的大部分手机逐渐取消了3.5mm音频耳机接口&#xff0c;仅保留一个Type-C接口&#xff0c;追求音质和零延迟的用户面临着一大痛点。对于这些用户&#xff0c;Type-C转3.5mm接口线的出现无疑是一大福音。这款线材在刚推出时就受到了手机配件市场的热烈欢迎&#xff0c;…...

【Docker】docker 服务相关命令

目录 1. 启动docker 服务 2.查看docker 服务的状态 3. 停止docker 服务 4.重启 docker 服务 5.开机自启动命令 1. 启动docker 服务 systemctl start docker 2.查看docker 服务的状态 systemctl status docker 3. 停止docker 服务 systemctl stop docker 此时再使用 syst…...

基于SpringBoot的在线问卷调查系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的在线问卷调查系统,java…...

智能分析网关V4太阳能风光互补远程视频智能监控方案

一、背景需求 在一些偏远地区&#xff0c;也具有视频监控的需求。但是这类场景中&#xff0c;一般无法就近获取市电&#xff0c;如果要长距离拉取市电&#xff0c;建设的成本非常高且长距离传输有安全隐患&#xff0c;因此风光互补远程视频监控方案的需求也较多。利用风光电转化…...

250:vue+openlayers 加载geotiff文件,并在地图上显示

第250个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers中加载geotiff文件,并在地图上显示。这里使用到了WebGLTile图层和GeoTIFF脚本模块。这里一定要注意GeoTIFF的数据加载方式,要数组的模式。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现…...

【JavaEE】多线程(7) -- 线程池的概念和简单实现

目录 1.线程池是什么 2.标准库中的线程池 2.1ThreadPoolExecutor 2.2构造方法参数介绍 2.3拒绝策略(面试易考) 2.4Executor的使用 3.实现线程池 1.线程池是什么 线程池是一种用来管理线程的机制&#xff0c;它可以有效地控制线程的创建、复用和销毁&#xff0c;从而提高程…...

常州北京网站建设/腾讯云域名注册官网

1热爱冲浪的你遇到过404吗作为一个每日网上冲浪的小可爱&#xff0c;你最崩溃的瞬间是什么&#xff1f;没错&#xff01;对于小V来讲&#xff0c;最可怕的事情不是没电而是4&#xff01;0&#xff01;4&#xff01;毕竟网络出了问题&#xff0c;小V就不能跟大家愉快的玩耍了说到…...

wordpress 下载选择/太原自动seo

睡眠功能本是Windows 10为节能而设的一项人性化体贴功能&#xff0c;有时却也可能会给我们带来麻烦。比如&#xff0c;本来是进入了睡眠状态的电脑&#xff0c;却在人离开后&#xff0c;因为某个软件的唤醒指令发生作用而悄悄被唤醒&#xff0c;白白地在那里浪费能源&#xff1…...

小型手机网站建设哪家好/长尾关键词挖掘网站

项目实际需求&#xff1a;DB交互使用多线程实现 多线程编程基础&#xff1a;1.5 :( &#xff08;假设总分10&#xff09; 计划一个半月从头学习梳理Java多线程编程基础以及Oracle数据库交互相关的多线程实现 学习如何通过代码去验证这些结论 Oracle Tutorial Sample: JDBC an…...

如果做网站报价/新网站如何推广

一&#xff0e;实验需求&#xff1a;1.完成下方的企业网络配置&#xff1b;2.完成上方的运营商网络配置&#xff1b;3.企业网络与ISP网络的互联IP地址&#xff0c;如图配置&#xff1b;4.企业网络 OSPF 多区域设置&#xff0c;如图配置&#xff1b;5.区域 10 中的 PC-1/2属于 v…...

如何做阿里巴巴网站/seo外包品牌

为什么80%的码农都做不了架构师&#xff1f;>>> 组合实体&#xff08;Composite Entity&#xff09; - 它是主要的实体 bean。它可以是粗粒的&#xff0c;或者可以包含一个粗粒度对象&#xff0c;用于持续生命周期。粗粒度对象&#xff08;Coarse-Grained Object&a…...

b2b是什么意思通俗讲解/西安专业seo

---恢复内容开始--- ---恢复内容结束---转载于:https://www.cnblogs.com/calamus/p/8485684.html...