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

Docker-Container

Docker

  • ①什么是容器
  • ②为什么需要容器
  • ③容器的生命周期
    • 容器 OOM
    • 容器异常退出
    • 容器暂停
  • ④容器命令清单
    • 总览
    • docker create
    • docker run
    • docker ps
    • docker logs
    • docker attach
    • docker exec
    • docker start
    • docker stop
    • docker restart
    • docker kill
    • docker top
    • docker stats
    • docker container inspect
    • docker port
    • docker cp
    • docker diff
    • docker commit
    • docker pause
    • docker unpause
    • docker rm
    • docker export
    • docker wait
    • docker rename
    • docker container prune
    • docker update

①什么是容器

通俗地讲,容器是镜像的运行实体,镜像是静态的只读文件

而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态。即容器运行着真正的应用进程。容器有初建、运行、停止、暂停和删除五种状态

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

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

🍂案例

镜像为基础类,容器是实例化出来的一个个对象,用户需要的不一样,里面的内容也就不一样了

在这里插入图片描述

②为什么需要容器

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

③容器的生命周期

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

在这里插入图片描述

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(Out Of Memory → 内存耗尽)
非计划终止 这时需要杀死最吃内存的容器

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 进程退出时,也就代表着此容器被关闭。docker 目前没有办法知道此时的进程退出属于正常退出还是异常退出。当出现容器关闭情况时,Docker Daemon 会尝试再次重新将此容器由 Stopped 状态转为 Running 状态。只有设置了–restart 参数的容器,Docker Daemon 才会去尝试启动,否则容器会保持停止状态

容器暂停

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

④容器命令清单

总览

commandaliasfunction
docker createdocker container create创建容器
docker rundocker container run运行容器
docker attachdocker container attach连接到正在运行中的容器
docker commitdocker container commit将镜像提交为容器
docker cpdocker container cp在容器和宿主机之间拷贝
docker diffdocker container diff检查容器里文件结构的更改
docker execdocker container exec在运行的容器中执行命令
docker exportdocker container export将容器导出为 tar
docker container inspect查看容器详细信息
docker killdocker container kill杀死容器
docker logsdocker container logs查看日志
docker psdocker container ls, docker container list, docker container ps查看正在运行的进程
docker pausedocker container pause暂停进程
docker portdocker container port查看容器端口映射
docker container prune删除停止的容器
docker renamedocker container rename重命名容器
docker restartdocker container restart重启容器
docker rmdocker container rm, docker container remove删除容器
docker startdocker container start启动容器
docker statsdocker container stats查看资源占用信息
docker stopdocker container stop停止容器
docker topdocker container top查看某个容器的资源占用
docker unpausedocker container unpause继续运行容器
docker updatedocker container update更新容器配置
docker waitdocker container wait阻止一个或多个容器停止, 然后打印退出代码

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: 自动重启

🍂样例

# 创建一个名为 mynginx 的容器
docker create --name mynginx nginx:latest

docker run

  • 功能

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

  • 语法

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

  • 别名

    docker container run

  • 参数

    • -d: 后台运行容器,并返回容器 ID;比 create 多了这个参数
    • -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:latest 以后台模式启动一个容器, 并将容器命名为 mynginx
docker run --name mynginx -d nginx:latest

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: 显示总的文件大小

🍂样例

# 列出全部容器(包括未运行的)
docker ps -a

docker logs

  • 功能

    查看容器日志

  • 语法

    docker logs [OPTIONS] CONTAINER

  • 别名

    docker container logs

  • 参数

    • -f, --follow: 跟踪日志输出
    • --since: 显示某个开始时间的所有日志
    • -t, --timestamps: 显示时间戳
    • -n, --tail: 仅列出最新 N 条容器日志

🍂样例

# 跟踪查看容器 mynginx 的日志输出
docker logs -f mynginx

docker attach

  • 功能

    连接到正在运行中的容器

  • 语法

    docker attach [OPTIONS] CONTAINER

  • 别名

    docker container attach

  • 参数

    • --sig-proxy: 是否将所有信号代理,默认是 true,如果设置为 false,退出的话不会影响容器,否则退出会导致容器退出

🍂样例

# 连接到正在运行的容器(执行 ctrl+c 后会把容器杀死)
docker attach mynginx# 连接到正在运行的容器(执行 ctrl+c 后不会把容器杀死)
docker attach --sig-proxy=false mynginx

docker exec

  • 功能

    在容器中执行命令

  • 语法

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

  • 别名

    docker container exec

  • 参数

    • -d: 分离模式: 在后台运行
    • -i: 即使没有附加也保持 STDIN 打开
    • -t: 分配一个伪终端
    • -e: 设置环境变量
    • -u, --user: 指定用户 "<name|uid>[:<group|gid>]"
    • -w, --workdir: 指定工作目录

