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

docker入门篇

使用docker可以很快部署相同的环境,这也是最快的环境构建,接下来就主要对docker中的基础内容进行讲解.Docker 是一个用于开发、交付和运行应用程序的开源平台,它可以让开发者将应用程序及其依赖打包到一个容器中,然后在任何环境中运行这个容器,实现了应用的跨平台性和一致性。

1. Docker 架构

仓库富含镜像,镜像中包含运行一个容器所需的所有文件系统,容器是镜像的运行实例,镜像是容器的基础,对一个镜像可以创建多个容器.

仓库

仓库(Repository):用于存储镜像的地方,可以分为公共仓库和私有仓库。公共仓库如 Docker Hub,提供了大量的官方和社区镜像,供用户下载和使用。私有仓库则用于企业或个人在内部网络中存储和管理自己的镜像。

镜像

镜像(Image):镜像可以看作是一个只读的模板,它包含了运行一个容器所需的所有文件系统内容,包括操作系统、应用程序、库和配置文件等。镜像是创建容器的基础。

容器

容器(Container):容器是镜像的运行实例。可以将其理解为一个轻量级的、独立的运行环境,其中包含了应用程序及其所有依赖项,容器之间相互隔离,互不影响。

2. 基本操作

安装docker

Windows
下载:访问 Docker 官方网站,选择适合 Windows 系统的 Docker Desktop 版本进行下载。www.docker.com
安装:运行下载好的安装包,按照安装向导完成安装。安装完成后,启动 Docker Desktop。
验证:在命令提示符或 PowerShell 中输入 docker --version,若显示 Docker 版本信息,则说明安装成功。

Linux系统
更新软件包索引:在终端中运行

sudo apt-get update

安装必要的包:运行

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加Docker官方GPG密钥:运行

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加Docker仓库:运行

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

再次更新软件包索引:运行

sudo apt-get update

安装Docker CE:运行

sudo apt-get install docker-ce

验证:运行 sudo docker --version,若显示 Docker 版本信息,则说明安装成功。

查看docker的版本

sudo docker --version

在这里插入图片描述

镜像操作

搜索镜像

docker search [镜像名称]

如docker search nginx,可以搜索 Docker Hub 上的镜像

在这里插入图片描述

拉取镜像

sudo docker pull [镜像名称]

如 docker pull nginx。docker pull ubuntu:latest会从 Docker Hub 上拉取最新的 Ubuntu 镜像。
测试拉取一个最简单的镜像,镜像源为docker.m.daocloud.io,镜像名为hello-world

sudo docker pull docker.m.daocloud.io/hello-world
sudo docker pull ubuntu:latest

查看镜像:通过docker images命令可以列出本地已有的镜像,显示镜像的名称、标签、ID、创建时间和大小等信息。

sudo docker images

删除镜像:用docker rmi命令删除本地镜像。例如,docker rmi ubuntu:latest将删除指定的 Ubuntu 镜像。如果镜像正在被容器使用,则需要先停止相关容器才能删除镜像。

docker rmi [镜像ID]

容器操作

创建并启动容器:运行 docker run [选项] [镜像名称],如 docker run -d -p 80:80 nginx,其中 -d 表示后台运行,-p 用于端口映射

docker run [选项] [镜像名称]

docker run -it ubuntu:latest /bin/bash会基于 Ubuntu 镜像创建一个容器,并以交互模式进入容器的 bash shell。其中,-i表示保持标准输入流打开,-t表示分配一个伪终端。
查看容器:运行 docker ps 查看正在运行的容器,使用 docker ps -a 查看所有容器

sudo docker ps -a 

docker ps命令用于查看正在运行的容器,若要查看所有容器(包括已停止的),可使用docker ps -a。该命令会显示容器的 ID、名称、镜像、状态、运行时间等信息。

docker stop [容器ID] 
docker start [容器ID]

停止和启动容器:docker stop命令用于停止正在运行的容器,例如docker stop 8d8f81da12b5。要重新启动已停止的容器,可使用docker start container_id。

docker rm [容器ID]

删除所有容器: sudo docker rm -f $(sudo docker ps -aq)
停止所有容器sudo docker stop $(sudo docker ps -q)
删除所有镜像:sudo docker rmi $(sudo docker images)

