【香橙派开发板测试】:在黑科技Orange Pi AIpro部署YOLOv8深度学习纤维分割检测模型

在这里插入图片描述


文章目录

  • 🚀🚀🚀前言
  • 一、1️⃣ Orange Pi AIpro开发板相关介绍
    • 1.1 🎓 核心配置
    • 1.2 ✨开发板接口详情图
    • 1.3 ⭐️开箱展示
  • 二、2️⃣配置开发板详细教程
    • 2.1 🎓 烧录镜像系统
    • 2.2 ✨配置网络
    • 2.3 ⭐️使用SSH连接主板
  • 三、3️⃣部署yolov8深度学习纤维分割检测模型
    • 3.1🚀 yolov8模型介绍
      • 3.1.1 概述
      • 3.1.2 核心改进
    • 3.2 🎓 创建虚拟环境并安装相关库
    • 3.3 ✨下载yolov8源码
    • 3.4 ⭐️train与detect代码撰写
      • 3.4.1 train.py代码
      • 3.4.2 detect.py
    • 3.5 🎯纤维分割模型训练
    • 3.6 🔥纤维分割模型检测推理
    • 3.7 🎯调用摄像头检测
  • 四、4️⃣相关模型测试
    • 4.1 🎓 如何使用官方案例
    • 4.2 ✨官方案例运行结果
  • 五、5️⃣开发板使用感受
      • ☀️优点
      • ⚡️缺点


在这里插入图片描述

🚀🚀🚀前言

近期在做纤维定性定量项目的工程化部署,需要运用嵌入式技术,将我们的深度学习模型还有软件进行部署,通过调研发现深圳市迅龙软件有限公司旗下开源产品品牌Orange Pi非常符合需求,经过多项测试之后选择Orange Pi AIpro作为项目开发板,非常喜欢它的一句标语:“为AI而生”
深圳市迅龙软件有限公司成立于2005年,是全球领先的开源硬件、开源软件及智能产品品牌商,致力于让全世界每个极客、创客、电子爱好者享用来自中国的优质、低价的开源产品及智能产品,拓展无限可能,通过大规模的社会化协作去创建一个更加美好的信息化人类文明。目前迅龙业务遍及美国、英国、意大利、俄罗斯、日本、南非、东南亚等100多个国家和地区。更多详细信息可以参考公司链接网址:http://www.xunlong.tv/html/aboutUs/index.html


一、1️⃣ Orange Pi AIpro开发板相关介绍

香橙派的Orange Pi AIpro是一款专为人工智能(AI)应用开发设计的高性能开发板。它集成了先进的处理器、内存、存储以及丰富的接口,旨在满足AI边缘计算、深度学习、机器视觉、自然语言处理等多个领域的需求。

Orange Pi AIpro官方网址:http://www.orangepi.cn/index.html

在这里插入图片描述

1.1 🎓 核心配置

Orange Pi AIpro搭载了高性能的AI处理器,支持高达数十TOPS(每秒万亿次操作)的AI算力,能够高效运行复杂的AI模型和算法,除了AI处理器外,还配备了多核CPU,提供强大的通用计算能力,支持多任务并行处理。配备高容量的LPDDR4X内存和eMMC或SSD存储,确保数据的高速读写和模型的高效加载,提供HDMI、USB、GPIO、SATA/NVMe M.2插槽、TF卡插槽等多种接口,支持多种外设连接和扩展,满足不同场景下的需求,支持双HDMI输出,能够同时驱动两个高清显示屏,适用于需要视觉反馈的应用场景,支持Ubuntu、openEuler等主流操作系统,提供丰富的开发工具和文档,帮助开发者快速上手并进行项目开发,进一步拓宽了应用场景,可以应用到如下场景:

  • AI边缘计算:在物联网设备中实现AI算法的本地化处理,减少数据传输延迟和带宽消耗。
  • 深度学习与机器视觉:支持图像识别、视频分析、物体检测等任务,适用于安防监控、智能制造等领域。
  • 自然语言处理:支持语音识别、语义理解等任务,适用于智能家居、智能客服等领域。
  • 智能机器人:为智能小车、机械臂等机器人提供强大的计算能力和AI支持。
  • 云计算与大数据:作为云计算节点的一部分,处理大规模数据并运行复杂的AI算法。

