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

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 update

sudo 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 update

sudo 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 CLI

Client即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部分

  1. 基础镜像信息;
  2. 维护者信息;
  3. 镜像操作指令;
  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执行流程
  1. docker 从基础镜像运行一个容器
  2. 执行一条 指令并对容器做出修改
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. docker 再基于刚提交的镜像运行一个新容器
  5. 执行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&#xff1f; Docker是一个用于开发&#xff0c;交付和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分开&#xff0c;从而可以快速交付软件。借助Docker&#xff0c;您可以以与管理应用程序相同的方式来管理基础架构。通过利用Docker的快速交付…...

国家开放大学《消费者权益保护法》形考任务答案

答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 答案&#xff1a;更多答案&#xff0c;请关注【电大搜题】微信公众号 消费者田女士买回一盒饼干价格20元&#xff0c;准备给小孩吃…...

element-ui card 组件源码分享

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

MPLS基本转发过程,隧道特性、对TTL的处理、BGP路由黑洞

MPLS基本转发过程&#xff0c;隧道特性 标签操作类型包括标签压入&#xff08;Push&#xff09;、标签交换&#xff08;Swap&#xff09;和标签弹出&#xff08;Pop&#xff09;&#xff0c;它们是标签转发的基本动作。 倒数第二跳弹出特性PHP&#xff08;Penultimate Hop Popp…...

ubuntu16.04安装vscode那些事

1)安装deb包。 用ftp传输到ubuntu后&#xff0c;进入ftp的目录下&#xff0c; sudo dpkg -i code_1.32.3-1552606978_amd64.deb 安装完成后&#xff0c;进入/usr/share/applications/&#xff0c;找到vscode的图标&#xff0c;右键&#xff0c; copy to &#xff0c;选择deskt…...

分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别

分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别 目录 分类预测 | Matlab实现TCN-BiGRU-Mutilhead-Attention时间卷积双向门控循环单元多头注意力机制多特征分类预测/故障识别分类效果基本介绍模型描述程序…...

不重复数字

map就感觉很舒服 题目描述 给定 n 个数&#xff0c;要求把其中重复的去掉&#xff0c;只保留第一次出现的数。 输入格式 本题有多组数据。 第一行一个整数 T&#xff0c;表示数据组数。 对于每组数据&#xff1a; 第一行一个整数 n。 第二行 n 个数&#xff0c;表示给定的数。…...

C# 访问修饰符 默认

命名空间下的元素&#xff1a;类&#xff08;Class&#xff09;中的成员&#xff1a;结构&#xff08;Struct&#xff09;中的成员&#xff1a;接口&#xff08;Interface&#xff09;中的成员&#xff1a;接口&#xff08;Interface&#xff09;本身&#xff1a;枚举&#xff…...

使用向量检索和rerank 在RAG数据集上实验评估hit_rate和mrr

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

Java栈和队列的实现

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

我的C++奇迹之旅:内联函数和auto关键推导和指针空值

文章目录 &#x1f4dd;内联函数&#x1f320; 查看内联函数inline方式&#x1f309;内联函数特性&#x1f309;面试题 &#x1f320;auto关键字(C11)&#x1f320; auto的使用细则&#x1f309;auto不能推导的场景 &#x1f320;基于范围的for循环(C11)&#x1f320;范围for的…...

Redis主从集群-主从复制(通俗易懂)

为什么要搭建主从集群&#xff1f; 单节点Redis的并发能力是有上限的&#xff0c;要进一步提高Redis的并发能力&#xff0c;可以搭建主从集群&#xff0c;实现读写分离。一般都是一主多从&#xff0c;主节点负责写数据&#xff0c;从节点负责读数据&#xff0c;主节点写入数据…...

【C++算法竞赛 · 图论】图论基础

前言 图论基础 图的相关概念 图的定义 图的分类 按数量分类&#xff1a; 按边的类型分类&#xff1a; 边权 简单图 度 路径 连通 无向图 有向图 图的存储 方法概述 代码 复杂度 前言 图论&#xff08;Graph theory&#xff09;&#xff0c;是 OI 中的一样很大…...

