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

wordpress备案信息修改/温州seo教程

wordpress备案信息修改,温州seo教程,国家卫生健康委员会医师定期考核系统,站酷网官网登录目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …

目录

引言

一、OpenMV和STM32简介

1.1 OpenMV简介

1.2 STM32简介

二、通信协议概述

三、硬件连接

3.1 硬件准备

3.2 引脚连接

四、软件环境搭建

4.1 OpenMV IDE安装

4.2 STM32开发环境

五、UART通信实现

5.1 OpenMV端编程

5.2 STM32端编程

六、SPI通信实现

6.1 OpenMV端配置

6.2 STM32端配置

七、I2C通信实现

7.1 OpenMV端配置

7.2 STM32端配置

八、综合案例:目标跟踪小车

8.1 项目概述

8.2 系统架构

8.3 通信方式选择

8.4 软件流程

8.5 电机控制算法

九、常见问题与解决方案

9.1 数据丢失或乱码

9.2 通信阻塞或死机

9.3 OpenMV无法识别设备

十、未来发展与优化

10.1 提高通信效率

10.2 多设备通信

10.3 深度学习应用

十一、结论

参考文献

附录:通信方式特性比较表


引言

在嵌入式系统和物联网(IoT)领域,图像处理和计算机视觉的需求日益增长。OpenMV作为一种开源的微型视觉模块,因其小巧的体积和强大的功能,受到了广泛关注。STM32系列微控制器则以其高性能和丰富的外设成为嵌入式开发的首选之一。将OpenMV与STM32结合,可以构建功能强大且高效的智能系统。本文将深入探讨OpenMV与STM32的通信方法,旨在为开发者提供详尽的指导和实践参考。


一、OpenMV和STM32简介

1.1 OpenMV简介

OpenMV是一款开源的微型机器视觉模块,基于ARM Cortex-M7微控制器,运行MicroPython脚本。它支持多种图像处理功能,如颜色识别、形状检测、条形码识别等,适用于教育、快速原型开发和小型嵌入式视觉应用。

OpenMV的主要特点:

  • 易于编程: 使用MicroPython,降低了开发门槛。
  • 小巧便携: 模块尺寸小,适合嵌入式应用。
  • 丰富的功能: 支持多种图像处理算法。
  • 多种接口: 提供UART、SPI、I2C、USB等通信接口。

1.2 STM32简介

STM32是STMicroelectronics公司推出的基于ARM Cortex内核的32位微控制器系列。STM32具有高性能、低功耗和丰富的外设接口,被广泛应用于工业控制、消费电子、物联网等领域。

STM32的主要特点:

  • 高性能: 最高主频可达480MHz,满足复杂运算需求。
  • 丰富的外设: 提供UART、SPI、I2C、ADC、DAC等多种外设。
  • 低功耗: 多种省电模式,适用于电池供电的应用。
  • 广泛的生态: 丰富的开发板、工具和社区支持。

二、通信协议概述

在OpenMV与STM32之间建立通信,需要选择合适的通信协议。常用的通信方式包括UART、SPI、I2C等。下面通过表格对比这些协议的特点:

通信协议速度通信方式线数适用场景
UART中等全双工/半双工2数据量适中,长距离通信
SPI高速全双工4高速数据传输,短距离
I2C较低半双工2低速传感器数据采集

选择通信协议的考虑因素:

  • 数据传输速率: 根据应用需求选择合适的速度。
  • 硬件资源: 考虑引脚数量和外设占用情况。
  • 通信距离: UART适合长距离,SPI和I2C适合短距离。
  • 复杂度: UART简单易用,SPI和I2C需要更多的配置。

三、硬件连接

3.1 硬件准备

  • OpenMV模块: 例如OpenMV Cam H7。
  • STM32开发板: 如STM32F4、STM32F7或STM32H7系列。
  • 连接线: 杜邦线或其他合适的连接方式。

3.2 引脚连接

以UART通信为例,连接方式如下:

OpenMV引脚STM32引脚功能
P4 (TX)USART_RX数据接收
P5 (RX)USART_TX数据发送
GNDGND
VIN或3.3V3.3V电源