我这边收到的板子是8GB内存,8TOPS INT8算力,详细配置表格如下:

CPU4核64位处理器+ AI处理器
GPU集成图形处理器
AI算力8-12TOPS算力
内存LPDDR4X:8GB/16GB(可选),速率:3200Mbps
存储 • SPI FLASH:32MB
• SATA/NVME SSD(M.2接口2280)
• eMMC插槽:32GB/64GB/128GB/256GB(可选),eMMC5.1 HS400
• TF插槽
WIFI+蓝牙Wi-Fi 5双频2.4G和5G
BT4.2/BLE
以太网收发器10/100/1000Mbps以太网
显示• 2xHDMI2.0 Type-A TX 4K@60FPS
• 1x2 lane MIPI DSI via FPC connector
摄像头2x2-lane MIPI CSI camera interface,兼容树莓派摄像头
USB• USB 3.0 HOST x2
• USB Type-C 3.0 HOST x1
• Micro USB x1 串口打印功能
音频3.5mm耳机孔音频输入/输出
按键1x关机键、1xRESET键、2x启动方式拨动键、1x烧录按键
40PIN40PIN 功能扩展接口,支持以下接口类型:
GPIO、UART、I2C、SPI、 I2S、PWM
风扇风扇接口x1
预留接口2PIN电池接口
电源Type-C PD 20V IN ,标准65W
支持的操作系统Ubuntu、openEuler
产品尺寸107*68mm
重量82g

1.2 ✨开发板接口详情图

从使用文档中的开发板正反面照片也能看出该板子的集成度非常高,主板上集成了多种功能和接口,如处理器(标明为“4核64位处理器+AI处理器”)、内存模块(支持8GB/16GB LPDDR4X)、以及电源管理系统(包括“3.3V PWR”、“5V PWR”、“DDR PWR”、“AI PWR”、“CORE PWR”等多种供电模式),显示了它在处理复杂任务、提供强大性能和灵活配置方面的能力,搭载4核64位处理器,并且额外配备了AI处理器,这样的组合不仅保证了基础计算的高效性,还增加了对AI应用的支持,使得开发板在机器学习、图像处理等AI领域的应用成为可能(后面将进行AI模型部署测评)。而且支持WiFi5+蓝牙4.2,这款开发板在无线连接方面具备较高的标准和良好的兼容性,方便与各种外设和传感器进行无线通信,并且该开发板预留多个扩展接口,也能方便用户根据需要进行功能扩展和硬件升级。
在这里插入图片描述
在这里插入图片描述

1.3 ⭐️开箱展示

我第一眼看到包装盒给我的感觉是非常小巧可爱的,大概也就巴掌大一点,配备了一个快充充电器一个开发板,还有一个32g的SD卡,该卡用来烧录镜像使用(注意:没有读卡器,后面烧录需要自己准备TF读卡器);

在这里插入图片描述


打开包装盒之后最吸引我的就是散热器,散热片设计具有精致的金属感,不仅美观,而且有助于设备的散热,保证长时间运行的稳定性,总体来说Orange Pi AIpro的做工精细,整体给人一种高品质的感觉,虽然具体材质信息未详细提及,但从外观的质感和散热片的设计可以推测,开发板采用了适合散热和耐用的材质,从整体的布局来看,该板接口布局集中在一侧,便于开发者在日常使用中插拔外设,这种设计提高了使用的便捷性,减少了线缆杂乱的问题。我这边做测试的并没有外壳包装,通过官网可以看到Orange Pi AIpro的专属定制外壳,非常精致并且便于携带。
在这里插入图片描述
在这里插入图片描述

二、2️⃣配置开发板详细教程

在开始下面工作之前可以先去Orange Pi 官网下载相关文件,找到下载与服务选项,选择对应的开发板,我用的是Orange Pi AIpro,下面也都是用该板子做测试与部署。
在这里插入图片描述

点进去之后一定要下载官方工具,官方镜像,以及用户手册,一定要认真阅读用户手册!!!,在实际操作中用户手册解决了我很多问题。用户手册一共写了165页,基本上把每一个部件的调试都写上了,非常的详细,而且很有逻辑,即使是新手小白也能照着文档操作。
在这里插入图片描述
在这里插入图片描述

2.1 🎓 烧录镜像系统

