云原生(二)、Docker基础

Docker

Docker 是一种开源的容器化平台,用于开发、部署和运行应用程序。它允许开发者将应用程序及其所有依赖项打包到一个可移植的容器中,这个容器可以在任何支持 Docker 的环境中运行,无论是开发人员的个人笔记本电脑、测试环境、生产服务器还是云环境。

以下是 Docker 的一些主要特性和概念:

  1. 容器化技术: Docker 使用容器化技术,通过隔离进程和资源来打包应用程序及其依赖项。每个容器都是一个独立的运行环境,与宿主系统隔离,但与其他容器共享主机内核。这使得容器能够在各种环境中以一致的方式运行。

  2. 轻量级: 容器相对于传统的虚拟机来说更为轻量级,因为它们共享主机操作系统的内核,无需启动完整的操作系统实例。这使得容器的启动速度更快,占用更少的系统资源。

  3. 可移植性: Docker 容器可以在任何支持 Docker 的环境中运行,无论是在开发者的本地开发环境、测试环境还是生产服务器,以及公有云或私有云环境。

  4. 易于部署: Docker 容器可以通过 Docker 镜像进行部署。镜像是一个只读的模板,包含了运行容器所需的所有内容,包括代码、运行时环境、库、环境变量等。开发者可以轻松地创建、共享和更新镜像,使得应用程序的部署变得简单和可重复。

  5. 可扩展性: Docker 提供了丰富的 API 和生态系统,使得开发者可以扩展和定制 Docker 功能,满足特定的需求。

总的来说,Docker 提供了一种简单而强大的方式来打包、交付和运行应用程序,使得开发者能够更快速、更可靠地构建和部署软件。

1、安装Docker

1、官网安装参考手册:https://docs.docker.com/engine/install/centos/

2、保证操作系统环境符合要求

3、卸载旧的docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

4、国内服务器安装需要配置仓库地址

sudo yum install -y yum-utils  
# 外网地址 卡
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#国内镜像
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

5、安装docker

#更新yum索引
yum makecache  fast
#安装docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

6、启动与测试

sudo systemctl start docker

sudo docker run hello-world

7、卸载

systemctl stop docker

sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

2、镜像源配置

服务器在国内的,需要配置镜像源,提升下载速度。在服务器所在的云平台中搜索"容器镜像服务"。找到其中的镜像加速器。根据提示设置加速镜像源。

以华为云为例:(每个人加速器的地址不同)

请添加图片描述

执行docker info,当Registry Mirrors字段的地址为加速器的地址时,说明加速器已经配置成功。

[root@hcss-ecs-8f46 ~]# docker info
Client: Docker Engine - Community
 Version:    25.0.4
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.13.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.24.7
    Path:     /usr/libexec/docker/cli-plugins/docker-compose
 。。。
 Registry Mirrors:
  https://xxxxxxxxxxxxxxxxxxxx.mirror.swr.myhuaweicloud.com/
 Live Restore Enabled: false

3、Hello-World 干了什么

使用 “sudo docker run hello-world” 完成了什么事?

1、寻找镜像(在本地仓库寻找镜像,存在则通过镜像启动容器,不存在则去dockerhub仓库寻找并下载镜像)

2、下载镜像(存在则下载到本地,不存在则超时报错 )

Unable to find image 'asfiuhfiasufhawfasgijig:latest' locally
docker: Error response from daemon: pull access denied for asfiuhfiasufhawfasgijig, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.

3、仓库-镜像-容器

4、查看本地存在的镜像

