Docker生存手册:安装到服务一本通

news2025/3/18 15:08:43

文章目录

  • 一. Docker 容器介绍
    • 1.1 什么是Docker容器?
    • 1.2 为什么需要Docker容器?
    • 1.3 Docker架构
    • 1.4 Docker 相关概念
    • 1.5 Docker特点
  • 二. Docker 安装
    • 2.1 查看Linux内核版本
    • 2.2 卸载老版本docker,避免产生影响
    • 2.3 升级yum 和配置源
    • 2.4 安装Docker
    • 2.5 启动Docker
    • 2.6 验证Docker
    • 2.7 设置Docker开机自启
    • 2.8 配置镜像加速器
    • 2.9 验证镜像加速是否生效
    • 2.10 卸载Docker
  • 三. Docker 命令
    • 3.1 镜像命令
    • 3.2 容器命令
    • 3.3 数据卷命令
    • 3.4 其他命令
    • 3.5 参考
  • 四、Docker安装常用服务指南
    • 4.1 ◆ Docker安装Nginx
      • 4.1.1 普通安装方式
      • 4.1.2 挂载配置方案
        • 方案一:Volume数据卷挂载
        • 方案二:目录挂载(生产推荐)
    • 4.2 ◆ Docker安装MySQL
      • 4.2.1 基础安装步骤
      • 4.2.2 数据持久化方案
        • 数据卷挂载模式
        • 目录挂载模式(推荐)
    • 4.3 ◆ Docker安装Nacos集群
      • 4.3.1 单节点部署
      • 4.3.2 集群部署方案
    • 4.4 ◆ Docker安装Redis
      • 4.4.1 基础安装
      • 4.4.2 持久化配置
        • 配置文件挂载
    • 4.5 ◆ Docker安装ElasticSearch
      • 4.5.1 ElasticSearch部署
      • 4.5.2 Kibana可视化
    • 4.6 服务验证清单


一. Docker 容器介绍

1.1 什么是Docker容器?

Docker 是一种开源的容器化平台,允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。通过 Docker,应用程序可以在任何环境中快速部署和运行,确保开发、测试和生产环境的一致性。

1.2 为什么需要Docker容器?

项目部署的困扰:

  • 环境一致性:开发、测试、生产环境应当保持一致,但由于各种原因,往往会出现环境差异,导致部署出现问题。

  • 版本管理:不同开发人员在开发过程中,可能会使用不同的开发工具、编程语言、框架,导致版本管理混乱。

  • 依赖管理:不同项目依赖不同的库,如果没有统一的依赖管理,部署会出现问题。
    Docker如何解决这些问题?

  • Docker 容器化:Docker 容器化解决了环境一致性问题,将开发环境、测试环境、生产环境打包成一个容器,确保开发、测试、生产环境的一致性。

  • Docker 镜像:Docker 镜像解决了版本管理问题,将开发环境、测试环境、生产环境的依赖打包成镜像,确保开发人员使用统一的开发工具、编程语言、框架。

  • Docker 仓库:Docker 仓库解决了依赖管理问题,将镜像上传到仓库,其他开发人员可以下载使用。

1.3 Docker架构

  • 服务端(server): Docker守护进程,负责处理Docker指令,管理镜像、容器等
  • 客户端(client): 通过命令或RestAP向Docker服务端发送指令。可以在本地或远程向服务端发送指令
  • 远程仓库(registry): 远程仓库是Docker用来保存镜像的地方,可以理解为代码仓库。
    在这里插入图片描述

1.4 Docker 相关概念

  • 镜像(Image): Docker镜像是一个只读的模板,包含了运行容器所需的一切。
  • 容器(Container): 容器是一个运行中的镜像实例,可以启动、停止、删除、暂停等。
  • 仓库(Repository): Docker仓库是一个集中存放镜像文件的地方,每个镜像都有唯一的ID,并可以被推送到多个仓库。
  • 标签(Tag): 标签是镜像的版本,可以用来区分同一个镜像的不同版本。
  • Dockerfile: Dockerfile是用来构建Docker镜像的文本文件,包含了一条条的指令来构建镜像。
  • 卷(Volume): 卷是一个可供一个或多个容器使用的目录,它可以绕过联合文件系统,直接存取底层文件系统。