这一步只需要准备Orange Pi AIpro送的32g的SD卡带有TF卡槽的读卡器烧录软件balenEther(在官方工具中),这里我在使用balenEther烧录软件的时候一直有问题,最后一步一直提示烧录失败,建议以管理员权限打开,如果还不行可以更换昇腾的Ascend烧录软件,我在使用Ascend烧录软件是一次成功的;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 ✨配置网络

烧录成功后,其实就已经基本上差不多了,但是为了后续能够方便文件上传等操作,我们需要配置网络,进行SSH连接,连接到我们的主机/笔记本电脑上去。

将烧录好的SD卡重新插回开发板中,将开发板用充电器连接电源,再准备一条网线连接到你的主机或者笔记本电脑上面,最后再准备一个显示器或者屏幕,用HDMI线将开发板与显示器连接(为了方便后续操作我这里在USB3.0接口插了一个无线键盘鼠标接收器),稍等一会就能看见系统显示界面了。
在这里插入图片描述

在这里插入图片描述

然后输入密码进入系统,默认的就是rootHwHiAiUser用户,这两个用户的密码都是Mind@123
在这里插入图片描述
进入系统之后就可以连接无线网了,这里有一点需要注意,你的主机和你的开发板连接的网络必须是同一个局域网,不然后面互联的时候会显示连接超时,一直连接不上

在这里插入图片描述
连接无线网之后就可以鼠标右键在电脑桌面打开终端,输入ifconfig查看ip地址,我这里IP地址是:192.168.11.93,子网掩码是255.255.255.0
在这里插入图片描述

查看开发板的IP地址之后,我们需要修改主机的ip,在以太网连接中找到Internet协议版本4,修改属性,默认的是自动获取ip,我们需要手动修改,将ip地址的前三位与开发板的ip保持一致,最后一位设置为100(或者其他),子网掩码与开发板保持一致,然后保存。
在这里插入图片描述

调出windows的命令行窗口,输入ipconfig查看IP地址是否修改成功,为了保证主机/笔记本与开发板能连通,可以使用ping命令ping开发板,查看能否发送字节。
在这里插入图片描述
在这里插入图片描述

2.3 ⭐️使用SSH连接主板

这里我们使用官方提供的工具进行远程连接开发板,在官方工具中我们找到MobaXterm软件,打开之后选择Session,然后在 Session Setting 中选择 SSH,在 Remote host 中输入开发板的 IP 地址,在 Specify username 中输入 Linux 系统的用户名 root 或 HwHiAiUser。连接之后需要输入登录密码,也就是默认的Mind@123,当出现如下界面时,就表示连接成功了,就可以对开发板进行命令操作了。
在这里插入图片描述
在这里插入图片描述

三、3️⃣部署yolov8深度学习纤维分割检测模型

3.1🚀 yolov8模型介绍

3.1.1 概述

📌官方代码地址:https://github.com/ultralytics/ultralytics

YOLOv8是Ultralytics公司最新推出的YOLO系列目标检测算法,它在继承YOLO系列算法优点的基础上,引入了新的功能和改进点,以进一步提升性能和灵活性,YOLO(You Only Look Once)系列模型自2015年推出以来,因其高效的目标检测能力在计算机视觉领域广受欢迎。YOLOv8作为该系列的最新版本,于2023年1月10日由Ultralytics公司开源,进一步优化了检测精度和速度,使其在多个应用场景中表现出色。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,可以在从 CPU 到 GPU 的各种硬件平台上运行。yolov8最大的优点就是将当前最先进的SOTA模型融合在一起,变成最先进的 (SOTA) 模型。在相同的参数量会发现yolov8的模型要优于之前的yolo版本
在这里插入图片描述

YOLOv8 旨在快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿势估计任务的绝佳选择;
在这里插入图片描述

3.1.2 核心改进

关于yolov8的核心改进如下

  • 提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率 的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求
  • 骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数,属于对模型结构精心微调,不再是无脑一套参数应用所有模型,大幅提升了模型性能。
  • Head 部分相比 YOLOv5 改动较大,换成了目前主流的解耦头结构,将分类和检测头分离,同时也从 Anchor-Based 换成了 Anchor-Free
  • Loss 计算方面采用了 TaskAlignedAssigner 正样本分配策略,并引入了 Distribution Focal Loss
  • 训练的数据增强部分引入了 YOLOX 中的最后 10 epoch 关闭 Mosiac 增强的操作,可以有效地提升精度。

