富 Web 时代,应用变得越来越强大,与此同时也越来越复杂。集群部署、隔离环境、灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁。

本文我们就来探索一下 Docker 的神秘世界,从零到一掌握 Docker 的基本原理与实践操作。别再守着前端那一亩三分地,是时候该开疆扩土了。

讲个故事

为了更好的理解 Docker 是什么,我们先来讲个故事:
我需要盖一个房子,于是我搬石头、砍木头、画图纸、盖房子。一顿操作,终于把这个房子盖好了。

结果,住了一段时间,心血来潮想搬到海边去。这时候按以往的办法,我只能去海边,再次搬石头、砍木头、画图纸、盖房子。

烦恼之际,跑来一个魔法师教会我一种魔法。这种魔法可以把我盖好的房子复制一份,做成「镜像」,放在我的背包里。

等我到了海边,就用这个「镜像」,复制一套房子,拎包入住。

是不是很神奇?对应到我们的项目中来,房子就是项目本身,镜像就是项目的复制,背包就是镜像仓库。

如果要动态扩容,从仓库中取出项目镜像,随便复制就可以了。Build once,Run anywhere!

不用再关注版本、兼容、部署等问题,彻底解决了「上线即崩,无休止构建」的尴尬。

虚拟机与容器

开始之前,我们来做一些基础知识的储备:

①虚拟机:虚拟化硬件

虚拟机 Virtual Machine 指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。

在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。

每个虚拟机都有独立的 CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。在容器技术之前,业界的网红是虚拟机。

虚拟机技术的代表,是 VMWare 和 OpenStack。

②容器:将操作系统层虚拟化,是一个标准的软件单元
其特点如下:

  • 随处运行:容器可以将代码与配置文件和相关依赖库进行打包,从而确保在任何环境下的运行都是一致的。
  • 高资源利用率:容器提供进程级的隔离,因此可以更加精细地设置 CPU 和内存的使用率,进而更好地利用服务器的计算资源。
  • 快速扩展:每个容器都可作为单独的进程予以运行,并且可以共享底层操作系统的系统资源,这样一来可以加快容器的启动和停止效率。

区别与联系:

  • 虚拟机虽然可以隔离出很多「子电脑」,但占用空间更大,启动更慢。虚拟机软件可能还要花钱,例如 VMWare。
  • 容器技术不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境,类似「沙箱」。
  • 运行空间,虚拟机一般要几 GB 到 几十 GB 的空间,而容器只需要 MB 级甚至 KB 级。

我们来看一下对比数据:

虚拟机属于虚拟化技术,而 Docker 这样的容器技术,属于轻量级的虚拟化。与虚拟机相比,容器更轻量且速度更快,因为它利用了 Linux 底层操作系统在隔离的环境中运行。虚拟机的 Hypervisor 创建了一个非常牢固的边界,以防止应用程序突破它,而容器的边界不那么强大。

认识 Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 技术的三大核心概念,分别是:

  • 镜像 Image
  • 容器 Container
  • 仓库 Repository

Docker 轻量级的原因是什么?相信你也会有这样的疑惑:为什么 Docker 启动快?如何做到和宿主机共享内核?当我们请求 Docker 运行容器时,Docker 会在计算机上设置一个资源隔离的环境。然后将打包的应用程序和关联的文件复制到 Namespace 内的文件系统中,此时环境的配置就完成了。之后 Docker 会执行我们预先指定的命令,运行应用程序。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

核心概念核心概念如下:

  • Build,Ship and Run(搭建、运输、运行)。
  • Build once,Run anywhere(一次搭建,处处运行)。
  • Docker 本身并不是容器,它是创建容器的工具,是应用容器引擎。
  • Docker 三大核心概念,分别是:镜像 Image,容器 Container、仓库 Repository。
  • Docker 技术使用 Linux 内核和内核功能(例如 Cgroups 和 namespaces)来分隔进程,以便各进程相互独立运行。
  • 由于 Namespace 和 Cgroups 功能仅在 Linux 上可用,因此容器无法在其他操作系统上运行。那么 Docker 如何在 macOS 或 Windows 上运行?Docker 实际上使用了一个技巧,并在非 Linux 操作系统上安装 Linux 虚拟机,然后在虚拟机内运行容器。
  • 镜像是一个可执行包,其包含运行应用程序所需的代码、运行时、库、环境变量和配置文件,容器是镜像的运行时实例。

