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

AI开发者的Docker实践:汉化(中文),更换镜像源,Dockerfile,部署Python项目

AI开发者的Docker实践:汉化(中文),更换镜像源,Dockerfile,部署Python项目

  • Dcoker官网
    • 1、核心概念
      • 镜像 (Image)
      • 容器 (Container)
      • 仓库 (Repository)
      • Dockerfile
      • Docker Compose
    • 2、Docker 的核心组件
      • Docker 引擎(Docker Engine)
      • Docker 网络
      • Docker 存储卷(Volume)
    • 3、Docker 的工作流程
      • 开发阶段
      • 部署阶段
  • Windows 上的安装和汉化(中文)
    • 1.下载对应版本中文语言包
    • 2.下载 app-Windows-x86.asar
    • 3.找到docker安装目录`\Docker\Docker\frontend\resources`,备份并替换app.asar文件。
    • 4.重启Docker
    • 5.启动终端后,通过命令可以检查安装后的 Docker 版本。
    • 6.测试(Docker引擎新增国内源)
  • DockerFile
    • Dockerfile核心指令详解
      • 1. FROM
      • 2. RUN
      • 3. COPY vs ADD
      • 4. WORKDIR
      • 5. ENV
      • 6. EXPOSE
      • 7. CMD vs ENTRYPOINT
      • 8. USER
      • 9. VOLUME
    • Dockerfile示例
    • 在Docker构建过程中,是否需要重新构建镜像取决于Dockerfile的指令顺序和文件变动情况。
      • 1. Docker的层缓存机制
  • Docker 命令
    • 1. 镜像相关命令
    • 2. 容器相关命令
    • 3. 数据卷相关命令
    • 4. 网络相关命令
    • 5. 其他常用命令
    • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 部署Python项目
    • 1. 准备 Python 项目
    • 2. 创建 Dockerfile(文件不带后缀)
    • 3. 构建 Docker 镜像
    • 4. 运行容器
  • 人工智能竞赛-阿里云镜像实战
  • 常规技巧
  • 参考

Dcoker官网

https://www.docker.com/
在这里插入图片描述

Docker 是一种开源的 容器化平台,用于构建、部署和运行应用程序。它通过容器技术将应用程序及其依赖项打包到一个可移植的单元中,从而实现跨环境的一致性。
在传统的项目开发中,开发者经常遇到环境不一致的问题,比如代码在本地开发环境运行正常,但在测试或生产环境却出现各种错误,原因可能是操作系统版本、依赖库版本或配置差异。此外,传统部署方式需要手动安装和配置各种软件环境,过程繁琐且容易出错,不同服务器之间的环境也难以保持一致。

Docker 的核心目标就是解决这些问题,通过容器化技术将应用及其运行环境打包在一起,确保应用在不同环境中表现一致。Docker 的出现极大简化了开发、测试和部署的流程,成为现代 DevOps 和云计算中的重要工具。Docker 有几个显著特点:

  • 轻量性:由于容器共享宿主机的操作系统内核,它们比传统虚拟机更小且启动更快,解决了传统虚拟化技术资源占用高、启动慢的问题。
  • 可移植性:Docker 容器可以在任何支持 Docker 的平台上运行,无论是本地开发机、物理服务器还是云环境,彻底解决了「在我机器上能跑,线上却不行」的难题。
  • 隔离性:每个容器拥有独立的文件系统、网络和进程空间,确保应用之间互不干扰,避免了传统部署中多个应用共用环境导致的依赖冲突问题。
  • 标准化:Docker 提供统一的接口和工具链,使得构建、分发和运行容器变得简单高效,替代了传统部署中复杂的手动配置流程。

1、核心概念

镜像 (Image)

  • 镜像是容器的静态模板,包含运行应用程序所需的所有文件和配置。
  • 镜像通过 Dockerfile 定义,并可以分层存储,便于复用和版本管理。

容器 (Container)

  • 容器是轻量级、独立的运行环境,包含应用程序及其所有依赖(代码、运行时、库、环境变量等)。
  • 容器基于镜像创建,每个容器相互隔离(进程、文件系统、网络等)。

仓库 (Repository)

  • 仓库用于存储和分发镜像,如 Docker Hub(官方公共仓库)、私有仓库(如 Harbor)。

Dockerfile

  • 一个文本文件,通过指令(如 FROM, COPY, RUN)定义如何构建镜像。

Docker Compose

  • 用于定义和运行多容器应用的工具,通过 docker-compose.yml 文件配置服务、网络和卷。

2、Docker 的核心组件

Docker 引擎(Docker Engine)

核心后台服务,包含:

  • Docker Daemon:管理容器、镜像、网络和卷。
  • REST API:与 Docker Daemon 交互的接口。
  • CLI:命令行工具(如 docker 命令)。

Docker 网络

支持多种网络模式:

  • bridge(默认):容器通过虚拟网桥通信。
  • host:容器直接使用主机网络。
  • overlay:用于跨主机的容器通信(如 Docker Swarm)。

Docker 存储卷(Volume)

持久化数据存储机制,独立于容器生命周期。

3、Docker 的工作流程

开发阶段

  • 编写 Dockerfile 定义应用环境。
  • 使用 docker build 构建镜像。
  • 推送镜像到仓库(如 docker push)。

部署阶段

  • 从仓库拉取镜像(如 docker pull)。
  • 使用 docker run 启动容器。

Windows 上的安装和汉化(中文)

运行:Docker 启动之后会在 Windows 任务栏出现鲸鱼图标。
在这里插入图片描述

1.下载对应版本中文语言包

https://github.com/asxez/DockerDesktop-CN

在这里插入图片描述

2.下载 app-Windows-x86.asar