1.5 Docker特点

  • 轻量级:Docker 容器的大小仅几十MB,相比虚拟机镜像大小只有几百MB。
  • 便携:Docker 可以在任何 Linux 机器上运行,并不需要安装Docker软件,只需要安装Docker引擎。
  • 隔离:Docker 使用容器技术,容器之间互相隔离,互不影响,更安全。文件隔离、系统隔离、资源隔离、网络隔离、日志隔离等。每个容器都完全独立运行在一个沙盒中,所有数据、资源都是隔离的,比如,CPU、内存等等,网络上会为每个容器虚拟一个ip地址,docker为每个容器都提供自己的日志,互不影响。

二. Docker 安装

2.1 查看Linux内核版本

uname -r

要求3.0版本以上

2.2 卸载老版本docker,避免产生影响

如果服务器安装过docker,没有卸载再次安装会导致安装失败,首先要卸载老版本(咱们没安装过docker,可以不需要这个操作,不过可以试一下。)

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-selinux \
    docker-engine-selinux \
    docker-engine \
    docker-ce

2.3 升级yum 和配置源

yum工具可以安装软件,安装docker时需要更多工具,操作系统自带不够,所以要升级。

yum install -y yum-utils

配置本地镜像源

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

更新镜像源

yum makecache fast

2.4 安装Docker

yum install -y docker-ce

docker-ce是社区版,docker-ee是企业版,这里安装的是社区版。社区版是免费的,企业版收费。

2.5 启动Docker

systemctl start docker

2.6 验证Docker

docker version

2.7 设置Docker开机自启

systemctl enable docker

2.8 配置镜像加速器

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hub-mirror.c.163.com"]
}
EOF
systemctl restart docker

或者阿里云加速器

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://wm7fopru.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

或者修改/etc/docker/daemon.json文件

{
  "registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"]
}

然后重启Docker

systemctl daemon-reload
systemctl restart docker

2.9 验证镜像加速是否生效

docker info

其中Registry Mirrors就是镜像加速器的地址。

2.10 卸载Docker

yum remove docker-ce

三. Docker 命令

3.1 镜像命令

  • 镜像名称一般分两部分组成[tag]。
  • 在没有指定tag时,默认是latest,代表最新版本的镜像
docker images:查看本地镜像列表
docker pull:拉取镜像
docker rmi:删除镜像
docker tag:给镜像打标签
docker save:保存镜像
docker load:加载镜像
docker build:构建镜像

在这里插入图片描述
案例:拉取nginx镜像

docker pull nginx

如果不指定镜像名称,则默认拉取latest版本的镜像(最新版本)。

案例:删除镜像

docker rmi nginx

如果有版本号,则删除指定版本的镜像。 如果镜像正在运行,则无法删除。

案例:给镜像打标签

docker tag nginx:latest my-nginx:v1.0

案例:保存镜像

docker save -o nginx.tar nginx:latest

案例:加载镜像

docker load -i nginx.tar

案例:构建镜像

docker build -t my-nginx:v1.0 .
  • docker build命令的-t参数指定镜像的名称和标签,.表示当前目录。
  • docker build命令的.表示Dockerfile文件所在目录。
  • docker build命令的-t参数可以指定多个镜像名称和标签,多个镜像之间用空格隔开。

3.2 容器命令

  • 容器名称一般分两部分组成[id]。
  • 在没有指定name时,默认是随机生成的。
docker run:运行容器
docker ps:查看容器列表
docker start:启动容器
docker stop:停止容器
docker restart:重启容器
docker rm:删除容器
docker logs:查看容器日志
docker exec:进入容器

在这里插入图片描述
案例:运行nginx容器

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

