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

【Docker-13】Docker Container容器

Docker Container(容器)

一、什么是容器?

通俗地讲,容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态。

虽然容器的本质是主机上运行的一个进程,但是容器有自己独立的命名空间隔离和资源限制。也就是说,在容器内部,无法看到主机上的进程、环境变量、网络等信息,

这是容器与直接运行在主机上进程的本质区别。

容器是基于镜像创建的可运行实例,并且单独存在,一个镜像可以创建出多个容器。运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。 这将添加一个

容器层,该层允许修改镜像的整个副本。

QQ_1742387333677

容器生活案例?

镜像与容器就相当于同样是开发商提供的毛坯房,但是两家人装修出来的完全不一样。

QQ_1742387354717

或者我们都学习了 Java 或者 C++之类的面向对象的语言,可以理解为镜像为基础类,

容器是实例化出来的一个个对象,没有用户需要的不一样,里面的内容也就不一样了。

QQ_1742387370030

为什么需要容器?

镜像是静态的文件,并不能提供服务,就像我拿了个 Linux 或者 Windows 的光盘一样,只有安装到主机里面运行起来才能对外提供服务,我们才能使用。

容器带来哪些收益呢,参考我们之前讲解的为什么要虚拟化、容器化。

二、容器的生命周期

容器的生命周期是容器可能处于的状态。

  1. created:初建状态
  2. running:运行状态
  3. stopped:停止状态
  4. paused: 暂停状态
  5. deleted:删除状态

各生命周期之间的转换关系如图所示:

QQ_1742387812010

docker create : 创建容器后,不立即启动运行,容器进入初建状态;

docker run : 创建容器,并立即启动运行,进入运行状态;

docker start : 容器转为运行状态;

docker stop : 容器将转入停止状态;

docker kill : 容器在故障(死机)时,执行 kill(断电),容器转入停止状态,这种操作容易丢失数据,除非必要,否则不建议使用;

docker restart : 重启容器,容器转入运行状态;

docker pause : 容器进入暂停状态;

docker unpause : 取消暂停状态,容器进入运行状态;

docker rm : 删除容器,容器转入删除状态。

killed by out-of-memory(因内存不足被终止) :宿主机内存被耗尽,也被称为 OOM:非计划终止 这时需要杀死最吃内存的容器

container process exitde(异常终止):出现容器被终止后,将进入 Should restart?选择操作:

• yes 需要重启,容器执行 start 命令,转为运行状态。

• no 不需要重启,容器转为停止状态。

容器 OOM

Docker 在处理 OOM 事件时分为三种情况

(1)如果容器中的应用耗尽了主机系统分配给容器的内存限额,就会触发 OOM 事件。例如,在容器当中,部署了一个 web 服务。假设主机分配给此容器的内存上限为 1G,当脚本申请的内存大于 1G 时,此容器就会触发 OOM 事件。而在这种情况下,此容器将会被强制关闭。

但需要注意的是,此时关闭容器的并非是 Docker Daemon,而是宿主机操作系统。因为一个容器其实就是一组运行在宿主机操作系统当中的进程,宿主机操作系统通过cgroups 对这组进程设定资源上限,当这些进程申请的资源到达上限时,触发的是宿主机操作系统的内核 OOM 事件,因此最终是由宿主机内核来关闭这些进程.

(2) 如果用户不想关闭这个容器,那么可以选择–oom-kill-disable 来禁用 OOM-Killer。使用此参数时,仍需要注意,如果使用-m 设置了此容器内存上限,那么当容器到达内存资源上限时,主机不会关闭容器,但也不会继续向此容器继续分配资源,此时容器将处于 hung 状态。只需要将最坏的情况封闭在一定范围之内,而不至于蔓延出去。

(3)如果用户使用了–oom-kill-disable,但也没有使用-m 来设定上限,因而此时此容器将会尽可能多地使用主机内存资源。换言之,主机内存有多大,它就将用多大。

容器异常退出

