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

Dockerfile 完全指南:从入门到最佳实践

Dockerfile 完全指南:从入门到最佳实践

1. Dockerfile 简介与作用

Dockerfile 是一个文本文件,包含了一系列用于构建 Docker 镜像的指令。它允许开发者通过简单的指令定义镜像的构建过程,实现自动化、可重复的镜像构建。

主要作用

  • 自动化镜像构建过程
  • 确保环境一致性
  • 版本控制构建过程
  • 简化部署流程
  • 实现基础设施即代码(IaC)

2. Dockerfile 基本结构与工作原理

一个典型的 Dockerfile 包含以下部分:

# 注释
指令 参数

构建过程

  1. Docker 从基础镜像开始
  2. 按顺序执行 Dockerfile 中的指令
  3. 每条指令创建一个新的镜像层
  4. 最终生成一个可用的镜像

3. Dockerfile 常用指令详解

3.1 FROM - 指定基础镜像

FROM ubuntu:20.04
# 使用官方Ubuntu 20.04镜像作为基础
FROM python:3.9-slim
# 使用Python官方提供的精简版3.9镜像

说明

  • 必须是 Dockerfile 的第一条有效指令(注释除外)
  • 推荐使用官方镜像
  • 尽量使用特定版本标签而非latest

3.2 RUN - 执行命令

