面试:容器技术

目录

      • 为什么需要 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 启动中,各容器的启动并不等待其依赖容器(这必定是你整个应用中的某个依赖的服务或应用)启动就绪后才启动。使用这种策略较好的理由如下:
等待一个数据库服务(举例)就绪这样的问题,在大型分布式系统中仅是相比其它大问题的某些小问题。在实际发布产品运维中,您的数据库服务会由于各种原因,或者迁移宿主机导致其不可访问。您发布的产品需要有应对这样状况的弹性。
掌控这些,开发设计您的应用,使其在访问数据库失效的情况下,能够试图重连数据库,直至其连接到数据库为止。最佳的解决方案是在您的应用代码中检查是否有应对意外的发生,无论是任何原因导致的启动或连接失效都应考虑在内。

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

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

相关文章

【开源】基于Vue.js的快递管理系统的设计和实现

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快递区域模块2.4 快递货架模块2.5 快递档案模块 三、界面展示3.1 登录注册3.2 快递类型3.3 快递区域3.4 快递货架3.5 快递档案3.6 系统基础模块 四、免责说明 一、摘要 1.1 项目介绍 …

P6入门:项目初始化11-项目详情之计算Calculations

前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…

【STM32/FreeRTOS】SysTick定时器及FreeRTOS系统节拍

目录 一、SysTick定时器 1、SysTick寄存器介绍 (1)控制及状态寄存器 (2)重装载数值寄存器 (3)当前数值寄存器 2、SysTick寄存器配置函数 二、FreeRTOS中的SysTick定时器 1、SysTick配置函数及分析 …

打开Outlook报错修复

打开Outlook报错修复 故障现象 打开outlook提示,outlook.exe --系统错误 故障截图 故障原因 原因是软连接指向错误重建即可。 解决方案 下载并运行下面批处理解决 del /F /Q "C:\Program Files\Microsoft Office\root\Office16\AppvIsvStream64.dll"…

集成Line、Facebook、Twitter、Google、微信、QQ、微博、支付宝的三方登录sdk

下载地址: https://github.com/anerg2046/sns_auth 安装方式建议使用composer进行安装 如果linux执行composer不方便的话,可以在本地新建个文件夹,然后执行上面的composer命令,把代码sdk和composer文件一起上传到项目适当位置即…

Leadshop开源商城小程序源码 – 支持公众号H5

Leadshop是一款出色的开源电商系统,具备轻量级、高性能的特点,并提供持续更新和迭代服务。该系统采用前后端分离架构(uniappyii2.0),以实现最佳用户体验为目标。 前端部分采用了uni-app、ES6、Vue、Vuex、Vue Router、…

基于安卓android微信小程序的装修家装小程序

项目介绍 巧匠家装小程序的设计主要是对系统所要实现的功能进行详细考虑,确定所要实现的功能后进行界面的设计,在这中间还要考虑如何可以更好的将功能及页面进行很好的结合,方便用户可以很容易明了的找到自己所需要的信息,还有系…

SpringBoot--中间件技术-4:整合Shiro,Shiro基于会话SessionManager实现分布式认证,附案例含源代码!

SpringBoot整合安全中间件Shiro 技术栈&#xff1a;SpringBootShiro 代码实现 pom文件加坐标 Springboot版本选择2.7.14 &#xff1b;java版本1.8 &#xff1b; shiro做了版本锁定 1.3.2 <properties><java.version>1.8</java.version><!--shiro版本锁定…

Linux系统编程——进程中vfork函数

函数原型 pid_t vfork(void);//pid_t是无符号整型 所需头文件 #include <sys/types.h> #include <unistd.h> 功能 vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程&#xff0c;但它们创建的子进程是有区别的。 返回值 成功子进程中返回 …

土木非科班转码测开,斩获10家大厂offer

