【OpenVINOSharp】在英特尔® 开发者套件爱克斯开发板使用OpenVinoSharp部署Yolov8模型

news2024/7/4 4:38:32

在英特尔® 开发者套件爱克斯开发板使用OpenVinoSharp部署Yolov8模型

    • 一、英特尔开发套件 AIxBoard 介绍
      • 1. 产品定位
      • 2. 产品参数
      • 3. AI推理单元
    • 二、配置 .NET 环境
      • 1. 添加 Microsoft 包存储库
      • 2. 安装 SDK
      • 3. 测试安装
      • 4. 测试控制台项目
    • 三、安装 OpenVINO Runtime
      • 1. 下载 OpenVINO Runtime
      • 2. 解压安装包
      • 3. 安装依赖
      • 4. 配置环境变量
    • 四、配置 AlxBoard_deploy_yolov8 项目
      • 1. 创建 AlxBoard_deploy_yolov8 项目
      • 2. 添加 OpenVINOSharp 依赖
      • 3. 添加OpenCvSharp
    • 五、运行AlxBoard_deploy_yolov8 项目
      • 1. 编译运行 Yolov8-det 模型
      • 2. 编译运行 Yolov8-cls 模型
      • 3. 编译运行 Yolov8-pose 模型
      • 4. 编译运行 Yolov8-seg 模型
    • 六、模型运行时间
    • 七、总结

  英特尔发行版 OpenVINO™工具套件基于oneAPI 而开发,可以加快高性能计算机视觉和深度学习视觉应用开发速度工具套件,适用于从边缘到云的各种英特尔平台上,帮助用户更快地将更准确的真实世界结果部署到生产系统中。通过简化的开发工作流程, OpenVINO™可赋能开发者在现实世界中部署高性能应用程序和算法。

  C#是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。然而 OpenVINO™未提供C#语言接口,这对在C#中使用 OpenVINO™带来了很多麻烦,在之前的工作中,我们推出了OpenVinoSharp,旨在推动 OpenVINO™在C#领域的应用,目前已经成功在Window平台实现使用。在本文中,我们将介绍如何在 AIxBoard开发板上基于Linux系统实现OpenVinoSharp。

  项目中所使用的代码已上传至OpenVinoSharp仓库中,GitHub网址为:

https://github.com/guojin-yan/OpenVINOSharp/blob/openvinosharp3.0/tutorial_examples/AlxBoard_deploy_yolov8/Program.cs

  技术文档首发网址:在英特尔® 开发者套件上使用 OpenVINOSharp 部署 YOLOv8 模型 | 开发者实战

一、英特尔开发套件 AIxBoard 介绍

1. 产品定位

  英特尔开发套件 AIxBoard(爱克斯板)是英特尔开发套件官方序列中的一员,专为入门级人工智能应用和边缘智能设备而设计。爱克斯板能完美胜人工智能学习、开发、实训、应用等不同应用场景。该套件预装了英特尔OpenVINO™工具套件、模型仓库和演示案例,便于您轻松快捷地开始应用开发。

  套件主要接口与Jetson Nano载板兼容,GPIO与树莓派兼容,能够最大限度地复用成熟的生态资源。这使得套件能够作为边缘计算引擎,为人工智能产品验证和开发提供强大支持;同时,也可以作为域控核心,为机器人产品开发提供技术支撑。

  使用AIxBoard(爱克斯板)开发套件,您将能够在短时间内构建出一个出色的人工智能应用应用程序。无论是用于科研、教育还是商业领域,爱克斯板都能为您提供良好的支持。借助 OpenVINO™ 工具套件,CPU、iGPU 都具备强劲的 AI 推理能力,支持在图像分类、目标检测、分割和语音处理等应用中并行运行多个神经网络。

2. 产品参数

主控英特尔赛扬N5105 2.0-2.9GHz (formerly Jasper Lake)
内存板载LPDDR4x 2933MHz, 4GB/6GB/8GB
存储板载 64GB eMMC存储
存储扩展1个M.2 Key-M 2242扩展槽, 支持SATA&NVME协议
BIOSAMI UEFI BIOS
系统支持Ubuntu20.04 LTS
Winodws 10/11