在这里插入图片描述
官方给的yolov8图比较详细,整体架构由三部分组成,分别是backbone主干特征提取网络(CSPDarknet)、Neck特征融合网络(PANet)、head解耦检测头;

  • 骨干部分:YOLOv8引入了一个新的骨干网络,可能参考了YOLOv7 ELAN设计思想,将YOLOv5的C3结构换成了梯度流更丰富的C2f结构,并对不同尺度模型调整了不同的通道数。这种改进提高了模型的特征提取能力,增强了模型对复杂场景的处理能力。采用了CSPNet(Cross Stage Partial Network)技术,有效减少了计算成本,同时提升了模型的特征表达能力。
    在这里插入图片描述

  • 检测头:YOLOv8的Head部分相比YOLOv5发生了较大变化,从原先的耦合头变成了解耦头,并且从Anchor-Based转变为Anchor-Free。这种变化简化了检测流程,提高了检测精度。
    在这里插入图片描述

  • 损失函数:YOLOv8在Loss计算方面采用了TaskAlignedAssigner正样本分配策略,并引入了Distribution Focal Loss。这些改进有助于更准确地评估模型性能,促进模型收敛。

3.2 🎓 创建虚拟环境并安装相关库

我们烧录的系统是自带的有anaconda环境的,首先,我们可以查看python版本,默认的是3.9.2,我比较习惯用3.11的版本做项目,为了不影响基础配置环境,我重新创建了一个python=3.11的yolov8虚拟环境,创建命令如下:

conda create -n yolov8 python=3.11

在这里插入图片描述
创建好虚拟环境之后,使用conda activate yolov8命令激活虚拟环境,这里可以看到虚拟环境当中的python版本是3.11.9的;
在这里插入图片描述

接下来就需要安装yolov8运行所需要的相关库了,官方给的安装库只需要安装ultralytics,使用命令pip install ultralytics;这个是官方给的命令,但是我在实际使用过程中发现只按照这个库代码是无法运行的,会继续提示你按照其他库,所以还需要使用如下命令:pip install timm==0.9.8 thop efficientnet_pytorch==0.7.1 einops grad-cam==1.4.8 dill==0.3.6 albumentations==1.3.1 pytorch_wavelets==1.3.0,一次性将所有依赖库都安装完毕;
在这里插入图片描述
在这里插入图片描述

3.3 ✨下载yolov8源码

从https://github.com/ultralytics/ultralytics下载官方源码之后,通过MobaXterm软件ssh连接,将源码拷贝到主板系统当中,可以拖拽直接拷贝到主板系统的downloads文件夹下面,建议将yolov8n.pt也给下载下来,后面半精度训练的时候需要用到yolov8n.pt权重。
在这里插入图片描述

3.4 ⭐️train与detect代码撰写

yolov8的yolov5在使用的时候不太一样,yolov8主要靠命令行去执行训练与检测命令,为了方便设置参数和操作,我参考v5的模式将yolov8的train与detect的代码写出来了。

3.4.1 train.py代码

import warningswarnings.filterwarnings('ignore')
from ultralytics import YOLOif __name__ == '__main__':model = YOLO('ultralytics/cfg/models/v8/yolov8-seg.yaml')model.load('weights/yolov8n-seg.pt')  # loading pretrain weightsmodel.train(data='ultralytics/cfg/dataset/fiber-seg.yaml',# cache=False,  # 设置为True会占用很多内存 如何设置为True无法进行重复性实验imgsz=640,epochs=300,batch=4,close_mosaic=10,workers=2,device='0',optimizer='SGD',  # using SGD# lr0=0.001,# resume='runs/train/exp7/weights/last.pt', # last.pt path# amp=False, # close amp# fraction=0.2,project='runs/train',name='exp',patience=0,)

3.4.2 detect.py

import warningswarnings.filterwarnings('ignore')
from ultralytics import YOLOif __name__ == '__main__':model = YOLO('weights/best.pt')  # select your model.pt pathmodel.predict(source='images/fiber/1.jpg', #source设置为0表示调用摄像头imgsz=640,project='runs/detect',name='exp',save=True,line_width=5,show_conf=False,# conf=0.2,# visualize=True # 生成模型特征图)