每个容器内部都存在一个 Init 进程,容器中其他所有进程都是此进程的子进程。运行的容器是因为 Init 进程在运行,如果一个子进程因为某种原因造成了退出,那么其父进程也会同步退出,直至 Init 进程也退出。当 Init 进程退出时,也就代表着此容器被关闭。ocker 目前没有办法知道此时的进程退出属于正常退出还是异常退出。当出现容器关闭情况时,Docker Daemon 会尝试再次重新将此容器由 Stopped 状态转为 Running状态。只有设置了–restart 参数的容器,Docker Daemon 才会去尝试启动,否则容器会保持停止状态。

容器暂停

Docker“剥夺”了此容器的 CPU 资源。而其他资源,如 Memory 资源、Network 资源等还保留未动。如此一来,失去了 CPU 资源的进程,是不会被主机内核系统所调度的,所以此容器就处于“冰封”状态。

三、容器命令

1.容器命令清单

QQ_1742387945429

image-20250319204001127

QQ_1742388168242

2.容器命令详解

1.docker create

功能:创建一个新的容器但不启动它

语法
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]别名
docker container create关键参数
○ -i: 以交互模式运行容器,通常与 -t 同时使用;
○ -P: 随机端口映射,容器内部端口随机映射到主机的端口
○ -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
○ -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
○ --name="nginx-lb": 为容器指定一个名称;
○ -h "mars": 指定容器的 hostname;
○ -e username="ritchie": 设置环境变量;
○ --cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行;
○ -m :设置容器使用内存最大值;
○ --network="bridge": 指定容器的网络连接类型;
○ --link=[]: 添加链接到另一个容器;
○ --volume , -v: 绑定一个卷
○ --rm :shell 退出的时候自动删除容器
○ --restart:自动重启

示例

QQ_1742389159712

QQ_1742389285309

2.docker run

功能:创建一个新的容器并运行一个命令

语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]别名
docker container run关键参数
○ -d: 后台运行容器,并返回容器 ID;比 create 多了这个参数 (**********)
○ -i: 以交互模式运行容器,通常与 -t 同时使用;
○ -P: 随机端口映射,容器内部端口随机映射到主机的端口
○ -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
○ -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
○ --name="nginx-lb": 为容器指定一个名称;
○ -h "mars": 指定容器的 hostname;
○ -e username="ritchie": 设置环境变量;
○ --cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定 CPU 运行;
○ -m :设置容器使用内存最大值;
○ --network="bridge": 指定容器的网络连接类型;
○ --link=[]: 添加链接到另一个容器;
○ --volume , -v: 绑定一个卷
○ --rm :shell 退出的时候自动删除容器
○ --restart:自动重启

示例

使用 docker 镜像 nginx:1.23.4 以后台模式启动一个容器,将容器的 8051 端口映射到主机的 80 端口,并将容器命名为 mywebsite4root@Nanyiroot:~# docker run -d -p 8051:80 --name mywebsite4 nginx:1.23.4
9c9cbafea7f42491eef80e9238829eecd5db48b292d39f7e0c447c62c93c56d3
root@Nanyiroot:~# docker ps | grep 8051
9c9cbafea7f4   nginx:1.23.4   "/docker-entrypoint.…"   32 seconds ago   Up 31 seconds   0.0.0.0:8051->80/tcp, [::]:8051->80/tcp   mywebsite4
3.docker ps

功能:列出容器

语法
docker ps [OPTIONS]别名
docker container ls, docker container list, docker container ps关键参数
○ -a :显示所有的容器,包括未运行的。
○ -f :根据条件过滤显示的内容。
○ --format :指定返回值的模板文件。如 json 或者 table
○ -l :显示 latest 的容器。
○ -n :列出最近创建的 n 个容器。
○ --no-trunc :不截断输出。
○ -q :静默模式,只显示容器编号。
○ -s :显示总的文件大小。

示例:

QQ_1742389636477

4.docker logs

功能:查看容器日志

语法:
docker logs [OPTIONS] CONTAINER别名
docker container logs关键参数
○ -f ,--follow: 跟踪日志输出
○ --since :显示某个开始时间的所有日志
○ -t,--timestamps : 显示时间戳
○ -n,-tail :仅列出最新 N 条容器日志

示例1:跟踪查看容器 mywebsite4 的日志输出