注意事项:

  • 电平匹配: 确保两者的工作电压一致,通常都是3.3V。
  • 引脚对应: OpenMV的TX连接到STM32的RX,反之亦然。
  • 共地: 两个设备必须连接共同的地线。

四、软件环境搭建

4.1 OpenMV IDE安装

OpenMV IDE是用于编写和调试OpenMV脚本的集成开发环境。

安装步骤:

  1. 前往OpenMV官网 openmv.io 下载适用于操作系统的IDE安装包。
  2. 按照提示完成安装。
  3. 连接OpenMV模块,确保驱动程序正确安装。

4.2 STM32开发环境

STM32的开发通常使用以下工具:

  • IDE: Keil MDK、STM32CubeIDE或IAR Embedded Workbench。
  • 固件库: STM32CubeMX生成的HAL库或LL库。
  • 串口调试工具: 如SecureCRT、PuTTY等。

五、UART通信实现

5.1 OpenMV端编程

示例代码:

 
# OpenMV UART通信示例import sensor, image, time
from pyb import UART# 初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(time = 2000)# 初始化UART
uart = UART(3, 115200)  # 使用UART3,波特率115200clock = time.clock()while(True):clock.tick()img = sensor.snapshot()# 进行简单的颜色跟踪blobs = img.find_blobs([(30, 100, 15, 127, 15, 127)])if blobs:# 如果找到目标颜色for blob in blobs:# 计算质心x_center = blob.cx()y_center = blob.cy()# 打包数据data = bytearray([0x2C, x_center, y_center, 0x5B])uart.write(data)# 在图像上画出矩形和质心img.draw_rectangle(blob.rect())img.draw_cross(blob.cx(), blob.cy())

代码解析:

  • 摄像头初始化: 设置像素格式和分辨率。
  • UART初始化: 使用UART3,波特率设置为115200。
  • 图像处理: 使用find_blobs进行颜色识别。
  • 数据发送: 将目标的质心坐标通过UART发送,数据包以0x2C0x5B为起始和结束标志。

5.2 STM32端编程

步骤:

  1. USART配置: 使用STM32的USART外设,波特率设置为115200,数据位8位,无奇偶校验,1个停止位。
  2. 接收数据: 配置中断或DMA方式接收UART数据。
  3. 数据解析: 根据OpenMV发送的数据格式解析质心坐标。

示例代码:

 
// STM32 UART接收示例(以HAL库为例)#include "main.h"
#include <string.h>UART_HandleTypeDef huart1;
uint8_t rxBuffer[4];  // 接收缓冲区void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART1_UART_Init();while (1){// 等待接收4字节数据if (HAL_UART_Receive(&huart1, rxBuffer, 4, HAL_MAX_DELAY) == HAL_OK){// 检查数据包头尾if (rxBuffer[0] == 0x2C && rxBuffer[3] == 0x5B){uint8_t x = rxBuffer[1];uint8_t y = rxBuffer[2];// 在此处处理接收到的坐标数据}}}
}// USART1初始化
static void MX_USART1_UART_Init(void)
{huart1.Instance = USART1;huart1.Init.BaudRate = 115200;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;HAL_UART_Init(&huart1);
}

代码解析:

  • UART配置: 设置波特率和数据格式,与OpenMV端一致。
  • 数据接收: 使用阻塞方式接收4字节数据。
  • 数据解析: 检查数据包的起始和结束标志,提取坐标信息。

六、SPI通信实现

6.1 OpenMV端配置

OpenMV支持SPI通信,可以作为SPI主机或从机。以下示例配置为SPI从机:

 
# OpenMV SPI从机通信示例from pyb import SPI
import time# 初始化SPI
spi = SPI(2, SPI.SLAVE, polarity=0, phase=0)while True:# 接收数据recv = spi.recv(4, timeout=5000)if recv:# 处理接收到的数据print("Received:", recv)time.sleep_ms(10)

6.2 STM32端配置