[root@hcss-ecs-8f46 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    d2c94e258dcb   10 months ago   13.3kB

请添加图片描述

4、Docker命令

docker version
docker info #查看docker详细信息
1、帮助命令
docker --help
Common Commands:
  run         Create and run a new container from an image
  exec        Execute a command in a running container
  ps          List containers
  build       Build an image from a Dockerfile
  pull        Download an image from a registry
  push        Upload an image to a registry
  images      List images
  login       Log in to a registry
  logout      Log out from a registry
  search      Search Docker Hub for images
  version     Show the Docker version information
  info        Display system-wide information

Management Commands:
  builder     Manage builds
  buildx*     Docker Buildx (Docker Inc., v0.13.0)
  compose*    Docker Compose (Docker Inc., v2.24.7)
  container   Manage containers
  context     Manage contexts
  image       Manage images
  manifest    Manage Docker image manifests and manifest lists
  network     Manage networks
  plugin      Manage plugins
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes

Swarm Commands:
  swarm       Manage Swarm

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

Global Options:
      --config string      Location of client config files (default "/root/.docker")
  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with
                           "docker context use")
  -D, --debug              Enable debug mode
  -H, --host list          Daemon socket to connect to
  -l, --log-level string   Set the logging level ("debug", "info", "warn", "error", "fatal") (default "info")
      --tls                Use TLS; implied by --tlsverify
      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")
      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")
      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")
      --tlsverify          Use TLS and verify the remote
  -v, --version            Print version information and quit
2、镜像命令

docker images 展示列表

  • docker images -a 展示所有镜像
  • docker images -q 只展示镜像的id
  • docker images -aq 展示所有镜像的id

docker search 搜索镜像

  • docker search 镜像名称
  • docker search 镜像名称 --filter=Stars=50 收藏数大于50的镜像

docker pull 拉取镜像

  • docker pull 镜像名称:版本号 不带版本号则拉取最新版本

docker rmi 删除镜像

  • docker rmi 镜像名称/id(不一定输全,唯一即可)
  • docker rmi -f 镜像名称 强制删除
  • docker rmi -f $(docker images -aq) 删除所有镜像
3、容器命令

**docker run -itd 镜像名 ** 运行并在后台执行一个镜像

  • -d 后台启动
  • -i 让容器以交互的方式启动
  • -t 给容器分配一个终端使用
  • -p 指定端口映射
  • -P 随机暴露一个端口

查看容器命令

  • docker ps 查看运行的容器
  • docker ps -a 查看所有容器
  • docker ps -q 只查看id
# 运行并进入一个centos
docker run -itd centos

#进入容器内部后。exit退出容器,会停止运行该容器,使用Ctrl+P+Q,不会停止运行容器


#如果容器没有前台程序,-d后台启动后,仍旧无法保持容器启动状态
docker run -d centos

启动停止删除容器命令

  • docker start 容器名称/id 启动
  • docker restart 容器名称/id 重启
  • docker stop 容器名称/id 停止
  • docker kill 容器名称/id 强制停止
  • docker rm 容器名称/id 删除
  • docker rm -f 容器名称/id 强制删除
  • docker rmi -f $(docker ps -aq) 强制删除所有容器
4、其他常用命令

日志文件

  • docker logs
  • docker logs -tf 容器名称/id t时间戳,f打印最新日志