在这里插入图片描述

3.找到docker安装目录\Docker\Docker\frontend\resources,备份并替换app.asar文件。

在这里插入图片描述

4.重启Docker

在这里插入图片描述

5.启动终端后,通过命令可以检查安装后的 Docker 版本。

PS C:\Users\74223> docker --version
Docker version 28.0.4, build b8034c0
PS C:\Users\74223> docker-compose --version
Docker Compose version v2.34.0-desktop.1

6.测试(Docker引擎新增国内源)

Docker 下载镜像默认从国外的官网下载,在国内需要通过代理访问 / 更换国内镜像源。

PS C:\Users\74223> docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

在这里插入图片描述

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false
}

修改为

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.1ms.run","https://swr.cn-north-4.myhuaweicloud.com","https://registry.cn-hangzhou.aliyuncs.com","https://dockerproxy.com","https://hub-mirror.c.163.com"]
}

重启

PS C:\Users\74223> docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
e6590344b1a5: Pull complete
Digest: sha256:c41088499908a59aae84b0a49c70e86f4731e588a737f1637e73c8c09d995654Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

DockerFile

  • 定义:DockerFile是一个文本文件,包含一系列指令(Instructions),用于定义如何构建 Docker 镜像。
  • 作用:通过逐行执行指令,自动化构建镜像的层(Layer),最终生成一个可运行的容器环境。

Dockerfile核心指令详解

在这里插入图片描述

1. FROM

  • 用途:指定基础镜像(必须为第一条指令)。
FROM ubuntu:22.04      # 使用官方 Ubuntu 镜像
FROM python:3.9-slim   # 使用轻量级 Python 镜像

2. RUN

  • 用途:在镜像构建过程中执行命令(如安装软件包)。
RUN apt-get update && apt-get install -y python3

3. COPY vs ADD

  • COPY:将文件从本地复制到容器中,功能类似于 ADD,但不支持远程 URL 和自动解压。
COPY requirements.txt /app/
  • ADD:将文件从本地复制到容器中,支持远程 URL 和自动解压。
ADD index.html /var/www/html/

4. WORKDIR

  • 用途:设置后续指令的工作目录(类似 cd)。
WORKDIR /app   # 后续指令默认在 /app 目录下执行

5. ENV

  • 用途:设置环境变量(可被后续指令和容器运行时使用)。
ENV NODE_ENV=production
ENV APP_PORT=8080

6. EXPOSE

  • 用途:声明容器运行时监听的端口(需通过 -p 映射到主机)。
EXPOSE 80   # 容器监听 80 端口

7. CMD vs ENTRYPOINT

  • CMD:定义容器启动时默认执行的命令。
  • 格式:CMD [“executable”,“param1”,“param2”] 或 CMD command param1 param2
CMD ["python3", "app.py"]
  • ENTRYPOINT:定义容器启动时运行的命令,与 CMD 不同的是,ENTRYPOINT 不会被覆盖。
  • 格式:ENTRYPOINT [“executable”, “param1”, “param2”]
ENTRYPOINT ["python3", "server.py"]

8. USER

  • 用途:指定运行容器时的用户(避免使用 root,提升安全性)。
RUN useradd -m appuser
USER appuser      # 后续指令以 appuser 身份运行

9. VOLUME

  • 用途:声明数据卷挂载点(用于持久化数据)。
VOLUME /data    # 容器运行时挂载到 /data

Dockerfile示例

# 阶段1:构建依赖
FROM python:3.9 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt# 阶段2:运行环境
FROM python:3.9-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .# 确保 PATH 包含用户安装的包
ENV PATH=/root/.local/bin:$PATH# 启动应用
CMD ["python", "app.py"]
# Base Images 
## 从天池基础镜像构建(from的base img 根据自己的需要更换,建议使用天池open list镜像链接:https://tianchi.aliyun.com/forum/postDetail?postId=67720) 
FROM registry.cn-shanghai.aliyuncs.com/tcc_public/python:3.10##安装python依赖包 
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r /app/requirements.txt## 把当前文件夹里的文件构建到镜像的根目录下,并设置为默认工作目录 
ADD . /appWORKDIR /app## 镜像启动后统一执行 sh run.sh 
CMD ["sh", "/app/run.sh"]

run.sh

lscd /app; python ml_baseline.py predict

在Docker构建过程中,是否需要重新构建镜像取决于Dockerfile的指令顺序和文件变动情况。

1. Docker的层缓存机制

Docker镜像由多个层(Layer)组成,每个Dockerfile指令对应一个层。如果某一层及其之前的所有层未发生变化,Docker会直接使用缓存,避免重复执行耗时操作(如安装依赖)。若某一层变动,后续所有层缓存失效,需要重新构建。

Docker 命令


1. 镜像相关命令

命令描述
docker images列出本地所有的镜像。
docker pull <镜像名>:<标签>从 Docker Hub 拉取指定镜像,例如:docker pull ubuntu:latest
docker build -t <镜像名>:<标签> .使用 Dockerfile 构建镜像,. 表示当前目录为上下文路径。
docker rmi <镜像ID>删除指定的镜像。
docker tag <源镜像ID> <目标镜像名>:<标签>为镜像打标签,便于推送或管理。

2. 容器相关命令

命令描述
docker ps列出所有正在运行的容器。
docker ps -a列出所有容器(包括停止的)。
docker run [选项] <镜像名>创建并启动一个新的容器。
常用选项:
-d 后台运行容器。
-p 端口映射,例如 -p 8080:80
-v 卷挂载,例如 -v /host/path:/container/path
--name 指定容器名称。
docker start <容器ID/名称>启动已停止的容器。
docker stop <容器ID/名称>停止正在运行的容器。
docker restart <容器ID/名称>重启容器。
docker rm <容器ID>删除指定的容器。
docker logs <容器ID/名称>查看容器的日志输出。
docker exec -it <容器ID/名称> /bin/bash进入正在运行的容器的交互式终端。