docker run 命令参数说明:

  • docker run命令的-d参数表示后台运行容器。
  • docker run命令的-p参数表示将容器的80端口映射到主机的80端口。如:如:-p 81:80表示将容器的80端口映射到主机的81端口。
  • docker run命令的--name参数表示给容器指定名称。如果不指定名称,则默认随机生成名称。
  • docker run命令的nginx参数表示启动的镜像名称。必须指定镜像名称,否则会报错。
  • docker run命令的-v参数表示将主机的目录挂载到容器的目录。如:-v /data/my-data:/usr/share/nginx/html表示将主机的/data/my-data目录挂载到容器的/usr/share/nginx/html目录。
  • docker run命令的-e参数表示设置环境变量。
  • docker run命令的-it参数表示进入交互模式。
  • docker run命令的--network参数表示指定容器的网络模式。如--network=host表示容器使用宿主机的网络。
  • docker run命令的--restart参数表示设置容器的重启策略。如--restart=always表示容器总是重启。

案例:查看容器列表

docker ps

docker ps 命令参数说明

  • docker ps命令 默认只显示运行中的容器。
  • docker ps命令的-a参数表示显示所有容器,包括停止的容器。
  • docker ps命令的-q参数表示只显示容器的ID。
  • docker ps命令的-f参数表示根据条件过滤容器。

案例:启动容器

docker start my-nginx

案例:停止容器

docker stop my-nginx

案例:重启容器

docker restart my-nginx

案例:删除容器

docker rm my-nginx

docker rm命令的参数说明:

  • docker rm命令的-f参数表示强制删除容器。

案例:查看容器日志

docker logs my-nginx

案例:进入容器

docker exec -it my-nginx /bin/bash
  • docker exec命令的-it参数表示进入交互模式。
  • docker exec命令的my-nginx参数表示容器名称。
  • docker exec命令的/bin/bash参数表示进入容器的bash命令行。

3.3 数据卷命令

数据卷可以让容器之间共享数据,容器之间的数据修改会立即同步到所有容器。

  • docker volume create:创建数据卷
  • docker volume ls:查看数据卷列表
  • docker volume inspect:查看数据卷详情
  • docker volume rm:删除数据卷
  • docker run:使用数据卷

案例:创建数据卷

docker volume create my-data

案例:查看数据卷列表

docker volume ls

案例:查看数据卷详情

docker volume inspect my-data

案例:删除数据卷

docker volume rm my-data

案例:使用数据卷

docker run -d -p 80:80 --name my-nginx -v my-data:/usr/share/nginx/html nginx
  • docker run命令的-v参数表示将主机的my-data目录挂载到容器的/usr/share/nginx/html目录。
  • 这样,主机的my-data目录中的内容会同步到容器的/usr/share/nginx/html目录,容器的/usr/share/nginx/html目录中的内容会同步到主机的my-data目录。

3.4 其他命令

  • 复制内容到主机
docker cp my-nginx:/usr/share/nginx/html/ /data/my-data/
  • 导入/导出镜像
docker save -o my-nginx.tar my-nginx:v1.0
docker load -i my-nginx.tar
  • 导入/导出容器
docker export -o my-nginx.tar my-nginx
docker import my-nginx.tar my-nginx:v1.0

3.5 参考

Docker命令大全
Docker官方文档
Docker中文文档
Docker入门教程
Docker从入门到实践

四、Docker安装常用服务指南

4.1 ◆ Docker安装Nginx

4.1.1 普通安装方式

操作流程:

  1. 拉取镜像
docker pull nginx
# 或加载本地镜像
docker load -i nginx.tar
  1. 运行容器
docker run -d -p 80:80 --name nginx-test nginx

参数说明:

  • -d:后台运行
  • -p 80:80:端口映射(主机:容器)
  • --name:容器命名

4.1.2 挂载配置方案

方案一:Volume数据卷挂载
# 创建数据卷
docker volume create nginx-{html,conf}-volume

# 启动容器
docker run -d -p 80:80 --name nginx-test \
  -v nginx-html-volume:/usr/share/nginx/html \
  -v nginx-conf-volume:/etc/nginx \
  nginx
方案二:目录挂载(生产推荐)
# 创建本地目录
mkdir -p /opt/mount/nginx/{html,conf.d}

# 复制默认配置
docker cp nginx-test:/usr/share/nginx/html /opt/mount/nginx/
docker cp nginx-test:/etc/nginx/conf.d /opt/mount/nginx/

# 重新挂载启动
docker run -d -p 80:80 --name nginx-prod \
  -v /opt/mount/nginx/html:/usr/share/nginx/html \
  -v /opt/mount/nginx/conf.d:/etc/nginx/conf.d \
  nginx

