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

(七)lerobot开源项目so100新版本全流程操作(操作记录)

目录

《项目简介》

一、环境配置

1、创建虚拟环境 

2、克隆项目并安装所需包 

二、主从臂硬件准备

1、舵机配置

(1)分别查看主从臂的开发板端口号 

(2)分别设置主从臂的舵机 

2、组装主从臂

3、查看主从臂端口号和相机端口号

4、修改配置文件

5、主从臂校准

三、模型训练(在线采集数据)

1、前提准备

(1)激活环境 

(2)登录huggingface 

2、设置硬件权限并进行测试

3、采集数据

4、数据查看&动作复现

5、加载huggingface数据进行模型训练

四、模型测试

1、前提准备

(1)激活环境 

(2)登录huggingface  

2、设置硬件权限并进行测试

3、加载权重进行模型测试 


<<<<<项目环境建议:纯Linux或双系统的Linux环境,慎用虚拟机的Linux环境>>>>>

《项目简介》

项目地址:GitHub - huggingface/lerobot: 🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learninghttps://github.com/huggingface/lerobot

可直接进入 full tutorial for SO-100,按照流程操作

一、环境配置

1、创建虚拟环境 

conda create -y -n lerobot python=3.10
conda activate lerobot

2、克隆项目并安装所需包 

git clone https://github.com/huggingface/lerobot.git ~/lerobot
cd lerobot && pip install -e ".[feetech]"
conda install -y -c conda-forge ffmpeg
pip uninstall -y opencv-python
conda install -y -c conda-forge "opencv>=4.10.0"

 注:出现报错可能需要安装的包

cd lerobot && pip install -e .
sudo apt-get install git-lfs
git lfs install
conda install -c conda-forge jpeg libtiff
pip install pynput==1.7.7

 注:解决Unknow encoder libsvtav1的报错

/lerobot/lerobot/common/datasets/video_utils.py的134行左右,将libsvtav1修改为vcodec: str = "libopenh264"

二、主从臂硬件准备

1、舵机配置

(一)lerobot开源项目的舵机配置(操作记录)-CSDN博客https://blog.csdn.net/ou1531037815/article/details/144098305

(1)分别查看主从臂的开发板端口号 

python lerobot/scripts/find_motors_bus_port.py

(2)分别设置主从臂的舵机 

sudo chmod 777 /dev/ttyACM0
sudo chmod 777 /dev/ttyACM1
python lerobot/scripts/configure_motor.py \--port /dev/ttyACM0 \--brand feetech \--model sts3215 \--baudrate 1000000 \--ID 1                   <-- UPDATE HERE

ID:1-6

2、组装主从臂

3、查看主从臂端口号和相机端口号

python lerobot/scripts/find_motors_bus_port.py
sudo chmod 777 /dev/ttyACM0
sudo chmod 777 /dev/ttyACM1
python lerobot/common/robot_devices/cameras/opencv.py \--images-dir outputs/images_from_opencv_cameras

4、修改配置文件

/lerobot/lerobot/common/robot_devices/robots/configs.py,修改四处地方:<-- UPDATE HERE

@RobotConfig.register_subclass("so100")
@dataclass
class So100RobotConfig(ManipulatorRobotConfig):calibration_dir: str = ".cache/calibration/so100"# `max_relative_target` limits the magnitude of the relative positional target vector for safety purposes.# Set this to a positive scalar to have the same value for all motors, or a list that is the same length as# the number of motors in your follower arms.max_relative_target: int | None = Noneleader_arms: dict[str, MotorsBusConfig] = field(default_factory=lambda: {"main": FeetechMotorsBusConfig(port="/dev/ttyACM0",                          <-- UPDATE HEREmotors={# name: (index, model)"shoulder_pan": [1, "sts3215"],"shoulder_lift": [2, "sts3215"],"elbow_flex": [3, "sts3215"],"wrist_flex": [4, "sts3215"],"wrist_roll": [5, "sts3215"],"gripper": [6, "sts3215"],},),})follower_arms: dict[str, MotorsBusConfig] = field(default_factory=lambda: {"main": FeetechMotorsBusConfig(port="/dev/ttyACM1",                          <-- UPDATE HEREmotors={# name: (index, model)"shoulder_pan": [1, "sts3215"],"shoulder_lift": [2, "sts3215"],"elbow_flex": [3, "sts3215"],"wrist_flex": [4, "sts3215"],"wrist_roll": [5, "sts3215"],"gripper": [6, "sts3215"],},),})cameras: dict[str, CameraConfig] = field(default_factory=lambda: {"laptop": OpenCVCameraConfig(camera_index=2,                          <-- UPDATE HEREfps=30,width=640,height=480,),"phone": OpenCVCameraConfig(camera_index=4,                          <-- UPDATE HEREfps=30,width=640,height=480,),})mock: bool = False