3. AI推理单元

  借助OpenVINO工具,能够实现CPU+iGPU异构计算推理,IGPU算力约为0.6TOPS

CPUINT8/FP16/FP32
iGPUINT8/FP16 0.6TOPS
GNA高斯及神经加速器

二、配置 .NET 环境

  .NET 是一个免费的跨平台开源开发人员平台 ,用于构建多种应用程序。下面将演示 AIxBoard 如何在 Ubuntu 20.04 上安装 .NET环境,支持 .NET Core 2.0-3.1 系列 以及.NET 5-8 系列 ,如果你的 AIxBoard 使用的是其他Linux系统,你可以参考在 Linux 发行版上安装 .NET - .NET | Microsoft Learn。

1. 添加 Microsoft 包存储库

  使用 APT 进行安装可通过几个命令来完成。 安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加包存储库。

  打开终端并运行以下命令:

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb

  下图为输入上面命令后控制台的输出:

2. 安装 SDK

  .NET SDK 使你可以通过 .NET 开发应用。 如果安装 .NET SDK,则无需安装相应的运行时。 若要安装 .NET SDK,请运行以下命令:

sudo apt-get update
sudo apt-get install -y dotnet-sdk-3.1

  下图为安装后控制台的输出:

3. 测试安装

  通过命令行可以检查 SDK 版本以及Runtime时版本。

dotnet --list-sdks
dotnet --list-runtimes

  下图为输入测试命令后控制台的输出:

4. 测试控制台项目

  在linux环境下,我们可以通过dotnet命令来创建和编译项目,项目创建命令为:

dotnet new <project_type> -o <project name>

  此处我们创建一个简单测试控制台项目:

dotnet new console -o test_net6.0
cd test_net6.0
dotnet run

  下图为输入测试命令后控制台的输出以及项目文件夹文件情况,C#项目会自动创建一个Program.cs程序文件,里面包含了程序运行入口主函数,同时还会创建一个***.csproj**文件,负责指定项目编译中的一些配置。

  以上就是.NET环境的配置步骤,如果你的环境与本文不匹配,可以通过.NET 文档 | Microsoft Learn 获取更多安装步骤。

三、安装 OpenVINO Runtime

  OpenVINO™ 有两种安装方式: OpenVINO Runtime和OpenVINO Development Tools。OpenVINO Runtime包含用于在处理器设备上运行模型部署推理的核心库。OpenVINO Development Tools是一组用于处理OpenVINO和OpenVINO模型的工具,包括模型优化器、OpenVINO Runtime、模型下载器等。在此处我们只需要安装OpenVINO Runtime即可。

1. 下载 OpenVINO Runtime

  访问Download the Intel Distribution of OpenVINO Toolkit页面,按照下面流程选择相应的安装选项,在下载页面,由于我们的设备使用的是Ubuntu20.04,因此下载时按照指定的编译版本下载即可。

2. 解压安装包

  我们所下载的 OpenVINO Runtime 本质是一个C++依赖包,因此我们把它放到我们的系统目录下,这样在编译时会根据设置的系统变量获取依赖项。首先在系统文件夹下创建一个文件夹:

sudo mkdir -p /opt/intel

  然后解压缩我们下载的安装文件,并将其移动到指定文件夹下:

tar -xvzf l_openvino_toolkit_ubuntu20_2023.0.1.11005.fa1c41994f3_x86_64.tgz
sudo mv l_openvino_toolkit_ubuntu20_2023.0.1.11005.fa1c41994f3_x86_64 /opt/intel/openvino_2022.3.0

3. 安装依赖

  接下来我们需要安装 OpenVINO Runtime 所许雅的依赖项,通过命令行输入以下命令即可:

cd /opt/intel/openvino_2022.3.0/
sudo -E ./install_dependencies/install_openvino_dependencies.sh

4. 配置环境变量

  安装完成后,我们需要配置环境变量,以保证在调用时系统可以获取对应的文件,通过命令行输入以下命令即可:

source /opt/intel/openvino_2022.3.0/setupvars.sh

  以上就是 OpenVINO Runtime 环境的配置步骤,如果你的环境与本文不匹配,可以通过Install OpenVINO™ Runtime — OpenVINO™ documentation — Version(2023.0)获取更多安装步骤。