Java解析实体类的属性和属性注释

前言 获取某个类的属性&#xff08;字段&#xff09;是我们经常都会碰到的&#xff0c;通常我们是通过反射来获取的。 但是有些特殊情况下&#xff0c;我们不仅要获取类的属性&#xff0c;还需要获取属性注释。这种情况下&#xff0c;我们只能通过注解去获取注释。可以自己定…...

机器学习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&#xff1a;337. 打家劫舍 III1.1、定义状态转移方程1.2、参考代码 2.ACWing&#xff1a;285. 没有上司的舞会1.1、定义状态转移方程1.2、拓扑排序参考代码1.3、dfs后序遍历参考代码 一…...

SQL语句学习+牛客基础39SQL

什么是SQL&#xff1f; SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统&#xff08;RDBMS&#xff09;。 SQL 的范围包括数据插入、查询、更新和删除&#xff0c;数据库模式创建和修改&#xff0c;以及数据访问控制。 SQL语法 数据库表 一个…...

竞赛常考的知识点大总结(五)动态规划

DP问题的性质 动态规划&#xff08;Dynamic Programming&#xff0c;DP&#xff09;是指在解决动态规划问题时所依赖的一些基本特征和规律。动态规划是一种将复杂问题分解为更小子问题来解决的方法&#xff0c;它适用于具有重叠子问题和最优子结构性质的问题。动态规划问题通常…...

如何在 Mac 上恢复已删除的数据

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

Java笔试题总结

HashSet子类依靠()方法区分重复元素。 A toString(),equals() B clone(),equals() C hashCode(),equals() D getClass(),clone() 答案:C 解析: 先调用对象的hashcode方法将对象映射为数组下标,再通过equals来判断元素内容是否相同 以下程序执行的结果是&#xff1a; class X{…...

github本地仓库push到远程仓库

1.从远程仓库clone到本地 2.生成SSH秘钥&#xff0c;为push做准备 在Ubuntu命令行输入一下内容 [rootlocalhost ~]# ssh-keygen -t rsa < 建立密钥对&#xff0c;-t代表类型&#xff0c;有RSA和DSA两种 Generating public/private rsa key pair. Enter file in whi…...

Error: TF_DENORMALIZED_QUATERNION: Ignoring transform forchild_frame_id

问题 运行程序出现&#xff1a; Error: TF_DENORMALIZED_QUATERNION: Ignoring transform for child_frame_id “odom” from authority “unknown_publisher” because of an invalid quaternion in the transform (0.0 0.0 0.0 0.707) 主要是四元数没有归一化 Eigen::Quatern…...

Linux从入门到精通 --- 2.基本命令入门

文章目录 第二章&#xff1a;2.1 Linux的目录结构2.1.1 路径描述方式 2.2 Linux命令入门2.2.1 Linux命令基础格式2.2.2 ls命令2.2.3 ls命令的参数和选项2.2.4 ls命令选项的组合使用 2.3 目录切换相关命令2.3.1 cd切换工作目录2.3.2 pwd查看当前工作目录2.4 相对路径、绝对路径和…...

Redis常用命令补充和持久化

一、redis 多数据库常用命令 1.1 多数据库间切换 1.2 多数据库间移动数据 1.3 清除数据库内数据 1.4 设置密码 1.4.1 使用config set requirepass yourpassword命令设置密码 1.4.2 使用config get requirepass命令查看密码 二、redis高可用 2.1 redis 持久化 2.1.1 持…...

【记录】海康相机(SDK)二次开发时的错误码

海康相机&#xff08;SDK&#xff09;二次开发时的错误码 在进行海康sdk二次开发的时候&#xff0c;经常碰到各种错误&#xff0c;遂结合官方文档和广大网友的一些经验&#xff0c;把这些错误码记录一下&#xff0c;方便查找。笔者使用的SDK版本是HCNetSDKV6.1.9.4。 错误类型…...