5、主从臂校准

(1)校准从臂

python lerobot/scripts/control_robot.py \--robot.type=so100 \--robot.cameras='{}' \--control.type=calibrate \--control.arms='["main_follower"]'

(2)校准主臂

python lerobot/scripts/control_robot.py \--robot.type=so100 \--robot.cameras='{}' \--control.type=calibrate \--control.arms='["main_leader"]'

(3)遥操验证

python lerobot/scripts/control_robot.py \--robot.type=so100 \--robot.cameras='{}' \--control.type=teleoperate
python lerobot/scripts/control_robot.py \--robot.type=so100 \--control.type=teleoperate

三、模型训练(在线采集数据)

1、前提准备

(1)激活环境 

conda activate lerobot
cd lerobot

(2)登录huggingface 

开启clash,再设置linux命令行代理

解决Linux访问HuggingFace的问题(操作记录)https://blog.csdn.net/ou1531037815/article/details/144570497

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890

 用个人申请的Access Tokens代替${HUGGINGFACE_TOKEN}

huggingface-cli login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential
HF_USER=$(huggingface-cli whoami | head -n 1)
echo $HF_USER

2、设置硬件权限并进行测试

sudo chmod 777 /dev/ttyACM0
sudo chmod 777 /dev/ttyACM1
python lerobot/scripts/control_robot.py \--robot.type=so100 \--control.type=teleoperate

测试硬件连接没问题就可以关掉 control_robot.py

3、采集数据

首先,新建一个叫“so100_test_v2”的本地数据集,并将该数据集上传到huggingface(第一次操作即可)

python lerobot/scripts/control_robot.py \--robot.type=so100 \--control.type=record \--control.fps=30 \--control.single_task="Pick up the white toy tiger and place it into the plate." \--control.repo_id=${HF_USER}/so100_test_v2 \--control.tags='["so100","tutorial"]' \--control.warmup_time_s=5 \--control.episode_time_s=15 \--control.reset_time_s=5 \--control.num_episodes=1 \--control.push_to_hub=true

 然后,在现有的本地数据集上继续录制,并将数据集也同步上传到huggingface(后续操作)

python lerobot/scripts/control_robot.py \--robot.type=so100 \--control.type=record \--control.fps=30 \--control.single_task="Pick up the white toy tiger and place it into the plate." \--control.repo_id=${HF_USER}/so100_test_v2 \--control.tags='["so100","tutorial"]' \--control.warmup_time_s=5 \--control.episode_time_s=15 \--control.reset_time_s=5 \--control.num_episodes=4 \--control.push_to_hub=True \--control.resume=true

4、数据查看&动作复现

python lerobot/scripts/visualize_dataset_html.py \--repo-id ${HF_USER}/so100_test_v2
python lerobot/scripts/control_robot.py \--robot.type=so100 \--control.type=replay \--control.fps=30 \--control.repo_id=${HF_USER}/so100_test_v2 \--control.episode=0

5、加载huggingface数据进行模型训练

python lerobot/scripts/train.py \--dataset.repo_id=${HF_USER}/so100_test_v2 \--policy.type=act \--output_dir=outputs/train/act_so100_test_v2_act \--job_name=act_so100_test_v2_act \--policy.device=cuda \--wandb.enable=false

四、模型测试

1、前提准备

(1)激活环境 

conda activate lerobot
cd lerobot

(2)登录huggingface  

 开启clash,再设置linux命令行代理

解决Linux访问HuggingFace的问题(操作记录)https://blog.csdn.net/ou1531037815/article/details/144570497

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
huggingface-cli login --token ${HUGGINGFACE_TOKEN} --add-to-git-credential
HF_USER=$(huggingface-cli whoami | head -n 1)
echo $HF_USER

