docker从入门到熟悉
一、什么是docker?
Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付,测试和部署代码的方法,您可以显着减少编写代码和在生产环境中运行代码之间的延迟。
通俗一点讲: Docker其实就是可以打包程序和运行环境(虚拟机,只能在linux下运行),
把环境和程序一起发布的容器。当你需要发布程序时你可以使用Docker将运行环境一起发布。
二、docker优势劣势
虚拟机和DocKer对比:
1.DocKer 启动速度是虚机万万不敢调戏的了,(这里声明一下,在同一台电脑)。
2.在资源的利用上也比虚机高多了,同一台机器上我相信能跑100台DocKer,咱们肯定不赶跑这么多台虚拟机,有效的节约资源。
3.传统虚拟机, 虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
4.容器内的应用直接运行在宿主机的内部,容器是没有自己的内核的,也没有虚拟硬件,所以轻便
5.每个容器间是相互隔离的,每个容器内都有一个属于自己的文件系统,互不影响。
应用更快速的交互和部署
传统:一堆帮助文档,安装程序
Docker: 打包镜像发布测试,一键运行
更便捷的升级和扩缩容
更简的系统运维
更高效的计算资源利用
三、docker的历史
2008年,Solomon Hykes与朋友共同创建了名为DotCloud的公司,是一个PaaS(平台即服务 Platform-as-a-Service)提供商,2013年,Docker问世,面向开源,开源之后,Docker迅速火爆,后面公司改名为Docker。
Docker的第一个执行环境是LXC,但从0.9版本开始被Libcontainer取代;LXC叫做LinuX Container,简称Linux的容器,是世界上第一个容器应用,Linux Container提供了在单一可控主机节点上支持多个相互隔离的Server Container同时执行的机制, Libcontainer为Docker封装了Linux提供的基础功能,后面又被RunC代替(runc 是一个 Linux 命令行工具,用于根据 OCI[开放容器联盟]容器运行时规范创建和运行容器)。
四、docker架构
Docker使用客户端-服务器架构。Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以 在同一系统上运行,或者您可以将Docker客户端连接到远程Docker守护程序。Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。另一个Docker客户端是Docker Compose,它使您可以处理由一组容器组成的应用程序。
五、Docker守护程序
Docker守护程序(dockerd
)侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
六、Docker客户端
Docker客户端(docker
)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run
,客户端会将这些命令发送到dockerd
,以执行这些命令。该docker
命令使用Docker API。Docker客户端可以与多个守护程序通信。
七、docker执行过程
名词解释:
①镜像:镜像是只读的文件,提供了运行程序完整的软硬件资源,是应用程序的"集装箱";
Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 ===> run ===> tomcat01容器, 通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)
②容器:是镜像的实例,由 Docker 负责创建,容器之间彼此隔离;
Docker利用容器技术,独立运行一个或者一组应用, 通过镜像来创建的
启动,停止,删除,基本命令!
就目前可以把这个容器理解为一个简易的linux系统
③仓库:存放镜像的地方
Docker Hub(默认是国外的)远程仓库地址: https://hub.docker.com/
阿里云,,,都有容器服务(配置镜像加速!)
④Docker file: 是一个配置文件 如何构建的步骤 来指定一个镜像是如何构建的,通过Docker build指令可以将Dockerfile构建成一个镜像。
八、centos安装docker
1、首先需要大家虚拟机联网,安装yum工具
yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken
2、然后更新本地镜像源
# 设置docker镜像源
yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repoyum makecache fast
3、安装docker社区免费版
yum install -y docker-ce
4、启动docker
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
5、通过命令启动docker
systemctl start docker # 启动docker服务systemctl stop docker # 停止docker服务systemctl restart docker # 重启docker服务
配置使用腾讯云 Docker 镜像源加速镜像下载(可跳过)
执行以下命令,打开 /etc/docker/daemon.json 配置文件
vim /etc/docker/daemon.json 按 i 切换至编辑模式,添加以下内容,并保存。
{ "registry-mirrors": [ "https://mirror.ccs.tencentyun.com" ] }
重启Docker systemctl restart docker
八、ubuntu安装docker
# step 1: 安装必要的一些系统工具
sudo apt-get updatesudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"# Step 4: 更新并安装 Docker-CE
sudo apt-get -y updatesudo apt-get -y install docker-ce
#查看是否安装成功 查看容器的运行情况
docker ps
九、CentOS安装DockerCompose
1.Linux下需要通过命令下载:安装缓慢需要多等一会
# 安装
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
十、docker映射文件路径
在创建docker容器时,想要与本地 路径进行映射共享文件,使用docker run -v 指令,例如我需要将本地的路径/root/code映射到容器内的/data/code路径(数据卷),使用如下命令,冒号前为宿主机的路径,冒号后为容器路径,其中xxx为镜像完整的路径
docker run -it -v /root/code:/data/code xxx/bin/bash
十一、使用docker拉取镜像 nginx
1、如果不指定版本则默认拉取最新的镜像版本
docker pull nginx
十二、查看本地docker镜像
docker images
就能看到上面拉取的nginx的镜像了。
十三、运行容器
docker run --name nginx-test -p 8080:80 -d nginx
参数说明:
--name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口
-d nginx: 设置容器在在后台一直运行。
列表参数说明:
Repository 镜像名称
Tag 镜像标签
Image Id 镜像 的ID
Created 镜像的创建日期
Size 镜像的大小
注意:镜像默认存放位置:/var/lib/docker目录下
1、在宿主机访问虚拟机地址将8080端口即可访问nginx
十四、查看镜像信息
docker inspect 镜像id
十五、镜像命令
1.docker pull nginx:latest 拉取镜像
2.docker images 查看镜像
3.docker run -d -p 81:80 nginx 创建容器
4.docker ps 查看正在运行的容器
5.docker ps -a 查看所有的容器(包括没运行的容器)
6.docker exec -it 2d bash 登录容器
-i 让容器的标准输入保持打开
-t 让docker分配一个伪终端并保存到容器的标准输入
7.exit或者Ctrl+D 退出容器8.docker rm -f 容器id 删除容器
9.docker commit 2d m1 将2d容器保存为m1镜像
10.docker rmi -f 镜像id 删除镜像
11.docker save m2>1.tar 将m1镜像保存到1.tar文件中(备份镜像)
12.docker load < 1.tar 将1.tar文件中加载为镜像(加载镜像)
13.docker tag 添加镜像标签
eg: docker tag nginx:latest nginx:lnmp #给nginx打上标签lnmp,原来的标签是latest
14.docker images -q 查询镜像的id
15.docker rmi `docker images -q` 批量删除所有镜像
16. docker build -t 镜像名称 . dockerfile构建镜像
17.docker container run 启动新容器
18.docker diff 查看容器文件系统改动详情。
19.docker ps -aq |wc -l 查找容器数量
20. docker info Docker实例的状态和配置
十六、容器命令
1.docker container run
启动新容器的命令。该命令的最简形式接收镜像和命令作为参数。镜像用于创建容器,而命令则是希望容器运行的应用。
docker run -it -d -p 81:80 nginx #命令会在前台启动一个 Ubuntu 容器,并运行 Bash Shell。
2.docker container ls
列出所有在运行(UP)状态的容器。如果使用 -a 标记,还可以看到处于停止(Exited)状态的容器
3.docker container exec
用于在运行状态的容器中,启动一个新进程。该命令在将 Docker 主机 Shell 连接到一个运行中容器终端时非常有用。
eg: docker exec -it 97 bash #登录容器
4.docker container stop
grammer:docker stop container_ID
此命令会停止运行中的容器,并将状态置为 Exited(0)。
提示:该命令通过发送 SIGTERM 信号给容器内 PID 为 1 的进程达到目的。
如果进程没有在 10s 之内得到清理并停止运行,那么会接着发送 SIGKILL 信号来强制停止该容器。
5. docker container start
grammer: docker start container_ID
重启处于停止(Exited)状态的容器。可以在 docker container start 命令中指定容器的名称或者 ID。
6.docker container rm
删除停止运行的容器。可以通过容器名称或者 ID 来指定要删除的容器。推荐首先使用docker container stop 命令停止容器.然后使用 docker container rm 来完成删除(先停止再删除)
7. docker container inspect
显示容器的配置细节和运行时信息。
十七、DockerFile构建镜像
1.Docker的引擎
Docker Engine(Docker引擎--发动机程序支持的核心组件)是Docker的核心部分,使用的是客户端---服务器(C/S)架构模式。其主要组成部分:
①、docker daemon:Docker的服务端组件,他是Docker架构中运行在后台的一个守护进程,可以接收并处理来自命令行接口及API接口的指令,然后进行相应的后台操作。
②、REST API:表示应用程序API接口,开发者通过该API接口可以与Docker的守护进程进行交互,从而指示后台进行相关操作。
③、docker CLI:表示Docker命令行接口,开发者可以在命令行中使用Docker相关指令与Docker守护进程进行交互,从而管理诸如image(镜像)、container(容器)、network(网络)和data volumes(数据卷)等实体。
2.Docker的底层容器运行原理:
①、客户端发送 docker pull tomcat 命令;
②、命令到达 Docker daemon(守护程序),守护进程首先检查本地是否有该 Tomcat 的镜像,如果没有,则从注册中心(仓库)拉取该镜像;
③、镜像拉取到本地后,客户端执行 docker run 命令,守护程序就会创建容器,启动应用。
Docker架构主要包括Client、Docker_HOST和Register三部分:
1. Client(客户端) docker CLIClient即Docker客户端,也就是上一小节Docker Engine中介绍的docker CLI。开发者通过这个客户端使用Docker的相关指令与Docker守护进程进行交互,从而进行Docker镜像的创建、拉取和运行等操作。
2. DOCKER_HOST(Docker主机)
DOCKER_HOST即Docker内部引擎运行的主机,主要指Docker daemon(Docker守护进程)。可以通过Docker守护进程与客户端还有Docker的镜像仓库Registry进行交互,从而管理Images(镜像)和Containers(容器)等。
3.Registry(注册中心)
Registry即Docker注册中心,实质就是Docker镜像仓库,默认使用的是Docker官方远程注册中心Docker Hub,也可以使用开发者搭建的本地仓库。Registry中包含了大量的镜像,这些镜像可以是官网基础镜像,也可以是其他开发者上传的镜像。
我们在实际使用 Docker 时,除了会涉及图中的 3 个主要部分外,还会涉及很多Docker Objects(Docker对象),例如Images(镜像)、Containers(容器)、Networks(网络)、Volumes (数据卷)、Plugins(插件)等。其中常用的两个对象Image和Containers的说明如下。
·Images(镜像)
Docker镜像就是一个只读的模板,包含了一些创建Docker容器的操作指令。通常情况下,一 个Docker镜像是基于另一个基础镜像创建的,并且新创建的镜像会额外包含一些功能配置。 例如:开发者可以依赖于一个 Ubuntu 的基础镜像创建一个新镜像,并可以在新镜像中安装 Apache等软件或其他应用程序。
·Containers(容器)
Docker 容器属于镜像的一个可运行实例(镜像与容器的关系其实与 Java中的类与对象相似),开发者可以通过API接口或者CLI命令行接口来创建、运行、停止、移动、删除一个容器,也可以将一个容器连接到一个或多个网络中,将数据存储与容器进行关联。
3、认识dockerfile
镜像概念
镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包组成。
镜像是分层结构,每一层称为一个Layer:
BaseImage: 包含基本的系统函数库、环境变量、文件系统等
Entrypoint: 入口,是镜像中应用启动的命令
其他:在BaseImage 基础上添加依赖、安装程序、完成整个应用的安装和配置
镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。
Dockerfile概念
Dockerfile使用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。
Dockerfile是自定义镜像的一套规则
Dockerfile由多条指令构成,Dockerfile中的每一条指令都会对应于Docker镜像中的每一层
Dockerfile每行支持一条指令,每条指令可携带多个参数,一条指令可以用&&方式,去写多条指令。
Dockerfile支持以“#”为开头的注释
FROM XXX/jdk:8MAINTAINER docker_userENV JAVA_HOME /usr/local/javaADD apache-tomcat-8.0.32.tar.gz /usr/local/RUN mv apache-tomcat-8.0.32 tomcat8EXPOSE 8080RUN chmod u+x /usr/local/tomcat8/bin/*.shCMD /usr/local/tomcat8/bin/catalina.sh start
4.Dockerfile 的基本结构分为4部分
- 基础镜像信息;
- 维护者信息;
- 镜像操作指令;
- 容器启动时执行指令
5.Dockerfile 指令
FROM
格式为 FROM <image> 或 FROM <image>:<tag>
Dockerfile 文件的第一条指令必须为 FROM 指令。
并且,如果在同一个 Dockerfile 中创建多个镜像时,
可以使用多个 FROM 指令(每个镜像一次);
如果from没有该镜像,则从镜像仓库中找
MAINTAINER
格式为 MAINTAINER <name>,指定维护者信息;
ENV
格式为 ENV <key> <value>,指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持;
ADD
格式为 ADD <src> <dest>;
复制指定的<src>到容器中的<dest>;
EXPOSE
格式为 EXPOSE <port> [<port>...]
告诉 Docker 服务端容器暴露的端口号,供互联系统使用,在启动容
器时需要通过 -p 映射端口,Docker 主机会自动分配一个端口转发到
指定的端口;
RUN
格式为 RUN <command>
RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行;
CMD
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。
如果指定了多条命令,只有最后一条会被执行。
如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
WORKDIR
作用:切换到镜像中的指定路径,设置工作目录
在 WORKDIR 中需要使用绝对路径,如果镜像中对应的路径不存在,会自动创建此目录
一般用 WORKDIR 来替代 切换目录进行操作的指令
RUN cd <path> && <do something>
WORKDIR 指令为 Dockerfile 中跟随它的任何 RUN、CMD、ENTRYPOINT、COPY、ADD 指令设置工作目录
如果 WORKDIR 不存在,即使它没有在任何后续 Dockerfile 指令中使用,它也会被创建。
ENTRYPOINT
Entrypoint的作用是,把整个container变成了一个可执行的文件,这样不能够通过替换CMD的方法来改变创建container的方式。但是可以通过参数传递的方法影响到container内部。
ENTRYPOINT 有两种格式:
ENTRYPOINT [“executable”, “param1”, “param2”] (exec 格式,首选)
ENTRYPOINT command param1 param2 (shell 格式)
exec 格式
docker run image 后面跟的命令行参数将会添加到 ENTRYPOINT 所有参数的最后,且会覆盖掉所有 CMD 命令中的参数。这将允许运行时传递参数给 ENTRYPOINT 命令,例如 docker run image -d 会将 -d 参数传给 ENTRYPOINT 命令 。ENTRYPOINT 命令可以通过 docker run --entrypoint 参数来覆盖 。
shell 格式
会忽略所有 CMD 命令的参数和 docker run 的命令行参数,ENTRYPOINT 要运行的命令会作为 /bin/sh -c 的子命令运行,而且 /bin/sh 不会传递信号,也就是说 ENTRYPOINT 要运行的命令不是 PID 为 1 的进程,且不会收到 Unix 信号,所以你要执行的命令不会收到 docker stop 发出的 SIGTERM 信号。
CMD 和 ENTRYPOINT 命令都定义了容器运行时运行命令。下面有几条规则:
Dockerfile 必须有一条 CMD 或 ENTRYPOINT 命令
如果容器作为可执行程序运行,需要指定 ENTRYPOINT 命令,
CMD 命令应该用来定义 ENTRYPOINT 命令的默认参数
十八、通过dockerfile文件自定义java镜像
构建三步骤
1、编写Dockerfile文件
2、docker build命令构建镜像
3、docker run 依镜像运行容器实例
Dockerfile执行流程
- docker 从基础镜像运行一个容器
- 执行一条 指令并对容器做出修改
- 执行类似docker commit的操作提交一个新的镜像层
- docker 再基于刚提交的镜像运行一个新容器
- 执行dockerfile中的下一条指令,直到所有的指令都执行完成
先下载对应的资料:
链接: https://pan.baidu.com/s/12XXUSOamR1uphXa-pOZl_Q 提取码: h744
镜像制作成功,启动镜像
docker run -d --name dd1 -p 8080:8080 docker-demo 启动成功
docker logs -f dd1 查查容器dd1的启动日志
http://192.168.32.16:8081/hello/count
十九、镜像删除
docker rmi image_id 这里的image_id可以根据docker images 查看
docker rm image_id 删除单个
docekr rmi image_id1/容器名1 image_id2/容器名2
docker rmi -f image_id 强制删除镜像
参考:docker入门---最全笔记_docker学习笔记-CSDN博客
相关文章:

docker从入门到熟悉
一、什么是docker? Docker是一个用于开发,交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助Docker,您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付…...
国家开放大学《消费者权益保护法》形考任务答案
答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 消费者田女士买回一盒饼干价格20元,准备给小孩吃…...

element-ui card 组件源码分享
今日简单分享 card 组件源码,主要从以下两个方面: 一、card 组件页面结构 二、card 组件属性 2.1 header 属性,设置 header,也可以通过 slot#header 传入 DOM,类型 string,无默认值。 组件使用部分&#…...

MPLS基本转发过程,隧道特性、对TTL的处理、BGP路由黑洞
MPLS基本转发过程,隧道特性 标签操作类型包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作。 倒数第二跳弹出特性PHP(Penultimate Hop Popp…...
ubuntu16.04安装vscode那些事
1)安装deb包。 用ftp传输到ubuntu后,进入ftp的目录下, sudo dpkg -i code_1.32.3-1552606978_amd64.deb 安装完成后,进入/usr/share/applications/,找到vscode的图标,右键, copy to ,选择deskt…...

分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别
分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别分类效果基本介绍模型描述程序…...
不重复数字
map就感觉很舒服 题目描述 给定 n 个数,要求把其中重复的去掉,只保留第一次出现的数。 输入格式 本题有多组数据。 第一行一个整数 T,表示数据组数。 对于每组数据: 第一行一个整数 n。 第二行 n 个数,表示给定的数。…...
C# 访问修饰符 默认
命名空间下的元素:类(Class)中的成员:结构(Struct)中的成员:接口(Interface)中的成员:接口(Interface)本身:枚举ÿ…...

使用向量检索和rerank 在RAG数据集上实验评估hit_rate和mrr
文章目录 背景简介代码实现自定义检索器向量检索实验向量检索和rerank 实验 代码开源 背景 在前面部分 大模型生成RAG评估数据集并计算hit_rate 和 mrr 介绍了使用大模型生成RAG评估数据集与评估; 在 上文 使用到了BM25 关键词检索器。接下来,想利用向…...

Java栈和队列的实现
目录 一.栈(Stack) 1.1栈的概念 1.2栈的实现及模拟 二.队列(Queue) 2.1队列的概念 2.2队列的实现及模拟 2.3循环队列 2.4双端队列(Deque) 一.栈(Stack) 1.1栈的概念 栈:一种特殊的线性表,其 只允许在固定的一端进行插入和删除元素操作…...

我的C++奇迹之旅:内联函数和auto关键推导和指针空值
文章目录 📝内联函数🌠 查看内联函数inline方式🌉内联函数特性🌉面试题 🌠auto关键字(C11)🌠 auto的使用细则🌉auto不能推导的场景 🌠基于范围的for循环(C11)🌠范围for的…...

Redis主从集群-主从复制(通俗易懂)
为什么要搭建主从集群? 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,可以搭建主从集群,实现读写分离。一般都是一主多从,主节点负责写数据,从节点负责读数据,主节点写入数据…...

【C++算法竞赛 · 图论】图论基础
前言 图论基础 图的相关概念 图的定义 图的分类 按数量分类: 按边的类型分类: 边权 简单图 度 路径 连通 无向图 有向图 图的存储 方法概述 代码 复杂度 前言 图论(Graph theory),是 OI 中的一样很大…...

Java解析实体类的属性和属性注释
前言 获取某个类的属性(字段)是我们经常都会碰到的,通常我们是通过反射来获取的。 但是有些特殊情况下,我们不仅要获取类的属性,还需要获取属性注释。这种情况下,我们只能通过注解去获取注释。可以自己定…...

机器学习KNN最邻近分类算法
文章目录 1、KNN算法简介2、KNN算法实现2.1、调用scikit-learn库中KNN算法 3、使用scikit-learn库生成数据集3.1、自定义函数划分数据集3.2、使用scikit-learn库划分数据集 4、使用scikit-learn库对鸢尾花数据集进行分类5、什么是超参数5.1、实现寻找超参数5.2、使用scikit-lea…...
分享一个Python爬虫入门实例(有源码,学习使用)
一、爬虫基础知识 Python爬虫是一种使用Python编程语言实现的自动化获取网页数据的技术。它广泛应用于数据采集、数据分析、网络监测等领域。以下是对Python爬虫的详细介绍: 架构和组成:下载器:负责根据指定的URL下载网页内容,常用的库有Requests和urllib。解析器:用于解…...

算法:树形dp(树状dp)
文章目录 一、树形DP的概念1.基本概念2.解题步骤3.树形DP数据结构 二、典型例题1.LeetCode:337. 打家劫舍 III1.1、定义状态转移方程1.2、参考代码 2.ACWing:285. 没有上司的舞会1.1、定义状态转移方程1.2、拓扑排序参考代码1.3、dfs后序遍历参考代码 一…...

SQL语句学习+牛客基础39SQL
什么是SQL? SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL 的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。 SQL语法 数据库表 一个…...
竞赛常考的知识点大总结(五)动态规划
DP问题的性质 动态规划(Dynamic Programming,DP)是指在解决动态规划问题时所依赖的一些基本特征和规律。动态规划是一种将复杂问题分解为更小子问题来解决的方法,它适用于具有重叠子问题和最优子结构性质的问题。动态规划问题通常…...

如何在 Mac 上恢复已删除的数据
如果您丢失了 Mac 上的数据,请不要绝望。恢复数据比您想象的要容易,并且有很多方法可以尝试。 在 Mac 上遭受数据丢失是每个人都认为永远不会发生在他们身上的事情之一......直到它发生。不过,请不要担心,因为您可以通过多种方法…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

Linux应用开发之网络套接字编程(实例篇)
服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...