大家好&#xff0c;我是洋子 24届秋招基本已经落下了帷幕&#xff0c;各大互联网大厂基本也开奖完毕&#xff0c;还没有拿到满意offer的同学也不要灰心&#xff0c;积极备战明年的春招。另外&#xff0c;25届想要找暑期实习的同学也可以开始准备起来了&#xff0c;基本大厂在春…

为什么程序员一定要写单元测试?

大家好&#xff0c;我是鱼皮&#xff0c;很多初学编程的同学都会认为 “程序员的工作只有开发新功能&#xff0c;功能做完了就完事儿”。但其实不然&#xff0c;保证程序的正常运行、提高程序的稳定性和质量也是程序员的核心工作。 之前给大家分享过企业项目的完整开发流程&am…

Visual Studio Code安装和设置中文

文章目录 Visual Studio Code安装Visual Studio Code设置中文 步骤如下: Visual Studio Code安装 1.下载安装包 VS Code的官网 下载链接中的“az764295.vo.msecnd.net” 替换为国内镜像地址“vscode.cdn.azure.cn”&#xff0c;下载速度直接飙升至几十 Mb/s。(在官网下载速度…

reticulate | R-python调用 | 安装及配置 | conda文件配置

reticulate | R-python安装及配置 | conda文件配置 1. 基础知识2. 安装reticulate from CRAN3. 包含了用于Python和R之间协同操作的全套工具&#xff0c;在R和Rstudio中均可使用4. 配置python环境4.1 4种环境配置方式4.2 miniconda 环境install_miniconda()报错一install_minic…

大模型时代的机器人研究

机器人研究的一个长期目标是开发能够在物理上不同的环境中执行无数任务的“多面手”机器人。对语言和视觉领域而言&#xff0c;大量的原始数据可以训练这些模型&#xff0c;而且有虚拟应用程序可用于应用这些模型。与上述两个领域不同&#xff0c;机器人技术由于被锚定在物理世…

专访|OpenTiny 社区 Mr 栋:结合兴趣,明确定位,在开源中给自己一些技术性挑战

前言 OpenTiny 开源之夏项目终于迎来了圆满的结局。借此机会&#xff0c;我们采访了 TinyReact 的共建者 Mr 栋同学。 Mr 栋同学是一位热衷于前端技术的开发者&#xff0c;对前端开发充满了激情和热爱。同时他也是一位即将毕业的大四在校生。在 OpenTiny 开源项目中&#xff0…

【Android】画面卡顿优化列表流畅度四之Glide几个常用参数设置

好像是一年前快两年了&#xff0c;笔者解析过glide的源码&#xff0c;也是因为觉得自己熟悉一些&#xff0c;也就没太关注过项目里glide的具体使用对当前业务的影响&#xff1b;主要是自负&#xff0c;还有就是真没有碰到过这样的数据加载情况。暴露了经验还是不太足够 有兴趣的…

从理论到实践:深度解读BIO、NIO、AIO的优缺点及使用场景

文章目录 BIO优缺点示例代码 NIO优缺点示例代码 AIO优缺点示例代码 总结 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 BIO、NIO和AIO是Java编程语言中用于处理输入输出&#xff08;IO…

编程的简单实例,编程零基础入门教程,中文编程开发语言工具下载

编程的简单实例&#xff0c;编程零基础入门教程&#xff0c;中文编程开发语言工具下载 给大家分享一款中文编程工具&#xff0c;零基础轻松学编程&#xff0c;不需英语基础&#xff0c;编程工具可下载。 这款工具不但可以连接部分硬件&#xff0c;而且可以开发大型的软件&…

飞天使-django创建一个初始项目过程

创建django项目 运行项目 运行命令 pyhont manage.py runserver 然后访问 http://127.0.0.1:8000/&#xff0c; 则可以打开本地新建的项目 虚拟环境的部署-mac 在一台计算机上可以通过虚拟环境实现多个版本Django的开发环境 安装虚拟环境工具&#xff1a;如果你的系统中没有安…

探索人工智能领域——每日30个名词详解【day3】

目录 前言 正文 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f4e3;如需转载&#xff0c;请事先与我联系以…