2、设置硬件权限并进行测试

sudo chmod 777 /dev/ttyACM0
sudo chmod 777 /dev/ttyACM1
python lerobot/scripts/control_robot.py \--robot.type=so100 \--control.type=teleoperate

测试硬件连接没问题就可以关掉 control_robot.py 

3、加载权重进行模型测试 

python lerobot/scripts/control_robot.py \--robot.type=so100 \--control.type=record \--control.fps=30 \--control.single_task="Pick up the white toy tiger and place it into the plate." \--control.repo_id=${HF_USER}/eval_act_so100_test_v2_act \--control.tags='["tutorial"]' \--control.warmup_time_s=5 \--control.episode_time_s=30 \--control.reset_time_s=5 \--control.num_episodes=4 \--control.push_to_hub=false \--control.policy.path=outputs/train/act_so100_test_v2_act/checkpoints/last/pretrained_model

相关文章:

(七)lerobot开源项目so100新版本全流程操作(操作记录)

目录 《项目简介》 一、环境配置 1、创建虚拟环境 2、克隆项目并安装所需包 二、主从臂硬件准备 1、舵机配置 &#xff08;1&#xff09;分别查看主从臂的开发板端口号 &#xff08;2&#xff09;分别设置主从臂的舵机 2、组装主从臂 3、查看主从臂端口号和相机端…...

智慧景区能源管理解决方案,为旅游“升温”保驾护航

景区能源管理 当下痛点 1 高峰期用电负荷大 节假日和旅游旺季等高峰期用电需求增大&#xff0c;电力供应不足、电网负荷过大&#xff1b; 2 设备维护困难 景区内电力设备多且散&#xff0c;包括发电机组、变电站、配电设备等&#xff0c;维护和管理困难&#xff0c;特别是…...

LCR 056. 两数之和 IV - 输入二叉搜索树

文章目录 题意思路代码 题意 题目链接 思路 代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), …...

AI搜索+法律咨询:在「事实重构」与「程序正义」的博弈场‌

已经写了股票和医疗相关的内容&#xff0c;今天聊一下AI搜索和法律结合的应用场景。AI搜索不替用户做选择&#xff0c;却让我们握住了法律武器的说明书。 ​​​​​​​一、AI重构事实&#xff1a;技术理想与法律现实的碰撞 ‌ 1、案例切入&#xff1a;AI能否还原车祸责任比…...

多模态大模型重塑自动驾驶:技术融合与实践路径全解析

目录 1、 引言&#xff1a;AI与自动驾驶的革命性融合 2、五大领先多模态模型解析 2.1 Qwen2.5-Omni&#xff1a;全模态集大成者 2.2. LLaVA&#xff1a;视觉语言理解专家 2.3. Qwen2-VL&#xff1a;长视频理解能手 2.4. X-InstructBLIP&#xff1a;跨模态理解框架 2.5. …...

海阳科技IPO:业务独立性、业绩稳定性、财务规范性存致命缺陷

三角形是最稳定的结构&#xff0c;它既是完美的相互制衡&#xff0c;又是有力的彼此支撑。 ——佚名 引 言 IPO审议指标、要求、规定众多&#xff0c;有无一个直接简单的公式&#xff1f;该公式可以直接将造假等“低劣”IPO项目排除在外&#xff1f; 在《奕泽财经》看来…...

PyTorch 与 Python 装饰器及迭代器的比较与应用

在深度学习和 Stable Diffusion&#xff08;SD&#xff09;训练过程中&#xff0c;PyTorch 不仅依赖于 Python 的基础特性&#xff0c;而且通过扩展和封装这些特性&#xff0c;提供了更高效、便捷的训练和推理方式。本文将从装饰器和迭代器两个方面详细解释 Python 中的原生实现…...

大数据(5)(基础概念)Spark从入门到实战:核心原理与大数据处理实战案例

目录 一、背景介绍1‌. 为什么需要Spark&#xff1f;‌‌2. Spark的诞生‌&#xff1a; 二、Spark核心原理1. ‌四大核心特性‌2. ‌核心架构‌3. ‌执行流程‌ 三、Spark实战案例案例1&#xff1a;单词计数&#xff08;WordCount&#xff09;案例2&#xff1a;实时流处理&…...