注意事项:

  • 访问验证:curl http://localhost
  • 配置文件修改后需重启容器生效
  • 生产环境建议绑定80+443端口

4.2 ◆ Docker安装MySQL

4.2.1 基础安装步骤

  1. 拉取镜像
docker pull mysql:8.0
  1. 启动容器
docker run -d -p 3306:3306 --name mysql-test \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.0

4.2.2 数据持久化方案

数据卷挂载模式
docker volume create mysql-{data,conf}-volume

docker run -d -p 3306:3306 --name mysql-prod \
  -v mysql-data-volume:/var/lib/mysql \
  -v mysql-conf-volume:/etc/mysql/conf.d \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.0
目录挂载模式(推荐)
mkdir -p /opt/mount/mysql/{data,conf.d}

docker run -d -p 3306:3306 --name mysql-prod \
  -v /opt/mount/mysql/data:/var/lib/mysql \
  -v /opt/mount/mysql/conf.d:/etc/mysql/conf.d \
  -e MYSQL_ROOT_PASSWORD=123456 \
  mysql:8.0

关键配置说明:

# my.cnf 配置文件示例
[mysqld]
character-set-server=utf8mb4
default_authentication_plugin=mysql_native_password

4.3 ◆ Docker安装Nacos集群

4.3.1 单节点部署

docker run -d \
  --name nacos-standalone \
  -p 8848:8848 -p 9848:9848 -p 9849:9849 \
  -e MODE=standalone \
  -e JVM_XMS=512m -e JVM_XMX=512m \
  nacos/nacos-server:v2.3.0

4.3.2 集群部署方案

  1. 准备3台服务器(node1/node2/node3)
  2. 每台执行:
mkdir -p /opt/nacos/{logs,conf,data}

docker run -d \
  --name nacos-cluster \
  --network=host \
  -v /opt/nacos/logs:/home/nacos/logs \
  -v /opt/nacos/conf:/home/nacos/conf \
  -v /opt/nacos/data:/home/nacos/data \
  -e MODE=cluster \
  -e NACOS_SERVERS="node1:8848,node2:8848,node3:8848" \
  -e JVM_XMS=2g -e JVM_XMX=2g \
  nacos/nacos-server:v2.3.0

MySQL集成配置:

-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=192.168.1.100 \
-e MYSQL_SERVICE_DB_NAME=nacos_config \
-e MYSQL_SERVICE_USER=nacos \
-e MYSQL_SERVICE_PASSWORD=Nacos@1234

4.4 ◆ Docker安装Redis

4.4.1 基础安装

docker run -d \
  --name redis-test \
  -p 6379:6379 \
  redis:7.0

4.4.2 持久化配置

配置文件挂载
mkdir -p /opt/mount/redis/{conf,data}

# redis.conf 核心配置
echo '
bind 0.0.0.0
protected-mode no
requirepass 123456
appendonly yes
' > /opt/mount/redis/conf/redis.conf

docker run -d \
  --name redis-prod \
  -p 6379:6379 \
  -v /opt/mount/redis/conf:/usr/local/etc/redis \
  -v /opt/mount/redis/data:/data \
  redis:7.0 redis-server /usr/local/etc/redis/redis.conf

性能调优参数:

maxmemory 2gb
maxmemory-policy allkeys-lru

4.5 ◆ Docker安装ElasticSearch

4.5.1 ElasticSearch部署

# 创建专用网络
docker network create es-net

# 单节点运行
docker run -d \
  --name es-node \
  --network es-net \
  -p 9200:9200 -p 9300:9300 \
  -e "discovery.type=single-node" \
  -e "ES_JAVA_OPTS=-Xms4g -Xmx4g" \
  -v es-data:/usr/share/elasticsearch/data \
  elasticsearch:8.6.0

4.5.2 Kibana可视化

docker run -d \
  --name kibana \
  --network es-net \
  -p 5601:5601 \
  -e ELASTICSEARCH_HOSTS=http://es-node:9200 \
  kibana:8.6.0

安全配置建议:

# elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

4.6 服务验证清单