四、配置 AlxBoard_deploy_yolov8 项目

  项目中所使用的代码已经放在GitHub仓库AlxBoard_deploy_yolov8,大家可以根据情况自行下载和使用,下面我将会从头开始一步步构建AlxBoard_deploy_yolov8项目。

1. 创建 AlxBoard_deploy_yolov8 项目

  在该项目中,我们需要使用OpenCvSharp,该依赖目前在Ubutun平台最高可以支持.NET Core 3.1,因此我们此处创建一个.NET Core 3.1的项目,使用Terminal输入以下指令创建并打开项目文件:

dotnet new console --framework "netcoreapp3.1" -o AlxBoard_deploy_yolov8
cd AlxBoard_deploy_yolov8

  创建完项目后,将AlxBoard_deploy_yolov8的代码内容替换到创建的项目中的Program.cs文件中.

2. 添加 OpenVINOSharp 依赖

  由于OpenVINOSharp 当前正处于开发阶段,还未创建Linux版本的NuGet Package,因此需要通过下载项目源码以项目引用的方式使用。

  • 下载源码

    通过Git下载项目源码,新建一个Terminal,并输入以下命令克隆远程仓库,将该项目放置在AlxBoard_deploy_yolov8同级目录下。

    git clone https://github.com/guojin-yan/OpenVINOSharp.git
    cd OpenVINOSharp
    

    本文的项目目录为:

    Program--
    		|-AlxBoard_deploy_yolov8
    		|-OpenVINOSharp
    
  • 修改OpenVINO™ 依赖

    由于项目源码的OpenVINO™ 依赖与本文设置不同,因此需要修改OpenVINO™ 依赖项的路径,主要通过修改OpenVINOSharp/src/OpenVINOSharp/native_methods/ov_base.cs文件即可,修改内容如下:

    private const string dll_extern = "./openvino2023.0/openvino_c.dll";
    ---修改为--->
    private const string dll_extern = "libopenvino_c.so";
    
  • 添加项目依赖

    在Terminal输入以下命令,即可将OpenVINOSharp添加到AlxBoard_deploy_yolov8项目引用中。

    dotnet add reference ./../OpenVINOSharp/src/OpenVINOSharp/OpenVINOSharp.csproj
    
  • 添加环境变量

    该项目需要调用OpenVINO™动态链接库,因此需要在当前环境下增加OpenVINO™动态链接库路径:

    export LD_LIBRARY_PATH=/opt/intel/openvino_2023.0/runtime/lib/intel64
    

3. 添加OpenCvSharp

  • 安装NuGet Package

    OpenCvSharp可以通过NuGet Package安装,只需要在Terminal输入以下命令:

    dotnet add package OpenCvSharp4_.runtime.ubuntu.20.04-x64
    dotnet add package OpenCvSharp4
    
  • 添加环境变量

    将以下路径添加到环境变量中:

    export LD_LIBRARY_PATH=/home/ygj/Program/OpenVINOSharp/tutorial_examples/AlxBoard_deploy_yolov8/bin/Debug/netcoreapp3.1/runtimes/ubuntu.20.04-x64/native
    

    /bin/Debug/netcoreapp3.1/runtimes/ubuntu.20.04-x64/native是AlxBoard_deploy_yolov8编译后生成的路径,该路径下存放了libOpenCvSharpExtern.so文件,该文件主要是封装的OpenCV中的各种接口。也可以将该文件拷贝到项目运行路径下。

  • 检测libOpenCvSharpExtern依赖

    由于libOpenCvSharpExtern.so是在其他环境下编译好的动态链接库,本机电脑可能会缺少相应的依赖,因此可以通过ldd命令检测。

    ldd libOpenCvSharpExtern.so
    

    如果输出内容中没有no found的,说明不缺少依赖,如果存在,则需要安装缺少的依赖项才可以正常使用。

  添加完项目依赖以及NuGet Package后,项目的配置文件内容为:

<Project Sdk="Microsoft.NET.Sdk">

  <ItemGroup>
    <ProjectReference Include="..\OpenVINOSharp\src\OpenVINOSharp\OpenVINOSharp.csproj" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="OpenCvSharp4" Version="4.8.0.20230708" />
    <PackageReference Include="OpenCvSharp4_.runtime.ubuntu.20.04-x64" Version="4.8.0.20230708" />
  </ItemGroup>

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

</Project>

五、运行AlxBoard_deploy_yolov8 项目

​ 该项目测试所使用的模型与文件都可以在OpenVINOSharp中找到,因此下面我们通过OpenVINOSharp 仓库下的模型与文件进行测试。

  通过dotnet运行,只需要运行以下命令即可

dotnet run <args>

<args>参数设指的是模型预测类型、模型路径、图片文件路径参数,预测类型输入包括: ‘det’、‘seg’、‘pose’、‘cls’ 四种类型;默认推理设备设置为’AUTO’,对于’det’、'seg’预测,可以设置<path_to_lable>参数,如果设置该参数,会将结果绘制到图片上,如果未设置,会通过控制台打印出来

1. 编译运行 Yolov8-det 模型

编译运行命令为:

dotnet run det /home/ygj/Program/OpenVINOSharp/model/yolov8/yolov8s.xml /home/ygj/Program/OpenVINOSharp/dataset/image/demo_2.jpg GPU.0 /home/ygj/Program/OpenVINOSharp/dataset/lable/COCO_lable.txt

模型推理输出结果为:

---- OpenVINO INFO----
Description : OpenVINO Runtime
Build number: 2023.0.1-11005-fa1c41994f3-releases/2023/0
Set inference device  GPU.0.
[INFO] Loading model files: /home/ygj/Program/OpenVINOSharp/model/yolov8/yolov8s.xml
[INFO] model name: torch_jit
[INFO]    inputs:
[INFO]      input name: images
[INFO]      input type: f32
[INFO]      input shape: Shape : [1, 3, 640, 640]
[INFO]    outputs:
[INFO]      output name: output0
[INFO]      output type: f32
[INFO]      output shape: Shape : [1, 84, 8400]
[INFO] Read image  files: /home/ygj/Program/OpenVINOSharp/dataset/image/demo_2.jpg


  Detection  result : 

1: 0 0.89   (x:744 y:43 width:388 height:667)
2: 0 0.88   (x:149 y:202 width:954 height:507)
3: 27 0.72   (x:435 y:433 width:98 height:284)

2. 编译运行 Yolov8-cls 模型

编译运行命令为:

dotnet run cls /home/ygj/Program/OpenVINOSharp/model/yolov8/yolov8s-cls.xml /home/ygj/Program/OpenVINOSharp/dataset/image/demo_7.jpg GPU.0

模型推理输出结果为:

---- OpenVINO INFO----
Description : OpenVINO Runtime
Build number: 2023.0.1-11005-fa1c41994f3-releases/2023/0
Set inference device  GPU.0.
[INFO] Loading model files: /home/ygj/Program/OpenVINOSharp/model/yolov8/yolov8s-cls.xml
[INFO] model name: torch_jit
[INFO]    inputs:
[INFO]      input name: images
[INFO]      input type: f32
[INFO]      input shape: Shape : [1, 3, 224, 224]
[INFO]    outputs:
[INFO]      output name: output0
[INFO]      output type: f32
[INFO]      output shape: Shape : [1, 1000]
[INFO] Read image  files: /home/ygj/Program/OpenVINOSharp/dataset/image/demo_7.jpg


 Classification Top 10 result : 

classid probability
------- -----------
294     0.992173
269     0.002861
296     0.002111
295     0.000714
270     0.000546
276     0.000432
106     0.000159
362     0.000147
260     0.000078
272     0.000070

3. 编译运行 Yolov8-pose 模型

编译运行命令为:

dotnet run pose /home/ygj/Program/OpenVINOSharp/model/yolov8/yolov8s-pose.xml /home/ygj/Program/OpenVINOSharp/dataset/image/demo_9.jpg GPU.0

模型推理输出结果为:

---- OpenVINO INFO----
Description : OpenVINO Runtime
Build number: 2023.0.1-11005-fa1c41994f3-releases/2023/0
Set inference device  GPU.0.
[INFO] Loading model files: /home/ygj/Program/OpenVINOSharp/model/yolov8/yolov8s-pose.xml
[INFO] model name: torch_jit
[INFO]    inputs:
[INFO]      input name: images
[INFO]      input type: f32
[INFO]      input shape: Shape : [1, 3, 640, 640]
[INFO]    outputs:
[INFO]      output name: output0
[INFO]      output type: f32
[INFO]      output shape: Shape : [1, 56, 8400]
[INFO] Read image  files: /home/ygj/Program/OpenVINOSharp/dataset/image/demo_9.jpg


 Classification  result : 

1: 1   0.94   (x:104 y:22 width:152 height:365)  Nose: (188 ,60 ,0.93) Left Eye: (192 ,53 ,0.83) Right Eye: (180 ,54 ,0.90) Left Ear: (196 ,53 ,0.50) Right Ear: (167 ,56 ,0.76) Left Shoulder: (212 ,92 ,0.93) Right Shoulder: (151 ,93 ,0.94) Left Elbow: (230 ,146 ,0.90) Right Elbow: (138 ,142 ,0.93) Left Wrist: (244 ,199 ,0.89) Right Wrist: (118 ,187 ,0.92) Left Hip: (202 ,192 ,0.97) Right Hip: (168 ,193 ,0.97) Left Knee: (184 ,272 ,0.96) Right Knee: (184 ,276 ,0.97) Left Ankle: (174 ,357 ,0.87) Right Ankle: (197 ,354 ,0.88) 

4. 编译运行 Yolov8-seg 模型

编译运行命令为:

dotnet run seg /home/ygj/Program/OpenVINOSharp/model/yolov8/yolov8s-seg.xml /home/ygj/Program/OpenVINOSharp/dataset/image/demo_2.jpg GPU.0 /home/ygj/Program/OpenVINOSharp/dataset/lable/COCO_lable.txt

模型推理输出结果为:

---- OpenVINO INFO----
Description : OpenVINO Runtime
Build number: 2023.0.1-11005-fa1c41994f3-releases/2023/0
Set inference device  GPU.0.
[INFO] Loading model files: /home/ygj/Program/OpenVINOSharp/model/yolov8/yolov8s-seg.xml
47
[INFO] model name: torch_jit
[INFO]    inputs:
[INFO]      input name: images
[INFO]      input type: f32
[INFO]      input shape: Shape : [1, 3, 640, 640]
[INFO]    outputs:
[INFO]      output name: output0
[INFO]      output type: f32
[INFO]      output shape: Shape : [1, 116, 8400]
[INFO] Read image  files: /home/ygj/Program/OpenVINOSharp/dataset/image/demo_2.jpg
 

  Segmentation  result : 

1: 0 0.90   (x:745 y:42 width:403 height:671)
2: 0 0.86   (x:121 y:196 width:1009 height:516)
3: 27 0.69   (x:434 y:436 width:90 height:280)

六、模型运行时间

  AIxBoard开发板板载了英特尔赛扬N5105 CPU以及英特尔11代集成显卡,此处对CPU、GPU的推理情况做了一个简单测试,主要检测了模型推理时间,并使用英特尔幻影峡谷进行了同步测试,测试结果如表所示.

DeviceCPU: N5105GPU: Intel 11th 集显CPU: i7-1165G7GPU: lntel® Iris® Xe Graphics
Yolov8-det586.3ms83.1ms127.1ms19.5ms
Yolov8-seg795.6ms112.5ms140.1ms25.0ms
Yolov8-pose609.8ms95.1ms117.2ms23.3ms
Yolov8-cls33.1ms9.2ms6.1ms2.7ms

  可以看出,英特尔赛扬N5105 CPU在模型推理性能是十分强大的,且搭配的英特尔11代集成显卡,将推理速度提升了6倍左右,针对Yolov8模型,平均处理速度可以达到10FPs。而相比于幻影峡谷的推理速度,AIxBoard开发板推理性能大约为其五分之一,这相比一般的开发板,AIxBoard开发板的算力还是十分强大的。

