YOLOv11训练教程:PyTorch与PyCharm在Windows 11下的完整指南
YOLOv11训练教程:PyTorch与PyCharm在Windows 11下的完整指南
介绍与引言
YOLO(You Only Look Once)是当前最流行的实时目标检测算法系列之一,YOLOv11作为该系列的最新演进版本,继承了YOLO家族高效、快速的特点,同时在精度和速度上有了进一步提升。本教程将详细介绍如何在Windows 11系统下使用PyTorch框架和PyCharm IDE进行YOLOv11模型的训练与部署。
目标检测作为计算机视觉的核心任务之一,在自动驾驶、安防监控、工业质检、医疗影像分析等领域有着广泛应用。YOLOv11凭借其出色的实时性能,特别适合需要快速响应的应用场景。
技术背景
YOLO发展历程
YOLO系列自2016年首次提出以来,经历了多个版本的迭代:
- YOLOv1-v3: Joseph Redmon主导的基础版本
- YOLOv4: Alexey Bochkovskiy优化的高性能版本
- YOLOv5: Ultralytics推出的PyTorch实现
- YOLOv6-v8: 各研究团队的不同改进版本
- YOLOv9-v11: 最新演进版本,融合了Transformer等现代架构
YOLOv11核心创新
YOLOv11在前代基础上引入了多项改进:
- 更高效的骨干网络设计
- 改进的特征金字塔结构
- 优化的损失函数
- 动态标签分配策略
- 增强的数据增强管道
应用使用场景
YOLOv11适用于多种实时目标检测场景:
- 智能安防:实时监控视频中的人、车、危险物品检测
- 自动驾驶:道路场景中的车辆、行人、交通标志识别
- 工业检测:生产线上的缺陷产品自动筛查
- 零售分析:货架商品识别与顾客行为分析
- 农业应用:作物生长监测与病虫害识别
- 医疗影像:医学图像中的病灶区域定位
环境准备
硬件要求
- 操作系统:Windows 11
- CPU:建议Intel i7或更高
- GPU:NVIDIA显卡(建议RTX 2060以上,支持CUDA)
- 内存:16GB以上
- 存储:SSD硬盘,至少50GB可用空间
软件安装
1. 安装PyCharm
- 访问JetBrains官网下载PyCharm Community版
- 运行安装程序,按向导完成安装
- 启动PyCharm,完成初始配置
2. 安装Python
- 从Python官网下载3.8-3.10版本的Windows安装包
- 安装时勾选"Add Python to PATH"
- 验证安装:命令行运行
python --version
3. 安装CUDA和cuDNN
- 查看显卡支持的CUDA版本(NVIDIA控制面板→系统信息)
- 从NVIDIA官网下载对应版本的CUDA Toolkit
- 下载匹配的cuDNN库,解压后复制到CUDA安装目录
- 添加环境变量:
CUDA_PATH = C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7 PATH中添加: %CUDA_PATH%\bin
4. 创建虚拟环境
在PyCharm中:
- File → New Project → 选择Python解释器
- 创建新的虚拟环境(建议Python 3.8)
5. 安装PyTorch
在PyCharm终端或命令行中运行:
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
验证PyTorch GPU支持:
import torch
print(torch.cuda.is_available()) # 应输出True
6. 安装YOLOv11依赖
pip install opencv-python matplotlib tqdm pandas seaborn
pip install pycocotools tensorboard
YOLOv11算法原理
核心架构
YOLOv11采用了一种改进的CSPDarknet骨干网络,结合PANet特征金字塔和动态头机制:
- 骨干网络(Backbone): 提取多层次特征
- 颈部(Neck): 特征融合与增强
- 头部(Head): 预测边界框和类别
算法流程图
输入图像 → 数据增强 → CSPDarknet骨干 → PANet特征融合 → 动态检测头 → 输出预测↑GT标签 → 标签分配 → 损失计算
关键创新点
- 动态标签分配:根据预测质量动态调整正负样本分配
- 损失函数优化:改进的CIoU损失和分类损失平衡
- 自适应特征融合:根据任务难度自动调整特征融合权重
代码实现
1. 数据集准备
以COCO格式数据集为例:
dataset/
├── images/
│ ├── train/
│ └── val/
└── labels/├── train/└── val/
创建数据集配置文件data/custom.yaml
:
# 训练和验证图像路径
train: ../dataset/images/train
val: ../dataset/images/val# 类别数
nc: 3# 类别名称
names: ['person', 'car', 'dog']
2. 模型训练
下载YOLOv11官方代码库:
git clone https://github.com/WongKinYiu/yolov11
cd yolov11
训练脚本示例:
import torch
from models.yolo import Model
from utils.datasets import create_dataloader
from utils.general import colorstr# 超参数配置
hyp = {'lr0': 0.01, # 初始学习率'momentum': 0.937, # SGD动量'weight_decay': 0.0005, # 权重衰减'warmup_epochs': 3.0, # 热身epochs'box': 0.05, # box损失权重'cls': 0.5, # cls损失权重'obj': 1.0, # obj损失权重
}# 数据加载
train_loader = create_dataloader('data/custom.yaml', imgsz=640, batch_size=16, stride=32, hyp=hyp, augment=True)[0]# 模型初始化
model = Model('models/yolov11s.yaml', ch=3, nc=3).to('cuda')# 优化器
optimizer = torch.optim.SGD(model.parameters(), lr=hyp['lr0'], momentum=hyp['momentum'], nesterov=True)# 训练循环
for epoch in range(100):model.train()for i, (imgs, targets, paths, _) in enumerate(train_loader):imgs = imgs.to('cuda').float() / 255.0targets = targets.to('cuda')# 前向传播pred = model(imgs)# 计算损失loss, loss_items = compute_loss(pred, targets, model)# 反向传播optimizer.zero_grad()loss.backward()optimizer.step()# 打印训练信息if i % 50 == 0:print(f'Epoch: {epoch}, Batch: {i}, Loss: {loss.item()}')
3. 模型验证
from utils.metrics import ap_per_class# 验证数据加载
val_loader = create_dataloader('data/custom.yaml', imgsz=640, batch_size=16, stride=32, hyp=hyp, augment=False, pad=0.5, rect=True)[0]# 验证模式
model.eval()
stats = []for i, (imgs, targets, paths, shapes) in enumerate(val_loader):imgs = imgs.to('cuda').float() / 255.0# 非极大值抑制(NMS)参数conf_thres = 0.001 # 置信度阈值iou_thres = 0.6 # IoU阈值with torch.no_grad():# 推理pred = model(imgs)pred = non_max_suppression(pred, conf_thres, iou_thres)# 处理每张图像的预测结果for si, pred in enumerate(pred):labels = targets[targets[:, 0] == si, 1:]stats.append(ap_per_class(pred, labels, shapes[si][0]))# 计算mAP
mp, mr, map50, map = [x.mean() for x in zip(*stats)]
print(f'mAP@0.5: {map50:.4f}, mAP@0.5:0.95: {map:.4f}')
4. 模型导出与部署
导出为TorchScript格式:
model = Model('models/yolov11s.yaml', ch=3, nc=3).to('cuda')
model.load_state_dict(torch.load('yolov11s.pt')['model'])
model.eval()# 示例输入
example = torch.rand(1, 3, 640, 640).to('cuda')# 跟踪模型
traced_script_module = torch.jit.trace(model, example)
traced_script_module.save("yolov11s_traced.pt")
ONNX导出:
torch.onnx.export(model, # 模型example, # 示例输入"yolov11s.onnx", # 输出文件名export_params=True, # 导出训练参数opset_version=12, # ONNX版本do_constant_folding=True, # 优化常量input_names=['images'], # 输入名output_names=['output'], # 输出名dynamic_axes={'images': {0: 'batch'}, # 动态batch'output': {0: 'batch'}})
实际应用示例:实时目标检测
import cv2
import torch
from models.common import DetectMultiBackend
from utils.general import non_max_suppression, scale_coords# 加载模型
device = torch.device('cuda:0')
model = DetectMultiBackend('yolov11s.pt', device=device)# 视频流处理
cap = cv2.VideoCapture(0) # 0表示默认摄像头while True:ret, frame = cap.read()if not ret:break# 预处理img = cv2.resize(frame, (640, 640))img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGBimg = torch.from_numpy(img).to(device).float() / 255.0img = img.unsqueeze(0)# 推理pred = model(img)# NMSpred = non_max_suppression(pred, 0.25, 0.45)# 处理结果for det in pred[0]:if len(det):det[:, :4] = scale_coords(img.shape[2:], det[:, :4], frame.shape).round()for *xyxy, conf, cls in reversed(det):label = f'{model.names[int(cls)]} {conf:.2f}'cv2.rectangle(frame, (int(xyxy[0]), int(xyxy[1])), (int(xyxy[2]), int(xyxy[3])), (0, 255, 0), 2)cv2.putText(frame, label, (int(xyxy[0]), int(xyxy[1])-10),cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)# 显示cv2.imshow('YOLOv11 Detection', frame)if cv2.waitKey(1) == ord('q'):breakcap.release()
cv2.destroyAllWindows()
疑难解答
常见问题及解决方案
-
CUDA out of memory
- 减小batch size
- 使用更小的模型(yolov11s代替yolov11x)
- 清理GPU缓存:
torch.cuda.empty_cache()
-
训练损失不下降
- 检查学习率是否合适
- 验证数据标注是否正确
- 尝试不同的数据增强策略
-
低mAP问题
- 增加训练epoch
- 调整anchor大小匹配目标尺寸
- 增加数据多样性
-
推理速度慢
- 使用半精度推理:
model.half()
- 减小输入图像尺寸
- 使用TensorRT加速
- 使用半精度推理:
未来展望与技术挑战
技术趋势
- Transformer与CNN融合:ViT等架构将更深度融入目标检测
- 自监督学习:减少对标注数据的依赖
- 边缘计算优化:面向IoT设备的轻量化部署
- 多模态检测:结合文本、深度等信息的检测方法
主要挑战
- 小目标检测:提升对小目标的检测精度
- 实时性与精度平衡:在资源受限设备上的优化
- 领域适应:模型在新场景下的泛化能力
- 隐私保护:联邦学习等隐私保护训练方法
总结
本教程详细介绍了在Windows 11系统下使用PyTorch和PyCharm进行YOLOv11模型训练的全流程,包括环境配置、算法原理、代码实现和部署应用。YOLOv11作为当前最先进的实时目标检测算法之一,在保持YOLO系列高速特性的同时,通过多项创新提升了检测精度。
通过本教程,读者可以掌握:
- YOLOv11的核心原理与架构
- PyTorch环境配置与模型训练技巧
- 实际应用中的完整开发流程
- 常见问题的解决方法
随着计算机视觉技术的不断发展,目标检测算法将在更多领域发挥重要作用。掌握YOLOv11等先进模型的开发部署能力,将为从事AI相关工作的开发者带来显著优势。
相关文章:
YOLOv11训练教程:PyTorch与PyCharm在Windows 11下的完整指南
YOLOv11训练教程:PyTorch与PyCharm在Windows 11下的完整指南 介绍与引言 YOLO(You Only Look Once)是当前最流行的实时目标检测算法系列之一,YOLOv11作为该系列的最新演进版本,继承了YOLO家族高效、快速的特点,同时在精度和速度…...
使用MATIO库写入MATLAB结构体(struct)数据的示例程序
使用MATIO库写入MATLAB结构体(struct)数据的示例程序 MATIO是一个用于读写MATLAB数据文件(.mat)的开源C库。下面是一个完整的示例程序,展示如何使用MATIO库创建一个包含结构体数据的MAT文件。 示例程序 #include <stdio.h> #include <stdlib.h> #inc…...
【大模型深度学习】提示学习:Prefix tuning 、P-tuning v2、P-tuning 到底有什么区别?
Prefix tuning 、P-tuning v2、P-tuning还在傻傻分不清。 到底有什么区别,本文希望说明白这些区别,如有错误欢迎指出。 一、为什么需要提示学习? 从全参微调到参数高效微调(PEFT),这些微调方法的思想都是重新训练模…...
多周期多场景的供应链优化问题 python 代码
这段代码是一个使用 Gurobi 优化器的混合整数规划(MIP)模型,用于解决一个多周期多场景的供应链优化问题。代码定义了一个名为 `MCCG` 的类,该类包含了多个方法,用于构建和解决主问题(Master Problem)、子问题(Subproblem)和子子问题(Sub-subproblem)。下面是对代码中…...
CCF GESP Python编程 一级认证真题 2025年3月
Python 一级 2025 年 03 月 题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 答案 D D B D D C B D C A B D C A A 一、单选题(每题 2 分,共 30 分) 第 1 题 2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一…...
python爬虫爬取淘宝热销(热门)男装商品信息(课程设计;提供源码、使用说明文档及相关文档;售后可联系博主)
TOC 本文仅为记录学习轨迹,如有侵权,联系删除 一、环境说明 使用前必须检查以下环境 (1)python编译环境 (2)python脚本执行所需要的库,具体看代码(main.py)import导入的部分库 &a…...
AntDesign下,Select内嵌Menu标签,做一个多选下拉框,既可以搜索,还可以选择下拉项
话不多说,直接上效果和代码 效果图一: 效果图二: renderAddStyleOption (item: any) > {const { value } this.props;const { currentSelectedOptionIds, currentStyleId } this.state;const styleSettings value?.styleSettings;c…...
15.1linux设备树下的platform驱动编写(知识)_csdn
上一章我们详细的讲解了 Linux 下的驱动分离与分层,以及总线、设备和驱动这样的驱动框架。基于总线、设备和驱动这样的驱动框架, Linux 内核提出来 platform 这个虚拟总线,相应的也有 platform 设备和 platform 驱动。 上一章我们讲解了传统的…...
【C++进阶五】list深度剖析
【C进阶五】list深度剖析 1.什么是list2.list的使用2.1构造函数2.2list迭代器2.3容量操作2.4增删查改 3.list迭代器失效4.迭代器类型5.list不能使用的算法库函数 1.什么是list STL标准库中的list是一个带头双向循环链表 和vector不同,list没有支持[ ]访问以及resize和reserve容…...
小刚说C语言刷题——第15讲 多分支结构
1.多分支结构 所谓多分支结构是指在选择的时候有多种选择。根据条件满足哪个分支,就走对应分支的语句。 2.语法格式 if(条件1) 语句1; else if(条件2) 语句2; else if(条件3) 语句3; ....... else 语句n; 3.示例代码 从键盘输入三条边的长度,…...
L2-024 部落 #GPLT,并查集 C++
文章目录 题目解读输入格式输出格式 思路Ac Code参考 题目解读 我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。 输入格式 第一…...
【BFS最小步数】魔板题解
魔板题解 题目传送门 题目传送门 一、题目描述 Rubik先生发明了魔板的二维版本,这是一个有8个格子的板子,初始状态为: 1 2 3 4 8 7 6 5我们可以用三种操作来改变魔板状态: A:交换上下两行B:将最右边一…...
Qt之QHostInfo
简介 QHostInfo表示主机信息,即主机名称 常用接口 static QHostInfo fromName(const QString &name); QString hostName() const; QList<QHostAddress> addresses() const;结构 #mermaid-svg-HTJ95sEk8JwO4uCy {font-family:"trebuchet ms",…...
C++11观察者模式示例
该示例代码采用C11标准,解决以下问题: 消除了类继承的强耦合方式;通知接口使用可变参数模板,支持任意参数; 示例代码 .h文件如下: #include <functional> #include <string> #include <…...
解释观察者模式,如何实现观察者模式?
一、模式本质 观察者模式(Observer Pattern)建立对象间的一对多依赖关系,当核心对象(Subject)状态变化时,自动通知所有订阅者(Observers)。 这是一种推模型的典型…...
机器学习算法能够自动学习并使用不同条件下的变化趋势,确保预测结果的准确性的智慧地产开源了
智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。 AI是新形势下数…...
【首款ARMv9开源芯片“星睿“O6测评】在“周易”NPU上部署Yolov8l模型并实现实时目标检测
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 博客内容主要围绕: 5G/6G协议讲解 高级C语言讲解 Rust语言讲解 文章目录 在"星睿"O6的“周易”NPU上部署Yolov8l模型并实现…...
[ctfshow web入门] web4
前置知识 robots.txt是机器人协议,在使用爬虫爬取网站内容时应该遵循的协议。协议并不能阻止爬虫爬取,更像是一种道德规范。 假设robots.txt中写道 Disallow: /admind.php,那我就暴露了自己的后台,这属于信息泄漏,攻击…...
Golang的Goroutine(协程)与runtime
目录 Runtime 包概述 Runtime 包常用函数 1. GOMAXPROCS 2. Caller 和 Callers 3. BlockProfile 和 Stack 理解Golang的Goroutine Goroutine的基本概念 特点: Goroutine的创建与启动 示例代码 解释 Goroutine的调度 Gosched的作用 示例代码 输出 解…...
与Linux操作系统相关的引导和服务
目录 一.Linux操作系统引导过程 1.1引导过程总览 1.2系统初始化进程 1.2.1init进程 1.2.2sysmted 1.3systemd单元类型 二.排除启动类故障 2.1MBR扇区故障 2.1.1故障原因 2.1.2故障现象 2.1.3解决办法 2.1.4模拟修复MBR扇区故障 1)添加新的硬盘 2)进行…...
JS API 事件监听
焦点事件案例:搜索框激活下拉菜单 事件对象 事件对象存储事件触发时的相关信息 可以判断用户按键,点击元素等内容 如何获取 事件绑定的回调函数中的第一个形参就是事件对象 一般命名为e,event 事件对象常用属性 type类型 click mouseenter client…...
【8】搭建k8s集群系列(二进制部署)之安装node节点组件(kubelet)
一、下载k8s二进制文件 下载地址: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG -1.20.md 注:打开链接你会发现里面有很多包,下载一个 server 包就够了,包含了 Master 和 Worker Node 二进制文件。…...
Harmony OS“一多” 详解:基于窗口变化的断点自适应实现
一、一多开发核心概念(18N模式) 目标:一次开发多端部署 解决的问题: 1、界面级一多:适配不同屏幕尺寸 2、功能级一多:设备功能兼容性处理(CanIUser) 3、工…...
Rust切片、结构体、枚举
文章目录 切片类型字符串切片其他结构的切片 结构体结构体实例元组结构体结构体所有权输出结构体结构体的方法结构体关联函数单元结构体 枚举match语法Option枚举类if let 语句 切片类型 切片(Slice)是对数据值的部分“引用” 我们可以从一个数据集合中…...
量子纠错码实战:从Shor码到表面码
引言:量子纠错的必要性 量子比特的脆弱性导致其易受退相干和噪声影响,单量子门错误率通常在10⁻~10⁻量级。量子纠错码(QEC)通过冗余编码测量校正的机制,将逻辑量子比特的错误率降低到可容忍水平。本文从首个量子纠错…...
Pod的生命周期
概念 Pod对象自从其创建开始至其终止退出的时间范围称为其生命周期。在这段时间中,Pod会处于多种不同的状态,并执行一些操作;其中,创建主容器(main container)为必需的操作,其他可选的操作还包…...
使用QAction编辑器添加QAction到ui里
在 Qt Designer 或 Qt Creator 的 UI 设计器 中,可以直接通过 Action Editor 可视化添加和管理 QAction,无需手动编写代码。以下是详细步骤: 步骤 1:打开 Action Editor 在 Qt Creator 中打开 .ui 文件(双击项目中的…...
Unity:标签(tags)
为什么需要Tags? 在游戏开发中,游戏对象(GameObject)数量可能非常多,比如玩家、敌人、子弹等。开发者需要一种简单的方法来区分这些对象,并根据它们的类型执行不同的逻辑。 核心需求: 分类和管…...
深入解析 Python 正则表达式:全面指南与实战示例
深入解析 Python 正则表达式:全面指南与实战示例 📌 引言 正则表达式(Regular Expressions, regex)是用于文本匹配、查找和替换的强大工具。在 Python 中,我们可以使用 re 模块来处理正则表达式。无论是数据清洗、日…...
Nginx介绍及使用
1.Nginx介绍 Nginx是一款开源的、高性能的HTTP和反向代理服务器 1.正向代理和反向代理 正向代理(代理客户端)是一种位于客户端和目标服务器之间的中间服务器。客户端通过正向代理服务器向目标服务器发送请求,代理服务器将请求转发给目标服…...
【Block总结】自适应矩形卷积,即插即用|CVPR2025
论文信息 标题: Adaptive Rectangular Convolution for Remote Sensing Pansharpening年份: 2025年会议: CVPR论文地址: arXiv代码地址: GitHub任务: 遥感图像融合(Pansharpening) 创新点 本论文提出了一种新颖的自适应矩形卷积模块(ARCon…...
第2课:JSX语法与组件基础
第2课:JSX语法与组件基础 学习目标 深入理解JSX语法掌握组件的基本结构和用法学习使用Props传递数据掌握React中的样式添加方法创建任务卡片组件 一、JSX语法深入 1. 什么是JSX? JSX是JavaScript XML的缩写,它允许我们在JavaScript中编写…...
DevOps与Docker的关系
DevOps 与 Docker 是相辅相成的关系。DevOps 是一种强调开发(Development)与运维(Operations)之间协作的文化、实践和工具链,而 Docker 是一种容器化技术,为 DevOps 的实现提供了高效的技术支撑。 Docker …...
嵌入式AI简介
嵌入式AI是一种将人工智能算法部署在终端设备中运行的技术,使智能硬件能够在本地实时完成感知、交互和决策功能,无需依赖云端计算。以下是其核心要点: 一、核心特点 1. 本地化处理:数据在设备端直接处理,无需联网&a…...
多GPU训练
写在前面 限于财力不足,本机上只有一个 GPU 可供使用,因此这部分的代码只能够稍作了解,能够使用的 GPU 也只有一个。 多 GPU 的数据并行:有几张卡,对一个小批量数据,有几张卡就分成几块,每个 …...
JVM虚拟机篇(三):JVM运行时数据区与方法区详解
JVM虚拟机篇(三):JVM运行时数据区与方法区详解 JVM虚拟机篇(三):JVM运行时数据区与方法区详解一、引言二、JVM运行时数据区2.1 概述2.2 各部分的作用与交互2.2.1 堆与其他区域的关系2.2.2 方法区与其他区域…...
Rust学习日记:编写一个Python扩展
参考https://segmentfault.com/a/1190000044555330 命令行创建一个新的Rust项目cargo new --lib rust_python_ext 配置Cargo.toml [package] name "rust_python_ext" version "0.1.0" edition "2024"[lib] name "rust_python_ext"…...
Pod的调度
在默认情况下,一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的。但是在实际使用中,这并不满足的需求,因为很多情况下,我们想控制某些Pod到达某些节点上&…...
系统思考:思考的快与慢
在做重大决策之前,什么原因一定要补充碳水化合物?人类的大脑其实有两套运作模式:系统1:自动驾驶模式,依赖直觉,反应快但易出错;系统2:手动驾驶模式,理性严谨,…...
[ 计算机网络 ] | HTTP协议(一)
目录 前置知识: URL URL的URLENCODE和URLDECODE HTTP协议的宏观格式 如何保证报文是完整的?怎么做序列,反序列化的? 前置知识: URL 我们把数据给别人,别人把数据给我们,不是在做IO嘛~&am…...
大模型快速 ASGI 服务器uvicorn
基础概念类 1. 什么是 Uvicorn,它的作用是什么? 答案:Uvicorn 是一个基于 Python 的快速 ASGI(异步服务器网关接口)服务器。它的主要作用是作为 Web 应用程序的服务器,负责接收客户端的请求,并…...
android studio 基础
1.android Module not specified 今天做一个实验时出现:Android Studio Run/Debug configuration error: Module not specified,要想解决这个问题: 1、打开根目录的 settings.gradle,删除 include :exampleapp 2、在 Android Stu…...
python爬虫爬取淘宝热销(热门)零食商品加数据清洗、销量、店铺及词云数据分析_源码及相关说明文档;售后可私博主
TOC 如有侵权,联系删除 一、环境说明 使用前必须检查以下环境 (1)python编译环境 (2)python脚本执行所需要的库,具体看代码(main.py)import导入的部分库 (3)确保电脑可…...
Android /proc/meminfo解释
高通8295设备 msmnile_gvmq:/proc # cat meminfo MemTotal: 16433968 kB MemFree: 7709832 kB…...
VScode 玩 MCP的server
vscode 1.99版本刚支持MCP server,我就测试了一下 翻到一个gitte的MCP sever 我本身是Mac版本1.99居然没更新agent,所以我就直接用1.100版本的vscode inside了来掩饰一下了 点击setting,然后你要edit一下这个json配置文件 主要修改的其实是…...
详解 MySQL 索引的最左前缀匹配原则
MySQL 的最左前缀匹配原则主要是针对复合索引(也称为联合索引)而言的。其核心思想是:只有查询条件中包含索引最左侧(第一列)开始的连续一段列,才能让 MySQL 有效地利用该索引。 一、 复合索引的结构 复合…...
ROS Master多设备连接
Bash Shell Shell是位于用户与操作系统内核之间的桥梁,当用户在终端敲入命令后,这些输入首先会进入内核中的tty子系统,TTY子系统负责捕获并处理终端的输入输出流,确保数据正确无误的在终端和系统内核之中。Shell在此过程不仅仅是…...
【Mysql】数据库备份与恢复
一、备份类型 物理备份:直接对数据库的数据文件、日志文件、索引文件进行备份 逻辑备份:对数据库对象(库、表)以SQL语句的形式导出进行备份 二、备份工具 1、使用tar、gzip等方式压缩打包数据库文件(完全备份、物理冷…...
Java HttpURLConnection修仙指南:从萌新到HTTP请求大能的渡劫手册
一、筑基篇:初识HttpURLConnection 1.1 基础开光(创建连接) URL url new URL("https://api.example.com/data"); HttpURLConnection conn (HttpURLConnection) url.openConnection(); // 注意!此处可能抛出Malforme…...
python 重要易忘 语言基础
Collections 1、Counter 计数器 counter:计数器 类似字典 统计可迭代对象中元素的出现次数, Counter({b: 3, c: 2, a: 1, d: 1}) 相当于字典{b: 3, c: 2, a: 1, d: 1} a.items() 取键值对 对应为dict_items([(a, 1), (b, 3), (c, 2), (d, 1)]) 也可以是 list(a.items…...