3. 数据卷相关命令

命令描述
docker volume create <卷名>创建一个新的数据卷。
docker volume ls列出所有数据卷。
docker volume inspect <卷名>查看数据卷的详细信息。
docker volume rm <卷名>删除指定的数据卷。

4. 网络相关命令

命令描述
docker network ls列出所有网络。
docker network inspect <网络ID/名称>查看网络的详细信息。
docker network create <网络名>创建一个新的网络。
docker network connect <网络名> <容器名>将容器连接到指定网络。
docker network disconnect <网络名> <容器名>将容器从指定网络断开。

5. 其他常用命令

命令描述
docker stats实时查看容器的资源使用情况(CPU、内存等)。
docker system prune清理未使用的容器、网络、镜像和卷。
docker save -o <文件名> <镜像名>将镜像保存为 tar 文件。
docker load -i <文件名>从 tar 文件加载镜像。
docker commit <容器ID> <新镜像名>根据容器创建一个新的镜像。

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

常用参数说明:

  • -d: 后台运行容器并返回容器 ID。
  • -it: 交互式运行容器,分配一个伪终端。
  • –name: 给容器指定一个名称。
  • -p: 端口映射,格式为 host_port:container_port。
  • -v: 挂载卷,格式为 host_dir:container_dir。
  • –rm: 容器停止后自动删除容器。
  • –env 或 -e: 设置环境变量。
  • –network: 指定容器的网络模式。
  • –restart: 容器的重启策略(如 no、on-failure、always、unless-stopped)。
  • -u: 指定用户。

交互式运行并分配终端

docker run -it ubuntu /bin/bash

部署Python项目

1. 准备 Python 项目

myapp/
├── app/
│   ├── __init__.py
│   └── main.py
├── requirements.txt
└── Dockerfile

在这里插入图片描述
application.py

import sys# yes, just adding two numbers
def add_two_numbers(a=0, b=0):result = a + bprint(f"a is {a}")print(f"b is {b}")print(f"solution is {result}")if __name__ == "__main__":if len(sys.argv) > 2:add_two_numbers(int(sys.argv[1]), int(sys.argv[2]))else:add_two_numbers()

2. 创建 Dockerfile(文件不带后缀)

在这里插入图片描述
requirements.txt
在这里插入图片描述

3. 构建 Docker 镜像