QQ_1742390064848

示例2:查看容器 mynginx 从 2025 年 3 月 17 日后的最新 10 条日志

QQ_1742390141089

5.docker attach

功能:连接到正在运行中的容器。

语法
docker attach [OPTIONS] CONTAINER别名
docker container attach关键参数
--sig-proxy:是否将所有信号代理,默认是 true,如果设置为 false,退出的话不会影响容器,否则退出会导致容器退出

示例:

此处按了 Ctrl + C 后会把容器杀死。

QQ_1744716525880

QQ_1744716575716

带上参数 重新启动 mywebsite4 并且ctrl + c

此时按了 Ctrl + C 并没有把容器杀死

QQ_1744716729731

显示报文为:CONTAINER ID:容器 ID。
IMAGE:使用的镜像。
COMMAND:启动容器时运行的命令。
CREATED:容器的创建时间。
STATUS:容器状态。
PORTS:容器的端口信息和使用的连接类型(tcp \ udp)。
NAMES:自动分配的容器名称。
6.docker exec

功能:在容器中执行命令

语法:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]别名:
docker container exec关键参数:
○ -d :分离模式: 在后台运行
○ -i :即使没有附加也保持 STDIN 打开
○ -t :分配一个伪终端
○ -e :设置环境变量
○ -u,--user :指定用户 "<name|uid>[:<group|gid>]"
○ -w,--workdir:指定工作目录

示例1:在容器 mynginx 中以交互模式执行 echo

QQ_1744717294039

示例2:在容器 mynginx 中以交互模式打开 shell

QQ_1744717327320

示例3:通过 id 进去,docker ps 可以看到容器 id

QQ_1744717399868

7.docker start

功能:启动停止的容器

语法:
docker start [OPTIONS] CONTAINER [CONTAINER...]别名:
docker container start

示例:

QQ_1744717560504

8.docker stop

功能:停止运行的容器

语法:
docker stop [OPTIONS] CONTAINER [CONTAINER...]别名:
docker container stop关键参数
○ -s :发送的信号

QQ_1744717669602

9.docker restart

功能:重启容器

语法:
docker restart [OPTIONS] CONTAINER [CONTAINER...]别名:
docker container restart关键参数
○ -s :发送信号

QQ_1744717740332

10.docker kill

功能:强制退出容器

语法:
docker kill [OPTIONS] CONTAINER [CONTAINER...]别名:
docker container kill关键参数:
-s :发送的信号注意事项:
○ docker stop 发送的是 SIGTERM 信号,docker kill 发送的是 SIGKILL 信号

QQ_1744717825659

11.docker top

功能:查看容器中运行的进程信息,支持 ps 命令参数

语法:
docker top CONTAINER [ps OPTIONS]别名:
docker container top注意事项:
容器运行时不一定有/bin/bash 终端来交互执行 top 命令,而且容器还不一定有top 命令,可以使用 docker top 来实现查看 container 中正在运行的进程。

示例:查看容器进程信息

QQ_1744717927344

12.docker stats

功能:显示容器资源的使用情况,包括: CPU 、内存、网络 I/O 等

语法:
docker stats [OPTIONS] [CONTAINER...]别名:
docker container stats关键参数:
○ --all , -a :显示所有的容器,包括未运行的。
○ --format :指定返回值的模板文件。如 table,json
○ --no-stream :展示当前状态就直接退出了,不再实时更新。
○ --no-trunc :不截断输出。返回报文
CONTAINER ID 与 NAME: 容器 ID 与名称。
CPU % 与 MEM %: 容器使用的 CPU 和内存的百分比。
MEM USAGE / LIMIT: 容器正在使用的总内存,以及允许使用的内存总量。
NET I/O: 容器通过其网络接口发送和接收的数据量。
BLOCK I/O: 容器从主机上的块设备读取和写入的数据量。
PIDs: 容器创建的进程或线程数。

示例1:列出所有在运行的容器信息

QQ_1744718104444

示例2: json 格式显示

QQ_1744718211358

示例3:定制化的表格显示

docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

QQ_1744718298353

13.docker container inspect

功能:查看容器详细信息