RUN apt-get update && apt-get install -y \curl \git \&& rm -rf /var/lib/apt/lists/*
# 更新包索引,安装curl和git,然后清理缓存
RUN pip install --no-cache-dir flask gunicorn
# 安装Python依赖但不缓存下载的包

最佳实践

  • 多个命令合并为一个RUN指令以减少镜像层
  • 清理不必要的文件减少镜像大小
  • 使用--no-cache选项避免缓存

3.3 COPY 与 ADD - 添加文件

COPY . /app
# 将当前目录所有文件复制到容器的/app目录
COPY requirements.txt /tmp/
RUN pip install -r /tmp/requirements.txt
# 只复制requirements文件先安装依赖

ADD 与 COPY 区别

  • ADD 可以解压tar文件和从URL获取文件
  • 大多数情况下推荐使用更简单的COPY

3.4 WORKDIR - 设置工作目录

WORKDIR /app
# 后续指令都在/app目录下执行

特点

  • 相当于cd命令
  • 如果目录不存在会自动创建
  • 影响RUN、CMD、ENTRYPOINT等指令

3.5 EXPOSE - 声明端口

EXPOSE 80
# 声明容器将监听80端口
EXPOSE 3000/tcp
EXPOSE 3000/udp
# 可以指定协议类型

注意

  • 只是声明作用,实际发布端口需要在运行容器时指定
  • 有助于文档化和理解镜像用途

3.6 ENV - 设置环境变量

ENV NODE_ENV=production
ENV APP_HOME=/app
ENV PATH=/app/node_modules/.bin:$PATH
# 可以修改PATH等系统环境变量

用途

  • 配置应用程序
  • 设置路径变量
  • 定义版本号等常量

3.7 CMD 与 ENTRYPOINT - 容器启动命令

CMD ["python", "app.py"]
# 容器启动时默认运行python app.py
ENTRYPOINT ["/bin/bash", "-c"]
CMD ["echo $HOME"]
# ENTRYPOINT作为主命令,CMD作为参数

区别

  • CMD 可以被docker run后的命令覆盖
  • ENTRYPOINT 不容易被覆盖
  • 通常组合使用

4. Dockerfile 高级功能

4.1 ARG - 构建时变量

ARG VERSION=latest
FROM ubuntu:$VERSION
# 构建时可以传递--build-arg VERSION=20.04来改变基础镜像版本

特点

  • 只在构建时有效,运行容器时不可用
  • 可以通过–build-arg覆盖默认值

4.2 VOLUME - 定义数据卷

VOLUME /var/lib/mysql
# 将MySQL数据目录声明为卷

用途

  • 持久化重要数据
  • 容器间共享数据

4.3 HEALTHCHECK - 健康检查

HEALTHCHECK --interval=30s --timeout=3s \CMD curl -f http://localhost/ || exit 1
# 每30秒检查一次服务是否健康

参数

  • –interval: 检查间隔
  • –timeout: 超时时间
  • –retries: 失败重试次数

4.4 USER - 指定运行用户

RUN groupadd -r appuser && useradd -r -g appuser appuser
USER appuser
# 创建非root用户并切换

安全实践

  • 避免以root用户运行容器
  • 减少安全风险

4.5 ONBUILD - 延迟执行指令

ONBUILD COPY . /app
ONBUILD RUN make build
# 这些指令会在基于此镜像构建其他镜像时执行

用途

  • 创建基础镜像
  • 构建框架镜像

5. Dockerfile 最佳实践

5.1 多阶段构建

# 构建阶段
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .# 运行阶段
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]

优点

  • 显著减小最终镜像大小
  • 只包含运行时必要的文件

5.2 合理排序指令

# 变化频率低的指令放前面
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y package# 变化频率高的指令放后面
COPY . /app

原理

  • Docker会缓存每一层
  • 把频繁变化的指令放在后面可以利用缓存

5.3 最小化镜像层

RUN apt-get update && apt-get install -y \package1 \package2 \&& rm -rf /var/lib/apt/lists/*
# 合并多个RUN命令

技巧

  • 使用&&连接命令
  • 使用\换行提高可读性
  • 清理不必要的文件

5.4 使用.dockerignore文件

.git
node_modules
*.log
.DS_Store

作用

  • 排除不必要的文件
  • 加速构建过程
  • 减小镜像大小

5.5 安全实践

FROM alpine:latest
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser
# 使用非root用户

建议

  • 定期更新基础镜像
  • 扫描镜像中的漏洞
  • 最小化安装软件包

6. 完整示例

# 多阶段构建示例 - Python应用
# 构建阶段
FROM python:3.9 as builderWORKDIR /app
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1COPY requirements.txt .
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /app/wheels -r requirements.txt# 运行阶段
FROM python:3.9-slimWORKDIR /appCOPY --from=builder /app/wheels /wheels
COPY --from=builder /app/requirements.txt .RUN pip install --no-cache /wheels/* \&& rm -rf /wheels \&& rm -f requirements.txtCOPY . .RUN useradd -m myuser && chown -R myuser:myuser /app
USER myuserEXPOSE 8000HEALTHCHECK --interval=30s --timeout=3s \CMD curl -f http://localhost:8000/health || exit 1CMD ["gunicorn", "--bind", "0.0.0.0:8000", "app:app"]

解释

  1. 使用多阶段构建减少最终镜像大小
  2. 构建阶段生成wheel文件
  3. 运行阶段只安装必要的依赖
  4. 创建非root用户增强安全性
  5. 设置健康检查
  6. 声明暴露端口
  7. 指定启动命令

7. 如何通过 Dockerfile 构建镜像

构建 Docker 镜像是使用 Dockerfile 的最终目的,本节将详细介绍如何使用 docker build 命令从 Dockerfile 创建镜像,并探讨各种构建选项和技巧。

7.1 基本构建命令

docker build -t my-image:1.0 .

参数解释

  • -t my-image:1.0:为镜像指定名称和标签
  • .:指定构建上下文路径(Dockerfile 所在目录)

构建过程输出示例

Sending build context to Docker daemon  2.048kB
Step 1/8 : FROM python:3.9-slim---> 2d0f2f3d3a3a
Step 2/8 : WORKDIR /app---> Running in a1b2c3d4e5f6
Removing intermediate container a1b2c3d4e5f6---> 123456789abc
...
Successfully built 789abc123def
Successfully tagged my-image:1.0

7.2 指定 Dockerfile 路径

当 Dockerfile 不在当前目录或使用不同名称时:

docker build -t my-image -f /path/to/Dockerfile .

示例

docker build -t backend-app -f docker/backend.Dockerfile .

7.3 构建时传递变量

使用 --build-arg 传递构建参数:

# Dockerfile
ARG VERSION=latest
FROM ubuntu:$VERSION
docker build -t my-ubuntu --build-arg VERSION=20.04 .

典型用途

  • 指定软件版本
  • 配置构建选项
  • 设置代理

7.4 构建缓存控制

跳过缓存

docker build --no-cache -t fresh-image .

指定缓存来源

docker build --cache-from=my-image:1.0 -t my-image:1.1 .

7.5 多阶段构建的目标阶段

对于多阶段构建,可以只构建特定阶段:

# Dockerfile
FROM node:14 as builder
...FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
# 只构建builder阶段
docker build --target builder -t my-app-builder .

7.6 查看构建上下文

查看发送到Docker守护进程的文件

docker build --no-cache --progress=plain .

优化.dockerignore
确保.dockerignore文件排除不必要的文件:

.git
node_modules
*.log
*.md

7.7 构建性能优化技巧

  1. 并行构建
docker buildx build --platform linux/amd64,linux/arm64 -t my-image .
  1. 使用构建工具包(BuildKit)
DOCKER_BUILDKIT=1 docker build -t my-image .
  1. 分层构建
# 先安装依赖
COPY package.json .
RUN npm install# 再复制源代码
COPY . .

7.8 镜像构建后的操作

查看构建历史

docker history my-image:1.0

保存镜像到文件

docker save -o my-image.tar my-image:1.0

从文件加载镜像

docker load -i my-image.tar

7.9 实际构建示例

假设有以下项目结构:

/my-app├── Dockerfile├── app.py├── requirements.txt└── .dockerignore

构建过程

  1. 编写Dockerfile:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "app.py"]
  1. 构建命令:
cd /my-app
docker build -t my-python-app .
  1. 验证构建:
docker images | grep my-python-app
  1. 运行测试:
docker run -d -p 5000:5000 --name test-app my-python-app
curl localhost:5000

8. 总结(

通过本文我们全面了解了:

  1. Dockerfile 的基本语法和核心指令
  2. 高级功能如多阶段构建和健康检查
  3. 编写高效 Dockerfile 的最佳实践
  4. 如何使用 docker build 命令构建镜像
  5. 构建过程中的各种选项和优化技巧

关键构建要点

  • 始终为镜像指定有意义的标签
  • 合理利用缓存提高构建速度
  • 使用多阶段构建减小最终镜像大小
  • 通过.dockerignore减少构建上下文大小
  • 构建后验证镜像是否按预期工作

掌握这些 Dockerfile 编写和镜像构建技能,您将能够为任何应用程序创建高效、可靠的容器镜像,实现开发和生产环境的一致性。

相关文章:

Dockerfile 完全指南:从入门到最佳实践

Dockerfile 完全指南:从入门到最佳实践 1. Dockerfile 简介与作用 Dockerfile 是一个文本文件,包含了一系列用于构建 Docker 镜像的指令。它允许开发者通过简单的指令定义镜像的构建过程,实现自动化、可重复的镜像构建。 主要作用&#xf…...

DEEPPOLAR:通过深度学习发明非线性大核极坐标码(2)

目录 2.问题的提出和背景 2.1 信道编码 2.2.极化码 极坐标编码 极坐标解码 原文:《DEEPPOLAR: Inventing Nonlinear Large-Kernel Polar Codes via Deep Learning》 2.问题的提出和背景 2.1 信道编码 信道编码是一种为传输添加冗余的技术,使其对…...

ESP32-S3 学习笔记(1)

ESP32-S3 学习笔记(1) 背景环境添加工程文件材料准备轻触开关的正负极 背景 ​ 闲来无事,看到立创论坛上有许多大佬开源的项目,甚是厉害,于是决定自己也来搞一搞,同时可以做一些技术积累,看了很…...

Python Cookbook-7.9 访问 MySQL 数据库

任务 想访问一个 MySQL 数据库。 解决方案 MySQLdb 模块正是为这种任务而设计的: import MySQLdb #创建一个连接对象,再用它创建游标 con = MySQLdb.connect(host = "127.0.0.1", port = 3306, user = "joe",<...

docker安装superset实践

1、拉取docker镜像 docker pull apache/superset:latest 2、安装superset容器 mkdir /usr/local/develop/docker/superset/ -p touch /usr/local/develop/docker/superset/superset_config.py superset_config.py配置文件如下&#xff1a; SQLALCHEMY_DATABASE_URI mysql:…...

Web开发—Vue工程化

文章目录 前言 Vue工程化 一、介绍 二、环境准备 1.介绍create-vue 2.NodeJS安装 3.npm介绍 三&#xff0c;Vue项目创建 四&#xff0c;项目结构 五&#xff0c;启动项目 六&#xff0c;Vue项目开发流程 七&#xff0c;API风格 前言 Vue工程化 前面我们在介绍Vue的时候&#…...

什么是硬件中断请求号?什么是中断向量号?

一、硬件中断请求号&#xff08;IRQ&#xff0c;Interrupt Request Number&#xff09; ​定义​&#xff1a; 硬件中断请求号&#xff08;IRQ&#xff09;是硬件设备向CPU发送中断请求时使用的唯一标识符&#xff0c;用于区分不同的中断源。例如&#xff0c;键盘、硬盘等外设…...

[Java实战]Spring Boot 定时任务(十五)

[Java实战]Spring Boot 定时任务&#xff08;十五&#xff09; 一、定时任务的应用场景 数据同步&#xff1a;每日凌晨同步第三方数据状态检查&#xff1a;每5分钟扫描订单超时未支付资源清理&#xff1a;每小时清理临时文件报表生成&#xff1a;每月1号生成财务统计报表通知…...

OpenWrt开发第7篇:OpenWrt配置支持Web界面

文/指尖动听知识库-谷谷 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:Openwrt开发-基于Raspberry Pi 4B开发板 OpenWrt的luci是一个基于Web的图形化管理界面,为用户提供了直观的操作方式,无需命令行即可完成大部分功能的配置。 1.在终端输入ma…...

【多模态】IMAGEBIND论文阅读

every blog every motto: Although the world is full of suffering&#xff0c; it is full also of the overcoming of it 0. 前言 IMAGEBIND 多模态论文梗概 IMAGEBIND是一种夸模态的神经网络&#xff0c;以图片为中心&#xff0c;联合六中模态的网络&#xff08;图片、文…...

【C语言干货】二维数组传参本质

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、二维数组的内存布局 1.二维数组的实质2.二维数组的地址关系 二、二维数组传参的本质 1.参数传递的退化机制2.三种等效的函数声明方式 总结 前言 提示&#…...

基于SpringBoot的抽奖系统测试报告

一、编写目的 本报告为抽奖系统测试报告&#xff0c;本项目可用于团体抽奖活动&#xff0c;包括了用户注册&#xff0c;用户登录&#xff0c;修改奖项以及抽奖等功能。 二、项目背景 抽奖系统采用前后端分离的方法来实现&#xff0c;同时使用了数据库来存储相关的数据&…...

Go语言从零构建SQL数据库(9)-数据库优化器的双剑客

数据库优化器的双剑客&#xff1a;谓词下推与列裁剪 在数据库查询优化的世界里&#xff0c;有两位特别重要的"超级英雄"&#xff1a;谓词下推和列裁剪。这两种优化技术虽然简单&#xff0c;却能带来惊人的性能提升。今天&#xff0c;我们就来揭开它们的神秘面纱&…...

C++中什么是函数指针?

在C中&#xff0c;函数指针是一个指向函数的指针变量。通过函数指针&#xff0c;我们可以像使用函数一样调用它所指向的函数&#xff0c;常用于实现回调函数、函数指针数组等功能。 以下是一个简单的C代码示例&#xff0c;展示了函数指针的使用&#xff1a; cpp #include <…...

Python工具链UV整合环境管理

Python工具链UV整合环境管理 终极Python工具链UV&#xff1a;从依赖管理到项目开发的全维度解析一、引言&#xff1a;重新定义Python开发的大一统时代二、深度安装指南&#xff1a;多场景适配方案1. 官方独立安装器&#xff08;推荐方案&#xff09;2. 进阶安装方式3. 安装验证…...

RuoYi-v4.7.8 jar/war部署

准备条件 jdk-8u73-windows-x64.exe mysql5.7 apache-tomcat-9.0.60 apache-maven-3.8.1 RuoYi-v4.7.8.zip &#xff08;官网 RuoYi&#xff09; 登录gitee,选择标签要下载的版本好&#xff0c;点击克隆下载zip压缩文件 安装maven Apache Archive Distribution Directory…...

基于SpringBoot的小区停车位管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

张量并行优质博客

必读图解系列1 比较全面的相关文献总结博客&#xff0c;可以重点看一下其中的行列切分算子2 # 图解大模型训练之&#xff1a;张量模型并行(TP)&#xff0c;Megatron-LM ↩︎ # 大规模分布式 AI 模型训练系列——张量并行 ↩︎...

汽车诊断简介

历史 20世纪80年代&#xff0c;由于美国西海岸严重的雾霾问题&#xff0c;CARB&#xff08;加州空气资源委员会&#xff09;通过了一项法律&#xff0c;要求对机动车辆进行车载监测诊断。这推动了OBD-I的引入&#xff0c;并在1990年代被OBD II取代。与此同时&#xff0c;欧洲也…...

suricata之规则去重

一、环境和背景 1.1 环境 OS: Ubuntu 22.04.5 LTS IDE: vscode suricata: suricata 7.0.5 1.2 背景 在添加规则时&#xff0c;为了给规则分类&#xff0c;将不同类别的规则写入不同的文件。 在规则加载时两条不同的规则却被认为是重复的&#xff0c;因此记录一下去重逻辑。…...

接口在函数参数和对象类型中的应用

在 TypeScript 中&#xff0c;接口&#xff08;interface&#xff09;是一种强大的工具&#xff0c;用于定义和约束对象的结构。它不仅可以用于描述对象类型&#xff0c;还能够用于定义函数的参数和返回类型。接口可以提高代码的可读性、可维护性&#xff0c;并帮助捕捉潜在的错…...

Javascript:数组和函数

数组 创建数组 使用new创建 let arrnew array(数组大小); 直接赋值创建 let Arr2[];let Arr3[1,A,"HELLLO"]; 这里JS的数组里面的元素属性可以各不相同 演示代码 <script>let Arr1new Array(5);let Arr2[];let Arr3[1,A,"HELLLO"];console.…...

Vue Router

Vue Router:前端路由跳转的魔法 什么是Vue Router Vue Router是Vue官方的路由管理器,它允许我们在不重新加载页面的情况下更改浏览器中显示的内容,实现单页应用(SPA)的无缝导航体验。 📊 Vue Router工作流程图 #mermaid-svg-xNtkA0qYMjB0lvUt {font-family:"trebu…...

谷歌与微软的AI战争:搜索、云服务与生态布局

谷歌与微软的AI战争&#xff1a;搜索、云服务与生态布局 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 谷歌与微软的AI战争&#xff1a;搜索、云服务与生态布局摘要引言技术路线对比1. AI基础设施&#xff1a;算力…...

robomaster机甲大师--电调电机

文章目录 C620电调ID设置速率 电调发送报文电调接收报文cubemx程序初始化发送接收 C620电调 ID设置 速率 1Mbps 电调发送报文 发送的数据为控制电机的输出电流&#xff0c;需要将can数据帧的ID设置为0x200 电调接收报文 机械角度&#xff1a;电机的0到360度映射到0到几千转…...

菜鸟之路day31一一MySQL之多表设计

菜鸟之路day31一一MySQL之多表设计 作者&#xff1a;blue 时间&#xff1a;2025.5.9 文章目录 菜鸟之路day31一一MySQL之多表设计0.概述一.多表设计1.1一对多1.2一对一1.3多对多 0.概述 内容学习自黑马程序员BV1m84y1w7Tb 一.多表设计 1.1一对多 一对多关系实现&#xff…...

害怕和别人发生冲突怎么办? --deepseek

害怕与他人发生冲突是一种常见的心理状态&#xff0c;可能源于对关系破裂、被否定或情绪失控的担忧。但这种恐惧长期存在会影响自我表达和人际关系。以下是分步骤的应对策略&#xff0c;帮助你逐步建立应对冲突的自信&#xff1a; 第一步&#xff1a;理解你的恐惧根源 自我提问…...

Go语言——kratos微服务框架使用

文章目录 一、安装依赖二、创建项目三、初始化项目四、使用git_bash命令终端运行命令五、创建自己的项目1、修改app.proto3、internal/service/app.go4、修改internal/service/service.go文件5、创建internal/biz/content.go文件6、修改internal/biz/biz.go文件7、创建internal…...

无人机飞控算法开发实战:从零到一构建企业级飞控系统

简介 无人机飞控算法是实现稳定飞行和精确控制的核心技术,涉及飞行动力学建模、传感器数据处理、状态估计和控制策略等多个环节。本实战指南将系统讲解四旋翼无人机飞控算法的开发流程,包括飞行动力学模型建立、传感器校准与数据融合、主流控制算法实现(PID、ADRC、EKF)以…...

MiniMind:3块钱成本 + 2小时!训练自己的0.02B的大模型。minimind源码解读、MOE架构

大家好&#xff0c;我是此林。 目录 1. 前言 2. minimind模型源码解读 1. MiniMind Config部分 1.1. 基础参数 1.2. MOE配置 2. MiniMind Model 部分 2.1. MiniMindForCausalLM: 用于语言建模任务 2.2. 主干模型 MiniMindModel 2.3. MiniMindBlock: 模型的基本构建块…...

每日算法刷题 Day3 5.11:leetcode数组2道题,用时1h(有点慢)

5.LC 零矩阵(中等) 面试题 01.08. 零矩阵 - 力扣&#xff08;LeetCode&#xff09; 思想: 法一: 利用两个集合分别储存要清0的行和列索引 另外两种原地优化空间的做法暂时不是目前刷题目标&#xff0c;故不考虑 代码 c: class Solution { public:void setZeroes(vector&l…...

POSIX信号量

目录 一、相关概念回顾 1.信号量 2.多线程使用资源的两种情况 3.P操作和V操作 二、CP && 基于环形队列的生产者消费者模型 1.环形队列的介绍 ​编辑 2.基于环形队列的生产者消费者模型的默认规则&#xff08;通过信号量实现规则的成立&#xff09; 3.相关的结论…...

前端Web开发HTML5+CSS3+移动web(基础-flex)

网页设计套路&#xff1a;从上到下&#xff0c;从整体到局部 &#xff11;&#xff1a;HTML定义&#xff1a; &#xff08;1&#xff09;超文本是点击可以页面来回切换的链接 &#xff08;2&#xff09;标记就是标签语言 &#xff12;&#xff1a;标签的语法 &#xff08;1&…...

Java 原生异步编程与Spring 异步编程 详解

简介 Java 异步编程是现代高性能应用开发的核心技术之一&#xff0c;它允许程序在执行耗时操作&#xff08;如网络请求、文件 IO&#xff09;时不必阻塞主线程&#xff0c;从而提高系统吞吐量和响应性。 异步 vs 同步 同步&#xff1a;任务按顺序执行&#xff0c;后续任务需…...

AUTOSAR图解==>AUTOSAR_TR_HWTestManagementIntegrationGuide

AUTOSAR硬件测试管理集成指南 启动和关闭阶段硬件测试管理的规范与集成 目录 文档概述 1.1 文档范围 1.2 局限性目标与动机 2.1 目标 2.2 动机 2.3 用例约束与假设缩略语与术语相关文档HTMSS AUTOSAR集成方法HTMSS功能描述AUTOSAR架构解决方案 8.1 HTMSS系统架构 8.2 HTMSS启动…...

Day22 Kaggle泰坦尼克号训练实战

​ 作业 自行学习参考如何使用kaggle平台&#xff0c;写下使用注意点&#xff0c;并对下述比赛提交代码 kaggle泰坦里克号人员生还预测 一、流程 思路概述 数据加载 &#xff1a;读取泰坦尼克号的训练集和测试集。数据预处理 &#xff1a;处理缺失值、对分类变量进行编码、…...

基于大核感知与非膨胀卷积的SPPF改进—融合UniRepLK的YOLOv8目标检测创新架构

在当前目标检测领域中&#xff0c;YOLO系列模型因其优异的速度-精度平衡能力而被广泛部署于工业界与科研场景。YOLOv8作为该系列的最新版本&#xff0c;在主干网络与特征金字塔结构上进行了多项优化&#xff0c;进一步提升了其实时性与鲁棒性。然而&#xff0c;其核心组件—SPP…...

[Linux]从零开始的STM32MP157 Busybox根文件系统构建

一、前言 在上一篇教程中&#xff0c;已经教了大家如何使用Buildroot构建根文件系统&#xff0c;并且在最后我们已经完整的构建了一个可以运行的根文件系统。但是&#xff0c;Buildroot的集成度太高了&#xff0c;不利于小白理解根文件系统&#xff0c;所以本次教程&#xff0c…...

C++ RAII机制

RAII&#xff08;Resource Acquisition Is Initialization&#xff09;是一种编程范式&#xff0c;核心思想是&#xff1a;资源的生命周期与对象绑定——对象创建时获取资源&#xff0c;对象销毁时自动释放资源。这种机制通过构造函数和析构函数的配对执行&#xff0c;确保资源…...

spring中的@Value注解详解

一、核心功能与作用 Value是Spring框架中用于动态注入属性值的注解&#xff0c;支持从配置文件、环境变量、SpEL表达式等来源注入数据&#xff0c;实现代码与配置的解耦。 注入类型覆盖广泛 基本类型&#xff1a;字符串、数值&#xff08;int/double&#xff09;、布尔值等。 …...

模型欠拟合是什么?

模型的欠拟合:全面解析 一、定义与核心概念 欠拟合(Underfitting)是指模型在训练数据、验证数据和测试数据上均表现不佳的现象。其本质是模型过于简单或学习能力不足,无法捕捉数据中的潜在规律和复杂关系,导致泛化能力差。例如,用线性模型拟合非线性数据时,模型无法描…...

IC ATE集成电路测试学习——电流测试的原理和方法

电流测试 我们可以通过电流来判断芯片的工作状态时&#xff0c;首先先了解下芯片的电流是如何产生的。 静态电流 理论上&#xff0c;CMOS结构的芯片静态时几乎不耗电 CMOS基本结构&#xff1a;Pmos Nmos 串联当逻辑电平稳定时&#xff1a; ➜ 要么Pmos导通&#xff0c;Nmo…...

Wordpress头像无法加载太慢问题解决方式

Wordpress头像无法加载太慢问题解决方式 1、找到我们当前使用的主题目录中找到functions.php文件在文件最后面添加以下代码 if ( ! function_exists( get_cravatar_url ) ) {/***替换Gravatar头像为Cravatar头像** param string $url** return string*/function get_cravatar…...