# -t 指定镜像名称和标签,. 表示Dockerfile所在的当前目录。
docker build -t my-python-app:1.0 .
Windows PowerShell
版权所有(C) Microsoft Corporation。保留所有权利。安装最新的 PowerShell,了解新功能和改进!https://aka.ms/PSWindowsPS C:\Users\15734> cd "D:\PyCharm Community Edition 2022.2.1\pythonProject\docker-tutorial"     
PS D:\PyCharm Community Edition 2022.2.1\pythonProject\docker-tutorial> docker build -t my-python-app:1.0 .
[+] Building 8.6s (8/8) FINISHED                                           docker:desktop-linux => [internal] load build definition from Dockerfile                                       0.1s=> => transferring dockerfile: 376B                                                       0.0s=> [internal] load metadata for docker.io/library/python:3.9-slim                         1.7s=> [internal] load .dockerignore                                                          0.0s=> => transferring context: 2B                                                            0.0s => [internal] load build context                                                          0.2s => => transferring context: 21.14kB                                                       0.1s => [1/4] FROM docker.io/library/python:3.9-slim@sha256:9aa5793609640ecea2f06451a0d6f3793  0.0s => CACHED [2/4] WORKDIR /app                                                              0.0s=> [3/4] COPY . .                                                                         0.2s => ERROR [4/4] RUN pip install --no-cache-dir -r requirements.txt                         6.2s
------> [4/4] RUN pip install --no-cache-dir -r requirements.txt:
3.132 Processing /C:/ci/aiohttp_1646806572557/work
3.135 ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/C:/ci/aiohttp_1646806572557/work'
3.135
3.750
3.750 [notice] A new release of pip is available: 23.0.1 -> 25.0.1
3.750 [notice] To update, run: pip install --upgrade pip
------
Dockerfile:12
--------------------10 |     11 |     # 安装项目依赖12 | >>> RUN pip install --no-cache-dir -r requirements.txt13 |14 |     ENTRYPOINT ["python", "-u", "./application.py" ]
not complete successfully: exit code: 1
-------------------------------------------------------------------------------------------------XXView build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/vlp8jhik1yukve561d6ahwzg5
PS D:\PyCharm Community Edition 2022.2.1\pythonProject\docker-tutorial> docker build -t my-python-app:1.0 .rm Community Edition 2022.2.1\pythonProject\docker-tutorial>
[+] Building 12.6s (8/8) FINISHED                                          docker:desktop-linux  => [internal] load build definition from Dockerfile                                       0.1s => => transferring dockerfile: 376B                                                       0.0s => [internal] load metadata for docker.io/library/python:3.9-slim                         1.3s => [internal] load .dockerignore                                                          0.1s=> => transferring context: 2B                                                            0.0s=> [internal] load build context                                                          0.2s=> => transferring context: 3.46kB                                                        0.1s => [1/4] FROM docker.io/library/python:3.9-slim@sha256:9aa5793609640ecea2f06451a0d6f3793  0.0s => CACHED [2/4] WORKDIR /app                                                              0.0s=> [3/4] COPY . .                                                                         0.3s=> ERROR [4/4] RUN pip install --no-cache-dir -r requirements.txt                        10.0s
------> [4/4] RUN pip install --no-cache-dir -r requirements.txt:
5.994 Collecting alembic==1.13.1
6.348   Downloading alembic-1.13.1-py3-none-any.whl (233 kB)
6.623      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 233.4/233.4 kB 904.0 kB/s eta 0:00:00
6.820 ERROR: Could not find a version that satisfies the requirement anaconda-navigator==2.1.4 (from versions: none)
6.820 ERROR: No matching distribution found for anaconda-navigator==2.1.4
7.450
7.450 [notice] A new release of pip is available: 23.0.1 -> 25.0.1
7.450 [notice] To update, run: pip install --upgrade pip
------
Dockerfile:12
--------------------10 |     11 |     # 安装项目依赖12 | >>> RUN pip install --no-cache-dir -r requirements.txt13 |14 |     ENTRYPOINT ["python", "-u", "./application.py" ]
--------------------
ERROR: failed to solve: process "/bin/sh -c pip install --no-cache-dir -r requirements.txt" did not complete successfully: exit code: 1View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/73hqsam0a7fmp9ep2zmd4pt6r
PS D:\PyCharm Community Edition 2022.2.1\pythonProject\docker-tutorial> docker build -t my-python-app:1.0 .
[+] Building 8.9s (8/8) FINISHED                                           docker:desktop-linux=> [internal] load build definition from Dockerfile                                       0.0s=> => transferring dockerfile: 376B                                                       0.0s => [internal] load metadata for docker.io/library/python:3.9-slim                         0.7s => [internal] load .dockerignore                                                          0.0s=> => transferring context: 2B                                                            0.0s => [1/4] FROM docker.io/library/python:3.9-slim@sha256:9aa5793609640ecea2f06451a0d6f3793  0.0s => [internal] load build context                                                          0.0s => => transferring context: 512B                                                          0.0s => CACHED [2/4] WORKDIR /app                                                              0.0s=> [3/4] COPY . .                                                                         0.2s => ERROR [4/4] RUN pip install --no-cache-dir -r requirements.txt                         7.6s
------> [4/4] RUN pip install --no-cache-dir -r requirements.txt:
3.397 Collecting alembic==1.13.1
3.974   Downloading alembic-1.13.1-py3-none-any.whl (233 kB)
4.380      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 233.4/233.4 kB 586.9 kB/s eta 0:00:00
4.528 ERROR: Could not find a version that satisfies the requirement anaconda-navigator==2.1.4 (from versions: none)
4.528 ERROR: No matching distribution found for anaconda-navigator==2.1.4
5.084
5.084 [notice] A new release of pip is available: 23.0.1 -> 25.0.1
5.084 [notice] To update, run: pip install --upgrade pip
------
Dockerfile:12
--------------------10 |     11 |     # 安装项目依赖12 | >>> RUN pip install --no-cache-dir -r requirements.txt13 |14 |     ENTRYPOINT ["python", "-u", "./application.py" ]
--------------------
ERROR: failed to solve: process "/bin/sh -c pip install --no-cache-dir -r requirements.txt" did not complete successfully: exit code: 1View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/q8at9hhjtj61fm40aclyopwgv
PS D:\PyCharm Community Edition 2022.2.1\pythonProject\docker-tutorial> docker build -t my-python-app:1.0 .
[+] Building 310.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s
[+] Building 311.0s (7/8)                                                  docker:desktop-linux => [internal] load build context                                                          0.0s 
[+] Building 311.1s (7/8)                                                  docker:desktop-linux => [internal] load build context                                                          0.0s 
[+] Building 311.3s (7/8)                                                  docker:desktop-linux => [internal] load build context                                                          0.0s 
[+] Building 311.4s (7/8)                                                  docker:desktop-linux => [internal] load build context                                                          0.0s 
[+] Building 311.6s (7/8)                                                  docker:desktop-linux => [internal] load build context                                                          0.0s 
[+] Building 311.7s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 311.9s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 312.0s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 312.2s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 312.3s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 312.5s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 312.6s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 312.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 312.9s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 313.1s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 313.2s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 313.4s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 313.5s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 313.7s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 313.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 314.0s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 314.1s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 314.3s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 314.4s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 314.6s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 314.7s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 314.9s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 315.0s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 315.2s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 315.3s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 315.5s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 315.6s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 315.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 315.9s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 316.1s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 316.2s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 316.4s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 316.5s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 316.7s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 316.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 317.0s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 317.1s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 317.3s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 317.4s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 317.6s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 317.7s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 317.9s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 318.0s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 318.2s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 318.3s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 318.5s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 318.6s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 318.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 318.9s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 319.1s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 319.2s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 319.4s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 319.5s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 319.7s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 319.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 320.0s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 320.1s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 320.3s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 320.4s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 320.6s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 320.7s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 320.9s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 321.0s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 321.2s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 321.3s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 321.5s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 321.6s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 321.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 321.9s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 322.1s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 322.2s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 322.4s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 322.5s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 322.7s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 322.8s (7/8)                                                  docker:desktop-linux=> [internal] load build context                                                          0.0s 
[+] Building 894.6s (9/9) FINISHED                                         docker:desktop-linux => [internal] load build definition from Dockerfile                                       0.0s => => transferring dockerfile: 376B                                                       0.0s => [internal] load metadata for docker.io/library/python:3.9-slim                         0.6s => [internal] load .dockerignore                                                          0.0s => => transferring context: 2B                                                            0.0s => [1/4] FROM docker.io/library/python:3.9-slim@sha256:9aa5793609640ecea2f06451a0d6f3793  0.0s => [internal] load build context                                                          0.0s => => transferring context: 130B                                                          0.0s => CACHED [2/4] WORKDIR /app                                                              0.0s => [3/4] COPY . .                                                                         0.3s => [4/4] RUN pip install --no-cache-dir -r requirements.txt                             886.0s => exporting to image                                                                     6.9s=> => exporting layers                                                                    6.8s => => writing image sha256:5c80cd625d69fbfc8e6ada4d822165bad06666bf417db842bdfdc1c0da225  0.0s => => naming to docker.io/library/my-python-app:1.0                                       0.0s View build details: docker-desktop://dashboard/build/desktop-linux/desktop-linux/njmlcpgxaeiewkez9b2nurns6
PS D:\PyCharm Community Edition 2022.2.1\pythonProject\docker-tutorial> 

