Docker 使用基础(3)—容器

                                        🎬慕斯主页修仙—别有洞天

                                       ♈️今日夜电波:秒針を噛む—ずっと真夜中でいいのに。

                                                           0:34━━━━━━️💟──────── 4:20
                                                                🔄   ◀️   ⏸   ▶️    ☰  

                                 💗关注👍点赞🙌收藏您的每一次鼓励都是对我莫大的支持😍


目录

首先理解几个概念

Docker容器(Container )是什么?

为什么需要容器?

容器的生命周期

容器的命令详解

1. docker create

2. docker logs

3. docker attach

4. docker exec

5. docker start

6. docker stop

7. docker restart

8. docker kill

9. docker top

10. docker stats

11. docker container inspect

12. docker port

13. docker cp

14. docker diff

15. docker commit

16. docker pause

17. docker unpause

18. docker rm

19. docker export

20. docker wait

21. docker rename

22. docker container prune

23. docker update

容器批量处理技巧

容器自动重启

一些常见的问题

docker create、 docker start 和 docker run 有什么区别?

docker import 和 docker load 有什么区别?

docker rm & docker rmi & docker prune 的差异?


首先理解几个概念

Docker容器(Container )是什么?

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

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

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

        我们可以理解镜像为Java 或者 C++的基础类,容器是实例化出来的一个个对象,没有用户需要的不一样,里面的内容也就不一样了。

下面看看官方给出的Docker 架构,可以结合此图来理解容器的概念:

为什么需要容器?

        镜像是静态的文件,并不能提供服务,就像我拿了个 Linux 或者 Windows 的光盘一样,只有安装到主机里面运行起来才能对外提供服务,我们才能使用。容器带来哪些收益呢,参考我们之前讲解的为什么要虚拟化、容器化。

容器的生命周期

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

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

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

一些特别说明:

        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 资源的进程,是不会被主机内核系统所调度的,所以此容器就处于“冰封”状态。

 

容器的命令详解

前面的文章已近对run、ps讲述过了,这里不多介绍。

Docker 的一系列命令提供了对容器生命周期的全面控制,下面是对这些命令的详细解析:

1. docker create

用途:创建一个容器但不立即启动它。
语法

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

关键参数
○ -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 退出的时候自动删除容器

2. docker logs

用途:获取容器的日志输出。
语法

docker logs [OPTIONS] CONTAINER

关键参数

  • -f--follow:跟随日志输出。
  • --since:显示自从某个时间点后的日志。
  • --until:显示直到某个时间点的日志。
  • --tail -n:显示最近 N 行日志。
  • -t,--timestamps :显示时间戳 。

3. docker attach

用途:将标准输入、输出和错误流连接到一个正在运行的容器。
语法

docker attach [OPTIONS] CONTAINER

关键参数

  • --sig-proxy=true|false:是否代理信号。

如若不使用上述选项,attach后ctrl+c会导致容器退出,如下:

4. docker exec

用途:在运行中的容器中执行命令。
语法

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

关键参数

  • -i :即使没有附加也保持 STDIN 打开
  • -u--user:设置用户 ID 或用户名。
  • -w,--workdir:指定工作目录
  • -e :设置环境变量
  • -t :分配一个伪终端
  • -d :分离模式: 在后台运行

5. docker start

用途:启动一个已创建但未运行的容器。
语法

docker start [OPTIONS] CONTAINER [CONTAINER...]

关键参数

  • --attach:连接到容器的标准输入/输出/错误

6. docker stop

用途:停止一个正在运行的容器。
语法

docker stop [OPTIONS] CONTAINER [CONTAINER...]

关键参数

  • --time-t:等待容器停止的秒数。

7. docker restart

用途:重启容器。
语法

docker restart [OPTIONS] CONTAINER [CONTAINER...]

关键参数

  • --time-t:等待容器停止的秒数。

8. docker kill

用途:强制停止一个正在运行的容器。
语法

docker kill [OPTIONS] CONTAINER [CONTAINER...]

关键参数

  • SIGNAL:发送的信号,默认为 SIGKILL。

9. docker top

用途:显示容器内运行的进程。
语法

docker top CONTAINER

无需参数。

10. docker stats

用途:显示容器的资源使用情况。
语法

docker stats [OPTIONS] [CONTAINER...]

关键参数

  • -a--all:显示所有容器的统计信息。
  • --format :指定返回值的模板文件。如 table,json
  • --no-stream :展示当前状态就直接退出了,不再实时更新。
  • --no-trunc :不截断输出