3.5 🎯纤维分割模型训练

将train.py代码写好之后,直接在终端运行python train.py就能进行模型训练,参数设置的batch_size=4线程worker=2,一共训练300epoch,我这边准备的是项目需要的纤维分割数据集,训练速度虽然比不上我自己主机的4090显卡,但是要比一般的笔记本电脑快很多。而且训练之后的结果效果和我在4090上的结果基本上保持一致,分割与检测的map和精确度都在99%左右。
在这里插入图片描述
在这里插入图片描述

3.6 🔥纤维分割模型检测推理

关于图片还有视频的推理用的都是python detect.py命令,图片推理成功后去到对应的文件夹,可以看到基本上没有识别误差,并且分割效果很好。
在这里插入图片描述
在这里插入图片描述

关于视频检测:只需要将要检查的文件换成视频文件就能进行推理,这里发现推理的速度挺快的,基本上几秒钟就能给出视频推理结果。

在这里插入图片描述
在这里插入图片描述

3.7 🎯调用摄像头检测

我这边是接了一个USB3.0的1080p的工业相机摄像头,大概200万像素。只需要将detect.py中的source设置为0就能调用摄像头。
在这里插入图片描述
在这里插入图片描述

需要注意的是yolov8和yolov5检测不太一样,我这边摄像头可以显示检测的结果数据(如下图),但是没有检测界面,期初我以为是摄像头问题,调试了一下摄像头发现可以正常拍摄,后来看了一下yolov8的源代码发现并没有可以显示界面的工具,所以我用OpenCV写了一个视频实时检测界面。
在这里插入图片描述
OpenCV实时监测代码:timedetect.py

import cv2
from ultralytics import YOLO# 加载 YOLOv8 模型
model = YOLO("weights/yolov8n.pt")# 获取摄像头内容,参数 0 表示使用默认的摄像头
cap = cv2.VideoCapture(0)while cap.isOpened():success, frame = cap.read()  # 读取摄像头的一帧图像if success:model.predict(source=frame, show=True)  # 对当前帧进行目标检测并显示结果# 通过按下 'q' 键退出循环if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()  # 释放摄像头资源
cv2.destroyAllWindows()  # 关闭OpenCV窗口

调用训练好的模型,执行python timedetect.py就能显示实时检测的结果了。
在这里插入图片描述

四、4️⃣相关模型测试

其实安装好开发板系统之后,系统当中是给了一些AI算法测试案例的,例如检测模型SSD、文本识别CNNCTC、图像分类ResNet50、图像曝光算法-HDR、图像分割算法FCN等,这些模型我都测试了一下,除了SSD目标检测算法报了一个错误,其他的都没有任何问题;
在这里插入图片描述

4.1 🎓 如何使用官方案例

首先登录 Linux 系统桌面,然后打开终端,使用cd ~返回上一级目录,然后进入cd samples文件夹当中。在当前目录下有 8 个文件夹和 1 个 shell 文件,分别对应 8 个 AI 应用样例和Jupyter Lab 启动脚本 start_notebook.sh。
在这里插入图片描述

然后执行start_notebook.sh 脚本启动 Jupyter Lab,在执行该脚本后,终端会出现如下打印信息,在打印信息中会有登录 Jupyter Lab 的网址链接,将链接复制到浏览器打开即可。
在这里插入图片描述

4.2 ✨官方案例运行结果

我这里就放一部分运行结果,感兴趣的话可以全部跑一遍。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、5️⃣开发板使用感受

个人也是使用Orange Pi AIpro开发部署了自己的深度学习项目,下面也将给出客观的评价。

☀️优点

先说优点,Orange Pi AI Pro 搭载的处理器和AI加速器能够高效运行复杂的YOLO模型,同时保持相对较低的功耗,这对于需要长时间运行的边缘设备尤为重要,它也支持多种编程语言(如Python、C++)和深度学习框架(如TensorFlow, PyTorch, Darknet等),便于开发者快速上手,并且官方提供的操作系统非常好用,我在安装各种依赖包的时候速度非常快,而且相较于windows操作系统,没有那么多的报错,基本上配置环境都是一步过!!!并且提供了多个USB接口、HDMI接口等,方便连接各种外设和传感器,满足多样化的应用场景需求,此外,还支持通过TF卡扩展存储空间,满足大数据量存储的需求。同时开发文档和官方工具给的非常全面,虽然在烧录过程中出了一点小插曲;在实际项目使用的过程中,检测的速度很快,并且系统很刘畅,而且相关配置也没有那么复杂,给我的整体感受是非常好的!!!