更多关于 Docker 的原理,可以查看《Docker 工作原理及容器化简易指南》,这里不再赘述:

http://dockone.io/article/8788

安装 Docker
①命令行安装

Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装,执行如下命令:

brew cask install docker

更多安装方式,请查看官方文档:

https://www.docker.com/get-started

②查看版本

命令如下:

docker -v

③配置镜像加速

设置 Docker Engine 写入配置:

{  registry-mirrors: [    http://hub-mirror.c.163.com/,    https://registry.docker-cn.com  ],  insecure-registries:[],  experimental: false,  debug: true}

④安装桌面端

桌面端操作非常简单,先去官网下载[1]。通过 Docker 桌面端,我们可以方便的操作:

  • clone:克隆一个项目。
  • build:打包镜像。
  • run:运行实例。
  • share:共享镜像。

好了,准备工作就绪,下面可以大展身手了!

快速开始安装完 Docker 之后,我们先打个实际项目的镜像,边学边用。

①首先需要大致了解一下我们将会用到的 11 个命令

如下图:

②新建项目

为了快捷,我们直接使用 Vue 脚手架构建项目:

vue create docker-demo

尝试启动一下:

yarn serve

访问地址:http://localhost:8080/。项目就绪,我们接着为项目打包:

yarn build

这时候,项目目录下的 Dist 就是我们要部署的静态资源了,我们继续下一步。需要注意:前端项目一般分两类,一类直接 Nginx 静态部署,一类需要启动 Node 服务。本节我们只考虑第一种。关于 Node 服务,后文我会详细说明。
③新建 Dockerfile

命令如下:

cd docker-demo && touch Dockerfile

此时的项目目录如下:

.├── Dockerfile├── README.md├── babel.config.js├── dist├── node_modules├── package.json├── public├── src└── yarn.lock

可以看到我们已经在 docker-demo 目录下成功创建了 Dockerfile 文件。
④准备 Nginx 镜像

运行你的 Docker 桌面端,就会默认启动实例,我们在控制台拉取 Nginx 镜像:

docker pull nginx

控制台会出现如下信息:

Using default tag: latestlatest: Pulling from library/nginx8559a31e96f4: Pull complete8d69e59170f7: Pull complete3f9f1ec1d262: Pull completed1f5ff4f210d: Pull complete1e22bfa8652e: Pull completeDigest: sha256:21f32f6c08406306d822a0e6e8b7dc81f53f336570e852e25fbe1e3e3d0d0133Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest

如果你出现这样的异常,请确认 Docker 实例是否正常运行。

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

镜像准备 OK,我们在根目录创建 Nginx 配置文件:

touch default.conf

写入:

server {    listen       80;    server_name  localhost;    #charset koi8-r;    access_log  /var/log/nginx/host.access.log  main;    error_log  /var/log/nginx/error.log  error;    location / {        root   /usr/share/nginx/html;        index  index.html index.htm;    }    error_page   500 502 503 504  /50x.html;    location = /50x.html {        root   /usr/share/nginx/html;    }}

⑤配置镜像

打开 Dockerfile ,写入如下内容:

FROM nginxCOPY dist/ /usr/share/nginx/html/COPY default.conf /etc/nginx/conf.d/default.conf

我们逐行解释一下代码:

  • FROM nginx 指定该镜像是基于 nginx:latest 镜像而构建的。
  • COPY dist/ /usr/share/nginx/html/ 命令的意思是将项目根目录下 dist 文件夹中的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下。
  • COPY default.conf /etc/nginx/conf.d/default.conf 将 default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换 Nginx 镜像里的默认配置。

⑥构建镜像

Docker 通过 build 命令来构建镜像:

docker build -t jartto-docker-demo .

按照惯例,我们解释一下上述代码:

  • -t 参数给镜像命名 jartto-docker-demo。
  • . 是基于当前目录的 Dockerfile 来构建镜像。

执行成功后,将会输出:

Sending build context to Docker daemon  115.4MBStep 1/3 : FROM nginx ---> 2622e6cca7ebStep 2/3 : COPY dist/ /usr/share/nginx/html/ ---> Using cache ---> 82b31f98dce6Step 3/3 : COPY default.conf /etc/nginx/conf.d/default.conf ---> 7df6efaf9592Successfully built 7df6efaf9592Successfully tagged jartto-docker-demo:latest

镜像制作成功!我们来查看一下容器:

docker image ls | grep jartto-docker-demo

可以看到,我们打出了一个 133MB 的项目镜像:

jartto-docker-demo latest 7df6efaf9592 About a minute ago 133MB

镜像也有好坏之分,后续我们将介绍如何优化,这里可以先暂时忽略。⑦运行容器

命令如下:

docker run -d -p 3000:80 --name docker-vue jartto-docker-demo

这里解释一下参数:

  • -d 设置容器在后台运行。
  • -p 表示端口映射,把本机的 3000 端口映射到 container 的 80 端口(这样外网就能通过本机的 3000 端口访问了。
  • –name 设置容器名 docker-vue。
  • jartto-docker-demo 是我们上面构建的镜像名字。

补充一点:在控制台,我们可以通过 docker ps 查看刚运行的 Container 的 ID:

docker ps -a

控制台会输出:

CONTAINER ID IMAGE              COMMAND                  CREATED       STATUS PORTS  NAMESab1375befb0b jartto-docker-demo /docker-entrypoint.…   8 minutes ago Up 7 minutes  0.0.0.0:3000->80/tcp  docker-vue

如果你使用桌面端,那么打开 Docker Dashboard 就可以看到容器列表了,如下图:

⑧访问项目

因为我们映射了本机 3000 端口,所以执行:

curl -v -i localhost:3000

或者打开浏览器,访问:localhost:3000。⑨发布镜像如果你想为社区贡献力量,那么需要将镜像发布,方便其他开发者使用。发布镜像需要如下步骤:

  • 登陆 dockerhub[2],注册账号。
  • 命令行执行 docker login,之后输入我们的账号密码,进行登录。
  • 推送镜像之前,需要打一个 Tag,执行 docker tag <image> <username>/<repository>:<tag>。

全流程结束,以后我们要使用,再也不需要「搬石头、砍木头、画图纸、盖房子」了,拎包入住。这也是 Docker 独特魅力所在。

常规操作到这里,恭喜你已经完成了 Docker 的入门项目!如果还想继续深入,不妨接着往下看看。①参数使用FROM:

  • 指定基础镜像,所有构建的镜像都必须有一个基础镜像,且 FROM 命令必须是 Dockerfile 的第一个命令
  • FROM <image> [AS <name>] 指定从一个镜像构建起一个新的镜像名字
  • FROM <image>[:<tag>] [AS <name>] 指定镜像的版本 Tag
  • 示例:FROM mysql:5.0 AS database

MAINTAINER:

  • 镜像维护人的信息
  • MAINTAINER <name>
  • 示例:MAINTAINER Jartto Jartto@qq.com

RUN:

  • 构建镜像时要执行的命令
  • RUN <command>
  • 示例:RUN [executable, param1, param2]

ADD:

  • 将本地的文件添加复制到容器中去,压缩包会解压,可以访问网络上的文件,会自动下载
  • ADD <src> <dest>
  • 示例:ADD *.js /app 添加 js 文件到容器中的 app 目录下

COPY:

  • 功能和 ADD 一样,只是复制,不会解压或者下载文件

CMD:

  • 启动容器后执行的命令,和 RUN 不一样,RUN 是在构建镜像是要运行的命令
  • 当使用 docker run 运行容器的时候,这个可以在命令行被覆盖
  • 示例:CMD [executable, param1, param2]

ENTRYPOINT:

  • 也是执行命令,和 CMD 一样,只是这个命令不会被命令行覆盖
  • ENTRYPOINT [executable, param1, param2]
  • 示例:ENTRYPOINT [donnet, myapp.dll]

LABEL:为镜像添加元数据,key-value 形式

  • LABEL <key>=<value> <key>=<value> …
  • 示例:LABEL version=1.0 description=这是一个web应用

ENV:设置环境变量,有些容器运行时会需要某些环境变量

  • ENV <key> <value> 一次设置一个环境变量
  • ENV <key>=<value> <key>=<value> <key>=<value> 设置多个环境变量
  • 示例:ENV JAVA_HOME /usr/java1.8/

EXPOSE:暴露对外的端口(容器内部程序的端口,虽然会和宿主机的一样,但是其实是两个端口)

  • EXPOSE <port>
  • 示例:EXPOSE 80
  • 容器运行时,需要用 -p 映射外部端口才能访问到容器内的端口

VOLUME:指定数据持久化的目录,官方语言叫做挂载

  • VOLUME /var/log 指定容器中需要被挂载的目录,会把这个目录映射到宿主机的一个随机目录上,实现数据的持久化和同步
  • VOLUME [/var/log,/var/test…..] 指定容器中多个需要被挂载的目录,会把这些目录映射到宿主机的多个随机目录上,实现数据的持久化和同步
  • VOLUME /var/data var/log 指定容器中的 var/log 目录挂载到宿主机上的 /var/data 目录,这种形式可以手动指定宿主机上的目录

WORKDIR:设置工作目录,设置之后 ,RUN、CMD、COPY、ADD 的工作目录都会同步变更

  • WORKDIR <path>
  • 示例:WORKDIR /app/test

USER:指定运行命令时所使用的用户,为了安全和权限起见,根据要执行的命令选择不同用户

  • USER <user>:[<group>]
  • 示例:USER test

ARG:设置构建镜像是要传递的参数

  • ARG <name>[=<value>]
  • ARG name=sss

更多操作,请移步官方使用文档[3]:

https://docs.docker.com/

最佳实践在掌握 Docker 常规操作之后,我们很容易就可以打出自己想要的项目镜像。然而不同的操作打出的镜像也是千差万别。究竟是什么原因导致镜像差异,我们不妨继续探索。以下是在应用 Docker 过程中整理的最佳实践,请尽量遵循如下准则:

  • Require 明确:需要什么镜像。
  • 步骤精简:变化较少的 Step 优先。
  • 版本明确:镜像命名明确。
  • 说明文档:整个镜像打包步骤可以重现。

总结容器化技术必将是云时代不可或缺的技能之一,而 Docker 只是沧海一粟。随之而来的还有集群容器管理 Kubernetes、Service Mesh 、Istio 等技术。打开 Docker 的大门,不断抽丝剥茧,逐层深入,你将感受到容器化的无穷魅力。

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

相关文章

  1. 服务学生发展 维护校园安全 创建平安校园 建设示范学校

    背景链接:无锡南洋职业技术学院位于美丽的太湖之滨。学院由上海中锐控股集团投资举办,1998年6月经江苏省人民政府批准成立,是具有独立颁发学历文凭的全日制普通高等职业院校。学院设有汽车工程与管理学院、建筑工程与艺术设计学院、国际学院、商学院、智能装备与信息工程学院…...

    2024/4/13 2:13:25
  2. AI构图:AI摄影的新未来

    编辑导语:AI与摄影相结合已经不是新鲜事,新鲜的是二者结合的方式。对于很多小伙伴来说,拍照时最大的困扰就是不知道该如何构图,如今AI构图已经出现了,手机会在你拍照的时候针对情况做出指导。这到底是怎么回事呢?本文作者为我们做出了详细地解释。不知何时起,拍照成了各…...

    2024/4/7 1:32:29
  3. js色谱大全

    调色表 颜色 英文代码 形像颜色 HEX格式 RGB格式 LightPink 浅粉红 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩红 #DC143C 220,20,60 LavenderBlush 脸红的淡紫色 #FFF0F5 255,240,245 PaleVioletRed 苍白的紫罗兰红色 #DB7093 219,112,147 HotPink 热情的…...

    2024/4/7 0:06:24
  4. 我的RDP连接真的通过证书保护吗?

    我的RDP连接真的通过证书保护吗?argonsys.com / microsoft-cloud / library / are-my-rdp-connections-really-secured by-a-certificate /布兰登威尔逊(Brandon Wilson)大家好!蒂姆比斯利(Tim Beasley)–平台式PFE来自被称为LAS VEGAS的时髦新鲜果酱带来的生活!是的人!…...

    2024/4/10 22:09:39
  5. CSS基本用法笔记

    @规则 别名:at-rule,@规则,@语句,CSS语句,CSS指令import:写法:@import“路径”;表示导入另外一个CSS文件 charset:写法:@charset“utf-8”;表示告诉该CSS文件使用的字符编码集是utf-8,必须写到CSS代码文件的第一行(可不写);web字体和图标 web字体: 用户电脑上没…...

    2024/4/7 0:44:26
  6. ACP 学习-01-阿里云云计算专业认证学习范围概览

    阿里云云计算专业认证 (ACP 级-Alibaba Cloud CertificationProfessional)是面向使用阿里云云计算产品的架构、开发、运维类人员的专业技术认证,主要涉及阿里云的计算、存储、网络、安全类的核心产品。 通过该技术认证可以有效证明该认证人员具备以下能力:具备 IT、云计算…...

    2024/4/7 1:36:46
  7. 综合任务1:定时闹铃

    完成一下任务:比较简单的综合的任务: 1、定时器倒计时闹铃; 最多用5个按键控制;按键具备短按,长按的功能; 可以控制两个闹铃; 可以控制两个闹铃的时间,时分秒都能控制调节: 在LCD1602上面显示。倒计时的时间。 R1:xx:xx:xx. R2:xx:xx:xx. 有一个按键是启动。 定时…...

    2024/4/7 0:27:32
  8. UVa 11384打卡

    算法竞赛入门经典训练指南打卡 题目链接:UVa 11384 思路 对于1,,2,3,4,5,6.....n,最终的结果也就是要把所有的数变为0,即所有的数都相同 所以我们只需要每次操作让不同的数变少即可,一开始有n个数(不算0),最终要变为只有1个数 因为是递增,所以每次操作最多可以使一半的…...

    2024/4/7 1:44:53
  9. 牛客(多校10)E:Game

    题目链接示例1: 输入 2 4 2 3 5 6 8 2 1 1 4 4 6 2 3输出 4 3代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[100005]; int main(){int t;scanf("%d",&t);while(t--){int n; scanf("%d",&n);ll ans=0,su…...

    2024/4/7 0:59:13
  10. 数据结构与算法-回溯算法1

    回溯算法1回溯算法框架经典问题排列-Permutation子集-Subsets组合-Combination去重策略有重复元素的排列问题有重复元素的子集问题 回溯算法框架 回溯法和DFS息息相关。 回溯是“撤回一步”的意思 解决一个回溯问题,实际上就是一个决策树的遍历过程。只需要思考3个问题:路径:…...

    2024/4/7 0:05:44
  11. C++ set 函数的使用

    set的使用1.关于set2.set 容器的创建3. set 的常用函数3.1 insert 插入3.2 erease 删除 ________________________________________________________ 1.关于set C++ STL 之所以得到广泛的赞誉,STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封…...

    2024/4/7 4:28:29
  12. 8月,CISP开考的城市有很多 !

    一、 8月,CISP开考的城市有很多 1、北京8月25号 2、上海8月31号 3、武汉8月28号 4、西安8月30号 二、CISP,信安必备证书? 难度有多大?1公里宽1厘米深。 基本上是:你稍用点心,认识那些字,就可以通过。刷两遍题库,没通过的话,可以去买彩票 三、CISP有什么用? 1、信安行…...

    2024/4/7 5:29:04
  13. 现在女生做什么赚钱,这8种职业非常有前途!

    在这个人口众多,竞争激烈的年代,女生应该做什么行业比较挣钱呢?这个要根据自己的情况,来做出选择。学历高的人跟学历低的人,不一样,漂亮的人和长得不漂亮的人,又不一样。下面小编就来总结一下,几个女生比较容易赚钱的职业。第一、医生每天去医院看病的人还是很多的,医…...

    2024/4/7 4:09:00
  14. html页面引入vue

    基础环境①所需的基本ui组件基本后台模块 element、iview ,手机端可以mui 、 uniapp②所需Vue版本建议官方最新版本为准,稳定性可靠③兼容vue文件的http-vue-loader可以无需脚手架情况下对vue以脚手架形式编写vue文件,同时便捷了引入方式基于Mui样例index.html<!DOCTYPE …...

    2024/4/7 1:12:41
  15. Permission——以独有的数字身份在全球数字生态中获利

    总部位于美国的Permission.io是一家深层技术公司,由GarySherman博士和国际知名技术专家RobinBloor博士带领的一批研究型数学家领导,公司目前正在构建突破性底层区块链解决方案并将其商业化,以实现广告、电子商务和大数据领域的共赢。互联网2.0最大的问题在于:数据使用权和所…...

    2024/4/7 4:22:29
  16. 网赚做什么赚钱?具备这4种条件,就很容易了!

    疫情让不少人都徘徊在失业边缘,因此网赚便成了不少人的回血妙招。但是对于网赚小白来说,一定存在不少疑问,比如究竟怎么做才能赚到钱。说实话,这个问题有点大而空了。要想从中获益,首先选好项目,其次做好推广,还要有好的点子来进行营销。等项目真的做大做强,赚钱就是板…...

    2024/4/15 18:27:42
  17. CentOS 安装 ceph 单机版

    单机版Ceph环境部署,Linux平台Ceph已经如火如荼,很多公司都在使用Ceph作为自己的存储系统。日常学习不太可能安装一个Ceph集群,因此本文介绍如何部署一个单节点的Ceph系统。另外,本文安装的后端存储引擎是BlueStore,这个引擎是目前性能比较好,且成熟的引擎。环境说明单节…...

    2024/4/16 20:23:44
  18. 网上最靠谱的赚钱方法,看看这六个哪个适合你!

    赶上互联网发展潮流,成为了不少人的发财之道。今天小编就带着大家来看几个人在家中坐,钱从网上来对赚钱方法。多关注网络热点,所谓你不理财财不理你,如果实在不想花精力搜集,那就不要错过下面的方法总结。1、网店开网店可以说是成本相对较低的一个项目,不过网店赚钱的关键…...

    2024/4/7 6:30:09
  19. HTML基础内容

    HTML基础内容 HTML介绍 HTML部分主要包含网页的结构,head头文件、基本标签、表格以及表单。 <!DOCTYPE html> <!-- 文档类型声明 --> <!-- HTML指超文本标记语言hyper text markup language,1、常用浏览器IE,Firefox,Chrome,Safari,Opera等。浏览器内核(渲…...

    2024/4/7 19:34:18
  20. 白话设计模式之责任链模式

    记得上次面试,先笔试后面试,面试官让我手写责任链模式,一脸蒙蔽 ,啥是责任链模式?于是碰壁之后,回去理了理责任链是什么东东。1 定义:责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进…...

    2024/4/13 11:55:59

最新文章

  1. OpenHarmony网络协议通信—kcp

    kcp 是一种 ARQ 协议,可解决在网络拥堵情况下 tcp 协议的网络速度慢的问题 下载安装 直接在 OpenHarmony-SIG 仓中搜索 kcp 并下载。 使用说明 准备一套完整的 OpenHarmony 3.1 Beta 代码 库代码存放路径&#xff1a;./third_party/kcp 修改添加依赖的编译脚本 在/develo…...

    2024/4/20 22:12:20
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 数据结构——二叉树——二叉搜索树(Binary Search Tree, BST)

    目录 一、98. 验证二叉搜索树 二、96. 不同的二叉搜索树 三、538. 把二叉搜索树转换为累加树 二叉搜索树&#xff1a;对于二叉搜索树中的每个结点&#xff0c;其左子结点的值小于该结点的值&#xff0c;而右子结点的值大于该结点的值 一、98. 验证二叉搜索树 给你一个二叉树的…...

    2024/4/19 1:27:19
  4. 【JavaScript 漫游】【049】ES6 规范中对象的扩展

    文章简介 本篇文章为【JavaScript 漫游】专栏的第 049 篇文章&#xff0c;对 ES6 规范中对象的扩展知识点进行了记录。具体包括&#xff1a; 属性的简洁表示法属性名表达式方法的 name 属性属性的可枚举性和遍历super 关键字对象的扩展运算符链判断运算符Null 判断运算符新增…...

    2024/4/16 21:49:01
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/4/19 19:02:10
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/4/20 15:00:23
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/4/19 11:33:34
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/4/19 11:52:08
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/4/20 9:42:32
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/4/20 7:01:14
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/4/19 11:52:49
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/4/19 18:52:15
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/4/19 23:08:02
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/4/20 0:22:23
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/4/19 23:04:54
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/4/20 1:12:38
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/4/20 19:58:29
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/4/20 21:33:42
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/4/20 1:43:00
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/4/20 13:55:02
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/4/19 23:35:17
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/4/19 10:00:05
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/4/20 6:45:17
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/4/20 3:28:04
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57