STM32作为SPI主机,发送指令给OpenMV:

 
// STM32 SPI主机发送示例#include "main.h"SPI_HandleTypeDef hspi1;
uint8_t txBuffer[4] = {0x01, 0x02, 0x03, 0x04};void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_SPI1_Init();while (1){// 发送数据HAL_SPI_Transmit(&hspi1, txBuffer, 4, HAL_MAX_DELAY);HAL_Delay(1000);}
}// SPI1初始化
static void MX_SPI1_Init(void)
{hspi1.Instance = SPI1;hspi1.Init.Mode = SPI_MODE_MASTER;hspi1.Init.Direction = SPI_DIRECTION_2LINES;hspi1.Init.DataSize = SPI_DATASIZE_8BIT;hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;hspi1.Init.NSS = SPI_NSS_SOFT;HAL_SPI_Init(&hspi1);
}


七、I2C通信实现

7.1 OpenMV端配置

OpenMV作为I2C从机设备:

 
# OpenMV I2C从机通信示例from pyb import I2C# 初始化I2C,从机地址为0x12
i2c = I2C(2, I2C.SLAVE, addr=0x12)while True:if i2c.is_ready(0x12):recv = i2c.recv(4)print("Received:", recv)

7.2 STM32端配置

STM32作为I2C主机,读取OpenMV的数据:

 
// STM32 I2C主机读取示例#include "main.h"I2C_HandleTypeDef hi2c1;
uint8_t rxBuffer[4];void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_I2C1_Init(void);int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_I2C1_Init();while (1){// 从地址0x12读取4字节数据HAL_I2C_Master_Receive(&hi2c1, 0x12 << 1, rxBuffer, 4, HAL_MAX_DELAY);// 处理接收到的数据HAL_Delay(1000);}
}// I2C1初始化
static void MX_I2C1_Init(void)
{hi2c1.Instance = I2C1;hi2c1.Init.ClockSpeed = 100000;hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;HAL_I2C_Init(&hi2c1);
}


八、综合案例:目标跟踪小车

8.1 项目概述

设计一款能够跟踪特定颜色目标的小车。OpenMV负责识别目标,STM32负责控制电机,实现小车的移动。

8.2 系统架构

  • OpenMV: 实时捕捉图像,识别目标位置,将位置信息发送给STM32。
  • STM32: 接收位置信息,计算控制指令,驱动电机实现跟踪。

8.3 通信方式选择

由于需要实时传输位置信息,UART通信已经能够满足需求,并且实现相对简单。

8.4 软件流程

OpenMV端:

  1. 初始化摄像头和UART。
  2. 进行颜色识别,获取目标坐标。
  3. 通过UART发送坐标数据。

STM32端:

  1. 初始化UART和电机驱动。
  2. 接收坐标数据,计算需要的转向和速度。
  3. 控制电机,实现小车移动。

8.5 电机控制算法

根据目标的位置,调整小车的转向:

  • 目标在视野中央: 小车直行。
  • 目标在左侧: 小车左转。
  • 目标在右侧: 小车右转。

九、常见问题与解决方案

9.1 数据丢失或乱码

可能原因:

  • 波特率不匹配。
  • 数据格式不一致。
  • 硬件连接不良。

解决方案:

  • 确认双方波特率设置一致。
  • 检查数据位、校验位、停止位设置。
  • 检查引脚连接和焊接质量。

9.2 通信阻塞或死机

可能原因:

  • 数据接收缓冲区溢出。
  • 通信中断处理不当。

解决方案:

  • 使用DMA或中断方式接收数据。
  • 增加接收缓冲区大小。
  • 在代码中加入超时和错误处理机制。

9.3 OpenMV无法识别设备

可能原因:

  • 驱动程序未安装。
  • USB线缆损坏。

解决方案:

  • 重新安装OpenMV IDE和驱动程序。
  • 更换USB线缆。

十、未来发展与优化

10.1 提高通信效率

  • 数据压缩: 采用压缩算法,减少传输的数据量。
  • 协议优化: 自定义高效的数据传输协议。

10.2 多设备通信

  • 总线拓扑: 使用I2C或SPI,实现多个OpenMV模块与STM32的通信。
  • 地址管理: 为每个设备分配唯一的地址。

10.3 深度学习应用

  • 模型部署: 在OpenMV上运行轻量级的神经网络模型,提升识别精度。
  • 协同计算: STM32参与部分数据处理,实现更复杂的功能。