服务验证方式预期结果
Nginxcurl -I http://localhostHTTP/1.1 200 OK
MySQLmysql -h 127.0.0.1 -P 3306 -u root -p成功登录
Redisredis-cli -h 127.0.0.1 -a 123456 pingPONG
ElasticSearchcurl http://localhost:9200JSON格式节点信息
Kibana浏览器访问 http://IP:5601Kibana欢迎界面

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

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

相关文章

Linux内核传输层UDP源码分析

一、用户数据包协议&#xff08;UDP&#xff09; 1.UDP数据报头 UDP 提供面向消息的不可靠传输&#xff0c;但没有拥塞控制功能。很多协议都使用 UDP&#xff0c;如用于 IP 网络传输音频和视频的实时传输协议 (Real-time Transport Protocol&#xff0c;RTP)&#xff0c;此类型…

FPGA学习(二)——实现LED流水灯

FPGA学习(二)——实现LED流水灯 目录 FPGA学习(二)——实现LED流水灯一、DE2-115时钟源二、控制6个LED灯实现流水灯1、核心逻辑2、代码实现3、引脚配置4、实现效果 三、模块化代码1、分频模块2、复位暂停模块3、顶层模块 四、总结 一、DE2-115时钟源 DE2-115板子包含一个50MHz…

Linux如何在设备树中表示和引用设备信息

DTS基本知识 dts 硬件的相应信息都会写在.dts为后缀的文件中&#xff0c;每一款硬件可以单独写一份xxxx.dts&#xff0c;一般在Linux源码中存在大量的dts文件&#xff0c;对于arm架构可以在arch/arm/boot/dts找到相应的dts&#xff0c;一个dts文件对应一个ARM的machie。 dtsi 值…

Matlab 汽车振动多自由度非线性悬挂系统和参数研究

1、内容简介 略 Matlab 169-汽车振动多自由度非线性悬挂系统和参数研究 可以交流、咨询、答疑 2、内容说明 略 第二章 汽车模型建立 2.1 汽车悬架系统概述 2.1.1 悬架系统的结构和功能 2.1.2 悬架分类 2.2 四分之一车辆模型 对于车辆动力学&#xff0c;一般都是研究其悬…

生活中的可靠性小案例11:窗户把手断裂

窗户把手又断了&#xff0c;之前也断过一次&#xff0c;使用次数并没有特别多。上方的图是正常的把手状态&#xff0c;断的形状如下方图所示。 这种悬臂梁结构&#xff0c;没有一个良好的圆角过渡&#xff0c;导致应力集中。窗户的开关&#xff0c;对应的是把手的推拉&#xff…

[oeasy]python074_ai辅助编程_水果程序_fruits_apple_banana_加法_python之禅

074_ai辅助编程_水果程序_fruits_加法 回忆上次内容 上次直接从模块中导入变量、函数 from my_file import pi 导入my_file.pi 并作为 pi 使用 from my_file import pi as my_pi 导入变量 并 重命名 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; …

【图论】并查集的学习和使用

目录 并查集是什么&#xff1f; 举个例子 组成 父亲数组&#xff1a; find函数&#xff1a; union函数&#xff1a; 代码实现&#xff1a; fa[] 初始化code: find code&#xff1a; 递归实现: 非递归实现: union code : 画图模拟&#xff1a; 路径压缩&#xff1a…

欢乐力扣:反转链表

文章目录 1、题目描述2、思路 1、题目描述 反转链表。  给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 2、思路 借助cur指针和pre双指针来调整链表的前后指向。 # Definition for singly-linked list. # class ListNode: # def __i…

什么是大带宽服务器

什么是大带宽服务器&#xff1f; 在深入探讨大带宽之前&#xff0c;让我们先明确带宽的概念。带宽与我们日常所说的宽带有所不同&#xff0c;宽带是运营商为满足家庭或商业上网需求所提供的服务&#xff0c;而带宽则特指数据的传输速度&#xff0c;尤其是上行速度。大带宽服务…

【TCP】三次挥手,四次挥手详解--UDP和TCP协议详解

活动发起人小虚竹 想对你说&#xff1a; 这是一个以写作博客为目的的创作活动&#xff0c;旨在鼓励大学生博主们挖掘自己的创作潜能&#xff0c;展现自己的写作才华。如果你是一位热爱写作的、想要展现自己创作才华的小伙伴&#xff0c;那么&#xff0c;快来参加吧&#xff01…