🍂样例

# 在容器 mynginx 中以交互模式执行 echo
docker exec -it mynginx echo "Hello world"# 在容器 mynginx 中以交互模式打开 shell
docker exec -it mynginx bash

docker start

  • 功能

    启动停止的容器

  • 语法

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

  • 别名

    docker container start

  • 参数

    • -a, --attach: 用于将容器的标准输入(STDIN)、标准输出(STDOUT)和标准错误(STDERR)流连接到执行该命令的终端
    • -i, --interactive: 保持容器的 STDIN 打开,即使没有连接到终端

🍂样例

# 启动容器, 并将其输出连接到终端,同时在后台运行
docker start -ai mynginx

docker stop

  • 功能

    停止运行的容器

  • 语法

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

  • 别名

    docker container stop

  • 参数

    • -s: 发送的信号

🍂样例

# 停止 mynginx 容器
docker stop mynginx

docker restart

  • 功能

    重启容器

  • 语法

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

  • 别名

    docker container restart

  • 参数

    • -t, --time: 在发送 SIGTERM 信号后等待容器停止的秒数,默认为 10 秒

🍂样例

# 重启 mynginx 容器, 设置等待时间为 30 秒
docker restart -t 30 mynginx

docker kill

  • 功能

    强制退出容器

  • 语法

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

  • 别名

    docker container kill

  • 参数

    • -s, --signal: 用于指定发送给容器的信号。默认是 SIGKILL,但你可以指定任何有效的信号

🍂样例

# 立即停止 mynginx 容器
docker kill mynginx# 向 mynginx 的容器发送 SIGINT 信号
docker kill -s SIGINT mynginx

docker top

  • 功能

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

  • 语法

    docker top CONTAINER [ps OPTIONS]

  • 别名

    docker container top

注意事项

容器运行时不一定有 /bin/bash 终端来交互执行 top 命令,而且容器还不一定有 top 命令,可以使用 docker top 来实现查看 container 中正在运行的进程

🍂样例

# 查看 mynginx 容器中的进程信息
docker top mynginx

docker stats

  • 功能

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

  • 语法

    docker stats [OPTIONS] [CONTAINER...]

  • 别名

    docker container stats

  • 参数

    • -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# 列出所有正在运行的容器信息(Json 格式显示)
docker stats --format json

docker container inspect

  • 功能

    查看容器详细信息

  • 语法

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

  • 参数

    • -f, --fortmat: 指定返回值的模板文件。如 table, json
    • -s, --size: 显示总的文件大小

注意事项

docker inspect会自动检查是镜像还是容器, 然后显示详细信息

🍂样例

# 查看 mynginx 容器的详细信息
docker container inspect mynginx

docker port

  • 功能

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

  • 语法

    docker port CONTAINER [PRIVATE_PORT[/PROTO]]

  • 别名

    docker container port

🍂样例

# 查询 mynginx 容器的端口映射情况
docker port mynginx

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/

docker diff

  • 功能

    检查容器里文件结构的更改

  • 语法

    docker diff CONTAINER

🍂样例

检查 mynginx 容器里文件结构的更改
docker diff mynginx

docker commit

  • 功能

    从容器创建一个新的镜像

  • 语法

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

  • 参数

    • -a: 提交镜像的作者
    • -c: 使用 Dockerfile 指令创建镜像(可修改启动指令)
    • -m: 提交时的说明文字
    • -p: 在 commit 时, 将容器暂停

🍂样例

# 从 c3f279d17e0a 容器中创建 bibubibu/mynginx:v1 镜像
docker commit c3f279d17e0a bibubibu/mynginx:v1

docker pause

  • 功能

    暂停容器中所有的进程

  • 语法

    docker pause CONTAINER [CONTAINER...]

  • 别名

    docker container pause

🍂样例

# 暂停 mynginx 容器中的所有进程
docker pause mynginx

docker unpause

  • 功能

    恢复容器中所有的进程

  • 语法

    docker unpause CONTAINER [CONTAINER...]

  • 别名

    docker container unpause

🍂样例

# 恢复 mynginx 容器中的所有进程
docker unpause mynginx

docker rm

  • 功能

    删除停止的容器

  • 语法

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

  • 别名

    docker container rm

  • 参数

    • -f: 通过 SIGKILL 信号强制删除一个运行中的容器

🍂样例

# 删除 mynginx 容器
docker stop mynginx
docker rm mynginx

docker export

  • 功能

    导出容器内容为 tar 文件

  • 语法

    docker export [OPTIONS] CONTAINER

  • 别名

    docker container export

  • 参数

    • -o: 写入到文件

🍂样例

# 导出 mynginx 为 mynginx_v1.tar
docker export -o mynginx_v1.tar mynginx

