【香橙派开发板测试】:在黑科技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.rhkb.cn/news/380624.html

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

相关文章

Web开发:图片九宫格与非九宫格动态切换效果(HTML、CSS、JavaScript)

目录 一、业务需求 二、实现思路 三、实现过程 1、基础页面 2、图片大小调整 3、图片位置调整 4、鼠标控制切换 5、添加过渡 四、完整代码 一、业务需求 默认显示基础图片; 当鼠标移入,使用九宫格效果展示图片; 当鼠标离开&#…

CTF-Web习题:[BJDCTF2020]ZJCTF,不过如此

题目链接:[BJDCTF2020]ZJCTF,不过如此 解题思路 访问靶场链接,出现的是一段php源码,接下来做一下代码审阅,发现这是一道涉及文件包含的题 主要PHP代码语义: file_get_contents($text,r); 把$text变量所…

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS 1. RoMe1.1 Mesh Initialization / Waypoint Sampling1.2 Optimization1.3 Experiments 2. EMIE-MAP2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding2.2 Optimizing Strategies2.3 Experimen…

Uniapp鸿蒙项目实战

Uniapp鸿蒙项目实战 24.7.6 Dcloud发布了uniapp兼容鸿蒙的文档:Uniapp开发鸿蒙应用 在实际使用中发现一些问题,开贴记录一下 设备准备 windows电脑准备(家庭版不行,教育版、企业版、专业版也可以,不像uniapp说的只有…

Promise 详解(原理篇)

目录 什么是 Promise 实现一个 Promise Promise 的声明 解决基本状态 添加 then 方法 解决异步实现 解决链式调用 完成 resolvePromise 函数 解决其他问题 添加 catch 方法 添加 finally 方法 添加 resolve、reject、race、all 等方法 如何验证我们的 Promise 是否…

分布式搜索之Elasticsearch入门

Elasticsearch 是什么 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。 Elastic Stack 又是什么呢&a…

企业须善用数字化杠杆经营获取数字化时代红利

​在当今数字化时代,企业面临着新机遇和新挑战。数字化技术的迅速发展正在重塑商业格局,企业若能善用数字化杠杆经营,将能够在激烈的市场竞争中脱颖而出,获取丰厚的时代红利。 数字化杠杆的内涵 数字化杠杆是指企业借助数字化技术…

SAPUI5基础知识16 - 深入理解MVC架构

1. 背景 经过一系列的练习,相信大家对于SAPUI5的应用程序已经有了直观的认识,我们在练习中介绍了视图、控制器、模型的概念和用法。在本篇博客中,让我们回顾总结下这些知识点,更深入地理解SAPUI5的MVC架构。 首先,让…

Android 性能优化之卡顿优化

文章目录 Android 性能优化之卡顿优化卡顿检测TraceView配置缺点 StricktMode配置违规代码 BlockCanary配置问题代码缺点 ANRANR原因ANRWatchDog监测解决方案 Android 性能优化之卡顿优化 卡顿检测 TraceViewStricktModelBlockCanary TraceView 配置 Debug.startMethodTra…

XMl基本操作

引言 使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能,建议使⽤XML来配置映射语句,也就是将SQL语句写在XML配置⽂件中. 之前,我们学习了,用注解的方式来实现MyBatis 接下来我们…

【STM32】按键控制LED光敏传感器控制蜂鸣器(江科大)

一、按键控制LED LED.c #include "stm32f10x.h" // Device header/*** 函 数:LED初始化* 参 数:无* 返 回 值:无*/ void LED_Init(void) {/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENAB…

数据结构(稀疏数组)

简介 稀疏数组是一种数据结构,用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中,只有非零或非重复的元素会被存储,从而节省内存空间。 案例引入 假如想把下面这张表存入文件,我们会怎么做?…

超简单安装指定版本的clickhouse

超简单安装指定版本的clickhouse 命令执行shell脚本 idea连接 命令执行 参考官网 # 下载脚本 wget https://raw.githubusercontent.com/183461750/doc-record/d988dced891d70b23c153a3bbfecee67902a3757/middleware/data/clickhouse/clickhouse-install.sh # 执行安装脚本(中…

记录些Spring+题集(12)

11种API性能优化方法 一、索引优化 接口性能优化时,大家第一个想到的通常是:优化索引,优化索引的成本是最小的。 你可以通过查看线上日志或监控报告,发现某个接口使用的某条SQL语句耗时较长。 这条SQL语句是否已经加了索引&…

PHP Program to print pyramid pattern (打印金字塔图案的程序)

编写程序打印由星星组成的金字塔图案 例子 : 输入:n 6输出: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 我们强烈建…

基于术语词典干预的机器翻译挑战赛笔记Task2 #Datawhale AI 夏令营

上回: 基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baseline Datawhale AI 夏令营-CSDN博客文章浏览阅读718次,点赞11次,收藏8次。基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baselinehttps://blog.csdn.net/qq_23311271/article/d…

Linux网络:应用层协议HTTP(一)

一、什么是HTTP协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。 在互联网世界中,HTTP(HyperText Transfer Protocol&…

【考研数学】线代满分经验分享+备考复盘

我一战二战复习都听了李永乐的线代课,二战的时候只听了一遍强化,个人感觉没有很乱,永乐大帝的课逻辑还是很清晰的。 以下是我听向量这一章后根据听课内容和讲义例题总结的部分思维导图,永乐大帝讲课的时候也会特意点到线代前后联…

基于百度地图API实现地图位置选取的移动端页面开发教程 (JQuery+Html+JavaScript+CSS)

本文详细讲解了如何使用百度地图API实现移动端页面中的地图位置选取功能。文章首先介绍了百度地图API的2.0和3.0版本功能,并重点采用3.0 API。接着,逐步展示了如何构建基本的地图页面,如何通过点击地图获取经纬度和地理信息,以及如…

uniapp vue3 上传视频组件封装

首先创建一个 components 文件在里面进行组件的创建 下面是 vvideo组件的封装 也就是图片上传组件 只是我的命名是随便起的 <template><!-- 上传视频 --><view class"up-page"><!--视频--><view class"show-box" v-for"…