语法:
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]关键参数:
○ -f :指定返回值的模板文件。如 table、json
○ -s :显示总的文件大小。注意事项:
docker inspect 会自动检查是镜像还是容器然后显示相信信息

示例:

QQ_1744718428460

14.docker port

功能:用于列出指定的容器的端口映射,或者查找将 PRIVATE_PORT NAT 到面向公众的端口。

语法:
docker port CONTAINER [PRIVATE_PORT[/PROTO]]别名:
docker container port 

示例:

QQ_1744718492207

15.docker cp

功能:在容器和宿主机之间拷贝文件。

语法:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH别名:
docker container cp样例
#将主机/www/目录拷贝到容器mynginx 的/www目录下。
docker cp /www/ mynginx:/www/
#将容器/www/目录拷贝到主机的/wwwbak目录下。
docker cp mynginx:/www/ /wwwbak/

示例

QQ_1744718662731

16.docker diff

功能:检查容器里文件结构的更改。

语法:
docker diff CONTAINERC表示change
A表示add

示例

QQ_1744718785220

17.docker commit

功能:从容器创建一个新的镜像。

语法:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] 参数:
○ -a :提交的镜像作者;
○ -c :使用 Dockerfile 指令来创建镜像;可以修改启动指令
○ -m :提交时的说明文字;
○ -p :在 commit 时,将容器暂停。

示例:基于已有的 nginx:1.23.4 容器,创建一个新镜像 mywebsite4:v1.0,并验证是否能保存你在容器中做的改动

关键:把正在运行的容器 快照成一个新的镜像,叫做 mywebsite4:v1.0

QQ_1744719549988

Docker 镜像版本迭代和验证修改是否保留的过程

🔁 场景:在 mywebsite4forcommit 容器中修改了文件,然后通过 docker commit 生成新的镜像 mywebsite4:v2.0,并验证修改是否成功保存。

启动镜像 v2.0,进入容器交互式终端,并设置 --rm 表示退出后自动删除容器(只是为了测试,不留垃圾)

QQ_1744719900216

18.docker pause

功能:暂停容器中所有的进程

语法:
docker pause CONTAINER [CONTAINER...]  别名:
docker container pause

示例:

QQ_1744720502849

19.docker unpause

功能:恢复容器中所有的进程

语法:docker unpause CONTAINER [CONTAINER...]别名:
docker container unpause

QQ_1744720582045

20.docker rm

功能:删除停止的容器

语法:
docker rm [OPTIONS] CONTAINER [CONTAINER...]别名:
docker container rm关键参数:
-f :通过 SIGKILL 信号强制删除一个运行中的容器。

示例1:删除 mywebsite5 容器

QQ_1744720759114

示例二:删除所有停止的容器

docker rm $(docker ps -a -q)
21.docker export

功能:导出容器内容为 tar 文件 – 导出的时候会丢失数据

语法:
docker export [OPTIONS] CONTAINER别名:
docker container export关键参数:
○ -o:写入到文件。

示例:导出 mywebsite6 为tar

QQ_1744721019024

其中docker export docker import是对应的,之前我们也学过docker import 在镜像里

QQ_1744721133115

22.docker wait

功能:阻塞运行直到容器停止,然后打印出它的退出代码。

语法:
docker wait CONTAINER [CONTAINER...]别名:
docker container wait

示例:
QQ_1744721803944

QQ_1744721814331

23.docker rename

功能:重命名容器。

语法:
docker rename CONTAINER NEW_NAME别名:
docker container rename

示例:

QQ_1744722002099

24.docker container prune

功能:删除所有停止的容器

语法:
docker container prune [OPTIONS]关键参数:
-f,--force:不提示是否进行确认。

示例:

QQ_1744722207442

QQ_1744722239498

25.docker update

功能:更新容器配置。

语法:
docker update [OPTIONS] CONTAINER [CONTAINER...]别名:
docker container update 关键参数
○ --cpus:cpu 数量
○ --cpuset-cpus :使用哪些 cpu
○ --memory :内存限制
○ --memory-swap:交换内存
○ --cpu-period :是用来指定容器对 CPU 的使用要在多长时间内做一次重新分配
○ --cpu-quota:是用来指定在这个周期内,最多可以有多少时间用来跑这个容器