4. 运行容器

查看镜像

 docker images
PS D:\PyCharm Community Edition 2022.2.1\pythonProject\docker-tutorial>  docker images
REPOSITORY      TAG       IMAGE ID       CREATED              SIZE
my-python-app   1.0       5c80cd625d69   About a minute ago   872MB
my-python-app   latest    1e9870b0df05   18 hours ago         126MB
# 基础运行
docker run -d -p 8000:8000 --name myapp my-python-app:1.0# 带环境变量
docker run -d -p 8000:8000 \-e DEBUG_MODE=1 \--name myapp \my-python-app:1.0# 挂载卷(开发时同步代码)
docker run -d -p 8000:8000 \-v $(pwd)/app:/app/app \--name myapp \my-python-app:1.0

-d 参数表示容器在后台运行,-p 参数用于将主机的8000端口映射到容器的8000端口。

PS D:\PyCharm Community Edition 2022.2.1\pythonProject\docker-tutorial> docker run -d -p 8000:8000 --name myapp my-python-app:1.0
4af9469d1cc95789e6c81022779dc52cee604c6e5e325b7d1f7b977c71b7f8e8

人工智能竞赛-阿里云镜像实战

未完待续

常规技巧

  1. 检查基础镜像软件源和pip源是否替换为国内源,如果非国内源后续每次构建镜像会比较浪费时间。
  2. 必备软件包可直接安装于基础镜像内,以减少每次构建镜像时都要安装一遍的等待时间。
  3. 镜像面临调试问题时,可交互式进入容器后直接调试修改,直到成功后退出再在Dockerfile中修改。
  4. 养成使用Dockerfile的习惯,不要依赖于commit
  5. 每次镜像修改都给定新的版本号或标签,方便区分版本管理,有意义的版本最好使用有含义的字符作为版本号,如:frist_submit
  6. 深度学习常用镜像集合(包含国内源和海外源)https://tianchi.aliyun.com/forum/postDetail?postId=67720

参考

1.AI开发者的Docker实践
2.Docker 命令大全
3.项目依赖的python包requirements.txt文件的生成与安装
4.零基础入门Docker-cuda练习场
5.魔搭社区
6.Codeup
7.Docker 万字教程:从入门到掌握

相关文章:

AI开发者的Docker实践:汉化(中文),更换镜像源,Dockerfile,部署Python项目

AI开发者的Docker实践&#xff1a;汉化&#xff08;中文&#xff09;&#xff0c;更换镜像源&#xff0c;Dockerfile&#xff0c;部署Python项目 Dcoker官网1、核心概念镜像 (Image)容器 (Container)仓库 (Repository)DockerfileDocker Compose 2、Docker 的核心组件Docker 引擎…...

4.30阅读

一. 原文阅读 Passage 7&#xff08;推荐阅读时间&#xff1a;6 - 7分钟&#xff09; In department stores and closets all over the world, they are waiting. Their outward appearance seems rather appealing because they come in a variety of styles, textures, and …...

区块链:跨链协的技术突破与产业重构

引言&#xff1a;区块链的“孤岛困境”与跨链的使命 区块链技术自诞生以来&#xff0c;凭借去中心化、透明性和安全性重塑了金融、供应链、身份认证等领域。然而&#xff0c;不同区块链平台间的​​互操作性缺失​​&#xff0c;如同“数据与价值的孤岛”&#xff0c;严重限制…...

Github 热点项目 Qwen3 通义千问全面发布 新一代智能语言模型系统

阿里云Qwen3模型真是黑科技&#xff01;两大模式超贴心——深度思考能解高数题&#xff0c;快速应答秒回日常梗。支持百种语言互译&#xff0c;跨国客服用它沟通零障碍&#xff01;打工人福音是内置API工具&#xff0c;查天气做报表张口就来。字&#xff09; 1Qwen3 今日星标 …...

有状态服务与无状态服务:差异、特点及应用场景全解

有状态服务和无状态服务是在分布式系统和网络编程中常提到的概念&#xff0c;下面为你详细介绍&#xff1a; 一、无状态服务 无状态服务指的是该服务的单次请求处理不依赖之前的请求信息&#xff0c;每个请求都是独立的。服务端不会存储客户端的上下文信息&#xff0c;每次请…...

【网络入侵检测】基于源码分析Suricata的引擎日志配置解析

【作者主页】只道当时是寻常 【专栏介绍】Suricata入侵检测。专注网络、主机安全&#xff0c;欢迎关注与评论。 1. 概要 &#x1f44b; Suricata 的引擎日志记录系统主要记录该引擎在启动、运行以及关闭期间应用程序的相关信息&#xff0c;如错误信息和其他诊断信息&#xff0c…...

Attention层的FLOPs计算

前置知识 设矩阵 A 的维度为 mn&#xff0c;矩阵 B 的维度为 np&#xff0c;则它们相乘后得到矩阵 C 的维度为 mp。其中&#xff0c;C 中每个元素的计算需要进行 n 次乘法和 n−1 次加法。也就是说&#xff0c;总的浮点运算次数&#xff08;FLOPs&#xff09;约为 m p (2n) …...