⚡️缺点

官方文档和针对特定模型(如YOLO、transformers)的详细部署教程可能不够详尽,初学者可能会遇到一些障碍,在一些极端使用场景下(如高温、高湿环境),硬件的稳定性可能会受到影响,需要额外的散热措施和防护措施,我在训练模型的时候明显感觉到温度上升的比较快,

总体来说,Orange Pi AI Pro 是一款性价比较高的边缘计算开发板,适合用于部署YOLO等实时目标检测模型,尽管存在一些缺点和挑战,但通过不断的学习和实践,我相信可以充分发挥其优势,为各种应用场景提供强大的支持。


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874960.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么 FPGA 的效率低于 ASIC?

FPGA是“可重构逻辑”器件。先制造的芯片,再次设计时“重新配置”。 ASIC 不需要“重新配置”。你先设计,把它交给代工厂,然后制造芯片。 现在让我们看看这些芯片的结构是什么样的,以及它们的不同之处。 ● 逻辑单元:F…

小程序多排数据横向滚动实现

如何实现多排数据滚动效果 swiper 外部容器 swiper-item 每一页的数据 因为现在有多排数据,现在在swiper-item 中需要循环一个数组 初版 <template><view><view class"container"><view class"swiper-box"><swiper class&qu…

拍得更近、拍得更清:Pura 70 Pro如何做到5cm对焦?

众所周知&#xff0c;我们的眼睛离一个物品越近时&#xff0c;我们就越能看清该物品的细节&#xff0c;但物品距离超过某个极限时&#xff0c;反而会看不清楚——这是因为超出了眼睛所能对焦的极限。 对于手机摄像头来说&#xff0c;也具有相似的道理。当我们的手机镜头距离被…

windows server报错--无法启动此程序,因为计算机中丢失MSVCP120.dll解决办法(已解决)

无法启动此程序&#xff0c;因为计算机中丢失MSVCP120.dll解决办法。 win7系统丢失MSVCP120.dll解决方法&#xff1a; 1、安装微软常用运行库合集&#xff0c;就可以完美的解决&#xff0c;此C运行库算是很全了&#xff0c;安装它才免于重装系统&#xff0c;完美的解决了我的丢…

【elementui】记录el-table设置左、右列固定时,加大滚动条宽度至使滚动条部分被固定列遮挡的解决方法

当前elementui版本&#xff1a;2.8.2 现象&#xff1a;此处el-table__body-wrapper默认的滚动条宽度为8px&#xff0c;我加大到10px&#xff0c;如果不设置fixed一切正常&#xff0c;设置fixed后会被遮挡一点 el-table__fixed-right::before, .el-table__fixed::before 设置…

CentOS7使用Postfix, Dovecot搭建邮箱服务

CentOS7使用Postfix&#xff0c;Dovecot搭建邮箱服务的步骤与挑战&#xff1f; 为了满足企业内部或个人的邮件服务需求&#xff0c;使用CentOS7搭建一个稳定、安全的邮箱服务器是一个非常实用的解决方案。AokSend将详细介绍如何在CentOS7系统上使用Postfix和Dovecot搭建邮箱服…

linux系统进程占cpu 100%解决步骤

1.查找进程 ps aux 查看指定进程: ps aux | grep process_name2.根据进程查找对应的主进程 pstree -p | grep process_name 3.查看主进程目录并删除 ps -axu | grep process_name rm -rf /usr/bin/2cbbb

修改 Tomcat 默认端口号最简单的方法

前言 每次在创建一个新的Maven项目之后&#xff0c;启动项目总会报8080端口号被占用的问题&#xff0c;既然每次都有这样的困扰&#xff0c;那不如一了百了&#xff0c;直接修改默认的8080端口号。 &#xff08;如果还是想要默认端口号。可参考我主页文章杀死占用了8080的进程…

IB user verbs介绍