docker wait

  • 功能

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

  • 语法

    docker wait CONTAINER [CONTAINER...]

  • 别名

    docker container wait

🍂样例

# 阻塞 mynginx 容器运行
docker wait mynginx

docker rename

  • 功能

    重命名容器

  • 语法

    docker rename CONTAINER NEW_NAME

  • 别名

    docker container rename

🍂样例

# 将 mynginx 容器重命名为 myweb
docker rename mynginx myweb

docker container prune

  • 功能

    删除所有停止的容器

  • 语法

    docker container prune [OPTIONS]

  • 参数

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

🍂样例

# 删除所有停止的容器
docker container prune

docker update

  • 功能

    更新容器配置

  • 语法

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

  • 别名

    docker container update

  • 参数

    • --cpus: cpu 数量
    • --cpuset-cpus: 使用哪些 cpu
    • --memory: 内存限制
    • --memory-swap: 交换内存
    • --cpu-period: 用来指定容器对 CPU 的使用要在多长时间内做一次重新分配
    • --cpu-quota: 用来指定在这个周期内,最多可以有多少时间用来跑这个容器

🍂样例

# 更新内存
docker update -m 400m mynginx

在这里插入图片描述

相关文章:

Docker-Container

Docker ①什么是容器②为什么需要容器③容器的生命周期容器 OOM容器异常退出容器暂停 ④容器命令清单总览docker createdocker rundocker psdocker logsdocker attachdocker execdocker startdocker stopdocker restartdocker killdocker topdocker statsdocker container insp…...

下载安装anaconda和pytorch的详细方法,以及遇到的问题和解决办法

下载安装Anaconda 首先需要下载Anaconda&#xff0c;可以到官网Anaconda官网或者这里提供一个镜像网站去下载anaconda镜像网站 安装步骤可参考该文章&#xff1a;Anaconda安装步骤&#xff0c;本篇不再赘述 注意环境变量的配置&#xff0c;安装好Anaconda之后一定要在环境变量…...

2020年天津市二级分类土地利用数据(矢量)

天津市&#xff0c;位于华北平原海河五大支流汇流处&#xff0c;东临渤海&#xff0c;北依燕山。地势以平原和洼地为主&#xff0c;北部有低山丘陵&#xff0c;海拔由北向南逐渐下降&#xff0c;地貌总轮廓为西北高而东南低。天津有山地、丘陵和平原三种地形&#xff0c;平原约…...

设计模式——结构型——外观模式Facade