七、总结

  在该项目中,我们基于Ubutn 20.04 系统,成功实现了在C#环境下调用OpenVINO™部署深度学习模型,验证了在Linux环境下OpenVINOSharp项目的的可行性,这对后面在Linux环境下开发OpenVINOSharp具有很重要的意义。

  除此之外,我们还使用OpenVINOSharp检验了AIxBoard开发板的模型推理能力,最总针对Yolov8模型,平均处理速度可以达到10FPs,这对目前大多数开发板来说,已经达到了很高的推理速度。后续我还会将继续使用OpenVINOSharp在AIxBoard开发板部署更多的深度学习模型。

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

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

相关文章

【无闪烁AI视频制作】

效果查看&#xff1a; https://tianfeng.space/wp-content/uploads/2023/08/8月16日-12.mp4 前言 现在其实有很多的AI视频了&#xff0c;效果也越来越逼真&#xff0c;来看看都是怎么制作的吧&#xff01; 安装 TemporalKit下载 https://github.com/CiaraStrawberry/Tempo…

STM32 F103C8T6学习笔记9:0.96寸单色OLED显示屏—自由取模显示—显示汉字与图片

今日学习0.96寸单色OLED显示屏的自由取模显示: 宋体汉字比较复杂&#xff0c;常用字符可以直接复制存下来&#xff0c;毕竟只有那么几十个字母字符&#xff0c;但汉字实在太多了&#xff0c;基本不会全部放在单片机里存着&#xff0c;一般用到多少个字就取几个字的模&#xff…

操作系统_内存管理(一)

目录 1. 内存管理 1.1 内存管理的概念 1.1.1 内存管理的基本原理和要求 1.1.1.1 程序的链接和装入 1.1.1.2 逻辑地址与物理地址 1.1.1.3 进程的内存映像 1.1.1.4 内存保护 1.1.1.5 内存共享 1.1.1.6 内存分配与回收 1.2 覆盖与交换 1.2.1 覆盖 1.2.2 交换 1.3 连续…

华为认证为什么现在这么受欢迎?

华为认证目前受欢迎的原因有很多&#xff0c;以下是其中一些主要原因&#xff1a; 高质量的认证培训&#xff1a;华为认证提供了一系列高质量的培训课程&#xff0c;涵盖了IT技术、网络安全、云计算等领域。这些培训课程由华为的技术专家和工程师团队设计和提供&#xff0c;内容…

Openlayers 实战 - 地图视野(View)- 图层 -(layer)- 资源(source)显示等级设置

Openlayers 实战 - 地图视野&#xff08;View&#xff09;- 图层 -&#xff08;layer&#xff09;- 资源&#xff08;source&#xff09;显示等级设置 问题原因核心代码完整代码&#xff1a;在线示例 在以往的项目维护中&#xff0c;出现一个问题&#xff0c;使用最新高清底图发…

基于traccar快捷搭建gps轨迹应用

0. 环境 - win10 虚拟机ubuntu18 - i5 ubuntu22笔记本 - USB-GPS模块一台&#xff0c;比如华大北斗TAU1312-232板 - 双笔记本组网设备&#xff1a;路由器&#xff0c;使得win10笔记本ip&#xff1a;192.168.123.x&#xff0c;而i5笔记本IP是192.168.123.215。 - 安卓 手机 1.…

PHP酒店点菜管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 酒店点菜管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 代码下载 https://download.csdn.net/download/qq_41221322/88232051 论文 https://…

ARM体系结构学习笔记:NZCV