端盒日记Day02

JS 本本本本本地存储 localStorage 作用&#xff1a;可以将数据永久存储在本地&#xff08;用户电脑&#xff09;&#xff0c;除非手动删除&#xff0c;否则关闭页面也会存在 特性&#xff1a;a.可多窗口&#xff08;页面&#xff09;共享&#xff08;同一浏览器可以共享&a…...

考研高数(平面图形的面积,旋转体的体积)

1.平面图形的面积 纠正&#xff1a;参数方程求面积 2.旋转体的体积&#xff08;做题时&#xff0c;若以x为自变量不好计算&#xff0c;可以求反函数&#xff0c;y为自变量进行计算&#xff09;...

选择企业邮箱,扬帆迈向商务新纪元!

企业邮箱和个人邮箱不同&#xff0c;它的邮箱后缀是企业自己的域名。企业邮箱供应商一般都提供手机app、桌面端、web浏览器访问等邮箱使用途径。那么什么是企业邮箱&#xff1f;如何选择合适的企业邮箱&#xff1f;好用的企业邮箱应具备无缝迁移、协作、多邮箱管理等功能。 企…...

2024.3.25力扣每日一题——零钱兑换2

2024.3.25 题目来源我的题解方法一 动态规划 题目来源 力扣每日一题&#xff1b;题序&#xff1a;518 我的题解 方法一 动态规划 给定总金额 amount 和数组 coins&#xff0c;要求计算金额之和等于 amount 的硬币组合数。其中&#xff0c;coins的每个元素可以选取多次&#…...

学而思最早是做网站的吗/semi认证

《深度学习与目标检测 YOLOv5》 flyfish 基础 深度学习基础 - 向量 深度学习基础 - 累加符号和连乘符号 深度学习基础 - 最大似然估计 深度学习基础 - 朴素贝叶斯 深度学习基础 - 链式法则 深度学习基础 - 神经元 深度学习基础 - 知识脉络 深度学习基础 - 从泰勒级数到直线 …...

wordpress做多语言版/网站外链平台

GIS概念 GIS的全称是地理信息系统&#xff0c;(Geographic Information System ,GIS) 地理信息概念 地理信息指与研究对象的空间地理分布有关的信息。它表示地理信息系统诸要素的数量、质量、分布特征、相互联系和变化规律的图、文、声、像等的总称。 特点&#xff1a;地域…...

做网站想要个计算器功能/搜狗网址大全

iOS 7后&#xff0c;实际上APP拥有四种后台模式&#xff0c;无论是哪一种后台机制&#xff0c;均需要利用苹果给予的相应后台接口实现。新系统中&#xff0c;开发者可以灵活利用多种后台接口(API)实现更加智能的应用操作。 iOS 后台模式 无后台仅推送墓碑式智能调度后台真后台无…...

可以做外贸的网站有哪些/学大教育培训机构怎么样

第1章基础准备及入门习题1及解答1数字1.5e2&#xff0c;1.5e3中的哪个与1500相同吗&#xff1f;〖解答〗1.5e32请指出如下5个变量名中&#xff0c;哪些是合法的&#xff1f;abcd-2xyz_33chan a变量ABCDefgh〖解答〗2、5是合法的。3在MATLAB环境中&#xff0c;比1大的最小数是多…...

怎么用网站视频做自媒体/怎么网上宣传自己的产品

中央各大会议20天4次部署“新基建”&#xff01;首次重点提及数据中心&#xff0c;两提5G。会议指出&#xff0c;要加快5G网络、数据中心等新型基础设施建设进度&#xff0c;并注重调动民间投资积极性&#xff0c;5年3.5万亿元投资在路上&#xff0c;行业前景广阔。 &#xff0…...

网站地图怎么生成/做搜索引擎优化的企业

每天1小时&#xff0c;算12小时&#xff0c;剩3009小时...