处理器类 public class Cpu {public void start() {System.out.println("处理器启动了...");} } 内存类 public class Memory {public void start() {System.out.println("内存启动了...");} } 硬盘类 public class Disk {public void start() {Syste…...

OpenGL的MVP矩阵理解

OpenGL的MVP矩阵理解 右手坐标系 右手坐标系与左手坐标系都是三维笛卡尔坐标系&#xff0c;他们唯一的不同在于z轴的方向&#xff0c;如下图&#xff0c;左边是左手坐标系&#xff0c;右边是右手坐标系 OpenGL中一般用的是右手坐标系 1.模型坐标系&#xff08;Local Space&…...

前端超分辨率技术应用:图像质量提升与场景实践探索-设计篇

超分辨率&#xff01; 引言 在数字化时代&#xff0c;图像质量对于用户体验的重要性不言而喻。随着显示技术的飞速发展&#xff0c;尤其是移动终端视网膜屏幕的广泛应用&#xff0c;用户对高分辨率、高质量图像的需求日益增长。然而&#xff0c;受限于网络流量、存储空间和图像…...

C++11入门手册第一节,学完直接上手Qt(共两节)

入门 hello.cpp #include <iostream>int main() { std::cout << "Hello Quick Reference\n"<<endl; return 0;} 编译运行 $ g hello.cpp -o hello$ ./hello​Hello Quick Reference 变量 int number 5; // 整数float f 0.95; //…...

Docker部署MinIO对象存储服务

1. 拉取MinIO镜像 # 下载镜像 docker pull minio/minio#查看镜像 docker images2. 创建目录 # 文件存储目录 mkdir -p /opt/minio/data# 配置文件 mkdir -p /opt/minio/config# 日志文件 mkdir -p /opt/minio/logs3. 创建Minio容器并运行 docker run \ -p 9000:9000 \ -p 90…...

基于Echarts的超市销售可视化分析系统(数据+程序+论文)

本论文旨在研究Python技术和ECharts可视化技术在超市销售数据分析系统中的应用。本系统通过对超市销售数据进行分析和可视化展示&#xff0c;帮助决策层更好地了解销售情况和趋势&#xff0c;进而做出更有针对性的决策。本系统主要包括数据处理、数据可视化和系统测试三个模块。…...

使用ai智能写作场景之gpt整理资料,如何ai智能写作整理资料

Ai智能写作助手&#xff1a;Ai智能整理资料小助手 Ai智能整理资料小助手可试用3天&#xff01; 通俗的解释一下怎么用ChatGPT来进行资料整理&#xff1a; 搜寻并获取指定数量的特定领域文章&#xff1a; 想像你在和我说话一样&#xff0c;告诉我你想要多少篇关于某个话题的文…...

C/C++ 内存管理

1、C/C内存分布 首先我们来了解在一个程序中&#xff0c;代码主要存储在哪些地方&#xff1b; 1.栈&#xff1a;又叫堆栈&#xff0c;其中一般存储非静态局部变量、函数参数、返回值等&#xff0c;栈的增长是向下的。 2.内存映射段&#xff1a;是高效的 I/O 映射方式&#xff0…...

android pdf框架-10,相册浏览

MupdfViewer 这是最后apk,源码在前面的文章已经贴过了本站下载地址,只是不是最新的.可能不少是旧的内容. subsampling-scale-image-view这是一个大图片的分块加载的实现.比较不错的.滑动方面我觉得使用flinger的效果比它要流畅,惯性要好. 也有人把这个作成pdf渲染器.但翻页就…...

基于SSM的高校普法系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的高校普法系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…...

数据结构刷题篇 之 【力扣二叉树基础OJ】详细讲解(含每道题链接及递归图解)

有没有一起拼用银行卡的&#xff0c;取钱的时候我用&#xff0c;存钱的时候你用 1、相同的树 难度等级&#xff1a;⭐ 直达链接&#xff1a;相同的树 2、单值二叉树 难度等级&#xff1a;⭐ 直达链接&#xff1a;单值二叉树 3、对称二叉树 难度等级&#xff1a;⭐⭐ 直达…...

Jackson 2.x 系列【6】注解大全篇二

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 注解大全2.11 JsonValue2.12 JsonKey2.13 JsonAnySetter2.14 JsonAnyGetter2.15 …...

在低成本loT mcu上实现深度神经网络端到端自动部署-深度神经网络、物联网、边缘计算、DNN加速——文末完整资料

目录 前言 DNN 量化神经网络 并行超低功耗计算范式 面向内存的部署 结果 原文与源码下载链接 REFERENCES 前言 在物联网极端边缘的终端节点上部署深度神经网络( Deep Neural Networks&#xff0c;DNNs )是支持普适深度学习增强应用的关键手段。基于低成本MCU的终端节点…...

【linux】基础IO |文件操作符

需要掌握&#xff1a;操作文件&#xff0c;本质&#xff1a;进程操作文件。进程和文件的关系 向文件中写入&#xff0c;本质上向硬件中写入->用户没有权利直接写入->操作系统是硬件的管理者&#xff0c;我们可以通过操作系统往硬件写入->操作系统必须提供系统调用&…...

探索 2024 年 Web 开发最佳前端框架

前端框架通过简化和结构化的网站开发过程改变了 Web 开发人员设计和实现用户界面的方法。随着 Web 应用程序变得越来越复杂&#xff0c;交互和动画功能越来越多&#xff0c;这是开发前端框架的初衷之一。 在网络的早期&#xff0c;网页相当简单。它们主要以静态 HTML 为特色&a…...

解决: MAC ERROR [internal] load metadata for docker.io/library/openjdk:17

错误信息&#xff1a; ERROR [internal] load metadata for docker.io/library/openjdk:17 ERROR: failed to solve: openjdk:17: error getting credentials - err: exit status 1, out: 解决方法&#xff1a; running this command rm ~/.docker/config.json before …...

View事件分发

MotionEvent 1.简介 MotionEvent 是Android系统中一个非常重要的类&#xff0c;它代表了屏幕上发生的触摸事件。当用户在屏幕上触摸、滑动或者长按时&#xff0c;都会生成一个MotionEvent对象&#xff0c;这个对象包含了触摸动作的各种信息。 2.事件类型 ACTION_DOWN&#x…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

文件上传漏洞防御全攻略

要全面防范文件上传漏洞&#xff0c;需构建多层防御体系&#xff0c;结合技术验证、存储隔离与权限控制&#xff1a; &#x1f512; 一、基础防护层 前端校验&#xff08;仅辅助&#xff09; 通过JavaScript限制文件后缀名&#xff08;白名单&#xff09;和大小&#xff0c;提…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…...

【阅读笔记】MemOS: 大语言模型内存增强生成操作系统

核心速览 研究背景 ​​研究问题​​&#xff1a;这篇文章要解决的问题是当前大型语言模型&#xff08;LLMs&#xff09;在处理内存方面的局限性。LLMs虽然在语言感知和生成方面表现出色&#xff0c;但缺乏统一的、结构化的内存架构。现有的方法如检索增强生成&#xff08;RA…...