SSM基础专项复习4——Maven项目管理工具(1)

系列文章 1、SSM基础专项复习1——SSM项目整合-CSDN博客 2、SSM基础专项复习2——Spring 框架&#xff08;1&#xff09;-CSDN博客 3、SSM基础专项复习3——Spring框架&#xff08;2&#xff09;-CSDN博客 文章目录 系列文章 1. Maven 的概念 1.1. 什么是 Maven 1.2. 什…

使用c#进行串口通信

一、串口通信协议 1.串口通信协议简介 串口通信&#xff08;serial communication&#xff09;是一种设备间非常常用的串行通信方式&#xff0c;大部分电子设备都支持&#xff0c;电子工程师再调试设备时也经常使用该通信方式输出调试信息。讲到某一种通信协议&#xff0c;离…

Web开发-PHP应用鉴别修复AI算法流量检测PHP.INI通用过滤内置函数

知识点&#xff1a; 1、安全开发-原生PHP-PHP.INI安全 2、安全开发-原生PHP-全局文件&单函数 3、安全开发-原生PHP-流量检测&AI算法 一、演示案例-WEB开发-修复方案-PHP.INI配置 文章参考&#xff1a; https://www.yisu.com/ask/28100386.html https://blog.csdn.net/…

蓝桥模拟+真题讲解

今天谁一篇文章哈 &#xff01; 由于本篇文章有些的题目只有图片&#xff0c;因此还望各位见谅。 目录 第一题 题目解析 代码原理 代码编写 填空技巧---巧用python 第二题 题目解析 ​编辑 填空技巧---巧用python 第三题 题目链接 题目解析 必备知识 解题技巧 …

C语言【数据结构】:时间复杂度和空间复杂度.详解

引言 详细介绍什么是时间复杂度和空间复杂度。 前言&#xff1a;为什么要学习时间复杂度和空间复杂度 算法在编写成可执行程序后&#xff0c;运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏&#xff0c;一般是从时间和空间两个维度来衡量的&#xff0c;即时…

基于Python的selenium入门超详细教程(第2章)--单元测试框架unittest

学习路线 自动化测试介绍及学习路线-CSDN博客 ​自动化测试之Web自动化&#xff08;基于pythonselenium&#xff09;-CSDN博客 基于Python的selenium入门超详细教程(第1章)--WebDriver API篇-CSDN博客 目录 前言&#xff1a; 一、单元测试 1. 单元测试的定义 2. 单元测…

日志、类加载器、XML(配置文件)

目录 一、日志1.日志技术的概述2.日志技术的体系a. Logback 3.日志的级别 二、类加载器1.概述2.类加载时机3.类加载过程3.类加载器的分类4.常用方法 三、XML&#xff08;配置文件&#xff09;1.概述2.XML的基本语法3.XML的文档约束a.DTD约束b.schema约束 4.XML文档解析a.Dom4jb…

AI大白话(一):5分钟了解AI到底是什么?

&#x1f31f;引言&#xff1a; 在这个信息爆炸的时代&#xff0c;“人工智能”、“AI”、“机器学习”、"深度学习"等词汇频繁出现在我们的生活中。 从手机里的语音助手&#xff0c;到网购平台的个性化推荐&#xff0c;再到最近大火的AI绘画和ChatGPT&#xff0c;人…

蓝桥与力扣刷题(蓝桥 字符统计)

题目&#xff1a;给定一个只包含大写字母的字符出 S, 请你输出其中出现次数最多的字符。如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。 输入格式 一个只包含大写字母的字等串 S. 输出格式 若干个大写字母&#xff0c;代表答案。 样例输入 BABBACAC样…

AtCoder Beginner Contest 397(ABCDE)

目录 A - Thermometer 翻译&#xff1a; 思路&#xff1a; 实现&#xff1a; B - Ticket Gate Log 翻译&#xff1a; 思路&#xff1a; 实现&#xff1a; C - Variety Split Easy 翻译&#xff1a; 思路&#xff1a; 实现&#xff1a; D - Cubes 翻译&#xff1a…