《大模型微调实战:Llama 3.0全参数优化指南》

全参数微调&#xff08;Full Parameter Fine-Tuning&#xff09;是推动大模型适应垂直领域任务的核心技术&#xff0c;尤其对于Llama 3.0这类千亿级参数模型而言&#xff0c;其性能优化与场景适配能力直接决定了实际应用价值。然而&#xff0c;全参数微调面临计算成本高、内存占…...

ActiveMQ 生产环境问题排查与调优指南(二)

五、调优策略与实践 5.1 JVM 调优 JVM 调优对于提升 ActiveMQ 性能至关重要&#xff0c;合理的 JVM 配置可以使 ActiveMQ 更高效地利用系统资源&#xff0c;减少性能瓶颈。 设置合理的堆内存大小是 JVM 调优的关键步骤。堆内存是 JVM 中用于存储对象实例的区域&#xff0c;其…...

AugmentCode 非常昂贵的新定价

AugmentCode 现在的价格比 Cursor 和 Windsurf 的总和还要贵。 AugmentCode 曾是我开发工作流程的常用工具。出乎意料的是,他们改变了定价结构,让开发者们震惊不已。 原来的30 美元月费已经增长为50 美元月费,这是一个67%的增长。 改变我看法的不仅仅是价格上涨,还有他…...