支付APP如何做好网络安全防护

支付APP的网络安全防护需要从技术、管理、用户行为等多层面综合施策&#xff0c;以下为核心措施&#xff1a; ​​一、技术防御&#xff1a;构建安全底层​​ ​​数据加密​​ ​​传输加密​​&#xff1a;使用最新协议&#xff08;如TLS 1.3&#xff09;对交易数据加密&…...

Missashe考研日记-day31

Missashe考研日记-day31 0 写在前面 芜湖&#xff0c;五一前最后一天学习圆满结束&#xff0c;又到了最喜欢的放假环节&#xff0c;回来再努力了。 1 专业课408 学习时间&#xff1a;2h学习内容&#xff1a; OK啊&#xff0c;今天把文件系统前两节的内容全部学完了&#xf…...

二叉树的路径总和问题(递归遍历,回溯算法)

112. 路径总和 - 力扣&#xff08;LeetCode&#xff09; class Solution { private: bool traversal(TreeNode*cur,int count){if(!cur->left&&!cur->right&&count0){return true;}if(!cur->left&&!cur->right){return false;}if(cur-…...

Java学习计划与资源推荐(入门到进阶、高阶、实战)

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息文章目录 Java学习计划与资源推荐**一、筑基阶段(2-3个月)****二、进阶开发阶段(2个月)****三、高级突破阶段(2-3个月)****四、项目实战与竞…...

动态规划 -- 子数组问题

本篇文章中主要讲解动态规划系列中的几个经典的子数组问题。 1 最大子数组和 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 解析题目&#xff1a; 子数组是一个数组中的连续部分&#xff0c;也就是说&#xff0c;如果一个数组以 nums[i]结尾&#xff0c;那么有两…...

Sehll编程的函数于数组

目录 一、函数 1.1、定义函数 1.2、查看、删除函数 1.3、函数的返回值 1.4、函数的参数传递 1.5、函数的作用范围 1.6、函数递归 二、数组 2.1、声明数组 2.2、数组格式定义 2.3、数组调用 2.4、删除数组 一、函数 shell编程中&#xff0c;函数用于封装一段可以重…...

flutter 专题 六十四 在原生项目中集成Flutter

概述 使用Flutter从零开始开发App是一件轻松惬意的事情&#xff0c;但对于一些成熟的产品来说&#xff0c;完全摒弃原有App的历史沉淀&#xff0c;全面转向Flutter是不现实的。因此使用Flutter去统一Android、iOS技术栈&#xff0c;把它作为已有原生App的扩展能力&#xff0c;…...

AI生成Flutter UI代码实践(一)

之前的杂谈中有提到目前的一些主流AI编程工具&#xff0c;比如Cursor&#xff0c;Copilot&#xff0c;Trea等。因为我是Android 开发&#xff0c;日常使用Android Studio&#xff0c;所以日常使用最多的还是Copilot&#xff0c;毕竟Github月月送我会员&#xff0c;白嫖还是挺香…...

spring boot中@Validated

在 Spring Boot 中&#xff0c;Validated 是用于触发参数校验的注解&#xff0c;通常与 ​​JSR-303/JSR-380​​&#xff08;Bean Validation&#xff09;提供的校验注解一起使用。以下是常见的校验注解及其用法&#xff1a; ​1. 基本校验注解​​ 这些注解可以直接用于字段…...

VBA代码解决方案第二十四讲:EXCEL中,如何删除重复数据行

《VBA代码解决方案》(版权10028096)这套教程是我最早推出的教程&#xff0c;目前已经是第三版修订了。这套教程定位于入门后的提高&#xff0c;在学习这套教程过程中&#xff0c;侧重点是要理解及掌握我的“积木编程”思想。要灵活运用教程中的实例像搭积木一样把自己喜欢的代码…...

SpringBoot+EasyExcel+Mybatis+H2实现导入

文章目录 SpringBootEasyExcelMybatisH2实现导入1.准备工作1.1 依赖管理1.2 配置信息properties1.3 H2数据库1.4 Spring Boot 基础概念1.5 Mybatis核心概念 1.6 EasyExcel核心概念 2.生成Excel数据工具类-随机字符串编写生成Excel的java文件 3.导入功能并且存入数据库3.1 返回结…...

算法四 习题 1.3

数组实现栈 #include <iostream> #include <vector> #include <stdexcept> using namespace std;class MyStack { private:vector<int> data; // 用于存储栈元素的数组public:// 构造函数MyStack() {}// 入栈操作void push(int val) {data.push_back…...

el-tabs与table样式冲突导致高度失效问题解决(vue2+elementui)

背景 正常的el-table能根据父容器自动计算剩余高度&#xff0c;并会在列表中判断自适应去放出滚动条。而el-tabs本身就是自适应el-tab-pane内容的高度来进行自适应调节&#xff0c;这样就会导致el-table计算不了当前剩余的高度&#xff0c;所以当el-tabs里面包含el-table时&am…...

Access开发:轻松一键将 Access 全库表格导出为 Excel

hi&#xff0c;大家好呀&#xff01; 在日常工作中&#xff0c;Access 常常是我们忠实的数据管家&#xff0c;默默守护着项目信息、客户列表或是库存记录。它结构清晰&#xff0c;录入便捷&#xff0c;对于许多中小型应用场景来说&#xff0c;无疑是个得力助手。然而&#xff…...

合并多个Excel文件到一个文件,并保留格式