十一、结论

通过本文的介绍,我们详细阐述了OpenMV与STM32之间的通信方法,包括UART、SPI和I2C三种主要的通信方式。通过实际的代码示例和案例分析,读者可以掌握如何在实际项目中实现两者的通信。OpenMV强大的图像处理能力与STM32的控制功能相结合,为嵌入式系统开发带来了无限可能。希望本文能为开发者提供有价值的参考,助力更多创新项目的实现。


参考文献

  1. OpenMV官方文档:https://docs.openmv.io/
  2. STM32参考手册和数据手册:https://www.st.com/
  3. 《嵌入式系统原理与实践》,电子工业出版社,2020年版。
  4. 王磊,《UART通信在STM32中的应用》,电子技术应用,2019年第5期。

附录:通信方式特性比较表

特性UARTSPII2C
引脚数量242
通信速度
通信距离
主从模式点对点多主多从多主多从
硬件复杂度
应用场景调试、日志输出高速数据传输传感器数据采集

相关文章:

OpenMV与STM32通信全面指南

目录 引言 一、OpenMV和STM32简介 1.1 OpenMV简介 1.2 STM32简介 二、通信协议概述 三、硬件连接 3.1 硬件准备 3.2 引脚连接 四、软件环境搭建 4.1 OpenMV IDE安装 4.2 STM32开发环境 五、UART通信实现 5.1 OpenMV端编程 5.2 STM32端编程 六、SPI通信实现 6.1 …...

Python库matplotlib之二

Python库matplotlib之二 figureAxessubplot figure matplotlib.pyplot.figure(numNone, figsizeNone, dpiNone, facecolorNone, edgecolorNone, frameonTrue, FigureClass<class ‘matplotlib.figure.Figure’>, clearFalse, **kwargs) num&#xff0c;int 或 str 或 fi…...

DAY17||654.最大二叉树 |617.合并二叉树 |700.二叉搜索树中的搜索 |

654.最大二叉树 题目&#xff1a;654. 最大二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下&#xff1a; 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树…...

读构建可扩展分布式系统:方法与实践16读后总结与感想兼导读

1. 基本信息 构建可扩展分布式系统&#xff1a;方法与实践 [美]伊恩戈顿(Ian Gorton)著 机械工业出版社,2024年5月出版 1.1. 读薄率 书籍总字数188千字&#xff0c;笔记总字数49688字。 读薄率49688188000≈26.4% 1.2. 读厚方向 设计模式&#xff1a;可复用面向对象软件的…...

Anaconda 安装

