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

docker介绍与常用命令汇总

docker简介

docker是什么?

Docker 是一个开源的应用容器引擎,它可以让开发者将应用与运行环境打包成一个标准的、可移植的容器(Container),在任何地方都可以快速部署和运行,无需关心底层环境是否一致。

核心优势:

  • 快速启动与部署

  • 高效利用资源

  • 易于迁移与复制

  • 开发环境一致性

一句话总结: Docker 是一个“构建-打包-交付-运行”一体化的容器平台。

docker 的基本架构?

Docker 采用了 客户端-服务器 架构,核心组件包括:

  • Docker 客户端(Client):用户通过命令行工具 docker 与 Docker 守护进程通信。

  • Docker 守护进程(Docker Daemon):负责构建、运行和管理容器。

  • Docker 镜像(Image):容器的模板,是构建容器的基础。

  • Docker 容器(Container):镜像的运行实例,是应用的实际运行环境。

  • Docker 仓库(Registry):存储和分发镜像,官方默认使用 Docker Hub。

+-------------------------+        +--------------------+
|   Docker 客户端 (CLI)   |<-------> Docker 守护进程     |
+-------------------------+        |  (dockerd)         |+--------------------+|+-----------------------+------------------------+|                        |                        |+---------------+        +---------------+        +------------------+|   镜像管理器   |        | 容器运行时 (runc)|        | 网络/存储管理器   |+---------------+        +---------------+        +------------------+|v+------------------+| Docker 镜像仓库   || (Docker Hub / 私有)|+------------------+
  • Client 发起命令 -> 守护进程执行操作。

  • 守护进程拉取镜像、创建容器、上传/下载镜像到 Registry。

docker 与虚拟机的区别?

架构组件虚拟机(VM)容器(Docker)
中间层虚拟机管理器(Hypervisor)Docker 引擎
操作系统层每个虚拟机一个完整的操作系统所有容器共享宿主操作系统内核
资源分配为每个 VM 分配固定 CPU、内存等,资源隔离明显容器之间共享资源,按需使用,隔离通过 namespace 和 cgroups 实现
启动时间分钟级(需要启动整个操作系统)秒级(只需启动应用进程)
系统开销高(需要管理多个操作系统)低(内核复用,运行开销小)
可移植性跨平台部署较复杂镜像一致,跨平台移植方便

补充:Guest OS中文是客户操作系统,是指运行在虚拟机中的操作系统,他与我们平时安装在电脑上的操作系统(Host OS:主机操作系统)是并列概念。

传统虚拟机:

+----------------------------+
|      硬件服务器             |
+----------------------------+
|      主机操作系统           |
+----------------------------+
| 虚拟机管理程序(Hypervisor)|
+----------------------------+
|   VM1   |   VM2   |   VM3   |
|   OS    |   OS    |   OS    |
|  App1   |  App2   |  App3   |
+----------------------------+

虚拟机的“重”在于完整操作系统

在 VM 架构中,每一个 VM 都包含一个完整的 Guest OS(比如 Ubuntu、CentOS),这意味着:

  • 要为每个 VM 分配独立的系统资源;

  • 启动慢,运行中资源占用高;

  • 升级或维护成本大(多个系统要分别更新)。

这也是 Hypervisor 存在的原因:它在物理机与 Guest OS 之间提供虚拟化支持,但这层抽象带来性能损耗。

Docker 容器结构

+----------------------------+
|      硬件服务器             |
+----------------------------+
|      主机操作系统           |
+----------------------------+
|        Docker 引擎         |
+----------------------------+
| 容器1 | 容器2 | 容器3       |
| App1  | App2  | App3        |
+----------------------------+

容器的“轻”源于共享宿主内核

Docker 容器运行在 Docker 引擎之上,所有容器共享宿主 OS 的内核,但通过内核提供的:

  • namespace(名字空间)机制:隔离进程、网络、文件系统等;

  • cgroups(控制组)机制:限制资源使用(如内存、CPU);

从而实现逻辑上的“隔离”,同时保留极高的运行效率。

docker应用场景?

开发环境快速搭建

通过 Dockerfile 或镜像,一键构建完整开发环境,如 Node.js + Redis + MySQL 组合。