合并多个Excel文件到一个文件&#xff0c;并保留格式 需求介绍第一步&#xff1a;创建目标文件第二步&#xff1a;创建任务列表第三步&#xff1a;合并文件第四步&#xff1a;处理合并后的文件之调用程序打开并保存一次之前生成的Excel文件第五步&#xff1a;处理合并后的文件之…...

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十讲)

这一期我们讲解demo中登录、ok按键的回调函数以及界面的美化&#xff0c;以下是上期界面的图片如图所示&#xff1a; 首先点击界面在右侧的工具栏中调配颜色渐变色&#xff0c;具体设置如下图所示&#xff1a; 然后是关于界面内框也就是容器的美化&#xff0c;具体如下图所示…...

论文笔记(八十二)Transformers without Normalization

Transformers without Normalization 文章概括Abstract1 引言2 背景&#xff1a;归一化层3 归一化层做什么&#xff1f;4 动态 Tanh &#xff08;Dynamic Tanh (DyT)&#xff09;5 实验6 分析6.1 DyT \text{DyT} DyT 的效率6.2 tanh \text{tanh} tanh 和 α α α 的消融实验…...

Mysql之数据库基础

&#x1f31f; 各位看官好&#xff0c;我是maomi_9526&#xff01; &#x1f30d; 种一棵树最好是十年前&#xff0c;其次是现在&#xff01; &#x1f680; 今天来学习Mysql的相关知识。 &#x1f44d; 如果觉得这篇文章有帮助&#xff0c;欢迎您一键三连&#xff0c;分享给更…...

shell(5)

位置参数变量 1.介绍 当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量. 比如&#xff1a;./myshell.sh100 200,这就是一个执行shell的命令行,可以在myshell脚本中获取到参数信息. 2.基本语法 $n(功能描述&#xff1a;n为数字,$0代表命令…...

VARIAN安捷伦真空泵维修清洁保养操作SOP换油操作流程内部转子图文并茂内部培训手侧

VARIAN安捷伦真空泵维修清洁保养操作SOP换油操作流程内部转子图文并茂内部培训手侧...

动画震动效果

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在有的相关目中特别是在C端一般都要求做的炫酷一些&#xff0c;这就需要一些简易的动画效果&#xff0c;这里就弄了一个简易的震动的效果如下视频所示 让图标一大一小的震动视频 分析&#xff1a; 提…...

DB-GPT V0.7.1 版本更新:支持多模态模型、支持 Qwen3 系列,GLM4 系列模型 、支持Oracle数据库等

V0.7.1版本主要新增、增强了以下核心特性 &#x1f340;DB-GPT支持多模态模型。 &#x1f340;DB-GPT支持 Qwen3 系列&#xff0c;GLM4 系列模型。 &#x1f340; MCP支持 SSE 权限认证和 SSL/TLS 安全通信。 &#x1f340; 支持Oracle数据库。 &#x1f340; 支持 Infini…...

C++23 std::invoke_r:调用可调用 (Callable) 对象 (P2136R3)

文章目录 引言背景知识回顾可调用对象C17的std::invoke std::invoke_r的诞生提案背景std::invoke_r的定义参数和返回值异常说明 std::invoke_r的使用场景指定返回类型丢弃返回值 std::invoke_r与std::invoke的对比功能差异使用场景差异 结论 引言 在C的发展历程中&#xff0c;…...

pymysql

参数&#xff08;会导致SQL注入&#xff09; import pymysql# 创建数据库连接 conn pymysql.connect(user "root",password "root",host "127.0.0.1",port 3306,database "test" )# 创建游标对象 cur conn.cursor(cursorpymysql.…...

基于Spring Boot + Vue 项目中引入deepseek方法

准备工作 在开始调用 DeepSeek API 之前&#xff0c;你需要完成以下准备工作&#xff1a; 1.访问 DeepSeek 官网&#xff0c;注册一个账号。 2.获取 API 密钥&#xff1a;登录 DeepSeek 平台&#xff0c;进入 API 管理 页面。创建一个新的 API 密钥&#xff08;API Key&#x…...

Spring Boot集成Kafka并使用多个死信队列的完整示例

以下是Spring Boot集成Kafka并使用多个死信队列的完整示例&#xff0c;包含代码和配置说明。 1. 添加依赖 (pom.xml) <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId&…...

全面了解CSS语法 ! ! !

CSS&#xff08;层叠样式表&#xff09;是网页设计的灵魂之一&#xff0c;它赋予了网页活力与美感。无论是为一个简单的个人博客增添色彩&#xff0c;还是为复杂的企业网站设计布局&#xff0c;CSS都是不可或缺的工具。那么&#xff0c;CSS语法到底是什么样的呢&#xff1f;它背…...

Springboot使用ThreadLocal提供线程局部变量,传递登录用户名

文章目录 概述使用创建ThreadLocalUtil工具类在登录拦截器中使用ThreadLocal存储登录用户名在/userInfo接口中获取登录用户名 注意事项参考视频 概述 使用 创建ThreadLocalUtil工具类 utils/ThreadLocalUtil.java package org.example.utils;/*** ThreadLocal 工具类*/ Supp…...

排序算法——选择排序

一、介绍 「排序算法sortingalgorithm」用于对一组数据按照特定顺序进行排列。排序算法有着广泛的应用&#xff0c;因为有序数据通常能够被更有效地查找、分析和处理。 如图所示&#xff0c;排序算法中的数据类型可以是整数、浮点数、字符或字符串等。排序的判断规则可根据需求…...

AlphaFold蛋白质结构数据库介绍

AlphaFold Protein Structure Database (AlphaFold DB) 是 DeepMind + EMBL-EBI 合作开发的公开蛋白质结构预测数据库,是利用 AlphaFold2/AlphaFold3 AI模型 预测的全基因组级蛋白质三维结构库。 网址: https://alphafold.ebi.ac.uk 项目内容主办单位DeepMind + EMBL-EBI上线…...