删除容器:使用docker rm命令删除容器。例如,docker rm container_id,但容器必须先停止才能被删除。若要强制删除正在运行的容器,可以使用docker rm -f container_id。

docker exec -it [容器ID] /bin/bash

进入容器:当容器在运行时,可以使用docker exec命令进入容器。例如,docker exec -it container_id /bin/bash可以进入指定容器并打开一个 bash 终端。

停止容器使用 docker stop,删除容器使用 docker rm,删除镜像使用 docker rmi
查看容器日志:使用 docker logs [容器ID] 查看容器的日志信息
构建镜像:通过 docker build -t [镜像名称] . 命令可以根据 Dockerfile 构建镜像
推送镜像:运行 docker push [镜像名称] 将本地镜像推送到 Docker Hub

常见问题

linux环境下更换docker源

先修改docker的daemon.json文件

sudo gedit /etc/docker/daemon.json

加入源

    "registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://cjie.eu.org"]

重启docker服务

sudo systemctl daemon-reload 
 sudo systemctl restart docker

docker配置代理

如果docker镜像创建的过程中需要配置网络,可以直接添加本地的配置:

sudo gedit /etc/docker/daemon.json
{"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://cjie.eu.org"],"proxies": {"http-proxy": "http://127.0.0.1:7890","https-proxy": "http://127.0.0.1:7890"}
}

在这里插入图片描述
重启docker服务

sudo systemctl daemon-reload 
 sudo systemctl restart docker

这样就能正常访问github了

windows环境下更换docker源

打开docker-desktop客户端
在这里插入图片描述
设置一下docker engine:
在这里插入图片描述
添加源:

    "registry-mirrors": ["https://docker.m.daocloud.io","https://docker.imgdb.de","https://docker-0.unsee.tech","https://docker.hlmirror.com","https://cjie.eu.org"]

应用保存即可
当然也可以直接修改docker的daemon.json文件:
以本机使用 Administrator 账户为例,配置文件位于 C:\Users\Administrator.docker\目录下的daemon.json
在这里插入图片描述
打开daemon.json文件,添加源地址即可.
然后去reset一下:
在这里插入图片描述
在这里插入图片描述
也可以完成设置

  1. Dockerfile
    Dockerfile 是一个文本文件,用于定义如何构建镜像。它包含了一系列的指令,描述了镜像的基础环境、安装的软件包、配置信息以及容器启动时要执行的命令等。通过编写 Dockerfile,可以方便地创建自定义镜像,并且能够保证镜像的可重复性和一致性。例如,以下是一个简单的 Dockerfile 示例:
# 使用官方的Python镜像作为基础镜像
FROM python:3.9# 设置工作目录
WORKDIR /app# 将当前目录下的所有文件复制到容器的/app目录下
COPY. /app# 安装项目所需的依赖
RUN pip install -r requirements.txt# 设置容器启动时要执行的命令
CMD ["python", "app.py"]
  1. 数据管理
    数据卷(Volumes):数据卷是一个可供容器使用的特殊目录,它可以绕过联合文件系统,提供了一种在容器和宿主机之间共享数据的方式。数据卷可以在容器创建时指定,并且可以在多个容器之间共享。例如,可以使用docker run -v /host/path:/container/path ubuntu:latest将宿主机的/host/path目录挂载到容器的/container/path目录。
    容器数据持久化:通过数据卷,即使容器被删除,数据卷中的数据也不会丢失,从而实现了容器数据的持久化。这对于保存应用程序的配置文件、数据库数据等非常重要。

  2. 网络配置与进阶使用
    容器网络模式:Docker 支持多种网络模式,如桥接模式(默认)、主机模式、none 模式等。在桥接模式下,容器会连接到一个虚拟的网桥,通过网桥与宿主机和其他容器进行通信。主机模式则让容器直接使用宿主机的网络,容器的网络配置与宿主机相同。none 模式下,容器没有网络配置,需要用户自行配置网络。
    容器间通信:可以通过网络别名或 IP 地址在同一网络中的容器之间进行通信。例如,在一个 Docker 网络中,容器 A 可以通过容器 B 的网络别名或 IP 地址访问容器 B 提供的服务。
    Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。你可以使用 YAML 文件来配置应用程序的服务、网络和卷,然后通过一个命令来启动整个应用程序。
    Docker Swarm 是 Docker 的原生集群工具,可以将多个 Docker 主机组合成一个单一的虚拟 Docker 主机,从而实现容器的编排和管理