root@hcss-ecs-8f46 ~]# docker run -d centos /bin/sh -c "while true; do echo dayinlog;sleep 1;done"
8eb953c156567ebb444c61db8549e41abc1b655c29789df7cf0bc27c1eefd1fb
[root@hcss-ecs-8f46 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
8eb953c15656   centos    "/bin/sh -c 'while t…"   3 seconds ago    Up 3 seconds              infallible_mendel
8cc23452f957   centos    "/bin/bash"              14 minutes ago   Up 14 minutes             relaxed_wilbur
[root@hcss-ecs-8f46 ~]# docker logs -tf --tail 10 8eb953c15656
2024-03-13T11:41:36.417181845Z dayinlog
2024-03-13T11:41:37.418470622Z dayinlog
2024-03-13T11:41:38.420130400Z dayinlog
2024-03-13T11:41:39.421476353Z dayinlog
2024-03-13T11:41:40.423128221Z dayinlog
2024-03-13T11:41:41.424750606Z dayinlog
2024-03-13T11:41:42.426067446Z dayinlog
2024-03-13T11:41:43.427389098Z dayinlog
2024-03-13T11:41:44.428763016Z dayinlog

进程命令

  • docker top 容器名称/id

产看容器源数据 (经常使用)

能看到容器的镜像、日志、配置等详细数据

  • docker inspect 容器名称/id

进入容器

  • docker exec -it 容器名称/id /bin/bash

  • docker attach 容器名称/id 进入容器正在执行的终端,

    如果容器在执行死循环,则退不出来(卡死),例:

docker run -d centos /bin/sh -c "while true; do echo dayinlog;sleep 1;done"

拷贝

docker cp 容器id:/容器路径 宿主机路径

  • docker cp id:/home/test.go /root
5.一个简单的应用示例

启动nginx,并通过服务器ip:端口号的形式访问nginx初始页面

docker run -d --name my-Nginx -p 3500:80 nginx

请添加图片描述

#进入容器
docker exec -it my-Nginx /bin/bash

5.docker可视化界面

开放给公网的9000端口。docker自集成的一个可视化界面

[root@hcss-ecs-8f46 ~]# docker run -p 9000:9000 -p 8000:8000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /mydata/portainer/data:/data -d portainer/portainer:linux-amd64-2.0.1

# 安装并运行
Unable to find image 'portainer/portainer:linux-amd64-2.0.1' locally
linux-amd64-2.0.1: Pulling from portainer/portainer
b890dbc4eb27: Pull complete 
81378af8dad0: Pull complete 
Digest: sha256:77917f339201db91aa25e9498bc130aaf46faa69d16c78088d422df85ce114b1
Status: Downloaded newer image for portainer/portainer:linux-amd64-2.0.1
ae910af73e4f3af40568812a09cbe1af316dd9db3178849c31ba0a4a42cf2745
[root@hcss-ecs-8f46 ~]# 

6.docker镜像底层分析

Docker 镜像加载涉及到一系列步骤和概念。下面是一个简要的概述:

  1. Docker 镜像是什么?
    Docker 镜像是一个只读的模板,它包含了创建 Docker 容器所需的所有文件和元数据。镜像可以包含操作系统、应用程序和相关依赖。

  2. 镜像的存储和分发
    Docker 镜像存储在 Docker Registry 中,比如 Docker Hub。当你使用 docker pull 命令时,Docker 会从 Registry 中下载镜像到本地。这个过程通常是通过 HTTP 或 HTTPS 进行的。

  3. 镜像加载
    当你使用 docker run 命令来启动一个容器时,如果指定的镜像在本地不存在,Docker 会自动从 Registry 下载该镜像。然后,Docker 将这个镜像加载到本地的文件系统中。

  4. 联合文件系统 (Union File System)
    Docker 使用联合文件系统来构建镜像。这意味着一个镜像可以由多个文件系统层组成,每个文件系统层都可以看作是一个增量改变。当你启动一个容器时,Docker 会将这些文件系统层叠加在一起,使其看起来像一个完整的文件系统。

  5. 容器启动
    一旦镜像加载到本地,Docker 就可以使用这个镜像来创建和运行容器。容器是镜像的运行实例,它可以被启动、停止、删除等操作。

docker inspect centos

#能看到镜像分片下载的片段。每一个片段可以复用,当其他镜像使用该片段时,不会重复下载
 "RootFS": {
  "Type": "layers",
  "Layers": [
      "sha256:9eb82f04c782ef3f5ca25911e60d75e441ce0fe82e49f0dbf02c81a3161d1300",
      "sha256:6427e36e38734cc5f8172a32837f1a7089fb3e3ae8b5c12f6882cb6466d6b482",
      "sha256:1a4bac3ca47c45b2341b866d4403690c45c4a87e8cb897afda5dd6be52f37eda",
      "sha256:7c06655789f2bd431a94e2cf7d363afbe3497ba18ca4565dc772ba82ade0cb74",
      "sha256:411bb8845b78ec534f51535976d2a0c055c892e04d7f4fa67924c3a00a291f9e",
      "sha256:902a5f810181e3b8b2f7c5e39013d1e4acceb917f1f778ac199d495abba1e9f3",
      "sha256:52d9c23a9a201b21e95fed351c1ba1418a54ba1bd2ba26f5238d8bd8f38fd328",
      "sha256:9ffac285cc4fa861d7843807b42d509e216a8a107f694c4ac68f2a2d670332c7",
      "sha256:5ba1eb4d2ba5041fcc90b141f7942ff4e59570dddc8dc1786f2fe32d7d19c41d",
      "sha256:9ba725af2ff003dfa3fa052c2a9d8580f46b78bb603986d3428037c328811a3f",
      "sha256:d5455ab92c3f4a8a72d62f8ae5557440a8e5d09c6580e45f0f8f2747bb79c07d",
      "sha256:7c77abddd30092838eb397a4c64e73ee743eca8bf2412c9914e8ad2e6191bed9"
  ]
},

7.容器数据卷

Docker 容器数据卷是用于在容器和宿主机之间共享持久化数据的机制。这个概念最初在 Docker 0.7 版本中引入。

数据卷的主要作用是允许容器之间或容器与宿主机之间共享数据,并且这些数据可以在容器被销毁后仍然保留。数据卷可以用于存储应用程序的配置、日志、数据库文件等等。使用数据卷的优势包括数据的持久化、容器之间的数据共享、以及方便地对数据进行备份和恢复。

在 Docker 中,数据卷可以通过以下几种方式创建:

  1. 使用 -v 参数:可以在 docker run 命令中使用 -v 参数来创建数据卷,并将宿主机上的目录或文件挂载到容器内部的指定路径上。例如:docker run -v /host/path:/container/path ...

  2. 使用 --mount 参数:从 Docker 1.13 版本开始,推荐使用 --mount 参数来创建数据卷。这个参数提供了更加灵活的选项,可以指定数据卷的类型、读写权限等。例如:docker run --mount type=bind,source=/host/path,target=/container/path ...

  3. Dockerfile 中声明:在 Dockerfile 中使用 VOLUME 命令来声明数据卷。这样在容器运行时,Docker 将自动创建对应的数据卷。例如:

    FROM image:tag
    VOLUME /container/path
    

无论采用哪种方式,一旦数据卷被创建,容器内的数据变动将会直接反映到宿主机上,并且即使容器被删除,数据卷中的数据也会保留下来,直到手动删除数据卷为止。

# 将本机/home/ceshi 挂在至容器内的/root下
docker run -it -v /home/ceshi:/root centos /bin/bash

#在本机与容器中各自新建文件,会发现容器内外都同时生成该文件
touch test.go

#docker rm -f centos 删除容器后,外部文件仍然存在
1、匿名挂载与具名挂载

在 Docker 中,有两种主要的数据卷挂载方式:匿名挂载和具名挂载。

  1. 匿名挂载

    • 匿名挂载是通过 -v--volume 参数或者 --mount 参数而不指定目标路径来创建的挂载。例如:docker run -v /host/path ...
    • 在匿名挂载中,Docker 会自动生成一个随机的目录,并将它挂载到容器内指定的路径上。这样的挂载方式对用户来说是透明的,用户无需关心实际挂载的目录是什么。
    • 匿名挂载对于临时存储数据或者不关心数据存储位置的场景非常有用。
  2. 具名挂载

    • 具名挂载是通过 -v--volume 参数或者 --mount 参数来指定宿主机上的目录与容器内部的目录进行挂载的方式。例如:docker run -v /host/path:/container/path ...
    • 具名挂载中,用户需要明确指定宿主机上的路径和容器内的路径,这样就可以将宿主机上的目录挂载到容器内部。这样的挂载方式更加灵活,可以控制数据的存储位置和访问权限。
    • 具名挂载适用于需要持久化存储数据或者对数据存储位置有特定要求的场景。
docker volume inspect 容器名称/id
2、数据卷容器

匿名挂载数据卷时,如果直接启动两个相同的容器,容器内的数据挂载是不互通的。即容器1挂载完成后。容器2挂载相同目录的数据卷。容器1中挂载的数据变化后。容器2无变化。

  • 容器卷继承 --volumes-from
#在多个相同的容器中,如果想要共享数据,使用数据卷容器,将容器作为一个父数据卷
#其他容器来挂载到父卷下,就可以实现共享来
docker run -it --name docker02 --volumes-from docker01 my/centos

8.DockerFile

dockerfile是用来构Docker镜像的构建文件,是由一系列命令和参数构建的脚本文件。

构建步骤:

  • 编写dockerfile文件
  • Docker build 构建镜像
  • docker run 运行容器
DOckerFile 指令
FROM        # 是基于哪个镜像的基础镜像,当前新镜像
MAINTAINER	# 镜像维护者的姓名混合邮箱地址
RUN					# 容器构建时需要运行的命
EXPOSE			# 当前容器对外保留出的端口
WORKDIR			# 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV					# 用来在构建镜像过程中设置环境变量
ADD					# 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY				# 类似ADD,拷贝文件和目录到镜像中!
VOLUME			# 容器数据卷,用于数据保存和持久化工作
CMD					# 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效
ENTRYPOINT	# 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD			# 当构建一个被继承的DockrFi1e时运行命令,父镜像在被子镜像继承后,父镜像ONBUILD被触发
DockerFile构建过程

基础知识:
1、每条保留字指令都必须为大写字母且后面要跟随至少一个参数

2、指令按照从上到下,顺序执行

3、# 表示注释

4、每条指令都会创建一个新的镜像层,并对镜像进行提交

流程:
1、docker从基础镜像运行一个容器

2、执行一条指令并对容器做出修改

3、执行类似 docker commit 的操作提交一个新的镜像层

4、Docker再基于刚提交的镜像运行一个新容器

5、执行dockerfile中的下一条指令,直到所有指令执行完成

9.简单的实践示例,发行自己版本的centos

Docker Hub 中99% 的镜像都是通过在base镜像(Scratch)中安装和配置需要的软件构建出来的

Scratch镜像很赞,它简洁、小巧而且快速,它没有bug、安全漏洞、延缓的代码或技术债务。除了被Docker添加了metadata之外,它

基本上是空的。

我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像。优点是我们不用从头开始构建,节省了很多工

作量,但付出的代价是需要下载很大的镜像包。

如果我们的需求是 在构建一个符合我们实际业务需求的Docker镜像的前提下,确保镜像尺寸尽可能的小,应该怎么做呢?

思路是使用空镜像scratch,可以说是真正的从零干始构建属于自己的镜像

创建dockerfile文件
FROM centos
# 作者信息
MAINTAINER MYNAME<MYEMAIL@email.com>
#设置一个路径变量
ENV MYPATH /usr/local
#工作地址
WORKDIR $MYPATH


#在基础的centos上,添加自己的一些工具
RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "---------end-------"
CMD /bin/bash
构建镜像

最后一个.代表全部执行

docker build -f dockerfile-mycentos -t mycentos:1.0 .

请添加图片描述

报错centos8中镜像仓库中appstream不存在。替换仓库源,成功构建镜像

FROM centos
# 作者信息
MAINTAINER MYNAME<MYEMAIL@email.com>
#设置一个路径变量
ENV MYPATH /usr/local
#工作地址
WORKDIR $MYPATH

#解决centos8的问题,替换镜像源
RUN cd /etc/yum.repos.d/
RUN sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN yum makecache
RUN yum update -y


#在基础的centos上,添加自己的一些工具
RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "---------end-------"
CMD /bin/bash

请添加图片描述

docker history 可以查看镜像的变更历史

镜像发布

公用仓库 dockerhub https://hub.docker.com/

docekr login -u 用户名  -p  密码
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

#登录成功

#上传镜像需要打标签
docker tag 8732db9fe584 bukel/mycentos:1.0
docker push bukel/mycentos:1.0

#结束后,向全世界共享了你的镜像

请添加图片描述

镜像本地打包与加载
docker save
docker load

总结

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Docker使用(三)Docker底层分析

Docker使用(三)Docker底层分析 四、底层分析 1、Docker镜像原理 1.1 commit镜像 docker commit 提交容器成为一个新的副本 # 命令和git原理类似 docker commit -m“提交的描述信息” -a“作者” 容器id 目标镜像名:[TAG] 实操&#xff1a; # 1、启动一个默认tomcat # …

【目标检测-数据集准备】DIOR转为yolo训练所需格式

【目标检测】DIOR遥感影像数据集&#xff0c;转为yolo系列模型训练所需格式。 标签文件位于Annotations下&#xff0c;格式为xml&#xff0c;yolo系列模型训练所需格式为txt&#xff0c;格式为 class_id x_center,y_center,w,h其中&#xff0c;train&#xff0c;text&#xff…

数据结构 之 队列(Queue)

​​​​​​​ &#x1f389;欢迎大家观看AUGENSTERN_dc的文章(o゜▽゜)o☆✨✨ &#x1f389;感谢各位读者在百忙之中抽出时间来垂阅我的文章&#xff0c;我会尽我所能向的大家分享我的知识和经验&#x1f4d6; &#x1f389;希望我们在一篇篇的文章中能够共同进步&#xff0…

数据结构知识点汇总(持续更新版)

数据结构 一、绪论 检测知识&#xff1a; 1.1基本概念 以前的计算机 弹道计算机 现如今 主要运用于非数值的计算 基本概念和术语 数据&#xff1a;是信息的载体&#xff0c;描述客观事物属性的值&#xff0c;字符以及所有能输入到计算机中并被计算机程序识别和处理的符号的…

vite打包流程和原理

文章目录 打包原理Vite比Webpack快&#xff1f;在生产环境下的表现启动项目后&#xff0c;完成加载比较慢&#xff1f;Esbuild & Rollup热更新 打包原理 vite利用了ES module这个特性&#xff0c;使用vite运行项目时&#xff0c;首先会用esbuild进行预构建&#xff0c;将所…

Java 根据IP获取IP地址信息(离线)

<!-- https://mvnrepository.com/artifact/org.lionsoul/ip2region --><dependency><groupId>org.lionsoul</groupId><artifactId>ip2region</artifactId><version>2.7.0</version></dependency> 地址&#xff1a;http…

影响交易收益的因素有哪些?

在尝试做交易时&#xff0c;你可能会问自己一个问题&#xff1a;交易一天能赚多少钱&#xff1f;“如果我全职投入交易&#xff0c;一天能赚多少&#xff1f;”或者更广泛地说&#xff0c;“交易能为我带来怎样的财富&#xff1f;”这些问题本质上都充满了不确定性&#xff0c;…

PCM和I2S区别

I2S和PCM接口都是数字音频接口&#xff0c;而所见的蓝牙到cpu以及codec的音频接口都是用PCM接口&#xff0c;是不是两个接口有各自不同的应用呢&#xff1f;先来看下概念。 PCM&#xff08;PCM-clock、PCM-sync、PCM-in、PCM-out&#xff09;脉冲编码调制&#xff0c;模拟语音信…

力扣L12--- 125验证回文串(java版)-2024年3月15日

1.题目 2.知识点 注1&#xff1a;在 Java 中&#xff0c;toString() 方法用于将对象转换为字符串表示形式。对于数组对象&#xff0c;toString() 方法将返回数组的字符串表示形式&#xff0c;其中包含数组中每个元素的字符串表示形式&#xff0c;以逗号分隔&#xff0c;并且包…

使用IDEA2023创建传统的JavaWeb项目并运行与调试

日期:2024-0312 作者:dusuanyun 文档环境说明: OS:Deepin 20.9(Linux) JDK: OpenJDK21 Tomcat:10.1.19 IDEA: 2023.3.4 (Ultimate Edition) 本文档默认已经安装JDK及环境变量的配置。 关键词…

【RPG Maker MV 仿新仙剑 战斗场景UI (四)】

RPG Maker MV 仿新仙剑 战斗场景UI 四 三级战斗指令菜单效果代码完成效果 下篇预告 三级战斗指令菜单 仙剑1中三级战斗的菜单内容如下&#xff1a;使用、投掷、装备这三项。 效果 在RMMV中原始菜单中是没有这三级菜单的&#xff0c;因此需要重新进行添加进去。 代码 这里贴…

量子遗传算法优化VMD参数,五种适应度函数任意切换,最小包络熵、样本熵、信息熵、排列熵、排列熵/互信息熵...

关于量子遗传算法&#xff0c;在众多文献均有应用。下面简述一下原理。 &#xff08;1&#xff09;量子比特编码 子遗传算法通过引入量子比特来完成基因的存储和表达。量子比特是量子信息中的概念&#xff0c;它与经典比特不同&#xff0c;是因为它可以在同一时刻处于两个状态的…

Leet code 438 找到字符串中所有字母异位词

解题思路&#xff1a;滑动窗口 三步走 进窗口 判断 出窗口 然后更新结果 定义两个hash表在第一个表中存 p的有效字符 比如 abc a一个 b一个 c一个 这样就存在三个有效字符 在第二个hash表中进行滑动窗口的运行 定义一个常量count 如果滑动窗口中有效字符存在一个就…

string模拟实现

前言 上一期我们对STL进行了简单的介绍以及学习了string常用API的基本使用&#xff01;本期我们来探索它的底层实现&#xff01;自己对string的常用的接口进行模拟实现&#xff01; 本期内容介绍 常用成员函数模拟实现 常用非成员函数模拟实现 成员函数 构造函数 在进行模拟…

计算机网络 谢希仁(001-2)

计算机网络-方老师 总时长 24:45:00 共50个视频&#xff0c;6个模块 此文章包含1.5到1.7的内容 1.5计算机网络类别 连通 共享 分类方法 广域网是边缘部分和核心部分的核心部分 以前是拨号连接 现在是光纤 总线型 星型 环形网 1.6计算机网络的性能 带上单位之后就不是…

git bash 命令行反应慢、卡顿(定位出根本原因)

参考该博主&#xff1a; https://blog.csdn.net/weixin_50212044/article/details/131575987?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-131575987-blog-130024908.235v43pc_blog_bottom_relevance_base4&spm1001.210…

IP证书有什么作用?怎么申请?

关于IP地址证书&#xff0c;它的主要作用有这么几个点&#xff1a; 1.验明正身&#xff1a;就像身份证一样&#xff0c;它可以证明某个服务器的IP地址是真的、合法的&#xff0c;让咱知道咱们连接的就是正确的服务器&#xff0c;而不是冒牌货。这样一来&#xff0c;就可以降低像…

使用OpenCV实现人脸特征点检测与实时表情识别

引言&#xff1a; 本文介绍了如何利用OpenCV库实现人脸特征点检测&#xff0c;并进一步实现实时表情识别的案例。首先&#xff0c;通过OpenCV的Dlib库进行人脸特征点的定位&#xff0c;然后基于特征点的变化来识别不同的表情。这种方法不仅准确度高&#xff0c;而且实时性好&am…

塑料工厂5G智能制造数字孪生可视化平台,推进塑料行业数字化转型

塑料工厂5G智能制造数字孪生可视化平台&#xff0c;推进塑料行业数字化转型。塑料制造行业作为重要的工业领域&#xff0c;亟需借助这一平台实现产业升级与转型&#xff0c;以适应市场的变化和提高生产效率。传统的塑料制造过程往往存在生产效率低下、资源浪费、环境污染等问题…

鸿蒙车载原生开发,拓展新版图

一天内连发“五弹”、HiCar 4.0首次上车 华为鸿蒙狂扩“汽车朋友圈”-上游新闻 汇聚向上的力量 3月15日&#xff0c;在“华为云&华为终端云服务创新峰会2024”上&#xff0c;华为首批汽车行业伙伴广汽传祺、岚图汽车、零跑汽车、凯翼汽车加入鸿蒙生态合作&#xff0c;华为…