目录 - [简介](#简介) - [安装Anaconda](#安装anaconda) - [启动Anaconda Navigator](#启动anaconda-navigator) - [创建环境](#创建环境) - [管理包](#管理包) - [常用命令行操作](#常用命令行操作) - [Jupyter Notebook 快速入门](#jupyter-notebook-快速入门) - [结…...

优雅使用 MapStruct 进行类复制

前言 在项目中&#xff0c;常常会遇到从数据库读取数据后不能直接返回给前端展示的情况&#xff0c;因为还需要对字段进行加工&#xff0c;比如去除时间戳记录、隐藏敏感数据等。传统的处理方式是创建一个新类&#xff0c;然后编写大量的 get/set 方法进行赋值&#xff0c;若字…...

第19周JavaWeb编程实战-MyBatis实现OA系统 1-OA系统

办公OA系统项目开发 课程简介 本课程将通过慕课办公OA平台的开发&#xff0c;讲解实际项目开发中必须掌握的技能和设计技巧。课程分为三个主要阶段&#xff1a; 需求说明及环境准备&#xff1a; 基于RBAC的访问控制模块开发&#xff1a; 多级请假审批流程开发&#xff1a; …...

仿黑神话悟空跑动-脚下波纹特效(键盘wasd控制走动)

vue使用three.js实现仿黑神话悟空跑动-脚下波纹特效 玩家角色的正面始终朝向鼠标方向&#xff0c;且在按下 W 键时&#xff0c;玩家角色会朝着鼠标方向前进 空格建跳跃 <template><div ref"container" class"container" click"onClick"…...

`torch.utils.data`模块

在PyTorch中&#xff0c;torch.utils.data模块提供了许多有用的工具来处理和加载数据。以下是对您提到的DataLoader, Subset, BatchSampler, SubsetRandomSampler, 和 SequentialSampler的详细解释以及使用示例。 1. DataLoader DataLoader是PyTorch中用于加载数据的一个非常…...

深入理解 `strncat()` 函数:安全拼接字符串

目录&#xff1a; 前言一、 strncat() 函数的基本用法二、 示例代码三、 strncat() 与 strcat() 的区别四、 注意事项五、 实际应用场景总结 前言 在C语言中&#xff0c;字符串操作是编程中非常常见的需求。strncat() 函数是标准库中用于字符串拼接的一个重要函数&#xff0c;…...

OpenCV_自定义线性滤波(filter2D)应用详解

OpenCV filter2D将图像与内核进行卷积&#xff0c;将任意线性滤波器应用于图像。支持就地操作。当孔径部分位于图像之外时&#xff0c;该函数根据指定的边界模式插值异常像素值。 卷积核本质上是一个固定大小的系数数组&#xff0c;数组中的某个元素被作为锚点&#xff08;一般…...

设计模式之装饰模式(Decorator)

前言 这个模式带给我们有关组合跟继承非常多的思考 定义 “单一职责” 模式。动态&#xff08;组合&#xff09;的给一个对象增加一些额外的职责。就增加功能而言&#xff0c;Decorator模式比生成子类&#xff08;继承&#xff09;更为灵活&#xff08;消除重复代码 & 减少…...

大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

React入门准备

React是什么 React是一个用于构建用户界面的JavaScript框架&#xff0c;用于构建“可预期的”和“声明式的”Web用户界面&#xff0c;特别适合于构建那些数据会随时间改变的大型应用的用户界面。 它起源于Facebook的内部项目&#xff0c;因为对市场上所有JavaScript MVC框架都…...

robomimic基础教程(四)——开源数据集

robomimic开源了大量数据集及仿真环境&#xff0c;数据集标准格式为HDF5 目录 一、基础要求 二、使用步骤 1. 下载数据集 2. 后处理 3. 训练 4. 查看训练结果 三、HDF5数据集结构与可视化 1. 数据集结构 &#xff08;1&#xff09;根级别&#xff08;data 组 group&a…...

胤娲科技:AI界的超级充电宝——忆阻器如何让LLM告别电量焦虑

当AI遇上“记忆橡皮擦”&#xff0c;电量不再是问题&#xff01; 嘿&#xff0c;朋友们&#xff0c;你们是否曾经因为手机电量不足而焦虑得像个无头苍蝇&#xff1f;想象一下&#xff0c;如果这种“电量焦虑”也蔓延到了AI界&#xff0c; 特别是那些聪明绝顶但“耗电如喝水”的…...

前端大模型入门:使用Transformers.js手搓纯网页版RAG(二)- qwen1.5-0.5B - 纯前端不调接口

书接上文&#xff0c;本文完了RAG的后半部分&#xff0c;在浏览器运行qwen1.5-0.5B实现了增强搜索全流程。但受限于浏览器和模型性能&#xff0c;仅适合于研究、离线和高隐私场景&#xff0c;但对前端小伙伴来说大模型也不是那么遥不可及了&#xff0c;附带全部代码&#xff0c…...

K-means聚类分析对比

K-means聚类分析&#xff0c;不同K值聚类对比&#xff0c;该内容是关于K-means聚类分析的&#xff0c;主要探讨了不同K值对聚类结果的影响。K-means聚类是一种常见的数据分析方法&#xff0c;用于将数据集划分为K个不同的类别。在这个过程中&#xff0c;选择合适的K值是非常关键…...

tar命令:压缩、解压的好工具

一、命令简介 用途&#xff1a; tar​ 命令用于创建归档文件&#xff08;tarball&#xff09;&#xff0c;以及从归档文件中提取文件。 标签&#xff1a; 文件管理&#xff0c;归档。 特点&#xff1a; 归档文件可以保留原始文件和目录的层次结构&#xff0c;通常使用 .tar ​…...

Mac电脑上最简单安装Python的方式

背景 最近换了一台新的 MacBook Air 电脑&#xff0c;所有的开发软件都没有了&#xff0c;需要重新配环境&#xff0c;而我现在最常用的开发程序就是Python。这篇文章记录一下我新Mac电脑安装Python的全过程&#xff0c;也给大家一些思路上的提醒。 以下是我新电脑的配置&…...

Linux基础命令cd详解

cd&#xff08;change directory&#xff09;命令是 Linux 中用于更改当前工作目录的基础命令。它没有很多复杂的参数&#xff0c;但它的使用非常频繁。以下是 cd 命令的详细说明及示例。 基本语法 cd [选项] [路径] 常用选项 -L : 使用逻辑路径&#xff08;默认选项&…...

【大模型对话 的界面搭建-Open WebUI】

Open WebUI 前身就是 Ollama WebUI&#xff0c;为 Ollama 提供一个可视化界面&#xff0c;可以完全离线运行&#xff0c;支持 Ollama 和兼容 OpenAI 的 API。 github网址 https://github.com/open-webui/open-webui安装 第一种 docker安装 如果ollama 安装在同一台服务器上&…...

如何在算家云搭建text-generation-webui(文本生成)

一、text-generation-webui 简介 text-generation-webui 是一个流行的用于文本生成的 Gradio Web UI。支持 transformers、GPTQ、AWQ、EXL2、llama.cpp (GGUF)、Llama 模型。 它的特点如下&#xff0c; 3 种界面模式&#xff1a;default (two columns), notebook, chat支持多…...

【Java SE】初遇Java,数据类型,运算符

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 1. Java 概述 1.1 Java 是什么 Java 是一种高级计算机语言&#xff0c;是一种可以编写跨平台应用软件&#xff0c;完全面向对象的程序设计语言。Java 语言简单易学…...

XSS(内含DVWA)

目录 一.XSS的攻击方式&#xff1a; 1. 反射型 XSS&#xff08;Reflected XSS&#xff09; 2. 存储型 XSS&#xff08;Stored XSS&#xff09; 3. DOM型 XSS&#xff08;DOM-based XSS&#xff09; 总结 二..XSS的危害 三.常见的XSS方式 1.script标签 四.常见基本过滤方…...

【SpringCloud】环境和工程搭建

环境和工程搭建 1. 案例介绍1.1 需求1.2 服务拆分服务拆分原则服务拆分⽰例 2. 项目搭建 1. 案例介绍 1.1 需求 实现⼀个电商平台(不真实实现, 仅为演⽰) ⼀个电商平台包含的内容⾮常多, 以京东为例, 仅从⾸⻚上就可以看到巨多的功能 我们该如何实现呢? 如果把这些功能全部…...

基于Java开发的(控制台)模拟的多用户多级目录的文件系统

多级文件系统 1 设计目的 为了加深对文件系统内部功能和实现过程的理解&#xff0c;设计一个模拟的多用户多级目录的文件系统&#xff0c;并实现具体的文件物理结构、目录结构以及较为完善的文件操作命令集。 2 设计内容 2.1系统操作 操作命令风格&#xff1a;本文件系统的…...

tailwindcss group-hover 不生效

无效 <li class"group"><div class"tw-opacity-0 group-hover:tw-opacity-100" /> </li>配了tw前缀&#xff0c;group要改成tw-group // tailwind.config.jsmodule.exports {prefix: "tw-", }<li class"tw-group&q…...

python环境配置问题(个人经验)

很久没配置 python 新环境了&#xff0c;最近新项目需要进行配置&#xff0c;在配置过程中发现了不少问题&#xff0c;记录下。 问题1&#xff1a;fatal error: longintrepr.h: 没有那个文件或目录 这个问题的原因是新环境的 python 版本(3.10以上)与本地的版本(3.8.x)差异过…...

BERT训练之数据集处理(代码实现)

目录 1读取文件数据 2.生成下一句预测任务的数据 3.预测下一个句子 4.生成遮蔽语言模型任务的数据 5.从词元中得到遮掩的数据 6.将文本转化为预训练数据集 7.封装函数类 8.调用 import os import random import torch import dltools 1读取文件数据 def _read_wiki(data_d…...