举一个例子来使用docker
首先要有一个Dockerfile:

FROM ros:melodic-ros-coreSHELL ["/bin/bash", "-c"]ENV DEBIAN_FRONTEND noninteractiveRUN apt-get update && \apt-get install -y curl git python-pip && \pip install -U --no-cache-dir supervisor supervisor_twiddler rosdep && \rosdep init && \apt-get clean# OSRF distribution is better for gazebo
RUN sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' && \curl -L http://packages.osrfoundation.org/gazebo.key | apt-key add -# RUN apt-get update && \RUN set -eux; \
for i in $(seq 1 5); do \if apt-get update; then \break; \else \echo "Error: apt-get failed (attempt $i of 5). Retrying..." >&2; \sleep 1; \fi; \
done; \
if [ "$i" = 5 ]; then \echo "Error: apt-get failed after 5 attempts." >&2; \exit 1; \
fiRUN set -eux; \
for i in $(seq 1 5); do \if apt-get install -y ros-melodic-gazebo-plugins ros-melodic-xacro ros-melodic-controller-manager ros-melodic-robot-state-publisher; then \break; \else \echo "Error: apt-get failed (attempt $i of 5). Retrying..." >&2; \sleep 1; \fi; \
done; \
if [ "$i" = 5 ]; then \echo "Error: apt-get failed after 5 attempts." >&2; \exit 1; \
fiRUN git clone --depth 1 https://github.com/osrf/gazebo_models.git /tmp/gazebo_models && \cp -r /tmp/gazebo_models/cafe_table /usr/share/gazebo-9/models/ && \cp -r /tmp/gazebo_models/first_2015_trash_can /usr/share/gazebo-9/models/ && \cp -r /tmp/gazebo_models/mailbox /usr/share/gazebo-9/models/ && \cp -r /tmp/gazebo_models/table_marble /usr/share/gazebo-9/models/ && \rm -r /tmp/gazebo_modelsRUN mkdir /srcADD src /srcRUN source /opt/ros/melodic/setup.bash && \mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src && \catkin_init_workspace && \git clone --depth 1 -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git && \git clone --depth 1 -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git && \cp -r /src . && \cd .. && \rosdep update && rosdep install --from-paths src --ignore-src -r -y && \catkin_make -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/ros/melodic install && \apt-get clean && rm -r ~/catkin_wsADD supervisord.conf /etc/supervisor/supervisord.confVOLUME /opt/ros/melodic/share/turtlebot3_descriptionRUN echo "export ROBOT_HOST=hiwonder LIDAR_TYPE=G4" >> /opt/ros/$ROS_DISTRO/setup.bashCMD ["/usr/local/bin/supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]

一个supervisord.conf:

[unix_http_server]
file=/var/run/supervisor.sock
chmod=0700[inet_http_server]
port = :9001[supervisord]
nodaemon=true[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface[rpcinterface:twiddler]
supervisor.rpcinterface_factory = supervisor_twiddler.rpcinterface:make_twiddler_rpcinterface[supervisorctl]
serverurl=unix:///var/run/supervisor.sock[program:simulator]
# command=/ros_entrypoint.sh roslaunch turtlebot3_gazebo turtlebot3_autorace.launch
command=/ros_entrypoint.sh roslaunch hiwonder_gazebo worlds.launch
# environment=TURTLEBOT3_MODEL=burger
autostart=true
autorestart=true
stopwaitsecs=30
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

有了dockerfile过后就可以创建docker镜像

sudo docker build -f Dockerfile -t devrt/simulator-robot:latest .

以当前目录下的 Dockerfile 为基础,使用当前目录作为构建上下文,构建一个名为 devrt/simulator-robot 且标签为 latest 的 Docker 镜像。构建过程中,Docker 会根据 Dockerfile 中的指令执行一系列操作,如安装软件包、复制文件、设置环境变量等,最终生成一个可运行的镜像。
在这里插入图片描述
在这里插入图片描述
之前创建过,所以直接创建好了镜像了
接下来就需要创建容器了,比如sudo docker run devrt/simulator-robot:latest,或者后台持续运行sudo docker run -d devrt/simulator-robot:latest等等,但是我们希望的是创建多个容器,所以运行的是

sudo docker compose up

对应的docker-compose.yaml为

version: '2.3'
services:xserver:image: devrt/xserveripc: hostsecurity_opt:- seccomp:unconfinedports:- "3000:80"healthcheck:test: ["CMD-SHELL", "test -e /tmp/.X11-unix/X0"]interval: "1s"retries: 20simulator:image: devrt/simulator-robotipc: hostsecurity_opt:- seccomp:unconfinedenvironment:- DISPLAY=:0- GAZEBO_MODEL_PATH=/home/developer/models:$GAZEBO_MODEL_PATH  # Add models to Gazebo pathvolumes_from:- xservervolumes:- ./ros/models:/home/developer/models:rw  # Mount local models folder to simulator- ./ros/worlds/turtlebot3_autorace.world:/opt/ros/melodic/share/turtlebot3_gazebo/worlds/turtlebot3_autorace.world:ro  # Replace the world filedepends_on:- xserverworkspace:# env_file:#   - .envimage: devrt/ros-devcontainer-vscode:noetic-desktopipc: hostsecurity_opt:- seccomp:unconfinedports:- "3001:3000"- "3002:8888"volumes:- workspace:/workspace- .src:/workspace/src:rw  # Mount local src to /workspace in containerenvironment:- DISPLAY=:0- ROS_MASTER_URI=http://simulator:11311/volumes_from:- xserver- simulatordepends_on:- xserver
volumes:workspace:

services 部分定义了在 Docker Compose 中要运行的各个服务,每个服务对应一个或多个容器。
所以相当于他会自动去拉取其他镜像比如devrt/xserver:
在这里插入图片描述

在这里插入图片描述
这里当然是创建了三个容器,有些镜像会自动从hub上进行下载
以上测试文件请下载相关绑定的资源

下一次来看如何打包一个docker.

相关文章:

docker入门篇

使用docker可以很快部署相同的环境,这也是最快的环境构建,接下来就主要对docker中的基础内容进行讲解.Docker 是一个用于开发、交付和运行应用程序的开源平台,它可以让开发者将应用程序及其依赖打包到一个容器中,然后在任何环境中运行这个容器&#xff0…...

Unity Shader - UI Sprite Shader之简单抠图效果

Sprite抠图效果: 前言 在PhotoShop中我们经常会用到抠图操作,现在就用Shader实现一个简单的抠图效果。 实现原理: 使用当前像素颜色与需要抠掉的颜色相减作比较,然后与一个指定的阈值比较以决定是否将其显示出来; U…...

本地仓库设置

将代码仓库初始化为远程仓库,主要涉及在服务器上搭建 Git 服务,并将本地代码推送到服务器上。以下是详细的步骤: 1. 选择服务器 首先,你需要一台服务器作为代码托管的远程仓库。服务器可以是本地服务器、云服务器,甚…...

30、Vuex 为啥可以进行缓存处理

Vuex 状态管理基础与缓存的关联 Vuex 的核心概念: Vuex 主要由五个部分组成:state、mutations、actions、getters和modules。其中,state是存储数据的地方,类似于一个全局的数据仓库。在这个菜谱 APP 的例子中,缓存的数…...

ngx_http_conf_ctx_t

定义在 src/http/ngx_http_config.h typedef struct {void **main_conf;void **srv_conf;void **loc_conf; } ngx_http_conf_ctx_t; ngx_http_conf_ctx_t 是 Nginx 中用于管理 HTTP 配置上下文的核心结构体,其设计体现了 Nginx 多级配置&…...

vllm-openai多服务器集群部署AI模型

服务器配置是两台ubantu系统电脑,每台电脑安装两张4090-48G显存的显卡,共计192G显存。 服务器1 服务器2 准备工作: 1.两台电脑都已经安装了docker 2.两台电脑都已经安装了nvidia驱动 参考vllm官方资料 https://docs.vllm.ai/en/latest/serving/distributed_serving.html…...

Cluster Computer(SCI1区)投稿常见问题

Cluster Computer(SCI1区)投稿常见问题 目录 Cluster Computer(SCI1区)投稿常见问题怎么查询sci投稿的详细时间节点怎么查看sci投稿期刊邀请几个审稿人,几个审稿接受邀请**一、格式问题:作者简介与照片添加****二、审稿周期长:催稿邮件模板****三、查重超标(阈值通常20…...

在Spring Boot项目中接入DeepSeek深度求索,感觉笨笨的呢

文章目录 引言1. 什么是DeepSeek?2. 准备工作2.1 注册DeepSeek账号 3.实战演示3.1 application增加DS配置3.2 编写service3.3 编写controller3.4 编写前端界面chat.html3.5 测试 总结 引言 在当今快速发展的数据驱动时代,企业越来越重视数据的价值。为了…...

STM32---FreeRTOS事件标志组

一、简介 事件标志位:用一个位,来表示事件是否发生 事件标志组:一组事件标志位的集合,可以简单的理解时间标志组,就是一个整体。 事件标志租的特点: 它的每一个位表示一个时间(高8位不算&…...

Word 小黑第40套

对应大猫43 主题 -浏览主题 -选择W样式标准文件就行 1级段落和2级段落(用项目符号不影响原本段落文字符号 颜色修改为自动) 整段变红的 不是把光标定位到红色字体那里 要选择几个红色字体 再创建样式 插入的空白页一定要是下一页,不能插空白…...

【Linux我做主】浅谈Shell及其原理

浅谈Linux中的Shell及其原理 Linux中Shell的运行原理github地址前言一、Linux内核与Shell的关系1.1 操作系统核心1.2 用户与内核的隔离 二、Shell的演进与核心机制2.1 发展历程2.2 核心功能解析2.3 shell的工作流程1. 用户输入命令2. 解析器拆分指令3. 扩展器处理动态内容变量替…...

【JDK17】开源应用服务器大比对

接着 next-public 源代码分析,Java 应用服务器选用 jetty。但是之前普遍使用 Tomcat,那为什么要用 jetty 么,除了这两个,Java 应用服务器开源现状并不了解,故而又是一篇科普性的笔记,以下是 又小又快的 Jav…...

CI/CD构建与注意事项

1. CI/CD 概述 1.1 定义 CI(Continuous Integration,持续集成):是一种软件开发实践,开发团队成员频繁地将代码集成到共享的代码仓库中。每次集成都会通过自动化的构建(包括编译、打包等)和测试…...

数据结构篇——二叉树的存储与遍历

一、引入 书接上文,文于此续。上文我们学到了树的存储结构,那么今天,我们来学习下几种特殊的二叉树以及关于它的各种遍历,让我们一起加油吧。 二、特殊的二叉树 二叉树的特殊形式这里介绍3种,其中需要着重记忆的有…...

分而治之:用于 RGB-T 显著目标检测的 Confluent Triple-Flow 网络(问题)

摘要 问题一:RGB-thermal显著对象检测这是什么? RGB图像是可见光的三通道图像,而thermal是热红外图像,通常为单通道,记录物体的热辐射信息。结合RGB和thermal两种模态的数据,可以利用两者的互补信息&…...

求职招聘网站源码,找工作招工系统,支持H5和各种小程序

招聘找活招工平台系统源码 招聘求职找工作软件 发布信息积分充值招聘系统,里面带纤细教程 功能介绍: 招工小程序主要针对工地招工工人找工作,工地可以发布招工信息,工人可以发布找活信息,招工信息可以置顶,置顶需要积分,积分可以通过签到、分享邀请好友、充值获取,后…...

18.使用读写包操作Excel文件:xlrd、xlwt 和 xlutils 包

一 xlrd、xlwt 和 xlutils 包的介绍 OpenPyXL 和 xlrd、xlwt 、xlutils 的区别在笔记 15 。 二 如何使用 xlrd 读取文件 1.获取所有工作表的名称 book.sheet_names():得到一个列表。 import xlrd import xlwt from xlwt.Utils import cell_to_rowcol2 import xluti…...

python脚本实现服务器内存和cpu使用监控,并记录日志,可以设置阈值和采样频率

Python 脚本,实现以下功能: 按日期自动生成日志文件(例如 cpu_mem_20231001.csv)当 CPU 或内存超过阈值时触发记录独立记录报警事件(保存到 alert.log)支持自定义阈值和监控间隔 脚本代码 import psutil …...

企业微信群聊机器人开发

拿到机器人hook 机器人开发文档 https://developer.work.weixin.qq.com/document/path/91770...

基于Python的tkinter开发的一个工具,解析图片文件名并将数据自动化导出为Excel文件

文章目录 一、开发背景与业务价值二、系统架构设计1. 分层架构图解2. 核心类结构3. 文件解析流程 三、关键技术实现详解1. 高性能文件名解析引擎2. 可视化数据展示3. 智能Excel导出模块 四、完整代码五、行业应用展望 一、开发背景与业务价值 在零售行业会员管理场景中&#x…...

c++面向对象笔记

本文章总结了所有面向对象可能会用到的笔记以及知识,同时也是cGESP6级的必考题,不推荐0基础阅读,请见谅! 一.面向对象三大特性 C面向对象的三大特性:封装、继承、多态 1.封装 1.1封装的意义 封装的意义如下&#…...

pyqt 上传文件或者文件夹打包压缩文件并添加密码并将密码和目标文件信息保存在json文件

一、完整代码实现 import sys import os import json import pyzipper from datetime import datetime from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QHBoxLayout,QPushButton, QLineEdit, QLabel, QFileDialog,QMessageBox, QProgressBar) from PyQt5.…...

Flutter_学习记录_状态管理之GetX

1. 状态管理、Flutter Getx介绍 1.1 状态管理 通俗的讲:当我们想在多个页面(组件/Widget)之间共享状态(数据),或者一个页面(组件/Widget)中的多个子组件之间共享状态(数…...

【网络】数据流(Data Workflow)Routes(路由)、Controllers(控制器)、Models(模型) 和 Middleware(中间件)

在图片中,数据流(Data Workflow)描述了应用程序中数据的流动过程,涉及 Routes(路由)、Controllers(控制器)、Models(模型) 和 Middleware(中间件&…...

c++ 中的可变参数模板与折叠表达式

c 11 引入了可变参数模板,c 17 引入了折叠表达式,比 c 语言的可变参数更加简洁灵活。这篇博客总结了一些例子。 …(省略号)用于可变参数(Variadic Arguments),它可以放在模板参数 或 函数参数的…...

Vala教程-第一个程序(Hello world)

代码 class Demo.HelloWorld : GLib.Object {public static int main(string[] args) {stdout.printf("Hello, World\n");return 0;} } 解析 这是一个 Vala Hello World 程序。我将一步一步地介绍它。 class Demo.HelloWorld : GLib.Object { 这一行定义了一个He…...

Git下载安装(保姆教程)

目录 1、Git下载 2、Git安装(windows版) (1)启动安装程序 (2)阅读许可协议 (3)选择安装路径 (4)选择组件 (5)选择开始菜单文件夹…...

Blender-MCP服务源码2-依赖分析

Blender-MCP服务源码2-依赖分析 有个大佬做了一个Blender-MCP源码,第一次提交代码是【2025年3月7号】今天是【2025年月15日】也就是刚过去一周的时间,所以想从0开始学习这个代码,了解一下大佬们的开发思路 1-核心知识点 from mcp.server.fas…...

LabVIEW压比调节器动态试验台

本案介绍了一种基于LabVIEW的压比调节器动态试验台的设计,通过实用的LabVIEW图形化编程语言,优化了数据采集与处理的整个流程。案例通过实际应用展示了设计的专业性与高效性,以及如何通过系统化的方法实现精确的动态测试和结果分析。 ​ 项目…...

基于“动手学强化学习”的知识点(二):第 15 章 模仿学习(gym版本 >= 0.26)

第 15 章 模仿学习(gym版本 > 0.26) 摘要 摘要 本系列知识点讲解基于动手学强化学习中的内容进行详细的疑难点分析!具体内容请阅读动手学强化学习! 对应动手学强化学习——模仿学习 # -*- coding: utf-8 -*-import gy…...