示例:

QQ_1744722376669

QQ_1744722517909

QQ_1744722545895

相关文章:

【Docker-13】Docker Container容器

Docker Container&#xff08;容器&#xff09; 一、什么是容器&#xff1f; 通俗地讲&#xff0c;容器是镜像的运行实体。镜像是静态的只读文件&#xff0c;而容器带有运行时需要的可写文件层&#xff0c;并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有…...

LoadableTransportInfo函数分析之RPCRT4!LOADABLE_TRANSPORT::LOADABLE_TRANSPORT初始化过程

LoadableTransportInfo函数分析 第一部分&#xff1a; RPC_STATUS LoadableTransportInfo ( IN RPC_CHAR * DllName, IN RPC_CHAR PAPI * RpcProtocolSequence, OUT TRANS_INFO * PAPI *pTransInfo ) { 。。。。。。。 pTransportInterface (*TransportLo…...

大模型预标注和自动化标注在OCR标注场景的应用

OCR&#xff0c;即光学字符识别&#xff0c;简单来说就是利用光学设备去捕获图像并识别文字&#xff0c;最终将图片中的文字转换为可编辑和可搜索的文本。在数字化时代&#xff0c;OCR&#xff08;光学字符识别&#xff09;技术作为处理图像中文字信息的关键手段&#xff0c;其…...

Zookeeper 命令返回数据的含义

下面详细讲解这三个 Zookeeper 命令返回数据的含义&#xff1a; 1. ls /path - 列出子节点 命令功能&#xff1a; 列出指定路径下的所有直接子节点名称&#xff08;不包含孙子节点&#xff09; 示例返回&#xff1a; [child1, child2, child3] 输出解析&#xff1a; 返回…...

蓝宝石狼组织升级攻击工具包,利用新型紫水晶窃密软件瞄准能源企业

网络安全专家发现&#xff0c;被称为"蓝宝石狼"&#xff08;Sapphire Werewolf&#xff09;的威胁组织正在使用升级版"紫水晶"&#xff08;Amethyst&#xff09;窃密软件&#xff0c;对能源行业企业发起复杂攻击活动。此次攻击标志着该组织能力显著提升&am…...

2025蓝桥杯python A组省赛 题解

真捐款去了&#xff0c;好长时间没练了&#xff0c;感觉脑子和手都不转悠了。 B F BF BF 赛时都写假了&#xff0c; G G G 也只写了爆搜。 题解其实队友都写好了&#xff0c;我就粘一下自己的代码&#xff0c;稍微提点个人的理解水一篇题解 队友题解 2025蓝桥杯C A组省赛 题…...

JMeter重要的是什么

重要特性 支持多种协议&#xff1a; JMeter支持对多种协议进行性能测试&#xff0c;包括HTTP、HTTPS、FTP、JDBC&#xff08;数据库&#xff09;、LDAP、JMS、SOAP、REST等。这使得它能够适应各种不同的测试场景。强大的负载模拟能力&#xff1a; JMeter能够模拟大量的虚拟用户…...

深入探索如何压缩 WebAssembly

一、初始体积&#xff1a;默认 Release 构建 我们从最基础的构建开始&#xff0c;不开启调试符号&#xff0c;仅使用默认的 release 模式&#xff1a; $ wc -c pkg/wasm_game_of_life_bg.wasm 29410 pkg/wasm_game_of_life_bg.wasm这是我们优化的起点 —— 29,410 字节。 二…...

浅谈SQL Server系统内核管理机制

浅谈SQL Server系统内核管理机制 应用环境 Microsoft Windows 10.0.19045.5487 x64 专业工作站版 22H2Microsoft SQL Server 2019 - 15.0.2130.3 (X64)SQL Server Management Studio -18.6 laster 文章目录 浅谈SQL Server系统内核管理机制数据库和文件服务器管理视图系统目录…...

关于我的服务器

