Docker镜像迁移指南:从Windows构建到Ubuntu运行
Docker镜像迁移指南:从Windows构建到Ubuntu运行
本文档详细介绍如何在Windows系统中构建SVM分类服务的Docker镜像,并将其迁移到Ubuntu系统中运行。
项目概述
本项目是一个使用FastAPI构建的SVM图像分类服务,可以将上传的图像分类为五种不同类型:corona、particle、floating、surface和void。
服务核心功能:
- 接收上传的图像文件
- 使用预训练的SVM模型进行图像分类
- 返回预测类别和置信度
第一部分:在Windows上构建Docker镜像
1. 确保项目文件结构正确
svm_project/
│
├── svm_fastapi.py # FastAPI应用主文件
├── svm_pd_model/ # 预训练模型目录
│ ├── svm_model.pkl # SVM分类器模型
│ ├── svm_scaler.pkl # 标准化器
│ └── svm_pca.pkl # PCA降维器
├── Dockerfile # Docker构建文件
└── requirements.txt # Python依赖列表
2. 主应用文件内容(svm_fastapi.py)
以下是完整的应用代码:
from fastapi import FastAPI, File, UploadFile, HTTPException
from fastapi.responses import JSONResponse
import joblib
import cv2
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.svm import SVC
import uvicornapp = FastAPI()# 加载模型和预处理器
clf = joblib.load('./svm_pd_model/svm_model.pkl')
scaler = joblib.load('./svm_pd_model/svm_scaler.pkl')
pca = joblib.load('./svm_pd_model/svm_pca.pkl')# 定义类别
# categories = ['corona', 'particle', 'floating', 'surface']
categories = ['corona', 'particle', 'floating', 'surface','void'] # 读取新图像并转换为灰度图
def load_new_image(img_path):img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)if img is not None:img = cv2.resize(img, (64, 64)) # 调整图像大小img = img.flatten() # 将图像展平成向量return imgelse:return None@app.post("/predict")
async def predict(file: UploadFile = File(...)):try:# 将文件保存到临时路径img_path = 'temp_image.jpg'with open(img_path, "wb") as buffer:buffer.write(await file.read())# 加载并处理图像new_image = load_new_image(img_path)if new_image is None:raise HTTPException(status_code=400, detail="Failed to process image")# 标准化和降维new_image = scaler.transform([new_image])new_image = pca.transform(new_image)# 预测new_pred = clf.predict(new_image)predicted_category = categories[new_pred[0]]# 获取预测概率pred_prob = clf.predict_proba(new_image)predicted_probability = pred_prob[0][new_pred[0]] * 100return JSONResponse(content={'predicted_category': predicted_category,'predicted_probability': f"{predicted_probability:.2f}%"})except Exception as e:raise HTTPException(status_code=500, detail=str(e))if __name__ == '__main__':uvicorn.run(app, host='0.0.0.0', port=9000)
3. 在Windows系统中配置Docker Desktop
- 确保已安装Docker Desktop并正常运行
- 配置Docker镜像加速(如果需要):
- 打开Docker Desktop设置
- 进入"Docker Engine"选项卡
- 添加以下配置:
{"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.xuanyuan.me", "https://docker.1ms.run"] }
- 点击"Apply & Restart"
4. 在Windows上构建Docker镜像
打开PowerShell或命令提示符,执行以下命令:
# 切换到项目目录
cd E:\cursor_test\cursor_svm_test\svm_project# 构建Docker镜像
docker build -t svm_fastapi_app .
构建过程可能需要几分钟,具体取决于网络速度和计算机性能。
5. 将Docker镜像保存为tar文件
# 将镜像保存为tar文件
docker save -o svm_fastapi_app.tar svm_fastapi_app# 查看文件大小
dir svm_fastapi_app.tar
此操作将创建一个包含完整Docker镜像的tar文件,这个文件会比较大(通常为几百MB)。
第二部分:使用WinSCP将镜像传输到Ubuntu
1. 准备WinSCP传输
- 下载并安装WinSCP(如果尚未安装)
- 启动WinSCP应用程序
- 输入Ubuntu服务器的连接信息:
- 主机名/IP地址
- 端口(通常为22)
- 用户名和密码
- 点击"登录"连接到Ubuntu服务器
2. 传输Docker镜像文件
-
在WinSCP左侧窗口(本地文件)导航到镜像所在目录:
E:\cursor_test\cursor_svm_test\svm_project\
-
在WinSCP右侧窗口(远程文件)导航到目标目录:
/home/your_username/svm_project/
如果该目录不存在,可以右键创建新目录
-
将
svm_fastapi_app.tar
文件从左侧拖到右侧开始传输 -
等待传输完成(可能需要几分钟,取决于文件大小和网络速度)
第三部分:在Ubuntu系统上加载和运行Docker镜像
1. 登录到Ubuntu服务器
使用SSH客户端(如PuTTY)或直接在Ubuntu系统上打开终端。
2. 安装Docker(如果尚未安装)
# 更新包索引
sudo apt update# 安装Docker
sudo apt install -y docker.io# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker# 将当前用户添加到docker组(避免每次都需要sudo)
sudo usermod -aG docker $USER# 注销并重新登录,使权限生效
# 或者运行以下命令临时生效
newgrp docker
3. 加载Docker镜像
# 进入包含tar文件的目录
cd ~/svm_project# 加载Docker镜像
docker load -i svm_fastapi_app.tar
4. 验证镜像是否成功加载
# 查看所有Docker镜像
docker images
应该能看到名为svm_fastapi_app
的镜像已经加载到系统中。
5. 运行Docker容器
# 运行容器
docker run -d --name svm_fastapi_container -p 9000:9000 --restart unless-stopped svm_fastapi_app
参数说明:
-d
: 后台运行容器--name svm_fastapi_container
: 为容器指定名称-p 9000:9000
: 将容器内的9000端口映射到主机的9000端口--restart unless-stopped
: 设置容器自动重启策略svm_fastapi_app
: 使用的Docker镜像名称
容器名称冲突解决方案
如果遇到以下错误:
docker: Error response from daemon: Conflict. The container name "/svm_fastapi_container" is already in use by container "XXXX". You have to remove (or rename) that container to be able to reuse that name.
这表示已经存在同名容器,可以通过以下方法解决:
方法一:使用已有容器(如果是同一应用)
# 查看容器状态
docker ps -a | grep svm_fastapi_container# 如果容器已停止,启动它
docker start svm_fastapi_container# 如果需要重启容器
docker restart svm_fastapi_container
方法二:删除旧容器并创建新容器
# 先停止旧容器
docker stop svm_fastapi_container# 删除旧容器
docker rm svm_fastapi_container# 创建新容器
docker run -d --name svm_fastapi_container -p 9000:9000 --restart unless-stopped svm_fastapi_app
方法三:使用不同的容器名
# 使用不同的名称和端口
docker run -d --name svm_fastapi_container2 -p 9001:9000 --restart unless-stopped svm_fastapi_app
端口被占用解决方案
如果遇到以下错误:
Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint svm_fastapi_container (XXXX): failed to bind host port for 0.0.0.0:9000:172.17.0.X:9000/tcp: address already in use
这表示端口9000已被其他进程占用,可以通过以下方法解决:
方法一:查找并关闭占用端口的进程
# 查找占用9000端口的进程
sudo netstat -tulpn | grep 9000# 找到进程ID后关闭它
sudo kill <进程ID># 然后再尝试启动容器
docker start svm_fastapi_container
方法二:使用不同的端口映射
# 先删除现有容器
docker rm svm_fastapi_container# 使用不同的主机端口(例如9001)重新创建容器
docker run -d --name svm_fastapi_container -p 9001:9000 --restart unless-stopped svm_fastapi_app
使用方法二时,注意服务将在新端口(如9001)上可用,访问时需要使用:
http://服务器IP:9001/docs
方法三:检查是否有重复的容器在运行
# 查看所有运行中的容器
docker ps# 查看所有容器(包括已停止的)
docker ps -a# 如果发现有其他相似容器在运行,可以停止它们
docker stop <容器ID>
6. 验证容器运行状态
# 查看运行中的容器
docker ps# 查看容器日志
docker logs svm_fastapi_container
7. 测试API服务
使用curl命令测试图像分类API:
# 安装curl(如果尚未安装)
sudo apt install -y curl# 测试API服务
curl -X POST "http://localhost:9000/predict" -F "file=@/path/to/your/image.jpg"
或者,在浏览器中访问Swagger UI接口文档:
http://服务器IP:9000/docs
常见问题与解决方案
1. 镜像拉取或构建问题
如果在Windows上构建Docker镜像时遇到网络问题,可以尝试以下方法:
- 配置更多的镜像加速器(见第一部分的步骤3)
- 使用企业VPN或代理服务
- 调整Docker Desktop的网络设置
2. 容器启动失败
如果容器无法正常启动,可以查看详细日志:
docker logs svm_fastapi_container
常见问题包括:
- 模型文件路径不正确
- 端口冲突
- 内存不足
3. API服务无法访问
如果API服务运行但无法访问,检查:
# 检查服务器防火墙设置
sudo ufw status# 如需允许9000端口通过防火墙
sudo ufw allow 9000/tcp# 检查容器端口映射
docker port svm_fastapi_container
管理和维护
1. 停止和启动容器
# 停止容器
docker stop svm_fastapi_container# 启动容器
docker start svm_fastapi_container# 重启容器
docker restart svm_fastapi_container
2. 更新应用
当应用代码更新后,需要在Windows上重新构建镜像并重复上述迁移过程。
3. 容器数据持久化
如果需要在容器外部管理模型文件,可以使用卷挂载:
# 创建数据卷
docker volume create svm-models# 将模型文件复制到数据卷(需要临时容器)
docker run --rm -v svm-models:/data -v $(pwd)/svm_pd_model:/source ubuntu cp -r /source/* /data/# 启动容器并挂载数据卷
docker run -d --name svm_fastapi_container -p 9000:9000 -v svm-models:/app/svm_pd_model --restart unless-stopped svm_fastapi_app
结语
通过本指南,您已经学会了如何在Windows系统中构建Docker镜像,并将其迁移到Ubuntu系统中运行的完整流程。这种方法可以有效地解决在Ubuntu系统上直接构建Docker镜像时可能遇到的网络连接问题。
相关文章:
Docker镜像迁移指南:从Windows构建到Ubuntu运行
Docker镜像迁移指南:从Windows构建到Ubuntu运行 本文档详细介绍如何在Windows系统中构建SVM分类服务的Docker镜像,并将其迁移到Ubuntu系统中运行。 项目概述 本项目是一个使用FastAPI构建的SVM图像分类服务,可以将上传的图像分类为五种不同…...
XR技术赋能艺术展演|我的宇宙推动东方美学体验化
本次广州展览现场引入我的宇宙XR体验模块,通过空间计算与动作捕捉技术,让观众在潮玩艺术氛围中体验虚拟互动,打造“看得懂也玩得动”的展演新场景。 作为科技与文化融合的推动者,我的宇宙正在以“体验科技”为媒介,为潮…...
半导体制造如何数字化转型
半导体制造的数字化转型正通过技术融合与流程重构,推动着这个精密产业的全面革新。全球芯片短缺与工艺复杂度指数级增长的双重压力下,头部企业已构建起四大转型支柱: 1. 数据中枢重构产线生态 台积电的「智慧工厂4.0」部署着30万物联网传感器…...
windows虚拟机隐藏“弹出虚拟驱动”
PVE8 上安装的windows虚拟机,SCSI控制器使用了VitrlIO,安装virtio驱动后,右下角有弹出选项,virtio驱动的网卡、Balloon、串口等设备都是标准的PCI设备,支持热插拔,因此Windows系统会在界面上显示设备可以弹…...
AI工具箱源码+成品网站源码+springboot+vue
大家好,今天给大家分享一个靠AI广告赚钱的项目:AI工具箱成品网站源码,源码支持二开,但不允许转售!! 本人专门为小型企业和个人提供的解决方案。 不懂技术的也可以直接部署工具箱网站,成为站长&…...
《MySQL基础:了解MySQL周边概念》
1.登录选项的认识 -h:指明登录部署了mysql服务的主机,默认为127.0.0.1-P:指明要访问的端口号,默认为3306-u:指明登录用户-p:指明登录密码 2.什么是数据库 2.1认识数据库 第一点理解。 mysql是数据库的客户…...
零基础上手Python数据分析 (15):DataFrame 数据排序与排名 - 快速定位关键数据
写在前面 在上一篇文章中,我们学习了如何使用 Pandas 对 DataFrame 进行分组(groupby())和聚合(agg(), apply(), transform()),这使我们能够从不同维度对数据进行汇总和分析。然而,仅仅得到聚合结果往往不够,我们经常需要知道 “谁是第一?”,“哪些数据排在前面/后面…...
案例驱动的 IT 团队管理:创新与突破之路:第五章 创新管理:从机制设计到文化养成-5.1 创新激励体系-5.1.2 OKR 与创新项目的结合
👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 OKR 与创新项目的结合:驱动 IT 团队突破性创新的机制设计1. 背景与挑战:创新管理的核心痛点1.1 传统绩效管理体系的失效1.2 OKR 的适应性优势 2. 机制…...
数据库10(代码相关语句)
while循环 declare avgprice numeric(10,2) set avgprice(select avg(price)from titles) //自定义参数 while avgprice<10 //循环条件 begin update titles set priceprice*1.1 end //循环语句操作,当avgprice<10,所有price都加0.1 case语句 查询authors表…...
【Pandas】pandas DataFrame tail
Pandas2.2 DataFrame Indexing, iteration 方法描述DataFrame.head([n])用于返回 DataFrame 的前几行DataFrame.at快速访问和修改 DataFrame 中单个值的方法DataFrame.iat快速访问和修改 DataFrame 中单个值的方法DataFrame.loc用于基于标签(行标签和列标签&#…...
淘宝 API 与爬虫混合开发:突破官方接口限制的商品数据采集进阶方案
一、引言 在电商数据挖掘领域,获取淘宝商品数据是一项重要任务。淘宝提供了 API 接口,但其存在调用频率、数据范围等限制。为了更全面、高效地采集商品数据,我们可以采用淘宝 API 与爬虫混合开发的方案,结合两者的优势࿰…...
MAC-基于 Spring 框架的高并发批量任务处理方案
基于 Spring 框架的高并发批量任务处理方案 以下结合 Spring 的特性(如 @Async、线程池管理、事务控制)实现高并发批量任务处理,涵盖 任 务分片、异步执行、资源隔离、熔断降级 等核心能力。 一、线程池配置(资源隔离) 通过 ThreadPoolTaskExecut…...
文件包含漏洞 不同语言危险函数导致的漏洞详解
目录 1. 什么是文件包含漏洞? 2. 文件包含漏洞如何利用?实际案例解析 案例 1:PHP 本地文件包含(LFI) 案例 2:PHP 远程文件包含(RFI) 案例 3:Java 目录遍历与文件包含…...
Android ViewPager使用预加载机制导致出现页面穿透问题
缘由 在应用中使用ViewPager,并且设置预加载页面。结果出现了一些异常的现象。 我们有4个页面,分别是4个Fragment,暂且称为FragmentA、FragmentB、FragmentC、FragmentD,ViewPager在MainActivity中,切换时&#x…...
css 中float属性及clear的释疑
float属性可以让元素脱离文档流,父元素中的子元素设置为float,则会导致父元素的高度塌陷。 <style type"text/css"> .father{ /*没有给父元素定义高度*/background:#ccc; border:1px dashed #999; } .box01,.box02,.box0…...
SpringBoot异常处理之自定义统一的错误处理页面
总体来讲,springboot里处理异常有五种方式,先看第一种: 利用springboot的默认配置,我们自定义统一的错误处理页面 前面说了SpringBoot只是帮助我们做了整合的工作,做配一堆的默认配置工作,异常处理的配置…...
事务管理:确保数据一致性与业务完整性
摘要:本文围绕事务管理展开,先回顾事务基本概念与操作,后深入探讨Spring事务管理。通过具体案例剖析事务管理在实际应用中的问题及解决方案,详细介绍Transactional注解及其属性rollbackFor和propagation的使用。 关键词ÿ…...
回收镀锡废水的必要性(笔记)
镀锡废水若直接排放,将对环境、经济和社会造成多重危害,其回收处理具有迫切性和深远意义。以下从环境、资源、法规、技术与实践、可持续发展五大维度展开分析: 一、环境危害的紧迫性:重金属与污染物的致命威胁 成分复杂…...
java 洛谷题单【算法2-1】前缀和、差分与离散化
P8218 【深进1.例1】求区间和 解题思路 前缀和数组: prefixSum[i] 表示数组 a 的前 (i) 项的和。通过 prefixSum[r] - prefixSum[l - 1] 可以快速计算区间 ([l, r]) 的和。 时间复杂度: 构建前缀和数组的时间复杂度是 (O(n))。每次查询的时间复杂度是 …...
FoundationPose 4090部署 真实场景迁移
参考链接: github代码 4090部署镜像拉取 前期准备 搜狗输入法安装 4090双屏不ok:最后发现是hdmi线坏了。。。。 demo 复现 环境部署(docker本地化部署) 拉取镜像 docker pull shingarey/foundationpose_custom_cuda121:late…...
[dp14_回文串] 分割回文串 II | 最长回文子序列 | 让字符串成为回文串的最少插入次数
目录 1.分割回文串 II 题解 2.最长回文子序列 题解 3.让字符串成为回文串的最少插入次数 题解 回文串,想通过s[i] s[j] 来实现状态变化,由二维数组 右下角 开始扩散 1.分割回文串 II 链接: 132. 分割回文串 II 给你一个字符串 s&…...
美团一面总结
八股的问题里Spring存在不足,无法将八股的知识和项目串联起来。 记录几个值得研究的问题: 端口80到8080是怎么到的 又是怎么一步一步到controller? [用户请求80端口] ↓ [Nginx监听80端口并转发 → 8080] ↓ [Tomcat监听8080端口,…...
Selenium2+Python自动化:利用JS解决click失效问题
文章目录 前言一、遇到的问题二、点击父元素问题分析解决办法实现思路 三、使用JS直接点击四、参考代码 前言 在使用Selenium2和Python进行自动化测试时,我们有时会遇到这样的情况:元素明明已经被成功定位,代码运行也没有报错,但…...
PyTorch的benchmark模块
PyTorch的benchmark模块主要用于性能测试和优化,包含核心工具库和预置测试项目两大部分。以下是其核心功能与使用方法的详细介绍: 1. 核心工具:torch.utils.benchmark 这是PyTorch内置的性能测量工具,主要用于代码片段的执行时间…...
基于MLKit的Android人脸识别应用开发实践
基于MLKit的Android人脸识别应用开发实践 https://gitee.com/wenhua512/face-recognition 1. 项目概述 1.1 功能特点 实时人脸检测与跟踪人脸特征提取与识别自动/手动采集模式人脸数据管理相机参数优化 1.2 技术选型 MLKit人脸检测MediaPipe人脸网格CameraX相机框架Room数…...
【技术派后端篇】ElasticSearch 实战指南:环境搭建、API 操作与集成实践
1 ES介绍及基本概念 ElasticSearch是一个基于Lucene 的分布式、高扩展、高实时的基于RESTful 风格API的搜索与数据分析引擎。 RESTful 风格API的特点: 接受HTTP协议的请求,返回HTTP响应;请求的参数是JSON,返回响应的内容也是JSON…...
Spring Boot 应用程序中配置使用consul
配置是 Spring Boot 应用程序中的一部分,主要用于配置服务端口、应用名称、Consul 服务发现以及健康检查等功能。以下是对每个部分的详细解释: 1. server.port server:port: 8080作用:指定 Spring Boot 应用程序运行的端口号。解释…...
【设计模式——策略模式】
为什么要使用策略模式? 策略模式是一种行为设计模式,它允许在运行时选择算法或行为。通过将算法封装在独立的类中,客户端可以在运行时动态地选择和切换算法,而无需修改原有代码。这种模式特别适合需要灵活切换行为的场景。 形象…...
helm账号密码加密
1、安装工具 sudo apt update sudo apt install gnupg -y wget https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64 mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops chmod x /usr/local/bin/sops2、生成加密文件 gpg --full-generate-…...
【今日三题】添加字符(暴力枚举) / 数组变换(位运算) / 装箱问题(01背包)
⭐️个人主页:小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 添加字符(暴力枚举)数组变换(位运算)装箱问题(01背包) 添加字符(暴力枚举) 添加字符 当在A的开头或结尾添加字符直到和B长度…...
数据处理与GUI开发场景下Python常见类型错误解析与应对策略
数据处理与GUI开发场景下Python常见类型错误解析与应对策略 前言 Python 作为一种广泛应用于数据处理和 GUI 开发的高级编程语言,其动态类型特性为开发者带来了极大的灵活性,但同时也容易引发各种类型错误。在数据处理中,从数据采集、清洗到…...
【论文阅读笔记】模型的相似性
文章目录 The Platonic Representation Hypothesis概述表征收敛的依据表征收敛的原因实验依据未来发展的局限性 Similarity of Neural Network Representations Revisited概述问题背景相似性度量s的性质可逆线性变换不变性正交变换不变性各向同性缩放不变性典型度量满足的性质 …...
MVC协同工作流程
1. 视图层(View)代码作用 核心代码示例(以JSP为例): <!-- register.jsp --> <form action"registerServlet" method"post">用户名: <input type"text" na…...
OpenGL shader开发实战学习笔记:第十章 法线贴图
1. 10 法线贴图 1.1. 什么是法线贴图 我们如果想要在盾牌上实现凹凸感,应该如何做?一种方法是添加更多的顶点来建模更多的细节,但是网格的顶点越多,渲染网格所需的顶点着色器计算就越多,网格占用的内存就越多。大多数…...
神经光子渲染:物理级真实感图像生成——从麦克斯韦方程到深度学习
一、技术背景与核心突破 2025年,神经光子渲染(Photonic Neural Rendering, PNR)技术通过物理光学方程与神经辐射场的深度融合,在AIGC检测工具(如GPTDetector 5.0)的识别准确率从98%降至12%。该技术突破性地…...
MCP 协议知识分享
MCP 协议知识分享 一、MCP 协议概述1.1 定义与背景1.2 核心价值1.3 与传统 API 的对比 二、技术架构与工作原理2.1 核心组件2.2 通信机制2.3 典型工作流程 三、关键技术与应用场景3.1 核心技术3.2 典型应用场景 四、与微软技术的集成4.1 Azure OpenAI 服务4.2 Playwright MCP 服…...
spring boot 文件下载
1.添加文件下载工具依赖 Commons IO is a library of utilities to assist with developing IO functionality. <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version> </depe…...
Redis --- 基本数据类型
Redis --- 基本数据类型 Redis Intro5种基础数据类型 Redis Intro Redis(Remote Dictionary Server)是一款开源的高性能键值存储系统,常用于缓存、消息中间件和实时数据处理场景。以下是其核心特点、数据类型及典型使用场景: 核心…...
随机IP的重要性:解锁网络世界的无限可能
IP地址不仅是连接互联网的“身份证”,更是企业、开发者和个人用户实现高效运营与安全防护的核心工具。然而,固定IP的局限性日益凸显——从隐私泄露到访问受限,从爬虫封禁到商业竞争壁垒,这些问题如何破解?答案就是随机…...
C#: 用Libreoffice实现Word文件转PDF
现实场景中要实现Word格式转PDF格式还是比较常见的。 如果要用开源的组件,只有用Libreoffice了。 一、下载安装Libreoffice 先进入如下链接,找到最新版本和匹配的操作系统来安装。 官网试过,下载是能下载,但安装了用不了&…...
客户验收标准模糊,如何明确
客户验收标准模糊往往会导致项目延迟、质量不符合期望或客户不满意,明确验收标准的关键在于与客户的充分沟通、制定清晰的文档、并确保双方对目标一致性达成共识。在项目的执行过程中,如果客户未能明确表达他们的验收标准,或者项目团队未能确…...
Halcon应用:九点标定-手眼标定
提示:若没有查找的算子,可以评论区留言,会尽快更新 Halcon应用:九点标定-手眼标定 前言一、Halcon应用?二、应用实战1、图形理解[eye-to-hand]:1.1、开始应用2 图形理解[eye-in-hand] 前言 本篇博文主要用…...
springboot3 cloud gateway 配置websocket代理转发教程
前言 最近微服务的项目,需要集成websocket的功能,我在其中的一个微服务模块中集成websocket代码实现,通过模块的端口测试正常,但是通过springboot cloud gateway的端口访问,连接失败!我通过各种百度、和AI…...
详解与FTP服务器相关操作
目录 什么是FTP服务器 搭建FTP服务器相关 编辑 Unity中与FTP相关的类 上传文件到FTP服务器 使用FTP服务器上传文件的关键点 开始上传 从FTP服务器下载文件到客户端 使用FTP下载文件的关键点 开始下载 关于FTP服务器的其他操作 将文件的上传,下载&…...
制作一款打飞机游戏教程8:抖动
我们讨论了爆炸效果,这是非常重要的内容。我们制作了一个可以改变大小的小圆点,并展示了一些微调,比如绘制的圆圈数量和颜色调整等。但我们也提到将要做一些重大改变,这些改变将涉及到颜色的使用方式。 颜色使用方式的改变 目前…...
Linux搭建环境:从零开始掌握基础操作(四)
您好,我是程序员小羊! 前言 软件测试第一步就是搭建测试环境,如何搭建好测试环境,需要具备两项的基础知识: 1、Linux 命令: 软件测试第一个任务, 一般都需要进行环境搭建, 一部分,环境搭建内容是在服…...
第2.4节:学会像AWK一样思考
1 第2.4节:学会像AWK一样思考 AWK的工作方式类似于工厂的流水线。文本数据就像流水线上的产品,AWK逐行读取这些文本,对每行文本进行分割处理,然后通过一系列的模式匹配和动作执行来完成特定的任务。下面我们详细介绍AWK的工作流程…...
内网穿透原理解析、使用网络场景、及如何实现公网访问步骤教程
不多废话,一文了解内网穿透原理解析、使用网络场景、及如何实现公网访问步骤教程。 一,内网穿透原理解析 内网穿透的核心原理是通过中间服务器端口数据转发或点到点技术建立端对端的直连通信通道,使外网设备能够访问内网设备和服务。 1&…...
购买电脑时,主要需要关注以下核心配置,它们直接影响性能、使用体验和价格。根据需求(办公、游戏、设计、编程等),侧重点会有所不同。看看Deepseek的建议
1. 处理器(CPU) 作用:电脑的“大脑”,影响整体运算速度和多任务处理能力。关键参数: 品牌与型号:Intel(酷睿i3/i5/i7/i9)或 AMD(锐龙R3/R5/R7/R9)。核心/线程…...
数据结构与算法[零基础]---4.树和二叉树
四、树和二叉树 (一)树 1.相关定义 树是由一个或多个结点组成的有限集T,它满足以下两个条件:第一个是有一个特定的结点,作为根结点;第二个其余的结点分成m(m>0)个互不相交的有限集T0,T1,.…...