Ubuntu小练习

文章目录 一、远程连接1、通过putty连接2、查看putty运行状态3、通过Puuty远程登录Ubuntu4、添加新用户查看是否添加成功 5、用新用户登录远程Ubuntu6、使用VNC远程登录树莓派 二、虚拟机上talk聊天三、Opencv1、简单安装版&#xff08;适合新手安装&#xff09;2、打开VScode特…...

运行Spark会出现恶问题

1. 依赖冲突问题&#xff1a;Spark依赖众多组件&#xff0c;如Scala、Hadoop等。不同版本的依赖之间可能存在兼容性问题&#xff0c;导致Spark无法正常运行。比如&#xff0c;特定版本的Spark可能要求与之匹配的Scala版本&#xff0c;若使用了不兼容的Scala版本&#xff0c;会在…...

uniapp大文件分包

1. 在pages.json中配置 "subPackages":[{"root":pagesUser,"pages":[{"path":mine/xxx,"style":xxx },{"path":mine/xxx,"style":xxx}]},{"root":pagesIndex,"pages":[{"p…...

Git 源码打包、迁移、恢复和备份

介绍 Git 项目打包方式&#xff0c;适用于源码交付、迁移、备份等场景。 一 Git 仓库的两种类型 在实际项目开发与交付中&#xff0c;常接触 的 两种 Git 仓库&#xff1a; 仓库类型是否包含源码适用场景普通仓库是本地开发、运行、构建裸仓库否代码托管、只读交付、备份 普…...

Linux 内核网络协议栈中的 struct packet_type:以 ip_packet_type 为例

在 Linux 内核的网络协议栈中,struct packet_type 是一个核心数据结构,用于注册特定协议类型的数据包处理逻辑。它定义了如何处理特定协议的数据包,并通过协议类型匹配机制实现协议分发。本文将通过分析 ip_packet_type 的定义和作用,深入探讨其在网络协议栈中的重要性。 …...

LeetCodeHot100-第三章:数学

面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台 目录 &#x1f388;1、双指针&#xff1a;9. 回文数 &#x1f388;2、逻辑题 &#xff1a;66. 加一 &#x1f388;3、逻辑题&#xff1a;172. 阶乘后的零 &#x1f388;4、…...

JavaScript 错误处理:理解和应对异常

在编程中&#xff0c;错误是不可避免的&#xff0c;特别是在进行复杂的逻辑操作、与外部系统交互或处理用户输入时。错误处理是软件开发中非常重要的一部分&#xff0c;它可以帮助开发者提高应用的稳定性和可用性。本文将深入探讨JavaScript中的错误处理机制&#xff0c;如何利…...

LangGraph异步化sqlite checkpoint

安装 pip install langgraph-checkpoint-sqlite异步checkpiont初始化&#xff1a; from langgraph.checkpoint.sqlite.aio import AsyncSqliteSaver conn aiosqlite.connect(":memory:", check_same_threadFalse) memory AsyncSqliteSaver(conn)如果使用异步流式…...

StarRocks 助力首汽约车精细化运营

作者&#xff1a;任智红&#xff0c;首汽约车大数据负责人 更多交流&#xff0c;联系我们&#xff1a;https://wx.focussend.com/weComLink/mobileQrCodeLink/334%201%202/ffbe5 导读&#xff1a; 本文整理自首汽约车大数据负责人任智红在 StarRocks 年度峰会上的演讲&#xf…...

Versatile-OCR-Program:可以从复杂的教育材料(如试卷)中提取结构化数据的开源多模态OCR工具

Versatile-OCR-Program 此 OCR 系统专门设计用于以针对机器学习 &#xff08;ML&#xff09; 训练优化的格式从复杂的教育材料&#xff08;如试卷&#xff09;中提取结构化数据。它支持多语言文本、数学公式、表格、图表和图表&#xff0c;非常适合创建高质量的训练数据集。 主…...

时序数据库 TDengine Cloud 私有连接实战指南:4步实现数据安全传输与成本优化

小T导读&#xff1a;在物联网和工业互联网场景下&#xff0c;企业对高并发、低延迟的数据处理需求愈发迫切。本文将带你深入了解 TDengineCloud 如何通过全托管服务与私有连接&#xff0c;帮助企业实现更安全、更高效、更低成本的数据采集与传输&#xff0c;从架构解析到实际配…...

vue项目本地调试使用https

由于测试环境远程接口&#xff0c;是采用https协议&#xff0c;为了能正常携带cookie访问接口&#xff0c;需要把本地项目也采用https协议访问。前提是后端的cookie设置在二级域名下&#xff0c;且允许固定其他子域名跨域访问&#xff08;需要在后端设置&#xff09; 项目框架…...

【学习笔记】文件上传漏洞--二次渲染、.htaccess、变异免杀

目录 第十二关 远程包含地址转换 第十三关 突破上传删除 条件竞争 第十四关 二次渲染 第十五关 第十六关 第十七关 .htaccess 第十八关 后门免杀 第十九关 日志包含 第十二关 远程包含地址转换 延续第十一关&#xff0c;加一个文件头&#xff0c;上传成功&#xff0c…...

探秘 MQTT 协议:物联网的 “隐形桥梁”

在当今数字化时代&#xff0c;物联网技术正以前所未有的速度改变着我们的生活。从智能家居到工业自动化&#xff0c;从远程医疗到智能交通&#xff0c;无数设备相互连接、交换信息&#xff0c;构建起一个庞大而复杂的智能世界。而在这背后&#xff0c;有一个关键的 “隐形桥梁”…...

[ctfshow web入门] web24

前置知识 isset&#xff1a;判断这个变量是否声明且不为NULL&#xff0c;否则返回False mt_srand&#xff1a;设置随机数种子&#xff0c;如果不手动设置&#xff0c;那么系统会自动进行一次随机种子的设置 mt_rand&#xff1a;生成一个随机数&#xff0c;这个随机数与种子有个…...

Unity 实现伤害跳字

核心组件&#xff1a; Dotween TextMeshPro 过程轨迹如下图&#xff1a; 代码如下&#xff1a; using System.Collections; using System.Collections.Generic; using DG.Tweening; using TMPro; using UnityEngine; using UnityEngine.Pool;public class …...

在SQLark 中快速生成测试数据

在软件开发与数据库管理过程中&#xff0c;高质量的测试数据是保障系统稳定性和性能优化的关键。然而&#xff0c;手动构造仿真数据不仅耗时耗力&#xff0c;还难以覆盖多样化的测试场景。现在&#xff0c;可以使用 SQLark 的数据生成功能&#xff0c;通过 8大类47子类的数据规…...

Postman接口测试详解

一、为何使用postman postman是一款简单高效的接口测试工具&#xff0c;能够很方便发送接口请求&#xff0c;易于保存接口请求脚本&#xff0c;postman提供接口响应数据比对功能&#xff0c;可以设置预期结果作断言&#xff0c;还能把测试用例放在一个集合中批量执行&#xff…...

[ctfshow web入门] web30

信息收集 题目将flag system php不区分大小写地过滤了 解题 前置知识 print_r&#xff1a;php中用于打印数组 scandir&#xff1a;php中用于获取指点目录下的所以文件目录名 getcwd&#xff1a;获取当前目录 目录获取 这里提供两种方法 print_r(scandir(getcwd())); pri…...

ElasticSearch迁移数据

一、查询索引 1、查询所有索引 curl --user elastic:123456 -XGET "http://localhost:19200/_cat/indices?v&sindex" 2、查询索引配置 以索引名称hello为例 curl --user elastic:123456 -XGET "http://localhost:19200/hello/_settings?pretty" 3…...

ES:账号、索引、ILM

目录 笔记1&#xff1a;账号权限查看、查看账号、创建账号等查看所有用户查看特定用户验证权限修改用户权限删除用户 笔记2&#xff1a;索引状态和内容的查看等查看所有索引查看特定索引内容查看索引映射查看索引设置查看索引统计信息查看ILM策略 笔记1&#xff1a;账号权限查看…...

Spring MVC 逻辑视图(JSP、Thymeleaf、FreeMarker)与非逻辑视图(JSON、Excel、PDF、XML)详解及示例

Spring MVC 逻辑视图与非逻辑视图详解及示例 一、逻辑视图与非逻辑视图的定义 类型定义逻辑视图通过视图解析器&#xff08;ViewResolver&#xff09;将逻辑名称&#xff08;如 success&#xff09;映射到具体视图实现。非逻辑视图直接返回具体视图对象&#xff08;如 JsonVie…...

开发体育赛事直播系统:实现聊天交友的私聊功能技术实现全方案解析

基于“东莞梦幻网络科技”体育赛事直播系统&#xff0c;展示前后端技术&#xff08;PHP ThinkPHP Vue.js Android Java iOS OC&#xff09;实现的“用户与用户之间私聊”完整方案&#xff0c;包括功能描述、界面效果、技术实现、数据结构、接口设计及关键代码示例。 一、私…...

UTF-8和GBK编码的区别和详细解释

各位看官&#xff0c;大家早安午安晚安呀~~~ 如果您觉得这篇文章对您有帮助的话 欢迎您一键三连&#xff0c;小编尽全力做到更好 欢迎您分享给更多人哦 今天我们来学习&#xff1a;一个小的知识点—UTF-8和GBK编码的解释 1.关于bite位和进制的关系 1 个比特&#xff08;bit&am…...

java导入excel更新设备经纬度度数或者度分秒

文章目录 一、背景介绍二、页面效果三、代码0.pom.xml1.ImportDevice.vue2.ImportDeviceError.vue3.system.js4.DeviceManageControl5.DeviceManageUserControl6.Repeater7.FileUtils8.ResponseModel9.EnumLongitudeLatitude10.词条 四、注意点本人其他相关文章链接 一、背景介…...

使用python访问mindie部署的vl多模态模型

说明 今天使用mindie1.0部署了qwen2_7b_vl模型&#xff0c;测试过程出现一些问题&#xff0c;这里总结下。 问题1&#xff1a;transformers版本太低 报错信息&#xff1a; [ERROR] [model_deploy_config.cpp:159] Failed to get vocab size from tokenizer wrapper with ex…...

github发布个人中英文简历网站CaoYongshengcys.github.io

在GitHub上创建个人主页&#xff08;也称为GitHub Pages&#xff09;是一个展示个人项目、技能和经历的好方法。以下是详细步骤&#xff1a; 1. 创建GitHub账号 • 如果你还没有GitHub账号&#xff0c;先访问GitHub官网注册一个账号。 • 选择一个专业的用户名&#xff0c;因…...

动态规划算法深度解析:0-1背包问题(含完整流程)

简介&#xff1a; 0-1背包问题是经典的组合优化问题&#xff1a;给定一组物品&#xff08;每个物品有重量和价值&#xff09;&#xff0c;在背包容量限制下选择物品装入背包&#xff0c;要求总价值最大化且每个物品不可重复选取。 动态规划核心思想 通过构建二维状态表dp[i]…...

QML面试笔记--UI设计篇04交互控件

1. QML中常用交互控件 1.1. Button1.2. Slider1.3. ProgressBar1.4. TextField1.5. TextArea1.6. ComboBox1.7. CheckBox1.8. RadioButton1.9. Menu1.10. Dialog 1. QML中常用交互控件 在万物互联的智能时代&#xff0c;QML凭借其‌声明式语法‌和‌跨平台能力‌&#xff0c…...

【数学】线性代数(Python)

参考&#xff1a;https://aibydoing.com/notebooks/appendix01-01-linear-algebra-with-python 目录 矩阵的定义矩阵的运算矩阵的属性矩阵的分解矩阵的本质遗留问题 矩阵的定义 通过数组的维度来区分向量&#xff08;1 维数组&#xff09;、矩阵&#xff08;2 维数组&#xff0…...

ragflow开启https访问:添加证书后,使用浏览器还是有警告,如何解决?

如果在 Windows 系统中安装了 PEM 证书(使用方法一通过证书管理器 MMC 导入),但浏览器仍然提示安全警告,可能有以下几个原因及解决方法: 1. 证书未正确安装到受信任的存储位置 问题:如果证书被导入到错误的存储位置(如“个人”而非“受信任的根证书颁发机构”),浏览器…...

vue.config.js配置代理(输出代理前后的地址)

devServer: {host: 0.0.0.0,port: port,open: true,before(app) {app.use((req, res, next) > {// console.log(原始地址:, req.originalUrl) // 原始地址&#xff0c;如 /api/some-api/xxxxxnext()})},proxy: {[process.env.VUE_APP_BASE_API]: {target: http://192.168.50…...

【八股文】http1.0和1.1的区别

http1.0默认使用短连接&#xff0c;每次请求都需要建立TCP连接&#xff08;三次握手&#xff09;&#xff0c;响应完成后立即关闭连接&#xff0c;导致资源浪费和延迟增加。 支持通过Connection&#xff1a;Keep-alive 手动开启长连接&#xff0c;但需客户端和服务端显式协商 …...

【Prompt实战】邮件分类专家

本文原创作者&#xff1a;姚瑞南 AI-agent 大模型运营专家&#xff0c;先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗&#xff1b;多年人工智能行业智能产品运营及大模型落地经验&#xff0c;拥有AI外呼方向国家专利与PMP项目管理证书。&#xff08;转载需经授权&am…...

K8S核心技术点

Pod&#xff0c;Service和Deployment的关系 Pod&#xff1a;Kubernetes 中最小的部署单元&#xff0c;用于运行容器化应用。 Service&#xff1a;提供服务发现和负载均衡&#xff0c;为 Pod 提供稳定的网络端点&#xff0c;ClusterIP&#xff0c;NodePort&#xff0c;LoadBala…...

Python手写“随机森林”解决鸢尾花数据集分类问题

Python使用“随机森林”解决鸢尾花数据集分类问题 任务描述解题1. 导入必要的库2. 数据采样函数 sample3. 设置随机种子和超参数4. 定义随机森林类 random_forest5. 加载数据集并划分训练集和测试集6. 创建并训练随机森林模型7. 进行预测并计算准确率 代码 任务描述 您的任务是…...

Python 字典和集合(泛映射类型)

本章内容的大纲如下&#xff1a; 常见的字典方法 如何处理查找不到的键 标准库中 dict 类型的变种set 和 frozenset 类型 散列表的工作原理 散列表带来的潜在影响&#xff08;什么样的数据类型可作为键、不可预知的 顺序&#xff0c;等等&#xff09; 泛映射类型 collections.…...

CrystalDiskInfo电脑硬盘监控工具 v9.6.0中文绿色便携版

前言 CrystalDiskInfo是一个不用花钱的硬盘小帮手软件&#xff0c;它可以帮你看看你的电脑硬盘工作得怎么样&#xff0c;健不健康。这个软件能显示硬盘的温度高不高、还有多少地方没用、传输东西快不快等等好多信息。用了它&#xff0c;你就能很容易地知道硬盘现在是什么情况&…...

rqlite:一个基于SQLite构建的分布式数据库

今天给大家介绍一个基于 SQLite 构建的轻量级分布式关系型数据库&#xff1a;rqlite。 rqlite 基于 Raft 协议&#xff0c;结合了 SQLite 的简洁性以及高可用分布式系统的稳健性&#xff0c;对开发者友好&#xff0c;操作极其简便&#xff0c;其核心设计理念是以最低的复杂度实…...

网络1 网络设备

计算机网络设备 集线器&#xff1a; 易发生阻塞&#xff1a;所有端口共享一条带宽&#xff0c;两个端口发生传输时&#xff0c;其他端口若想传输数据给这两个端口&#xff0c;需等待这两个端口传输数据完毕。 端口数量限制&#xff1a;10M带宽下可用15口。15口共享10Md带宽 集线…...

mybatis 某些特殊的 ORA-00979:not a GROUP BY expression

打印的日志sql执行都是正常的 但是 就是报ORA-00979: not a GROUP BY expression 可能是 GROUP BY中不能使用动态参数 或特殊方法 使用 硬编码可以解决问题 <if test"statisticsInVo.timeTypeSql!null and statisticsInVo.timeTypeSql yyyy">TO_CHAR(CARD_T…...

基于OpenCV的图像处理程序设计实践

一.安装OpenCV3.x # 安装依赖 sudo apt update sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev# 下载OpenCV源码 git clone https://github.com/opencv/opencv.git -b 3.4 cd opencv mkdir build &…...