本文来自对内核源代码文档/Documentation/infiniband/user_verbs.rst的翻译和理解。 在Infiniband设备帮助下&#xff0c;跨计算机的两个进程可以相互访问对方的虚地址空间。在Linux操作系统上&#xff0c;支持进程能直接访问本地Infiniband设备的资源&#xff0c;从而实现跨机…

openmv学习笔记(24电赛笔记)

#opemv代码烧录清除详解 openmv的代码脱离IDE运行程序&#xff0c;只需要在IDE中将代码烧录道flash里面&#xff0c;断开IDE连接&#xff0c;上电之后&#xff0c;会自动执行main.py中的程序&#xff0c;IDE烧录的时候&#xff0c;会默认将程序后缀保存为 .py文件。 ​​​​​…

防爆智能手机如何助力电气行业保驾护航?

在电气行业的智能化转型浪潮中&#xff0c;防爆智能手机以其强大的数据处理能力、实时通讯功能及高度集成的安全特性&#xff0c;正成为保障电力网络稳定运行、预防安全隐患的得力助手。 防爆智能手机在电气行业中发挥着重要的保驾护航作用&#xff0c;主要体现在以下几个方面&…

swagger-ui.html报错404

问题1&#xff1a;权限受限无法访问 由于采用的Shiro安全框架&#xff0c;需要在配置类ShiroConfig下的Shiro 的过滤器链放行该页面&#xff1a;【添加&#xff1a;filterChainDefinitionMap.put("/swagger-ui.html", "anon");】 public ShiroFilterFact…

node+mysql实现(账户密码,阿里云短信验证,QQ邮箱注册登录,短信验证密码重置,邮箱密码重置)之注册,登录密码重置总篇

node+mysql实现账户登录 注意效果图项目插件代码参数说明短信验证模块邮箱验证模块注册方式登录方式密码重置前端页面部分登录页面账户登录页面(login.html)短信验证登录页面(smsLogin.html)邮箱登录页面(emailLogin.html)注册部分页面短信验证注册页面(register.html)邮…

【C++高阶】深度剖析:从零开始模拟实现 unordered 的奥秘

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;哈希底层 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀哈希 &#x1f4d2;1. 改造 HashTable…

Qt多语言功能实现

本文介绍Qt多语言功能实现。 应用程序多语言支持是常用功能&#xff0c;比如产品需要出口到不同语种的国家。采用Qt的多语言支持工具可以方便实现应用程序的多语言功能。本文以中英文语言切换为例&#xff0c;简要介绍Qt的多语言功能实现。 1.界面设计 界面设计需要考虑使用…

正则表达式与文本三剑客之grep

目录 前言 一、grep命令 二、基础正则表达式常见元字符 2.1、特殊字符 2.2、定位符 2.3、非打印字符 三、元字符操作实例 3.1、查找特定字符 3.2、利用中括号“[]”来查找集合字符 3.3、查找行首“^”与行尾字符“$” 3.4、查找任意一个字符“.”与重复字符“*” 3.…

BGP选路之Preferred value

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时&#xff0c;BGP协议会对这些BGP路由的属性进行比较&#xff0c;以确定去往该目标网络的最优BGP路由&#xff0c;然后将该最优BGP路由与去往同一目标网络的其他协议路由进行比较&#xff0c;从而决定是否将该最优…

OAuth2.0 or Spring Session or 单点登录流程

1.社交登录 2.微博社交登录 第三方登录 1.登录微博 2.点击网站接入 3.填写完信息&#xff0c;到这里&#xff0c;写入成功回调 和 失败回调 是重定向&#xff0c;所以可以写本地的地址 3.认证 分布式Session spring-session 域名不一样 发的 jSessionId 就不同&#xff0c…

自定义element主题

说明&#xff1a;这里使用的是vue3做的demo&#xff0c;所以使用的是element-plus&#xff0c;不同版本大同小异 一、安装element-plus npm install element-plus --save二、在main.ts中引入 import ElementPlus from "element-plus"; import "element-plus/d…

Kubernetes学习指南:保姆级实操手册03——规划部署

Kubernetes学习指南&#xff1a;保姆级实操手册03——规划部署 一、部署节点规划 Hostnameiprolesk8s-master0110.255.210.1masterk8s-master0210.255.210.2masterk8s-master0310.255.210.3masterk8s-node0110.255.210.4worker nodek8s-node0210.255.210.5worker nodek8s-nod…