返回报文

CONTAINER ID 与 NAME: 容器 ID 与名称。

CPU % 与 MEM %: 容器使用的 CPU 和内存的百分比。

MEM USAGE / LIMIT: 容器正在使用的总内存,以及允许使用的内存总量。

NET I/O: 容器通过其网络接口发送和接收的数据量。

BLOCK I/O: 容器从主机上的块设备读取和写入的数据量。

PIDs: 容器创建的进程或线程数。

如下为:docker stats --format json

11. docker container inspect

用途:显示容器的详细信息。
语法

docker container inspect [OPTIONS] CONTAINER [CONTAINER...]

关键参数

○ -f :指定返回值的模板文件。如 table、 json

○ -s :显示总的文件大小

12. docker port

用途:显示容器的端口映射。
语法

docker port CONTAINER PRIVATE_PORT[/PROTO]

无需参数。

13. docker cp

用途:在容器和本地文件系统之间复制文件或目录。
语法

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH | docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH

关键参数

  • -L:保持符号链接。

样例

#将主机/www/目录拷贝到容器 mynginx 的/www 目录下。
docker cp /www/ mynginx:/www/ 
#将容器/www/目录拷贝到主机的/wwwbak 目录下。
docker cp mynginx:/www/ /wwwbak/

14. docker diff

用途:显示容器文件系统的更改。
语法

docker diff CONTAINER

无需参数。

15. docker commit

用途:将容器的更改提交为新的镜像。
语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

关键参数

  • -m--message:提交的信息。
  • -a--author:作者信息。
  • -c :使用 Dockerfile 指令来创建镜像;可以修改启动指令
  • -p :在 commit 时,将容器暂停。

16. docker pause

用途:暂停容器的所有进程。
语法

docker pause [OPTIONS] CONTAINER [CONTAINER...]

无需参数。

17. docker unpause

用途:恢复已暂停的容器。
语法

docker unpause [OPTIONS] CONTAINER [CONTAINER...]

无需参数。

18. docker rm

用途:删除一个或多个容器。
语法

docker rm [OPTIONS] CONTAINER [CONTAINER...]

关键参数

  • -f--force:强制删除运行中的容器。

19. docker export

用途:将容器的内容导出为 tar 归档。
语法

docker export CONTAINER > archive.tar

关键参数

  • -o:写入到文件

20. docker wait

用途:阻塞直到容器停止,然后返回退出代码。
语法

docker wait [OPTIONS] CONTAINER

无需参数。

21. docker rename

用途:重命名一个容器。
语法

docker rename CONTAINER NEW_NAME

无需参数。

22. docker container prune

用途:删除所有已停止的容器。
语法

docker container prune [OPTIONS]

关键参数

  • -f, --force:不提示是否进行确认

23. docker update

用途:更新容器的资源限制。
语法

docker update [OPTIONS] CONTAINER [CONTAINER...]

关键参数

  • --memory:设置容器的内存限制。
  • --cpus:设置容器的 CPU 份额。
  • --cpuset-cpus :使用哪些 cpu。
  • --memory-swap:交换内存 。
  • --cpu-period :是用来指定容器对 CPU 的使用要在多长时间内做一次重新分配。
  • --cpu-quota: 是用来指定在这个周期内,最多可以有多少时间用来跑这个容器。
    docker update 命令用于调整一个或多个正在运行的容器的资源配置,如CPU份额、内存限制、重启策略等。下面是几个使用 docker update 的例子:

例子

更新容器的CPU份额:

假设你有一个容器,其ID是 abcd1234,你想增加它的CPU份额,可以使用以下命令:

docker update --cpu-shares 512 abcd1234

这会将容器的CPU份额设置为512。CPU份额是用来决定容器在与其他容器竞争CPU时间时的优先级。

更新容器的内存限制:

如果想限制容器使用的内存,可以使用 --memory-m 选项。例如,将容器 abcd1234 的最大可用内存限制为512MB,可以这样操作:

docker update --memory 512M abcd1234

更新容器的重启策略:

你可能希望容器在意外停止后自动重启。为了设置容器 abcd1234 的重启策略为总是重启,可以使用以下命令:

docker update --restart always abcd1234

这将确保当容器意外终止时,Docker守护进程会尝试自动重启它。

更新多个容器的配置:

你也可以同时更新多个容器的配置。例如,更新两个容器 abcd1234efgh5678 的CPU份额和内存限制:

docker update --cpu-shares 256 --memory 256M abcd1234 efgh5678

更新容器的Block IO权重:

对于磁盘I/O,你可以设置容器的Block IO权重,权重范围在10到1000之间,0表示禁用。例如,将容器 abcd1234 的Block IO权重设置为500:

docker update --blkio-weight 500 abcd1234

请注意,不是所有的配置都可以在容器运行时更新。例如,你不能更新已经运行的容器的网络配置或更改其基础镜像。此外,某些选项(如 --kernel-memory)在较新的Docker版本中可能已经被弃用。

在执行任何 docker update 命令之前,确保了解你正在更改的配置的具体含义,以及这些更改如何影响容器的性能和稳定性。

容器批量处理技巧

docker container ls 命令(通常简写为 docker ps)用于列出系统上当前运行的Docker容器。但是,docker container ls 是更现代且推荐使用的语法,因为它更清晰地表明了你正在操作的是容器。这两个命令在功能上是相同的,只是语法略有不同,docker container ls 更符合Docker命令的一致性设计。

基本语法

docker container ls [OPTIONS]

选项说明

  • -a, --all: 显示所有容器,包括未运行的。如果不加这个选项,默认只显示正在运行的容器。
  • -f, --filter: 用于过滤输出。例如,你可以通过名字、状态或其他属性过滤容器。
  • --format: 设置输出格式,可以使用Go模板语言来定制输出的样式。
  • -l, --latest: 显示最近创建的容器。
  • --no-trunc: 不截断输出,完整显示所有信息。
  • --quiet, -q: 只显示容器的ID。

输出列说明

默认情况下,docker container lsdocker ps 的输出包含以下列:

  • CONTAINER ID: 容器的唯一标识符。
  • IMAGE: 创建容器的镜像名称。
  • COMMAND: 启动容器时运行的命令。
  • CREATED: 容器创建的时间。
  • STATUS: 容器的状态,如运行中(Up)、已退出(Exited)等。
  • PORTS: 已映射的端口,如果有的话。
  • NAMES: 分配给容器的名称。

示例

  • 列出所有容器(包括未运行的):
docker container ls -a
  • 只显示容器的ID:
docker container ls -q
  • 根据名字过滤容器:
docker container ls --filter name=myapp
  • 自定义输出格式:
docker container ls --format "table {{.Names}}\t{{.Status}}\t{{.RunningFor}}"

理解完前面的操作,那么我们再结合前面所提到的命令,可以做到如下的容器批处理:

docker stop `docker ps -q`
docker start `docker ps -aq`

容器自动重启

容器重启选项如下:

docker run --restart=no [容器名] :默认值不自动重启

docker run --restart=on-failure:3 [容器名] : on-failure 若容器的退出状态非 0,则docker 自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃

docker run --restart=always [容器名] :always 容器退出时总是重启

docker run --restart=unless-stopped [容器名] unless-stopped 容器退出时总是重启,但不考虑 Docker 守护进程启动时就已经停止的容器

如果容器启动时没有设置–restart 参数,则通过下面命令进行更新:docker update --restart=always [容器名]

需要注意的是:

当一个Docker容器配置了自动重启策略为always时,确实意味着容器会在任何情况下自动重启,包括容器正常或异常退出之后。这意味着,一旦容器停止运行,Docker守护进程会自动检测并重新启动它。

然而,尽管always策略会让容器在停止后立即重启,你仍然可以通过以下几种方式真正地阻止容器的自动重启:

1、使用docker stop命令。

2、使用docker update命令来更改容器的重启策略,例如:

docker update --restart=no <container-id-or-name>

3、删除容器: 如果你不打算再使用这个容器,可以使用docker rm命令来删除容器。这将彻底阻止容器的自动重启,因为你已经删除了容器本身。

删除运行中的容器需要加上-f或--force选项:

docker rm -f <container-id-or-name>

一些常见的问题

docker create、 docker start 和 docker run 有什么区别?

docker create 命令从 Docker 映像创建一个全新的容器。但是,它不会立即运行它。

docker start 命令将启动任何已停止的容器。如果使用 docker create 命令创建容器,则可以使用此命令启动它。docker run 命令是创建和启动的组合,因为它创建了一个新容器并立即启动它。实际上,如果 docker run 命令在您的系统上找不到上述映像,它可以从 Docker Hub 中提取映像。

docker import 和 docker load 有什么区别?

想要了解 docker load 与 docker import 命令的区别,还必须知道 docker save与 docker export 命令:

• docker save images_name:将一个镜像导出为文件,再使用 docker load 命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比 docker export 命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。

• docker export container_id:将一个容器导出为文件,再使用 dockerimport 命令将容器导入成为一个新的镜像,但是相比 docker save 命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。

既可以使用 docker load 命令来导入镜像库存储文件到本地镜像库,也可以使用docker import 命令来导入一个容器快照到本地镜像库。两者的区别在于容器快照将会丢弃所有的历史记录和元数据信息,而镜像存储文件将保存完整记录,体积也会更大。

docker rm & docker rmi & docker prune 的差异?

docker rm : 删除一个或多个容器

docker rmi : 删除一个或多个镜像

docker prune: 用来删除不再使用的 docker 对象

 


                      感谢你耐心的看到这里ღ( ´・ᴗ・` )比心,如有哪里有错误请踢一脚作者o(╥﹏╥)o! 

                                       

                                                                        给个三连再走嘛~  

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

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

相关文章

let/const/var的区别及理解

在JavaScript中&#xff0c;let、const 和 var 是用来声明变量的关键字&#xff0c;但它们之间在作用域、变量提升、重复声明等方面存在区别&#xff0c;详细情况如下: 1. let、const、var 的区别 (1) 块级作用域 let 和 const&#xff1a;具有块级作用域&#xff0c;由 {} 包…

百数教学秘籍:三步走,轻松规划你的自动化计划任务

通过设定任务计划&#xff0c;用户可以轻松安排指定的功能插件或数据助手在特定时间自动执行&#xff0c;有效提高工作效率&#xff0c;还确保了数据的及时更新和处理。任务计划在应用启动时自动启动并在后台运行&#xff0c;无需用户持续监控&#xff0c;为用户带来极大的便利…

oracle哪些后台进程不能杀?

oracle 有很多的后台进程&#xff0c;在遇到特殊情况的时候如锁表&#xff0c;如果等待的是一个后台进程&#xff0c;那这时就需要考量是不是能杀掉这个后台进程&#xff1f;杀掉这个后台进程会不会引起实例崩溃&#xff1f;本着实践出真知&#xff0c;本文针对oracle 11g&…

游戏开黑语音-使用云服务器部署teamspeak服务(系统Ubuntu 20.04 LTS)

目录 前置物品服务器调整及部署1.重装系统2.换源3.下载teamspeak服务端并部署 连接服务器参考 前置物品 一台云服务器&#xff08;系统&#xff1a;Ubuntu 20.04 LTS) 服务器调整及部署 1.重装系统 在腾讯云官网的主机控制台内&#xff0c;选择重装系统 (由于之前为了快点和…

【刷题汇总 -- 最长回文子串、买卖股票的最好时机(一)、[NOIP2002 普及组] 过河卒】

C日常刷题积累 今日刷题汇总 - day0101、最长回文子串1.1、题目1.2、思路1.3、程序实现 2、买卖股票的最好时机(一)2.1、题目2.2、思路2.3、程序实现2.4、程序实现 -- 优化 3、[NOIP2002 普及组] 过河卒3.1、题目3.2、思路3.3、程序实现 -- dp 4、题目链接 今日刷题汇总 - day0…

Linux 入门教程 by 程序员鱼皮

本文作者&#xff1a;程序员鱼皮 免费编程学习 - 编程导航网&#xff1a;https://www.code-nav.cn 大家好&#xff0c;我是鱼皮。 前两天我学编程的老弟小阿巴过生日&#xff0c;我问他想要什么礼物。 本来以为他会要什么游戏机、Q 币卡、鼠标键盘啥的&#xff0c;结果小阿巴…

短视频矩阵:批量发布的秘密揭秘

在数字化时代&#xff0c;短视频已经成为一种广受欢迎的媒体形式。无论是用于品牌推广、产品营销还是个人创作&#xff0c;短视频都提供了一种直观、生动的方式来吸引观众的注意力。然而&#xff0c;有效地制作、管理和发布短视频对于许多创作者和企业来说是一个挑战。 为此&am…

什么是 C 语言中的宏定义?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

动态规划之数字三角形模型+最长上升子序列模型

首先&#xff0c;我们从集合角度重新看待DP&#xff1a; 直接看题&#xff1a;https://www.acwing.com/problem/content/1029/ 就是取纸条的原题&#xff0c;我们令f[i1,j1,i2,j2]表示从(1,1),(1,1)分别走到(i1,j1),(i2,j2)的路径的max i1j1i2j2&#xff0c;于是我们可以把状…

机器学习 | 对K-Means聚类假设的研究演示及实践示例

我们在Scikit-learn对K-means假设的调查中探索了揭示算法优势和局限性的场景。我们研究了K-means对不正确的聚类大小的敏感性&#xff0c;它在各向异性分布中面临的困难&#xff0c;它在不同的聚类方差中面临的困难&#xff0c;以及使用合成数据集的大小不均匀的聚类问题。我们…

准备工作+1、请求和响应+2、模型和管理站点

Django快速入门——创建一个基本的投票应用程序 准备工作1、创建虚拟环境2、安装django 1、请求和响应&#xff08;1&#xff09;创建项目&#xff08;2&#xff09;用于开发的简易服务器&#xff08;3&#xff09;创建投票应用&#xff08;4&#xff09;编写第一个视图1、编写…

家用激光投影仪品牌排行榜:这几个品牌口碑好产品好最适合家用

现在人们生活水平提升&#xff0c;对投影这类产品的认知接受度也提升&#xff0c;有条件的家庭都想在家里整一个家庭影院&#xff0c;对于这些消费者来说挑选一台性价比高的家用投影至关重要&#xff0c;既省到钱又买对了产品&#xff1b;投影市场发展迅速目前市面上大大小小的…

mongo数据库迁移

前言 mongo数据库迁移的方式目前常见的有两种&#xff1a; 1&#xff0c;mongodump与mongorestore 2&#xff0c;mongoimport与mongoexport 二者主要区别有&#xff1a; 1、mongoexport 可以导出json和csv格式&#xff0c; mongodump导出的是bson可读性不如前者 2&#xff0c;…

在Windows 10上快速显示桌面的几种方法,总有一种适合你

序言 有时你需要在Windows 10中快速查看你的桌面,但你不想乏味地最小化每个打开的应用程序窗口,或者移动它们并丢失它们的布局。幸运的是,有几种方法可以让你快速查看桌面,然后从你停止的地方重新开始。 如何使用任务栏按钮显示桌面 假设你正在随意浏览你最喜欢的网站,…

服了,jenkins找不到advanced

新手下载的最新版本&#xff0c;过新手入门的时候一直过不去&#xff0c;就跳过了。 想下载一个汉化&#xff0c;还下载不了。根据提示搜索&#xff0c;结果大家让去advanced找url&#xff0c;也找不到。

FreeRTOS 队列

队列是一种任务到任务、任务到中断、中断到任务数据交流的一种机制。在队列中可以存 储数量有限、大小固定的多个数据&#xff0c;队列中的每一个数据叫做队列项目&#xff0c;队列能够存储队列项 目的最大数量称为队列的长度&#xff0c;在创建队列的时候&#xff0c;就需要指…

揭秘与应对:病毒伪装文件夹的数据恢复策略

在数字时代&#xff0c;数据安全是每个人不可忽视的重要议题。而伪装文件夹&#xff0c;作为一种狡猾的数据安全威胁&#xff0c;正逐渐浮出水面&#xff0c;成为用户需要警惕的对象。这些伪装文件夹看似普通&#xff0c;实则隐藏着不为人知的秘密&#xff0c;它们通过模仿正常…

linux系统操作/基本命令/vim/权限修改/用户建立

Linux的目录结构&#xff1a; 一&#xff1a;在Linux系统中&#xff0c;路径之间的层级关系&#xff0c;使用:/来表示 注意:1、开头的/表示根目录 2、后面的/表示层级关系 二&#xff1a;在windows系统中&#xff0c;路径之间的层级关系&#xff0c;使用:\来表示 注意:1、D:表示…

移动应用性能收集工具原理解析

性能收集分析相关工具总览 收集、分析、展示移动应用性能数据的工具很多&#xff0c;大致可以分为如下几类。例如可收集多项性能指标的移动性能工具&#xff0c;perfdog&#xff0c;Solopi&#xff0c;其中Solopi开源&#xff0c;pefdog商业工具。可进行Crash分析的工具&#x…

猫超卡怎么使用?

天猫超市卡好像只能买天猫的东西 但是有时候淘宝、京东打折比天猫的单价还便宜 这样的话&#xff0c;猫超卡好像也没多大用处 这不&#xff0c;上个月618凑单的东西比在天猫超市买划算多了 最后我直接把猫超卡在收卡云上折现了&#xff0c;超划算