Unity 红点系统

首先明确一个&#xff0c;即红点系统的数据结构是一颗树&#xff0c;并且红点的数据结构的初始化需要放在游戏的初始化中&#xff0c;之后再是对应的红点UI侧的注册&#xff0c;对应的红点UI在销毁时需要注销对红点UI的显示回调注册&#xff0c;但是不销毁数据侧的红点注册 - …...

Python-UV多环境管理

Python-UV多环境管理 Python使用UV进行环境管理&#xff0c;系统了解UV的使用 文章目录 Python-UV多环境管理 [toc]1-学习要点2-核心知识点3-UV多环境管理4-venv和uv脚本对比1-venv环境管理2-uv环境管理3-venv对比uv 1-学习要点 1-熟悉【UV环境管理】2-熟悉【UV和Venv脚本区别…...

多空短线决策+飞云分仓操盘,两个副图指标组合操盘技术,短线更精准有效

如上图&#xff0c;两个副图指标&#xff0c;第一个【短线多空决策】&#xff0c;第二个副图指标【飞云分仓操盘】&#xff0c;指标组合使用&#xff0c;精准性和有效性更加有效。 如上图&#xff0c;两个指标组合使用&#xff0c;我们选择第二个副图指标出现红色和紫色区域的标…...

istio in action之应用弹性与容错机制

在分布式系统中&#xff0c;服务间的依赖关系就像一张错综复杂的网络&#xff0c;任何一个节点的抖动都可能引发连锁反应。这也是为什么我们需要强调弹性&#xff0c;因为在分布式系统中&#xff0c;服务之间通过网络进行通信&#xff0c;这本身就引入了无数个潜在的失败点。我…...