多版本/多实例服务运行

不同版本的同一服务可同时部署在不同容器中,避免端口/依赖冲突。

微服务架构部署

Docker 非常适合微服务架构的部署,每个微服务一个容器,统一管理和升级。

docker涉及的一些概念

镜像(image)------docker的可执行模板

Docker 镜像是一个只读模板,它包含了运行某个应用所需要的所有内容,包括:

  • 操作系统(如 Ubuntu、Alpine)

  • 应用程序(如 nginx、redis)

  • 应用所需依赖(如库文件、环境变量)

  • 初始化指令(如启动服务)

镜像就像一个“安装包 + 配置说明书”,你可以从镜像中创建出“运行中的实例” —— 容器。

镜像怎么创建?

方式一:直接拉取别人构建好的镜像

比如你拉取了 nginx 镜像,它里面可能包含:

  • 一个轻量操作系统(如 Alpine)

  • nginx 主程序

  • 默认配置文件

  • 启动命令(如 CMD ["nginx", "-g", "daemon off;"]

方式二:自己通过编写Dockerfile创建自己的镜像

注意:我们也可以在拉取别人镜像的基础上创建属于自己的镜像。

容器(container)-----镜像的运行实例

容器是基于镜像创建的可运行的独立环境,它就像一个轻量级的虚拟机,但比传统虚拟机:

  • 启动更快(秒级)

  • 占用更少资源(共享宿主机内核)

  • 更易移植(镜像打包后“无差运行”)

容器 = 镜像 + 运行时状态(进程、网络、挂载点、环境变量等)

数据卷(volume)

前提:容器是“临时的”,容器被创建时,它是干净的;容器被删除时,它的数据也会一同消失

这就带来一个问题:

  • 如果我运行的是一个数据库容器(如 MySQL),数据怎么保存下来?

  • 如果我写入了日志或用户上传了文件,容器一删这些数据就没了?

所以我们需要“数据持久化”机制 —— 数据卷

数据卷就是 Docker 提供的一块专门用来保存数据的“独立存储空间”,它不属于容器,但可以被容器挂载和访问。

我们可以这样理解:

  • 容器就像一个快递盒子

  • 数据卷就像一个外接硬盘

  • 你可以把快递盒子丢了(删除容器),但外接硬盘里的数据还在(数据卷不被删除)

docker网络(docker network)

Docker 网络,是容器之间进行通信的桥梁,就像现实中的“网线”和“交换机”,让容器能够相互“看见”并访问彼此。

Docker 网络解决了几个关键问题:

问题Docker 网络怎么解决
容器之间如何通信?容器加入同一个网络,就像在一个局域网中
怎么访问宿主机或互联网?Docker 默认提供 NAT 转发
怎么隔离容器?网络可以分组,防止不同容器互相干扰
多服务(如 Web + DB)怎么互联?用网络连接它们,像搭积木一样组服务

 

Docker Compose

Docker 官方提供的一个多容器应用编排工具,通过一个 docker-compose.yml 文件,你可以用一行命令启动、停止、构建多个服务容器,非常适合管理复杂应用。

  • 你写好一个 yml 配置文件,

  • 然后一句命令:docker-compose up

  • 就能自动搭好整个应用环境:Web、数据库、缓存、后台进程……全部一次性启动

为什么需要docker compose?

在开发中,经常会遇到下面这种情况:

传统方式存在的问题
docker run 启多个容器容器之间依赖配置麻烦
容器名字、端口、网络、数据卷要手动指定容易错、不好维护
想重启整个应用需要 N 条命令运维效率低下

Docker Compose就是为了解决这些问题。

一个完整的 Compose 项目一般包括 3 部分:

组成描述
docker-compose.yml核心配置文件,定义了服务、网络、卷等
.env可选的环境变量文件
项目目录结构一般包括源码、Dockerfile 等

docker-compose.yml 文件示例

version: '3.8'services:web:build: .ports:- "8080:80"depends_on:- dbdb:image: mysql:8.0restart: alwaysenvironment:MYSQL_ROOT_PASSWORD: 123456volumes:- dbdata:/var/lib/mysqlvolumes:dbdata:
  • services:定义所有容器服务,如 web、db

  • build:从当前目录的 Dockerfile 构建镜像

  • image:使用已有镜像

  • ports:端口映射(宿主机:容器)

  • volumes:挂载卷(可复用数据)

  • depends_on:依赖关系(控制启动顺序)

  • environment:设置环境变量

  • networksvolumes:可选,全局定义网络或数据卷

docker常用命令

镜像相关命令

命令说明
docker images列出本地所有镜像
docker image ls同上,官方推荐写法
docker pull <image>从远程仓库拉取镜像
docker pull <image>:<tag>拉取指定标签的镜像
docker build -t <name>:<tag> .从 Dockerfile 构建镜像
docker rmi <image_id>删除镜像
docker image rm <image_id>同上,更推荐的写法
docker image prune删除未被使用的悬空镜像
docker image inspect <image>查看镜像详细信息
docker tag <image> <new_name>给已有镜像打新标签
docker save -o <file>.tar <image>导出镜像为 tar 包
docker load -i <file>.tar从 tar 包导入镜像
docker history <image>查看镜像构建历史

容器管理命令

命令说明
docker ps查看正在运行的容器
docker ps -a查看所有容器(包括已停止)
docker run <image>运行一个容器
docker run -it <image> bash以交互方式运行容器并进入 shell
docker run -d <image>后台运行容器
docker start <container_id>启动已停止的容器
docker stop <container_id>停止运行中的容器
docker restart <container_id>重启容器
docker rm <container_id>删除容器
docker exec -it <container_id> <command>在运行中的容器中执行命令
docker attach <container_id>附着到容器控制台
docker logs <container_id>查看容器输出日志
docker inspect <container_id>查看容器详细信息
docker cp <container_id>:<path> <local_path>从容器拷贝文件到本地
docker cp <local_path> <container_id>:<path>从本地拷贝文件到容器
docker top <container_id>查看容器中的进程
docker stats实时查看容器资源使用情况
docker rename <old_name> <new_name>重命名容器

 网络管理命令

命令说明
docker network ls列出所有网络
docker network inspect <network_name>查看指定网络详细信息
docker network create <network_name>创建自定义网络(默认为 bridge)
docker network create -d bridge <name>创建 bridge 网络
docker network create -d overlay <name>创建 overlay 网络(Swarm 模式用)
docker network connect <network> <container>将容器连接到网络
docker network disconnect <network> <container>将容器从网络中移除
docker network rm <network_name>删除网络

 数据卷

命令说明
docker volume ls列出所有卷
docker volume create <volume_name>创建卷
docker volume inspect <volume_name>查看卷详细信息
docker volume rm <volume_name>删除卷
docker volume prune删除所有未被使用的卷
docker run -v <volume_name>:<container_path> <image>使用卷运行容器
docker run -v $(pwd):<container_path> <image>使用当前目录作为挂载点运行容器(bind mount)

 Docker Compose 命令(需要安装 docker-compose

命令说明
docker-compose up根据 docker-compose.yml 启动所有服务
docker-compose up -d以后台方式启动服务
docker-compose down停止并移除服务容器、网络等
docker-compose ps查看 compose 管理的容器状态
docker-compose logs查看服务日志
docker-compose logs -f持续输出日志
docker-compose build构建服务镜像
docker-compose restart重启服务
docker-compose exec <service> <cmd>在指定服务容器中执行命令
docker-compose config验证和查看解析后的配置
docker-compose pull拉取 compose 文件中定义的镜像
docker-compose stop停止服务但不移除容器
docker-compose start启动已存在但停止的服务容器

 Swarm 管理命令(用于集群部署)

命令说明
docker swarm init初始化当前节点为 Swarm 管理节点
docker swarm join --token <token> <manager_ip>:2377加入集群
docker node ls查看集群节点
docker service create --name <name> <image>创建服务
docker service ls查看服务列表
docker service ps <service_name>查看服务任务
docker service scale <name>=<count>扩缩容服务
docker service update --image <new_image> <service>更新服务
docker service rm <service>删除服务
docker stack deploy -c docker-compose.yml <stack_name>使用 compose 文件部署 stack
docker stack rm <stack_name>移除 stack
docker stack services <stack_name>查看 stack 中的服务

 安全与身份验证相关命令(Login、Registry)

命令说明
docker login登录 Docker Hub 或私有仓库
docker logout登出当前仓库
docker login <registry_url>登录指定私有仓库
docker push <image>推送镜像到远程仓库
docker pull <image>拉取镜像
docker tag <image> <registry_url>/<name>:<tag>给镜像打私有仓库标签

系统清理与信息查看命令(System) 

命令说明
docker system df查看 Docker 磁盘使用情况
docker system prune清理未使用的数据(容器、镜像、网络、卷)
docker system prune -a更彻底地清理,包括所有未使用镜像
docker info显示 Docker 系统详细信息
docker version查看 Docker 版本
docker events实时输出 Docker 事件日志
docker stats实时显示所有容器的资源使用情况

相关文章:

docker介绍与常用命令汇总

docker简介 docker是什么&#xff1f; Docker 是一个开源的应用容器引擎&#xff0c;它可以让开发者将应用与运行环境打包成一个标准的、可移植的容器&#xff08;Container&#xff09;&#xff0c;在任何地方都可以快速部署和运行&#xff0c;无需关心底层环境是否一致。 …...

Axure设计数字乡村可视化大屏:构建乡村数据全景图

今天&#xff0c;让我们一同深入了解由Axure设计的数字乡村可视化大屏&#xff0c;看看它如何通过精心的布局和多样化的图表类型&#xff0c;将乡村的各类数据以直观、易懂的方式呈现出来&#xff0c;为乡村管理者提供有力的数据支持。 原型效果预览链接&#xff1a;Axure数字乡…...

c#基础01(.Net介绍)

文章目录 .Net平台介绍.Net平台简介跨平台开源.Net Core.Net Framework开发工具安装选项 创建项目 .Net平台介绍 .Net平台简介 .NET是一种用于构建多种应用的免费开源开放平台&#xff0c;例如&#xff1a; Web 应用、Web API 和微服务 云中的无服务器函数 云原生应用 移动…...

GraphQL在.NET 8中的全面实践指南

一、GraphQL与.NET 8概述 GraphQL是一种由Facebook开发的API查询语言&#xff0c;它提供了一种更高效、更灵活的替代REST的方案。与REST不同&#xff0c;GraphQL允许客户端精确指定需要的数据结构和字段&#xff0c;避免了"过度获取"或"不足获取"的问题。…...

开源音视频转文字工具:基于 Vosk 和 Whisper 的多语言语音识别项目

背景介绍 随着短视频、播客等音视频内容的爆发式增长&#xff0c;快速将音视频内容转换为文字的需求也越来越大。无论是内容创作者需要的字幕&#xff0c;还是企业需要的会议记录&#xff0c;都需要一个可靠的语音转文字解决方案。 技术架构 本项目采用双引擎架构&#xff0…...

Playwright 多语言一体化——Python_Java_.NET 全栈采集实战

在现代 Web 自动化领域&#xff0c;Playwright 通过其多语言支持可在 Python、Java 及 .NET 三大生态中共享同一底层实现&#xff0c;简化了跨团队协作与维护成本 。然而&#xff0c;若忽略代理IP等必要配置&#xff0c;很容易导致功能异常或被目标网站限制&#xff0c;本文将以…...

【Linux网络】传输层协议UDP

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343 &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/qinjh_/category_12891150.html 目录 传输层 再谈端口号 端口号范围划分 认识知名端口号(Well-Know Port Number…...

VAPO:视觉-语言对齐预训练(对象级语义)详解

简介 多模态预训练模型(Vision-Language Pre-training, VLP)近年来取得了飞跃发展。在视觉-语言模型中,模型需要同时理解图像和文本,这要求模型学习二者之间的语义对应关系。早期方法如 VisualBERT、LXMERT 等往往使用预先提取的图像区域特征和文本词嵌入拼接输入,通过 T…...

自制操作系统day4(c指针)(指针和数组)(CLI和STI)(EFLAGS)

day4 关于c指针的理解&#xff08;结合汇编&#xff09; int i; char *p; p(char *) i; *pi &0x0f;p(char *) i; *pi &0x0f;MOV ECX,i MOV BYTE [ECX],(i &0x0f) 如果一开始不给p赋值&#xff0c;p的内存地址不确定&#xff0c;也就是这个ECX里的值不确定&#x…...

计算机视觉与深度学习 | Python实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据

以下是一个结合ARIMA、鲸鱼优化算法(WOA)、CNN和LSTM进行时间序列预测的Python实现框架。由于完整代码和数据量较大,此处提供核心代码结构和示例数据集,您可根据需求扩展。 1. 数据准备(示例数据) 使用airline-passengers.csv(航空乘客数据集): import pandas as pd…...

SCGI 服务器详解

1 协议与报文格式 项目说明连接类型长连接&#xff0c;单条 TCP/UnixSocket 可传多请求&#xff1b;由前端&#xff08;Nginx 等&#xff09;维护 keep-alive。报文分段"<len>:" <header netstring> "," <body><len> 计数10 进…...

Linux问题排查-找到偷偷写文件的进程

在 Linux 系统中&#xff0c;若要通过已修改的文件找到修改该文件的进程 PID&#xff0c;可以结合以下方法分析&#xff0c;具体取决于文件是否仍被进程打开或已被删除但句柄仍存在&#xff1a; 一、文件仍被进程打开&#xff08;未删除&#xff09; 如果文件当前正在被某个进…...

Linux的权限问题

引入&#xff1a;权限的意义是什么&#xff1f; 权限就是为了让人能做某些事或不能做某些事 一&#xff1a;Linux下的用户种类 Linux下只有两种用户&#xff1a;root 和 普通用户 root&#xff1a;拥有至高无上的权限&#xff0c;任何的权限都不能限制root 普通用户&#xf…...

WPF技巧-BindingProxy

WPF技巧-BindingProxy 文章目录 WPF技巧-BindingProxy&#x1f50d; 分析与解释1. **继承 Freezable**2. **重写 CreateInstanceCore 方法**3. **定义 DependencyProperty&#xff1a;Data** ✅ 使用场景场景说明&#xff1a;解决方案&#xff1a;示例 XAML&#xff1a; &#…...

深度解析:Redis 性能优化全方位指南

Redis 作为当前最流行的内存数据库之一&#xff0c;以其高性能、低延迟和丰富的数据结构支持&#xff0c;被广泛应用于缓存、消息队列、实时统计等场景。然而&#xff0c;随着业务规模的增长&#xff0c;Redis 可能面临性能瓶颈&#xff0c;如高延迟、内存不足、吞吐量下降等问…...

OpenHarmony外设驱动使用 (五),Fingerprint_auth

OpenHarmony外设驱动使用 &#xff08;五&#xff09; Fingerprint_auth 概述 功能简介 指纹认证是端侧设备不可或缺的功能&#xff0c;为设备提供用户认证能力&#xff0c;可应用于设备解锁、支付、应用登录等身份认证场景。用户注册指纹后&#xff0c;指纹认证模块就可为设…...

.NET外挂系列:2. 了解强大的 harmony 注解特性

一&#xff1a;背景 1. 讲故事 上一篇我们简单的聊了下harmony外挂的基本玩法&#xff0c;让大家宏观上感受到了外挂在 .NET高级调试 领域的威力&#xff0c;这一篇我们从 注解特性 这个角度继续展开。 二&#xff1a;harmony 注解特性 1. HarmonyPatch 解读 在harmony支持…...

【Arm】应用ArmDS移植最小FreeRTOS系统

一、文档背景 FreeRTOS&#xff08;Free Real-Time Operating System&#xff09;是一个开源的实时操作系统内核&#xff0c;广泛应用于嵌入式系统。它具有小巧、灵活、低功耗等特点&#xff0c;支持多任务调度、信号量、队列等实时操作系统基本功能。 将FreeRTOS移植到特定硬…...

Python----目标检测(labelimg和labelme的安装与使用,Pycharm配置教程)

一、labelimg labelimg是一款开源的图像标注工具&#xff0c;标签可用于分类和目标检测&#xff0c;它是用python写的&#xff0c;并使用Qt作为其图形界面&#xff0c;简单好用&#xff08;虽然是英文版的&#xff09;。其注释以 PASCAL VOC格式保存为XML文件&#xff0c;这是I…...

Axure跨页面交互:利用IFrame和JS实现父子页面菜单联动

在 Axure 中使用内联框架&#xff08;IFrame&#xff09;进行父子页面间的通信是一个非常有效的技巧&#xff0c;尤其是在需要实现复杂交互逻辑时。通过 JavaScript 直接操作 DOM 元素&#xff0c;可以突破 Axure 基础元件的限制&#xff0c;实现更灵活的页面联动。以下是对你描…...

百度飞桨OCR(PP-OCRv4_server_det|PP-OCRv4_server_rec_doc)文本识别-Java项目实践

什么是OCR? OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;是一种通过技术手段将图像或扫描件中的文字内容转换为可编辑、可搜索的文本格式&#xff08;如TXT、Word、PDF等&#xff09;的技术。它广泛应用于文档数字化、信息提取、自动化…...

救生衣穿戴检测数据集VOC+YOLO格式2171张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2171 标注数量(xml文件个数)&#xff1a;2171 标注数量(txt文件个数)&#xff1a;2171 …...

JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received.

环境&#xff1a; vllm 0.8.5 java 17 Qwen3-32B-FP8 问题描述&#xff1a; JAVA请求vllm的api服务报错Unsupported upgrade request、 Invalid HTTP request received. WARNING: Unsupported upgrade request. INFO: - "POST /v1/chat/completions HTTP/1.1&…...

信号量基础入门:并发控制的核心概念

问题的复杂性产生的根本原因在于&#xff0c;如 2.2 节所述&#xff0c;共享变量的访问始终是“单向信息流”。也就是说&#xff0c;一个进程可以分配新值或检查当前值&#xff0c;但这种检查不会为其他进程留下任何痕迹。结果是&#xff0c;当一个进程想要对共享变量的当前值作…...

物联网之使用Vertx实现HTTP/WebSocket最佳实践

小伙伴们&#xff0c;你们好呀&#xff0c;我是老寇&#xff0c;跟我一起学习使用Vertx实现HTTP-Server和WebSocket-Server 实现Http/WebSocket【响应式】 Vertx-Web地址 实现过程 查看源码 代码比较简单&#xff0c;懒得讲解啦 代码比较简单&#xff0c;懒得讲解啦 代码…...

【神经网络与深度学习】GAN 生成对抗训练模型在实际训练中很容易判别器收敛,生成器发散

引言部分 在深度学习领域&#xff0c;生成对抗网络&#xff08;GAN&#xff09;是一种强大的数据生成方法&#xff0c;它通过生成器&#xff08;G&#xff09;和判别器&#xff08;D&#xff09;之间的博弈来不断优化模型。然而&#xff0c;在实际训练过程中&#xff0c;GAN 往…...

使用 NGINX 的 `ngx_http_secure_link_module` 模块保护资源链接

一、模块简介 版本&#xff1a;自 NGINX 0.7.18 起引入 功能&#xff1a; 签名校验&#xff1a;对请求 URI 中的签名进行校验&#xff0c;保证链接未经篡改。时效控制&#xff1a;根据请求中携带的过期时间&#xff0c;判断链接是否仍在有效期。 启用方式&#xff1a;编译 NG…...

5月19日day30打卡

模块和库的导入 知识点回顾&#xff1a; 导入官方库的三种手段导入自定义库/模块的方式导入库/模块的核心逻辑&#xff1a;找到根目录&#xff08;python解释器的目录和终端的目录不一致&#xff09; 作业&#xff1a;自己新建几个不同路径文件尝试下如何导入 一、导入官方库 …...

NW860NW894美光闪存颗粒NX770NX789

在数字化浪潮席卷全球的当下&#xff0c;数据存储技术的革新正以惊人的速度推动着硬件性能的边界。美光科技作为半导体存储领域的领军者&#xff0c;其NW860、NW894、NX770、NX789系列闪存颗粒凭借前沿架构与精密工艺&#xff0c;成为高性能存储解决方案的核心载体。本文将深入…...

高性能锁机制 CAS:Java 并发编程中的深度剖析

引言 在并发编程领域&#xff0c;i操作的非线程安全性是开发者们熟知的问题。这一现象根源在于i并非原子操作&#xff0c;其内部执行过程包含读取、修改和写入三个步骤&#xff0c;在多线程环境下极易因线程切换导致数据竞争与不一致&#xff0c;这与我们此前探讨的多线程常见问…...

leetcode 每日一题 1931. 用三种不同颜色为网格涂色

题目 1931. 用三种不同颜色为网格涂色 思路 先获取列表&#xff0c;上下左右的所有情况。解决一维的问题 然后所有一维的问题暴力循环。已知一个一维的解&#xff0c;可以对应其他一维解的列表&#xff08;用于记忆化搜索&#xff09; 然后使用递归&#xff0c;进行累加 代…...

解决Windows磁盘管理中因夹卷导致的无法分区问题

解决Windows磁盘管理中因夹卷导致的无法分区问题 在现代计算机管理中&#xff0c;磁盘分区是一个常见且重要的操作。无论是为了优化存储空间&#xff0c;还是为了实现多系统安装&#xff0c;合理的磁盘分区都是必不可少的。然而&#xff0c;许多用户在使用Windows磁盘管理工具…...

龙虎榜——20250519

上证指数缩量收十字星&#xff0c;个股涨多跌少&#xff0c;这周反弹的概率比较大。 深证指数缩量调整&#xff0c;临近反弹&#xff0c;个股表现更好。 2025年5月19日龙虎榜行业方向分析 化工&#xff08;新能源材料国产替代&#xff09; • 代表个股&#xff1a;红宝丽、…...

Python在自动驾驶数据清洗中的应用

Python在自动驾驶数据清洗中的应用 在自动驾驶领域,数据是算法的燃料。高质量的数据意味着更精准的模型,更稳定的驾驶体验。然而,原始数据通常充满噪声、缺失值、不一致格式,甚至有异常点,这些都会严重影响自动驾驶系统的可靠性。因此,数据清洗是一道绕不开的关卡。 一…...

腾讯云Mysql实现远程链接

1.SQL语句&#xff1a;CREATE USER remote_user% IDENTIFIED BY YourPassword; GRANT ALL PRIVILEGES ON *.* TO remote_user%; FLUSH PRIVILEGES; 2.设置入站规则 3.设置安全组 4.效果...

大模型(2)——提示工程(Prompt Engineering)

文章目录 一、提示工程的核心概念为什么需要提示工程&#xff1f; 二、提示设计的基本原则三、实用提示工程技巧1. 角色设定法2. 示例引导法&#xff08;Few-Shot Learning&#xff09;3. 分阶段提问4. 负面约束5. 温度&#xff08;Temperature&#xff09;控制 四、不同任务类…...

深入Java G1 GC调优:如何解决高延迟与吞吐量瓶颈

引言 Java的垃圾回收&#xff08;GC&#xff09;机制是JVM性能的核心&#xff0c;但即使是最先进的G1&#xff08;Garbage-First&#xff09;收集器&#xff0c;在复杂场景下仍可能引发长时间停顿&#xff08;Stop-The-World, STW&#xff09;​或吞吐量骤降。许多开发者虽然熟…...

DAPO:用于指令微调的直接偏好优化解读

一、背景与动机:从RLHF到DPO,再到DAPO 大型语言模型(LLM)经过海量无监督预训练后,往往需要对齐人类偏好或遵循指令的微调,使模型的回答更符合人类期望。这一过程通常通过人类反馈强化学习(RLHF)来实现。例如OpenAI的ChatGPT就使用了RLHF:先让人工标注对模型输出进行偏…...

vue2、vue3项目打包生成txt文件-自动记录打包日期:git版本、当前分支、提交人姓名、提交日期、提交描述等信息 和 前端项目的版本号json文件

vue2 打包生成text文件 和 前端项目的版本号json文件 项目打包生成txt文件-自动记录git版本、当前分支、提交人姓名、提交日期、提交描述等信息生成版本号json文件-自动记录当前版本号、打包时间等信息新建branch-version-webpack-plugin.js文件 // 同步子进程 const execSyn…...

iOS解码实现

import Foundation import VideoToolboxclass KFVideoDecoderInputPacket {var sampleBuffer: CMSampleBuffer? }class KFVideoDecoder {// MARK: - 常量private let kDecoderRetrySessionMaxCount 5private let kDecoderDecodeFrameFailedMaxCount 20// MARK: - 回调var pi…...

Windows中PDF TXT Excel Word PPT等Office文件在预览窗格无法预览的终级解决方法大全

Windows中PDF TXT Excel Word PPT等Office文件在预览窗格无法预览的终级解决方法大全 参考链接&#xff1a; https://zhuanlan.zhihu.com/p/454259765...

在Excel中使用函数公式时,常见错误对应不同的典型问题

在Excel中使用函数公式时&#xff0c;常见错误对应不同的典型问题 1. #DIV/0!&#xff08;除以零错误&#xff09;2. #N/A&#xff08;值不可用&#xff09;3. #NAME?&#xff08;名称错误&#xff09;4. #NULL!&#xff08;空交集错误&#xff09;5. #NUM!&#xff08;数值错…...

Excel

1.快捷键 CtrlE 快速填充 CtrlQ 快速分析 CtrlEnter 原位填充 Tab 横向移动到下一个单元格 Enter 移动到下一行起始位置对应单元格 Shift 返回上一个单元格 0空格分数 显示分数 1.if if(condition,true,false)if(A1>10,"true","fa…...

Rust 学习笔记:错误处理

Rust 学习笔记&#xff1a;错误处理 Rust 学习笔记&#xff1a;错误处理不可恢复的错误带有结果的可恢复错误匹配不同的错误出现错误时 panic 的快捷方式&#xff1a;unwrap 和 expect传播错误传播错误的快捷方式&#xff1a;? 操作符哪里可以使用 ? 操作符 panic or not pan…...

【Linux】系统指令与开发全栈(vim、ssh、gcc)

【Linux】系统指令与开发全栈&#xff08;vim、ssh、gcc&#xff09; 一、Linux 系统指令大全 1、文件与目录管理 基础操作 指令参数说明典型用例注意事项cd~ 家目录&#xff0c;- 返回上级&#xff0c;.. 上级目录cd ~/Documents 进入文档目录无目录权限时会报错ls-l 详情&am…...

用 CodeBuddy 搭建「MiniGoal 小目标打卡器」:一次流畅的 UniApp 开发体验

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 在日常生活中&#xff0c;我们总是希望能够坚持一些小习惯&#xff0c;比如每天锻炼十分钟、读一页书、早睡十分…...

前端(vue)学习笔记(CLASS 6):路由进阶

1、路由的封装抽离 将之前写在main.js文件中的路由配置与规则抽离出来&#xff0c;放置在router/index.js文件中&#xff0c;再将其导入回main.js文件中&#xff0c;即可实现路由的封装抽离 例如 //index.js import { createMemoryHistory, createRouter } from vue-routerim…...

ubuntu 安装 Redis新版Redis 7.x

以下是在Ubuntu系统中安装Redis的详细指南&#xff0c; 一、官方APT源安装 sudo apt install redis-server -y 默认安装最新APT源版本&#xff08;Ubuntu 22.04通常为Redis 6.x&#xff09; 服务自动启动&#xff0c;配置文件路径&#xff1a;/etc/redis/redis.conf验证安装 …...

Httphelper: Http请求webapi小记

文章目录 1、HttpHelper.cs Framework4.812、HttpHelper.cs NET83、JsonHelper.cs Framework4.814、JsonHelper.cs NET85、uniapp request.js 访问WEBAPI 每次查找、测试都比较费事&#xff0c;记录一下把 1、HttpHelper.cs Framework4.81 using System; using System.IO; usi…...

【Linux】进程控制(进程创建、进程终止、进程等待、进程替换)

目录 一、进程创建 1、fork函数 2、页表权限 二、进程终止 1、main函数返回值&#xff08;退出码&#xff09; 2、常见错误码及其对应的错误描述&#xff1a; 将错误退出码转化为错误描述的方法&#xff1a; 3、进程退出的三种场景 4、由上我们可以知道&#xff1a; 5…...