最近我买了台腾讯云服务器&#xff0c;然后新手小白只会用宝塔。。。 安装完之后默认的端口是8888&#xff0c;打开面板就会提示我有风险。然后 我改了端口之后&#xff0c;怎么都打不开。 于是 学到了几句命令可以使用&#xff1a; //查看端口是否已经修改成功 cat www/se…...

vue + element-plus自定义表单验证(修改密码业务)

写一个vue组件Password.vue 没有表单验证只有3个表单项 <template><div><el-form><el-form-item label"旧密码"><el-input></el-input></el-form-item><el-form-item label"新密码"><el-input>&l…...

2025年第十八届“认证杯”数学中国数学建模网络挑战赛【BC题】完整版+代码+结果

# 问题一&#xff1a;随机森林回归from sklearn.ensemble import RandomForestRegressormodel_rf RandomForestRegressor()model_rf.fit(X_train, y_train)# 问题二&#xff1a;LSTM时间序列预测from tensorflow.keras.models import Sequentialmodel_lstm Sequential()model…...

一、小白如何用Pygame制作一款跑酷类游戏(成品展示+添加背景图和道路移动效果)

小白如何用Pygame制作一款跑酷类游戏 文章目录 小白如何用Pygame制作一款跑酷类游戏前言一、游戏最终效果展示二、创建项目并加载pygame模块1.创建项目2.下载pygame模块3. 项目结构安排 三、添加背景图和实现道路移动效果1.引入库2.窗口设置和资源加载3.游戏主循环和程序入口4.…...

基础知识:Dify 安装

官方指南:https://docs.dify.ai/zh-hans/getting-started/install-self-hosted docker & docker-compose 安装 可参考:...

关闭谷歌浏览器(Google Chrome)的自动更新可以通过以下方法实现。具体操作步骤取决于你的操作系统。

关闭谷歌浏览器&#xff08;Google Chrome&#xff09;的自动更新可以通过以下方法实现。具体操作步骤取决于你的操作系统。 1. 在 Windows 上关闭 Chrome 自动更新2. 在 macOS 上关闭 Chrome 自动更新3. 在 Linux 上关闭 Chrome 自动更新4. 注意事项1. 在 Windows 上关闭 Chro…...

【MCAL】AUTOSAR架构下基于SPI通信的驱动模块详解-以TJA1145为例

目录 前言 正文 1.TJA1145驱动代码中的SPI协议设计 1.1 对SPI Driver的依赖 1.2 对SPI配置的依赖 1.2.1 SpiExternalDevice 1.2.2 Channel_x 1.2.3 Job_x 1.2.4 Sequence N 1.2.5 Sequence M 1.2.6 Sequence L 1.2.7 小结 2.基于Vector驱动代码的SPI配置 2.1 SPI引…...

如何在vue3项目中使用 AbortController取消axios请求

在 Vue3 项目中通过 AbortController 取消 Axios 请求&#xff0c;可以通过以下 结构化步骤 实现。我们结合组合式 API&#xff08;Composition API&#xff09;和现代前端实践演示&#xff1a; 一、基础实现&#xff08;单个请求&#xff09; 1. 创建组件逻辑 <script s…...

监控docker中的java应用

1)进入指定的容器 docker exec -it demo /bin/bash 2)下载curl root89a67e345354:/# apt install curl -y 3)下载arthas root89a67e345354:/# curl -O https://arthas.aliyun.com/arthas-boot.jar 4)运行 root89a67e345354:/# java -jar arthas-boot.jar 5)监控 […...

JWT令牌:实现安全会话跟踪与登录认证的利器

摘要&#xff1a;本文深入探讨了JWT令牌在实现会话跟踪和登录认证方面的应用&#xff0c;详细介绍了JWT令牌的概念、组成、生成与校验方法&#xff0c;以及在实际案例中如何通过JWT令牌进行会话跟踪和登录认证的具体实现步骤&#xff0c;为系统的安全认证机制提供了全面且深入的…...

VS 中Git 中本地提交完成,没有推送,修改的内容如何还原

在 Visual Studio 中撤销本地提交但未推送的修改&#xff0c;可以通过以下方法实现&#xff1a; 一、保留修改内容&#xff08;仅撤销提交记录&#xff09; 使用 git reset --soft 在 VS 的 Git 终端中执行&#xff1a; git reset --soft HEAD~1作用&#xff1a;撤销最后一次提…...