Roboflow标注数据集

使用Roboflow进行标注 关键点标注目标检测标注图像分类标注分割标注 Roboflow是一款易于使用的在线 图像标注。 关键点标注 每个图像的标注包括&#xff1a; 1、边界框坐标&#xff08;每个物品应该有一个边界框&#xff0c;用*[x1,y1,x2,y2]*格式即左上角和右下角点描述&…...

大厂经验:第三方包Paramunittest参数化 VS Unittest内置参数化文本管理器subtest

大厂经验&#xff1a;第三方包Paramunittest参数化 VS Unittest内置参数化文本管理器subtest 代码解析 Paramunittest 核心逻辑 paramunittest.parametrized((Testerr, test, Invalid Login or Password., test_login_admin is passed),(Sam, test, Invalid Login or Passwo…...

[特殊字符]适合五四青年节的SVG模版[特殊字符]

宝藏模版 往期推荐&#xff08;点击阅读&#xff09;&#xff1a; 趣味效果&#xff5c;高大上&#xff5c;可爱风&#xff5c;年终总结I&#xff5c;年终总结II&#xff5c;循环特效&#xff5c;情人节I&#xff5c;情人节II&#xff5c;情人节IIII&#xff5c;妇女节I&…...

当插入排序遇上“凌波微步“——希尔排序的奇幻漂流

文章目录 一、排序江湖的隐藏高手二、分而治之的魔法1. 核心思想拆解2. 动态演示&#xff08;脑补版&#xff09; 三、C语言实现大揭秘代码要点解析&#xff1a; 四、性能分析与实战技巧1. 时间复杂度迷思2. 实测性能对比 五、为什么说它永不过时&#xff1f;六、进阶思考题 一…...

【Hot 100】 148. 排序链表

目录 引言十大排序算法1. 冒泡排序 (Bubble Sort)2. 选择排序 (Selection Sort)3. 插入排序 (Insertion Sort)4. 希尔排序 (Shell Sort)简单代码说明关键特点 5. 归并排序 (Merge Sort)6. 快速排序 (Quick Sort)7. 堆排序 (Heap Sort)8. 计数排序 (Counting Sort)9. 桶排序 (Bu…...

大连理工大学选修课——机器学习笔记(9):线性判别式与逻辑回归

线性判别式与逻辑回归 概述 判别式方法 产生式模型需要计算输入、输出的联合概率 需要知道样本的概率分布&#xff0c;定义似然密度的隐式参数也称为基于似然的分类 判别式模型直接构造判别式 g i ( x ∣ θ i ) g_i(x|\theta_i) gi​(x∣θi​)&#xff0c;显式定义判别式…...

[特殊字符] 开发工作高内存占用场景下,Windows 内存压缩机制是否应该启用?实测分析与优化建议

在日常开发中&#xff0c;我们往往需要同时运行多个高占用内存的工具&#xff0c;例如&#xff1a; IntelliJ IDEA VMware 虚拟机 多个 Java 后端程序 这些应用程序非常“吃内存”&#xff0c;轻松就能把 16GB、甚至 24GB 的物理内存用满。那么&#xff0c;Windows 的“内存…...

相机的基础架构

&#x1f4f7; 相机相关基础架构学习路径 一、了解手机相机系统架构 Android Camera HAL&#xff08;如果你是做 Android 平台&#xff09; 学习 Camera HAL3 架构&#xff08;基于 camera_device_t, camera3_device_ops 接口&#xff09; 熟悉 CameraService → CameraProvid…...

C# 类成员的访问:内部与外部

在 C# 编程中&#xff0c;了解如何从类的内部和外部访问成员是非常重要的。本文将详细介绍这两种访问方式&#xff0c;并通过示例代码展示其具体应用。 从类的内部访问成员 类的成员可以在类的内部自由地互相访问&#xff0c;即使这些成员被声明为private。在类的方法中&…...

DAPO:对GRPO的几点改进

DAPO&#xff1a;对GRPO的几点改进 TL; DR&#xff1a;对 GRPO 的几处细节进行了优化&#xff0c;包括去除 KL 约束、解耦 ppo-clip 的上下界&#xff0c;上界设置更高以鼓励探索、超长回答过滤、token level 损失计算等。相比于原始 GRPO&#xff0c;在 AIME24 上提升非常显著…...

从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用

目录 &#x1f680; 从零构建 MCP Server 与 Client&#xff1a;打造你的第一个 AI 工具集成应用 &#x1f9f1; 1. 准备工作 &#x1f6e0;️ 2. 构建 MCP Server&#xff08;服务端&#xff09; 2.1 初始化服务器 &#x1f9e9; 3. 添加自定义工具&#xff08;Tools&…...

2025.4.27 Vue.js 基础学习笔记

一、Vue.js 简介 Vue.js&#xff08;简称 Vue&#xff09;是一个用于构建用户界面的渐进式 JavaScript 框架。它具有以下特点&#xff1a; 轻量级 &#xff1a;核心库体积小&#xff0c;性能优秀&#xff0c;不占用过多资源&#xff0c;加载速度快&#xff0c;适合各种规模的应…...

基于用户场景的汽车行驶工况构建:数据驱动下的能耗优化革命

行业现状&#xff1a;标准工况与用户场景的割裂 全球汽车行业普遍采用WLTC工况进行能耗测试&#xff0c;但其与真实道路场景差异显著。据研究&#xff0c;WLTC工况下车辆能耗数据比实际道路低10%-30%&#xff0c;导致用户对续航虚标投诉激增&#xff08;数据来源&#xff1a;东…...