面试:容器技术
目录
- 为什么需要 DevOps
- Docker 是什么?
- Docker 与虚拟机有何不同?
- 什么是 Docker 镜像?
- 什么是 Docker 容器?
- Docker 容器有几种状态?
- 解释一下 Dockerfile 的 ONBUILD 指令?
- 什么是 Docker Swarm?
- 如何在生产中监控 Docker?
- DevOps 有哪些优势?
- CI 服务有什么用途?
- 如何使用 Docker 技术创建与环境无关的容器系统?
- Dockerfile 配置文件中的 COPY 和 ADD 指令有什么不同?
- Docker 映像(image)是什么?
- Docker 容器(container)是什么?
- Docker 中心(hub)什么概念?
- 在任意给定时间点指出一个 Docker 容器可能存在的运行阶段?
- 有什么方法确定一个 Docker 容器运行状态?
- 在 Dockerfile 配置文件中最常用的指令有哪些?
- 什么类型的应用(无状态性或有状态性)更适合 Docker 容器技术?
- 解释基本 Docker 应用流程
- Docker Image 和 Docker Layer (层)有什么不同?
- 虚拟化技术是什么?
- 虚拟管理层(程序)是什么?
- Docker 群(Swarm)是什么?
- 在使用 Docker 技术的产品中如何监控其运行?
- 什么是孤儿卷及如何删除它?
- 什么是半虚拟化(Paravirtualization)?
- Docker 技术与虚拟机技术有何不同?
- 请解释一下 docerfile 配置文件中的 ONBUILD 指令的用途含义?
- 有否在创建有状态性的 Docker 应用的较好实践?最适合的场景有什么?
- 在 Windows 系统上可以运行原生的 Docker 容器吗?
- 在非 Linux 操作系统平台上如何运行 Docker ?
- 容器化技术在底层的运行原理?
- 说说容器化技术与虚拟化技术的优缺点
- 如何使 Docker 适应多种运行环境?
- 为什么 Docker compose 采取的是并不等待前面依赖服务项的容器启动就绪后再启动的组合容器启动策略?
为什么需要 DevOps
在当今,软件开发公司在软件新版本发布方面,多尝试通过发布一系列以小的特性改变集为目标的新软件版本,代替发布一个大特性改变集的新软件版本的方式。这种方式有许多优点,诸如,快速的客户反馈,软件质量的保证等。也会获得较高的客户满意度评价。完成这样的软件发布模式,开发公司需要做到:
- 增加软件布署的频率
- 降低新发布版本的失败率
- 缩短修复缺陷的交付时间
- 加快解决版本冲突的问题
DevOps 满足所有这些需求且帮助公司高质完成软件无缝交付的目标。
Docker 是什么?
Docker 是一个容器化平台,它包装你所有开发环境依赖成一个整体,像一个容器。保证项目开发,如开发、测试、发布等各生产环节都可以无缝工作在不同的平台
Docker 容器:将一个软件包装在一个完整的文件系统中,该文件系统包含运行所需的一切:代码,运行时,系统工具,系统库等。可以安装在服务器上的任何东⻄。这保证软件总是运行在相同的运行环境,无需考虑基础环境配置的改变。
Docker 与虚拟机有何不同?
Docker 不是虚拟化方法。它依赖于实际实现基于容器的虚拟化或操作系统级虚拟化的其他工具。为此,Docker 最初使用 LXC 驱动程序,然后移动到libcontainer 现在重命名为 runc。Docker 主要专注于在应用程序容器内自动部署应用程序。应用程序容器旨在打包和运行单个服务,而系统容器则设计为运行多个进程,如虚拟机。因此,Docker 被视为容器化系统上的容器管理或应用程序部署工具。
- 容器不需要引导操作系统内核,因此可以在不到一秒的时间内创建容器。此功能使基于容器的虚拟化比其他虚拟化方法更加独特和可取。
- 由于基于容器的虚拟化为主机增加了很少或没有开销,因此基于容器的虚拟化具有接近本机的性能。
- 对于基于容器的虚拟化,与其他虚拟化不同,不需要其他软件。
- 主机上的所有容器共享主机的调度程序,从而节省了额外资源的需求。
- 与虚拟机映像相比,容器状态(Docker 或 LXC 映像)的大小很小,因此容器映像很容易分发。
- 容器中的资源管理是通过 cgroup 实现的。Cgroups 不允许容器消耗比分配给它们更多的资源。虽然主机的所有资源都在虚拟机中可⻅,但无法使用。这可以通过在容器和主机上同时运行 top 或 htop 来实现。所有环境的输出看起来都很相似。
什么是 Docker 镜像?
Docker 镜像是 Docker 容器的源代码,Docker 镜像用于创建容器。使用build 命令创建镜像。
什么是 Docker 容器?
Docker 容器包括应用程序及其所有依赖项,作为操作系统的独立进程运行。
Docker 容器有几种状态?
四种状态:运行、已暂停、重新启动、已退出。
解释一下 Dockerfile 的 ONBUILD 指令?
当镜像用作另一个镜像构建的基础时,ONBUILD 指令向镜像添加将在稍后执行的触发指令。如果要构建将用作构建其他镜像的基础的镜像(例如,可以使用特定于用户的配置自定义的应用程序构建环境或守护程序),这将非常有用。
什么是 Docker Swarm?
Docker Swarm 是 Docker 的本机群集。它将 Docker 主机池转变为单个虚拟Docker 主机。Docker Swarm 提供标准的 Docker API,任何已经与 Docker守护进程通信的工具都可以使用 Swarm 透明地扩展到多个主机。
如何在生产中监控 Docker?
Docker 提供 docker stats 和 docker 事件等工具来监控生产中的Docker。我们可以使用这些命令获取重要统计数据的报告。
Docker 统计数据:当我们使用容器 ID 调用 docker stats 时,我们获得容器的CPU,内存使用情况等。它类似于Linux 中的 top 命令。
Docker 事件:Docker 事件是一个命令,用于查看 Docker 守护程序中正在进行的活动流。
一些常⻅的 Docker 事件:attach,commit,die,detach,rename,destroy 等。我们还可以使用各种选项来限制或过滤我们感兴趣的事件。
DevOps 有哪些优势?
技术优势:持续的软件交付能力修复问题变得简单更快得解决问题
商业优势:更快交付的特性,更稳定的操作系统环境更多时间可用于创造价值(而不是修复/维护)
CI 服务有什么用途?
CI (Continuous Integration)–持续集成服务–主要用于整合团队开发中不同开发者提交到开发仓库中的项目代码变化,并即时整合编译,检查整合编译错误的服务。它需要一天中多次整合编译代码的能力,若出现整合错误,可以优异地准确定位提交错误源。
如何使用 Docker 技术创建与环境无关的容器系统?
Docker 技术有三种主要的技术途径辅助完成此需求:
- 存储卷(Volumes)
- 环境变量(Environment variable)注入
- 只读(Read-only)文件系统
Dockerfile 配置文件中的 COPY 和 ADD 指令有什么不同?
COPY 与 ADD 的区别 COPY 的 SRC 只能是本地文件,其他用法一致。虽然 ADD 和 COPY 功能相似,推荐 COPY 。
那是因为 COPY 比 ADD 更直观易懂。 COPY 只是将本地文件拷入容器这么简单,而 ADD 有一些其它特性功能(诸如,本地归档解压和支持远程网址访问等),这些特性在指令本身体现并不明显。因此,有必要使用 ADD 指令的最好例子是需要在本地自动解压归档文件到容器中的情况,如 ADD rootfs.tar.xz 。
Docker 映像(image)是什么?
Docker image 是 Docker 容器的源。换言之,Docker images 用于创建 Docker 容器(containers)。映像(Images)通过 Docker build 命令创建,当 run 映像时,它启动成一个容器(container)进程。做好的映像由于可能非常庞大,常注册存储在诸如 registry.hub.docker.com 这样的公共平台上。映像常被分层设计,每层可单独成为一个小映像,由多层小映像再构成大映像,这样碎片化的设计为了使映像在互联网上共享时,最小化传输数据需求。
Docker 容器(container)是什么?
Docker containers – Docker 容器–是包含其所有运行依赖环境,但与其它容器共享操作系统内核的应用,它运行在独立的主机操作系统用户空间进程中。Docker 容器并不紧密依赖特定的基础平台:可运行在任何配置的计算机,任何平台以及任何云平台上。
Docker 中心(hub)什么概念?
Docker hub 是云基础的 Docker 注册服务平台,它允许用户进行访问 Docker 中心资源库,创建自己的 Docker 映像并测试,推送并存储创建好的 Docker 映像,连接 Docker 云平台将已创建好的指定 Docker 映像布署到本地主机等任务。它提供了一个查找发现 Docker 映像,发布 Docker 映像及控制变化升级的资源中心,成为用户组或团队协作开发中保证自动化开发流程的有效技术途径。
在任意给定时间点指出一个 Docker 容器可能存在的运行阶段?
在任意时间点,一个 Docker 容器可能存在以下运行阶段:
运行中(Running)、已暂停(Paused)、重启中(Restarting)、已退出(Exited)
有什么方法确定一个 Docker 容器运行状态?
使用如下命令行命令确定一个 Docker 容器的运行状态
$ docker ps -a
这将列表形式输出运行在主机上的所有 Docker 容器及其运行状态。从这个列表中很容易找到想要的容器及其运行状态。
在 Dockerfile 配置文件中最常用的指令有哪些?
一些最常用的指令如下:
FROM
:使用 FROM 为后续的指令建立基础映像。在所有有效的 Dockerfile 中, FROM 是第一条指令。
LABEL
:LABEL 指令用于组织项目映像,模块,许可等。在自动化布署方面 LABEL 也有很大用途。在 LABEL 中指定一组键值对,可用于程序化配置或布署 Docker 。
RUN
:RUN 指令可在映像当前层执行任何命令并创建一个新层,用于在映像层中添加功能层,也许最来的层会依赖它。
CMD
:使用 CMD 指令为执行的容器提供默认值。在 Dockerfile 文件中,若添加多个 CMD 指令,只有最后的CMD 指令运行。
什么类型的应用(无状态性或有状态性)更适合 Docker 容器技术?
对于 Docker 容器创建无状态性(Stateless)的应用更可取。通过从应用项目中将与状态相关的信息及配置提取掉,我们可以在项目环境外建立不依赖项目环境的 Docker 容器。这样,我们可以在任意产品中运行同一容器,只需根据产品需要像问&答(QA)一样给其配置环境即可。这帮助我们在不同场景重用相同的 Docker 映像。另外,使用无状态性(Stateless)容器应用相比有状态性(Stateful)容器应用更具伸缩性,也容易创建。
解释基本 Docker 应用流程
初始,所有都有赖于 Dockerfile 配置文件。Dockerfile 配置文件就是创建 Docker image (映像)的源代码。
一旦 Dockerfile 配置好了,就可以创建(build)并生成’image(映像)',‘image’就是 Dockerfile 配置文件中「源代码」的「编译」版本。一旦有了’image’,就可以在 registry(注册中心)发布它。‘registry’类似 git 的资源库–你可以推送你的映像(image),也可取回库中的映像(image)。
之后,你就可以使用 image 去启动运行’containers(容器)’。运行中的容器在许多方面,与虚拟机非常相似,但容器的运行不需要虚拟管理软件的运行。
Docker Image 和 Docker Layer (层)有什么不同?
Image:一个 Docker Image 是由一系列 Docker 只读层(read-only Layer)创建出来的。
Layer:在 Dockerfile 配置文件中完成的一条配置指令,即表示一个 Docker 层(Layer)。
如下 Dockerfile 文件包含4 条指令,每条指令创建一个层(Layer)。
FROM ubuntu:15.04
COPY ./app
RUN make /app
CMD python /app/app.py
重点,每层只对其前一层进行一(某)些进化。
虚拟化技术是什么?
最初的构想,virtualisation(虚拟化)被认为是逻辑划分大型主机使得多个应用可以并行运行的一种技术方案。然而,随着技术公司及开源社区的推进,现实发生了戏剧性的转变,以致产生了以一种或某种方式操作特权指令可以在单台基于 x86 硬件的系统上同时运行多个(种)操作系统的技术。
实质的效果是,虚拟化技术允许你在一个硬件平台下运行2 个完全不同的操作系统。每个客户操作系统可完成像系统自检、启动、载入系统内核等像在独立硬件上的一切动作。同时也具备坚实的安全基础,例如,客户操作系统不能获取完全访问主机或其它客户系统的权限,及其它涉及安全,可能把系统搞坏的操作。
基于对客户操作系统虚拟硬件、运行环境模拟方法的不同,对虚拟化技术进行分类,主要的有如下3 种虚拟化技术种类:
- 全模拟(Emulation)
- 半虚拟(Paravirtualization)
- 基于容器的虚拟化(Container-based virtualization)
虚拟管理层(程序)是什么?
hypervisor --虚拟管理层(程序)–负责创建客户虚拟机系统运行所需虚拟硬件环境。它监管客户虚拟操作系统的运行,并为客户系统提供必要的运行资源,保证客户虚拟系统的运行。虚拟管理层(程序)驻留在物理主机系统和虚拟客户系统之间,为虚拟客户系统提供必要的虚拟服务。如何理解它,它侦听运行在虚拟机中的客户操作系统的操作并在主机操作系统中模拟客户操作系统所需硬件资源请求。满足客户机的运行需求。
虚拟化技术的快速发展,主要在云平台,由于在虚拟管理程序的帮助下,可允许在单台物理服务器上生成多个虚拟服务器,驱动着虚拟化技术快速发展及广泛应用。诸如, Xen,VMware,KVM 等,以及商业化的处理器硬件生产厂商也加入在硬件层面支持虚拟化技术的支持。诸如,Intel 的 VT 和 AMD-V 。
Docker 群(Swarm)是什么?
Docker Swarm – Docker 群–是原生的 Docker 集群服务工具。它将一群 Docker 主机集成为单一一个虚拟Docker 主机。利用一个 Docker 守护进程,通过标准的 Docker API 和任何完善的通讯工具,Docker Swarm 提供透明地将 Docker 主机扩散到多台主机上的服务。
在使用 Docker 技术的产品中如何监控其运行?
Docker 在产品中提供如运行统计和 Docker 事件的工具。可以通过这些工具命令获取 Docker 运行状况的统计信息或报告。
Docker stats :通过指定的容器 id 获取其运行统计信息,可获得容器对 CPU,内存使用情况等的统计信息,类似Linux 系统中的 top 命令。 Docker events :Docker 事件是一个命令,用于观察显示运行中的 Docker 一系列的行为活动。
一般的 Docker 事件有:attach(关联),commit(提交),die(僵死), detach(取消关联),rename(改名),destory(销毁)等。也可使用多个选项对事件记录筛选找到想要的事件信息。
什么是孤儿卷及如何删除它?
孤儿卷是未与任何容器关联的卷。在 Docker v。1.9 之前的版本中,删除这些孤儿卷存在很大问题。
什么是半虚拟化(Paravirtualization)?
Paravirtualization,也称为第1 类虚拟机管理(层)程序,其直接在硬件或裸机(bare-metal)上运行,提供虚拟机直接使用物理硬件的服务,它帮助主机操作系统,虚拟化硬件和实际硬件进行协作以实现最佳性能。这种虚拟层管理技术的程序一般占用系统资源较小,其本身并不需要占用大量系统资源。
这种虚拟层管理程序有 Xen, KVM 等。
Docker 技术与虚拟机技术有何不同?
Docker 不是严格意义上的虚拟化硬件的技术。它依赖 container-based virtualization(基于容器的虚拟化)的技术实现工具,或可以认为它是操作系统用户运行级别的虚拟化。因此, Docker 最初使用 LXC 驱动它,后来移至由libcontainer 基础库驱动它,现已更名为 runc 。 Docker 主要致力于应用容器内的应用程序的自动化部署。应用容器设计用于包装和运行单一服务,而操作系统设计用于运行多进程任务,提供多种运算服务的能力。如虚拟机中等同完全操作系统的能力。因此,Docker 被认为是容器化系统上管理容器及应用容器化的布署工具。
- 与虚拟机不同,容器无需启动操作系统内核,因此,容器可在不到1 秒钟时间内运行起来。这个特性,使得容器化技术比其它虚拟化技术更具有独特性及可取性。
- 由于容器化技术很少或几乎不给主机系统增加负载,因此,基于容器的虚拟化技术具有近乎原生的性能表现。
- 基于容器的虚拟化,与其他硬件虚拟化不同,运行时不需要其他额外的虚拟管理层软件。
- 主机上的所有容器共享主机操作系统上的进程调度,从而节省了额外的资源的需求。
- 与虚拟机 image 相比,容器(Docker 或 LXC images)映像较小,因此,容器映像易于分发。
- 容器中的资源分配由 Cgroups 实现。 Cgroup 不会让容器占用比给它们分配的更多的资源。但是,现在其它的虚拟化技术,对于虚拟机,主机的所有资源都可⻅,但无法使用。这可以通过在容器和主机上同时运行 top或 htop 来观察到。在两个环境中的输出看起来相同。
请解释一下 docerfile 配置文件中的 ONBUILD 指令的用途含义?
配置文件中的 ONBUILD 指令为创建的 Docker image (映像)加入在将来执行的指令(译注:在当前配置文件生成的映像中并不执行),用于在以这个创建的映像为基础的创建的子映像(image)中执行或定制。举例,以基映像创建自己的映像时,可定制创建特有的用户化的配置环境。
译注:由于原文较短,关于这个问题容易迷惑。译者认为,总体来说关键理解–以基础映像创建自有的映像过程中,基础映像中所有的创建层或指令是以整体或固化的方式导入自有映像中的,自有映像是不能对这个过程进行自有定制。而 ONBUILD 指令提供了将某些层从基础映像中剥离出来提供给之后以自有映像为基础映像派生新的映像的可定制途径。这对发布映像而普适在不同的运行环境定制非常有用。不当之处,请指正!)
有否在创建有状态性的 Docker 应用的较好实践?最适合的场景有什么?
有状态性 Docker 应用的问题关键在于状态数据保存在哪儿的问题。若所有数据保存在容器内,当更新软件版本或想将 Docker 容器移到其它机器上时,找回这些在运行中产生的状态数据将非常困难。
您需要做的是将这些表达运行状态的数据保存在永久卷中。参考如下3 种模式。
译注:
1 图中文字:数据保存在容器中,当容器停止运行时,运行状态数据丢失!
2 图中文字:数据保存在主机卷(Host Volume)中,当主机停机时,运行状态数据将无法访问
3 图中文字:数据保存在网络文件系统卷中,数据访问不依赖容器的运行与主机的运行
若您使用:docker run -v hostFolder:/containerfolder 命令运行您的容器,容器运行中任何对/containerfolder目录下数据的改变,将永久保存在主机的 hostfolder 目录下。使用网络文件系统(nfs)与此类似。那样您就可以运行您的容器在任何主机上且其运行状态数据被保存在网络文件系统上。
在 Windows 系统上可以运行原生的 Docker 容器吗?
在’Windows Server 2016’系统上,你可以运行 Windows 的原生容器,微软推出其映像是’Windows Nano Server’,一个轻量级的运行在容器中的 Windows 原生系统。您可以在其中布署基于.NET 的应用。
译注:结合 Docker 的基本技术原理,参考后面的问题26 和问题27,可推测,微软在系统内核上开发了对 Docker的支持,支持其闭源系统的容器化虚拟技术。但译者认为, Windows 系统本就是闭源紧耦合的系统,好像你在本机上不装.NET 组件,各应用能很好运行似的。何必再弄个容器,浪费资源。这只是译者自己之孔⻅,想喷就喷!
另: Windows Server 2016 版本之后的都可支持这种原生 Docker 技术,如 Windows Server 2018 版。
在非 Linux 操作系统平台上如何运行 Docker ?
容器化虚拟技术概念可能来源于,在 Linux 内核版本2.6.24 上加入的对命名空间( namespace)的技术支持特性。容器化进程加入其进程 ID 到其创建的每个进程上并且对每个进程中的系统级调用进行访问控制及审查。其本身是由系统级调用 clone ()克隆出来的进程,允许其创建属于自己命名空间的进程实例,而区别于之前的,归属与整个本机系统的进程实例。
如果上述在 Linux 系统内核上的技术实现成为可能,那么明显的问题是如何在非 Linux 系统上运行容器化的Docker 。过去, Mac 和 Windows 系统上运行 Docker 容器都使用 Linux 虚拟机(VMs)技术, Docker 工具箱使用的容器运行在 Virtual Box 虚拟机上。现在,最新的情况是, Windows 平台上使用的是 Hyper-V 产品技术,Mac 平台上使用的是Hypervisor.framework (框架)产品技术。
容器化技术在底层的运行原理?
2006 年前后,人们,包括一些谷歌的雇员,在 Linux 内核级别上实现了一种新的名为命名空间(namespace)的技术(实际上这种概念在 FreeBSD 系统上由来已久)。我们知道,操作系统的一个功能就是进程共享公共资源,诸如,网络和硬盘空间等。但是,如果一些公共资源被包装在一个命名空间中,只允许属于这个命名空间中的进程访问又如何呢?也就是说,可以分配一大块硬盘空间给命名空间 X 供其使用,但是,命名空间 Y 中的进程无法看到或访问这部分资源。同样地,命名空间 Y 中分配的资源,命名空间 X 中的进程也无法访问。当然, X 中的进程无法与 Y 中的进程进行交互。这提供了某种对公共资源的虚拟化和隔离的技术。
这就是 Docker 技术的底层工作原理:每个容器运行在它自己的命名空间中,但是,确实与其它运行中的容器共用相同的系统内核。隔离的产生是由于系统内核清楚地知道命名空间及其中的进程,且这些进程调用系统 API 时,内核保证进程只能访问属于其命名空间中的资源。
图上文字说明:运行中的容器是隔离的。准确地说,各容器共享操作系统内核及操作系统 API。
说说容器化技术与虚拟化技术的优缺点
仅有下面的一些对比:
不能像虚拟机那样在容器上运行与主机完全不同的操作系统。然而,可以在容器上运行不同的 Linux 发布版,由于容器共享系统内核的缘故。容器的隔离性没有虚拟机那么健壮。事实上,在早期容器化技术实现上,存在某种方法使客户容器可接管整个主机系统。也可看到,载入新容器并运行,并不会像虚拟机那样装载一个新的操作系统进来。
所有的容器共享同一系统内核,这也就是容器被认为非常轻量化的原因。同样的原因,不像虚拟机,你不须为容器预分配大量的内存空间,因为它不是运行新的整个的操作系统。这使得在一个操作系统主机上,可以同时运行成百上千个容器应用,在运行完整操作系统的虚拟机上,进行这么多的并行沙箱实验是不可能的。
如何使 Docker 适应多种运行环境?
您必然想改变您的 Docker 应用配置以更适应现实运行环境的变化。下面包含一些修改建议:移除应用代码中对任何固定存储卷的绑定,由于代码驻留在容器内部,而不能从外部进行修正。
绑定应用端口到主机上的不同端口
差异化设置环境变量(例如:减少日志冗余或者使能发电子邮件)设定重启策略(例如: restart: always ),避免⻓时间宕机加入额外的服务(例如: log aggregator)由于以上原因,您更需要一个 Compose 配置文件,大概叫production.yml ,它配置了恰当的产品整合服务。这个配置文件只需包含您选择的合适的原始 Compose 配置文件中,你改动的部分。
docker-compose -f docker-com
为什么 Docker compose 采取的是并不等待前面依赖服务项的容器启动就绪后再启动的组合容器启动策略?
Docker 的 Compose 配置总是以依赖启动序列来启动或停止 Compose 中的服务容器,依赖启动序列是由Compose 配置文件中的 depends_on , links , volumes_from 和 network_mode: "service : …"等这些配置指令所确定的。
然而, Compose 启动中,各容器的启动并不等待其依赖容器(这必定是你整个应用中的某个依赖的服务或应用)启动就绪后才启动。使用这种策略较好的理由如下:
等待一个数据库服务(举例)就绪这样的问题,在大型分布式系统中仅是相比其它大问题的某些小问题。在实际发布产品运维中,您的数据库服务会由于各种原因,或者迁移宿主机导致其不可访问。您发布的产品需要有应对这样状况的弹性。
掌控这些,开发设计您的应用,使其在访问数据库失效的情况下,能够试图重连数据库,直至其连接到数据库为止。最佳的解决方案是在您的应用代码中检查是否有应对意外的发生,无论是任何原因导致的启动或连接失效都应考虑在内。
相关文章:

面试:容器技术
目录 为什么需要 DevOpsDocker 是什么?Docker 与虚拟机有何不同?什么是 Docker 镜像?什么是 Docker 容器?Docker 容器有几种状态?解释一下 Dockerfile 的 ONBUILD 指令?什么是 Docker Swarm?如何…...

在Linux中nacos集群模式部署
一、安装 配置nacos 在Linux中建立一个nacos文件夹 mkdir nacos 把下载的压缩包拉入刚才创建好的nacos文件中 解压 tar -zxvf nacos-server-1.4.1\.tar.gz 修改配置文件 进入nacos文件中的conf文件的cluster.conf.example 修改cluster.conf.example文件 vim cluster.conf.exa…...

7天入门python系列之爬取热门小说项目实战,互联网的东西怎么算白嫖呢
第七天 Python项目实操 编者打算开一个python 初学主题的系列文章,用于指导想要学习python的同学。关于文章有任何疑问都可以私信作者。对于初学者想在7天内入门Python,这是一个紧凑的学习计划。但并不是不可完成的。 学到第7天说明你已经对python有了一…...

产品经理墨刀学习----注册页面
我们做的产品是一个校园论坛学习开发系统,目前才开始学习。 (一)流程图 (二)简单墨刀设计--注册页面 (1)有账号 (a)直接登录: (b)忘…...