NZCV N: negative 算术逻辑运算单元运算结果为负1/正0 Z: zero 算术逻辑运算单元运算结果为零1/非零0 C: 3cases:1 0加法 Carray | Not Carray减法 Not Borrow | Borrow(Not Carray)移位 Bit Shifted | Rotated Out V: 后面详细阐述[外…

【C语言】数组概述

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 &#x1f525;该篇将带你了解 一维数组&#xff0c;二维数组等相关知识。 目录&#xff1a; &#x1f4d8;前言&#xff1a;&#x1f…

【探索Linux】—— 强大的命令行工具 P.6(调试器-gdb、项目自动化构建工具-make/Makefile)

阅读导航 前言一、什么是调试器二、详解 GDB - 调试器1.使用前提2.经常使用的命令3.使用小技巧 三、项目自动化构建工具 - make/Makefile1. make命令⭕语法⭕常用选项⭕常用操作⭕make命令的工作原理⭕make命令的优势&#xff1a; 2.Makefile文件⭕Makefile的基本结构⭕Makefil…

jvm-运行时数据区概述及线程

1.运行时数据区内部结构 不同的jvm对于内存的划分方式和管理机制存在着部分差异 java虚拟机定义了若干种程序运行期间会使用到的运行时数据区&#xff0c;其中有一些会随着虚拟机的启动而创建&#xff0c;随着虚拟机的退出而销毁&#xff0c;另外一些则是与线程一一对应的&…

过来,我告诉你个秘密:送给程序员男友最好的礼物,快教你对象学习磁盘分区啦!小点声哈,别让其他人学会了!

[原文连接:来自给点知识](过来&#xff0c;我告诉你个秘密&#xff1a;送给程序员男友最好的礼物&#xff0c;快教你对象学习磁盘分区啦&#xff01;小点声哈&#xff0c;别让其他人学会了&#xff01;) 再唱不出那样的歌曲 听到都会红着脸躲避 虽然会经常忘了我依然爱着你 …

linux学习(文件描述符)[13]

所以fork的时候函数执行完毕&#xff0c;但是数据还在缓冲区中未刷新。 所以会有父子两份数据 在fork&#xff08;&#xff09;之前ffush&#xff08;&#xff09;&#xff08;c语言的接口&#xff0c;刷新缓冲区&#xff09;fflush(stdout)&#xff0c;就不会有重复 缓冲区的…

公网远程连接Redis数据库详解

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 前言 洁洁的个人主页 我就问你有没有发挥&#xff0…

动态loading中转页

动态loading中转页 template <div class"loading"><div class"wavy"><!-- --i是自定义属性&#xff0c;可通过var函数调用 --><span style"--i: 1">登</span><span style"--i: 2">录</span>…

银行数据分析师面试题

回答&#xff1a; 1.自我介绍&#xff1a; "大家好&#xff0c;我是XXX&#xff0c;一名数据分析师。我有着对数据的热爱和深入的了解&#xff0c; 希望能够利用我的技能和知识为企业解决问题、做出有效的决策。 在过去的X年里&#xff0c;我一直从事数据分析相关的工作…

【福建事业单位-公基-法】02国家基本制度、公民的基本权利和义务 国家机构

【福建事业单位-公基-法】02国家基本制度 一、国家基本制度1.1 自然资源归属1.2 选举制度1.3 民族区域自治制度总结 二、公民的基本权利和义务1.1 权力1.2 义务总结 三、国家机构3.1 全国人民代表大会3.2全国人民代表大会常务委员会3.3 国家主席3.4国务院3.5监察委3.6 人民法院…

终于找到了这款最好的文献下载网站

在我们文献资源匮乏时&#xff0c;查找下载文献是件非常困难的事。在网上搜索了许多文献下载网站&#xff0c;不是文献资源太少&#xff0c;就是性价比太低&#xff0c;经过筛检比对终于找到了这款文献资源既丰富&#xff0c;又经济适用的文献下载网站。 这款文献下载网站就是…

6.Web后端开发【SpringBoot入门】

文章目录 1 SpringBoot快速入门1.1 Web分析 2. HTTP协议2.1 HTTP-概述2.1.1 介绍2.2.2 特点 2.2 HTTP-请求协议2.3 HTTP-响应协议2.3.1 格式介绍2.3.2 响应状态码 常见的相应状态码 3 WEB服务器3.1 服务器概述 1 SpringBoot快速入门 Spring的官网Spring Boot 可以帮助我们非常…

根据源码,模拟实现 RabbitMQ - 实现消息持久化,统一硬盘操作(3)

目录 一、实现消息持久化 1.1、消息的存储设定 1.1.1、存储方式 1.1.2、存储格式约定 1.1.3、queue_data.txt 文件内容 1.1.4、queue_stat.txt 文件内容 1.2、实现 MessageFileManager 类 1.2.1、设计目录结构和文件格式 1.2.2、实现消息的写入 1.2.3、实现消息的删除…