springboot+tabula解析pdf中的表格数据

场景 在日常业务需求中&#xff0c;往往会遇到解析pdf数据获取文本的需求&#xff0c;常见的做法是使用 pdfbox 来做&#xff0c;但是它只适合做一些简单的段落文本解析&#xff0c;无法处理表格这种复杂类型&#xff0c;因为单元格中的文本有换行的情况&#xff0c;无法对应到…...

Ubuntu18.04 ROS Melodic安装

环境配置&#xff1a;Ubuntu18.04 ROS Melodic安装_ubuntu18.04安装ros melodic-CSDN博客 1 设置安装源 为了安装ROS Melodic&#xff0c;首先需要在Ubuntu 18.04 LTS上添加安装源到source.list&#xff0c;方法如下&#xff1a; 国外的: sudo sh -c echo "deb http://…...

阿里FPGA XCKU3P开箱- 25G 光纤

阿里FPGA XCKU3P开箱 - Hello-FPGA - 博客园 25G 光纤 板子有2个SFP的光纤接口&#xff0c;最大支持25G速率&#xff0c;使用ibert 进行验证&#xff0c;SFP在BANK227的GTY 接口。 ibert 配置如下&#xff1a; 测试 测试符合预期&#xff0c;确认了SFP的具体位置 和 支持的速…...

ArrayList vs LinkedList,HashMap vs TreeMap:如何选择最适合的集合类?

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 在 Java 开发中&#xff0c;集合类的选择直接影响程序的性能和代码的可维护性。不同的数据结构适用于不同的场景&#xff0c;盲目使用可能导致内存浪费、性能…...

uniapp的h5,打开的时候,标题会一闪而过应用名称,再显示当前页面的标题

问题&#xff1a; 微信小程序&#xff0c;通过webview打开了uniapp创建的h5&#xff0c;但是打开h5时&#xff0c;会先显示h5的应用名称&#xff0c;然后才切换为该页面的标题。 过程&#xff1a; 查过很多资料&#xff0c;有说修改应用名称&#xff0c;有说设置navigationS…...

玩转Docker | 使用Docker搭建Van-Nav导航站

玩转Docker | 使用Docker搭建Van-Nav导航站 前言一、Van-Nav介绍van-nav 简介主要特点二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署Van-Nav服务下载镜像创建容器检查容器状态检查服务端口安全设置四、访问Van-Nav应用访问Van-Nav首页登录后台管理五、添…...

Margin和Padding在WPF和CSS中的不同

CSS和WPF中 margin 与 padding 在方向上的规定基本一致&#xff0c;但在使用场景和一些细节上有所不同。 CSS - 方向规定&#xff1a; margin 和 padding 属性可以分别指定上、右、下、左四个方向的值。例如 margin:10px 20px 30px 40px; 表示上外边距为10px、右外边距为20…...

.NET Core DI(依赖注入)的生命周期及应用场景

在.NET中&#xff0c;依赖注入&#xff08;DI&#xff0c;Dependency Injection&#xff09;是一种设计模式&#xff0c;它通过将依赖关系注入到类中&#xff0c;而不是让类自己创建依赖项&#xff0c;来降低类之间的耦合度。这使得代码更加模块化、灵活和易于测试。在.NET中&a…...

新技术学习方法

新技术学习方法 学习新技术的路线需要结合系统性规划与实践验证&#xff0c;以下是基于行业经验和学习科学整理的高效路径框架&#xff0c;适用于编程语言、开发框架、前沿技术等领域&#xff1a; 一、明确学习目标与动机&#xff08;战略层&#xff09; 场景化需求分析 明确…...

内网dns权威域名服务器搭建

目录 一、背景 二、dns简介 1、dns服务器类型 1、缓存域名服务器 2、主域名服务器 3、从域名服务器 2、dns解析过程 1、递归查询 2、迭代查询&#xff1a; 3、dns服务器类型 1、根域名服务器 2、顶级域名服务器 顶级域名可分为两类 顶级域名服务器的重要性体现在…...