算法通关村——归并排序
归并排序 1、归并排序原理 归并排序是一种很经典的分治策略。 归并排序(MERGE-SORT)简单来说就是将大的序列先视为若干小的数组,分成几个比较小的结构,然后是利用归并的思想实现的排序方法。将一个大的问题分解成一些小的问题分别求解ÿ…...

SDL2 播放音频数据(PCM)
1.简介 这里以常用的视频原始数据PCM数据为例,展示音频的播放。 SDL播放音频的流程如下: 初始化音频子系统:SDL_Init()。设置音频参数:SDL_AudioSpec。设置回调函数:SDL_AudioCallback。打开音频设备:SD…...

优秀智慧园区案例 - 重庆AI PARK智慧创意园区,先进智慧园区建设方案经验
一、项目背景 1、智慧园区是国家实现经济增长、产业升级的载体 智慧园区建设是城市智慧化创新发展的核心,在数智化升级和低碳化转型的经济发展双引擎的驱动下,十四五、数字经济的政策大力支持,以及人工智能、5G、大数据、区块链等技术的不断…...

如何编写一个Perl爬虫程序
要编写一个Perl爬虫程序,首先需要安装LWP::UserAgent模块。你可以使用cpan命令来安装该模块: cpan LWP::UserAgent 安装完成后,可以使用以下代码来编写爬虫程序: use LWP::UserAgent; use HTML::TreeBuilder; my $proxy_host …...
linux查看当前目录大小及磁盘大小
1、查看当前目录大小 du -sh ./*-h:以K,M,G为单位,提高信息的可读性 -s:仅显示总计 ./*:列出当前目录下的子项 2、查看磁盘大小 df -h还可以加个路径,仅查看当前目录所在的磁盘。例如&#x…...

windows系统pycharm程序通过urllib下载权重https报错解决
报错内容: raise URLError(unknown url type: %s % type) urllib.error.URLError: <urlopen error unknown url type: https> 解决办法记录: 1. 下载 pyopenssl : pip install pyopenssl 此时, import ssl 可以通过提示指导你安…...

Python数据结构: 列表(List)详解
在Python中,列表(List)是一种有序、可变的数据类型,被广泛用于存储和处理多个元素。列表是一种容器,可以包含任意数据类型的元素,包括数字、字符串、列表、字典等。本文将深入讨论列表的各个方面࿰…...
查找py源代码目录
要查找Python源代码目录,你可以按照以下步骤进行操作: 打开终端或命令提示符窗口。输入以下命令来查找Python源代码目录: python -m site该命令将显示Python安装位置的相关信息,包括site-packages目录路径。该目录通常包含Pytho…...

React Virtual DOM及Diff算法
JSX到底是什么 使用React就一定会写JSX,JSX到底是什么呢?它是一种JavaScript语法的扩展,React使用它来描述用户界面长成什么样子,虽然它看起来非常像HTML,但他确实是javaScript,在React代码执行之前&#…...

Spark通过三种方式创建DataFrame
通过toDF方法创建DataFrame 通过toDF的方法创建 集合rdd中元素类型是样例类的时候,转成DataFrame之后列名默认是属性名集合rdd中元素类型是元组的时候,转成DataFrame之后列名默认就是_N集合rdd中元素类型是元组/样例类的时候,转成DataFrame…...

【坑】idea终端下执行maven命令行报错:mvn clean install -Dspring.profiles.active=dev
直接看报错信息 解决方法 方法一 命令改为:mvn clean install -Dspring.profiles.activedev方法二 使用 cmd 进入命令行执行:mvn clean install -Dspring.profiles.activedev在新版本中的idea终端已经默认使用了类似windons10下的PowerShell窗口的风格…...
Linux下mysql安装配置教程
MySQL是一种常用的关系型数据库管理系统,安装配置MySQL需经历以下步骤: 1.下载MySQL 首先,你需要从MySQL官网下载MySQL的压缩包。在下载页面中,你需要选择正确的系统和版本(例如Windows或Linux,32位或64位…...

在 Electron上安装better-sqlite3出错
错误问题 一直卡npm install --global windows-build-tools --vs2015 这一步 解决 安装:pnpm install better-sqlite3 --save安装命令 pnpm i -D electron-rebuild 手动运行:node_modules/.bin/electron-rebuild -f -w better-sqlite3 我直接在packa…...

利用网络管理解决方案简化网络运维
当今的网络正朝着提高敏捷性和动态功能的方向发展,以支持高级网络要求和关键业务流程,这导致 IT 基础架构也跨越无线、虚拟和混合环境。但是,随着网络的快速发展,如果没有合适的解决方案,IT 管理员很难管理它们&#x…...

C#中.NET Framework4.8 Windows窗体应用通过EF访问数据库并对数据库追加、删除记录
目录 一、应用程序设计 二、应用程序源码 三、生成效果 前文作者发布了在.NET Framework4.8 控制台应用中通过EF访问已有数据库,事实上在.NET Framework4.8 Windows窗体应用中通过EF访问已有数据库也是一样的。操作方法基本一样,数据库EF模型和上下文…...

使用Filebeat+Kafka+Logstash+Elasticsearch构建日志分析系统
随着时间的积累,日志数据会越来越多,当您需要查看并分析庞杂的日志数据时,可通过FilebeatKafkaLogstashElasticsearch采集日志数据到Elasticsearch中,并通过Kibana进行可视化展示与分析。本文介绍具体的实现方法。 一、背景信息 …...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...

【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...

WinUI3开发_使用mica效果
简介 Mica(云母)是Windows10/11上的一种现代化效果,是Windows10/11上所使用的Fluent Design(设计语言)里的一个效果,Windows10/11上所使用的Fluent Design皆旨在于打造一个人类、通用和真正感觉与 Windows 一样的设计。 WinUI3就是Windows10/11上的一个…...

可下载旧版app屏蔽更新的app市场
软件介绍 手机用久了,app越来越臃肿,老手机卡顿成常态。这里给大家推荐个改善老手机使用体验的方法,还能帮我们卸载不需要的app。 手机现状 如今的app不断更新,看似在优化,实则内存占用越来越大,对手机性…...

运动控制--BLDC电机
一、电机的分类 按照供电电源 1.直流电机 1.1 有刷直流电机(BDC) 通过电刷与换向器实现电流方向切换,典型应用于电动工具、玩具等 1.2 无刷直流电机(BLDC) 电子换向替代机械电刷,具有高可靠性,常用于无人机、高端家电…...