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

OrangePi AIpro学习4 —— 昇腾AI模型推理 C++版

目录

一、ATC模型转换

1.1 模型

1.2 ATC工具

1.3 实操模型转换

1.4 使用ATC工具时的一些关键注意事项

1.5 ATC模型转换命令举例

二、运行昇腾AI模型应用样仓程序

2.1 程序目录

2.2 下载模型和模型转换

2.3 下载图片和编译程序

2.4 解决报错

2.5 运行程序

三、运行其他程序

3.1 sampleCarColor

3.2 sampleCrowdCounting

3.3 sampleLlama

3.4 sampleResnetAIPP

3.5 sampleResnetDVPP

3.6 sampleResnetRtsp

3.7 sampleYOLOV7MultiInput

3.8 sampleYOLOV7NMSONNX


前言

昇腾AI模型应用,解释这个词汇就是,别人现在训练好了一个模型,我们利用这个模型对原始数据进行识别、预测。例如别人训练好了识别动物种类的模型,我们将一张图片传入进入,这个模型就能给我们传出图片的属于狗、猫还是兔子

一、ATC模型转换

第一章是讲理论的,看的浑身难受的小伙伴可以先从第二章开始看

1.1 模型

首先经过TensorFlow、Pytrouch训练之后会得到一个模型,这个模型类似于一个函数,有输出和输入。

我们输入图片,动物分类模型(函数)会输出一个动物类别给我们,我们通过这个动物类别就能找到图片是属于哪一个动物

我们可以下载一个.onnx后缀的模型文件,进入网站中查看:

Netron

模型要求输入一个下面这样格式的Tenser(矩阵)。下面0011位置或其他位置里面的数据就是该位置图片像素值,模型要求这个像素值的类型是float32类型的数据

模型跟函数不同的是,模型的输入输出都是矩阵,方便NPU运算。下面是模型输出的Tenser(矩阵):

1.2 ATC工具

ATC工具用于将Caffe、TensorFlow、ONNX、MindSpore深度学习框架训练出来的模型转换为昇腾生态能看懂的模型格式

(1) Caffe生成 .om需要两个模型文件:.prototxt (Caffe网络模型的网络结构)、.caffemodel (Caffe网络模型的权重文件);

(2) TensorFlow生成 .om需要模型文件 .pb (包含计算图和权重),如果是 .index和 .meta两个文件,则需要使用TensorFlow的私有api来把这两个文件合并成 .pb。

(3) ONNX代表的是pytorch生成的模型。pytorch能训练出 .pth和 .tar,pytorch可以用 .pth和 .tar来生成 .onnx,这是ATC需要的格式

(4) 华为自家的MindSpore框架训练出来的模型是 .air后缀的文件,另一种训练出来的格式后缀为 .mindir,.air可以转成 .om做离线推理 .mindir只能使用MindSpore做在线推理

1.3 实操模型转换

1. 软件安装

MindStudio下载:

MindStudio全流程开发工具链-特性-课程-案例-昇腾社区 (hiascend.com)

解压 

启动

进入界面:

进入界面后,远程工具好像是有点不堪重负,于是换成使用下面的工具进行远程:

【远程桌面】nomachine下载安装使用教程、zerotier下载安装使用教程超详细-CSDN博客

但是我发现两个工具都很差劲,有能接屏幕的小伙伴可以接一下屏幕看一下,或者在自己的电脑上安装这个软件,模型转换完成后上传到虚拟机中

这里学习的部分可以去看老师的视频了:

昇腾CANN系列教程——ATC模型转换_哔哩哔哩_bilibili

2. 这是我做的笔记:

打开软件后点击下面的选项

弹出了下面的小窗口,这个小窗口就可以配置模型转换的各种参数。首先是模型文件.prototxt和.caffemodel,模型文件可以去这里下载:ResNet-50 prototxt_resnet50 prototxt-CSDN博客

模型名就是模型文件去除后缀名后的名字。香橙派昇腾芯片的SoC Version是Ascend310B4。下面的三个输入格式是根据模型要求的输入来配置的,具体怎么看模型要求输入格式,我后面模型训练的课程会再介绍

点击下一步后。下图是高级配置,如果点击了,后续会在模型上就把数据预处理做了

 下图是软件根据你前面的配置,生成出来的执行语句,这个语句会再Linux中执行,实现模型转换

点击Finish开始执行,程序开始运行,得到下面结果: 

经过上面这么一通操作,在/home/ascend/modelzoo/resnet50/Ascend310目录下生成了一个resnet50.om的模型文件,这个就是昇腾生态需要的模型文件

1.4 使用ATC工具时的一些关键注意事项

 ● 支持原始框架类型为Caffe、TensorFlow、MindSpere、QNNX的模型转换;

(1) 当原始框架类型为Caffe、MindSpore、ONNX时,输入数据类型为FP32 (单精度浮点)、FP16 (半精度浮点) (通过设置入参 —— input_fp16_nodes实现,MindSpore框架不支持该参数)、UINT8 (通过配置数据预处理实现);

(2) 当原始框架类型为TensorFlow时,输入数据类型为FP16、FP32、 UINT8、 INT32、BOOL (原始框架类型为TensorFlow时,不支持输入输出数据类型为INT64,需要用户自行将INT64的数据类型修改为INT32类型)。

● 当原始框架类型为Caffe时,模型文件 (.prototxt) 和权重文件 (.caffemodel) 的op name、op type必须保持名称一致 (包括大小写)。

● 当原始框架类型为TensorFlow时,只支持FrozenGraphDef格式。

● 不支持动态shape的输入,例如:NHWC输入为[?,?,?,3]多个维度可任意指定数值。模型转换时需指定固定数值

● 对于Caffe框架网络模型:输入数据最大支持四维,转维算子 (reshape、expanddim等) 不能输出五维。

● 模型中的所有层算子除const (常量) 算子外,输入和输出需要满足dim!=0 (维度!=0)。

● 只支持算子规格参考中的算子,并需满足算子限制条件。

1.5 ATC模型转换命令举例

--model

原始网络模型、网络结构

--weiget

权重文件位置

--output

模型转换完成之后,输出到哪里去

--soc_version

模型转换完成之后,是要跑在那一种型号处理器上

--input_shape

指定输入形状,输入节点的名字:输入的形状

--framework

原始网络模型框架类型,0表示Caffe框架

上面四个模型转换过程最大的不同的地方是下图红色的部分:

二、运行昇腾AI模型应用样仓程序

2.1 程序目录

inference/modelInference · Ascend/samples - 码云 - 开源中国 (gitee.com)

下面是以运行sampleResnetQuickStart程序为例子,讲解一下使用样仓程序的流程

2.2 下载模型和模型转换

cd $HOME/samples/inference/modelInference/sampleResnetQuickStart/cpp/model 

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/003_Atc_Models/resnet50/resnet50.onnx

atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224"  --soc_version=Ascend310B4

注意:第三步获取到的昇腾芯片型号,要应用在第四步模型转换过程中的--soc_version=Ascend310B4,这个参数中,一定要修改,否则后面推理的时候会出错

2.3 下载图片和编译程序

cd $HOME/samples/inference/modelInference/sampleResnetQuickStart/cpp/data 

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/aclsample/dog1_1024_683.jpg

cd $HOME/samples/inference/modelInference/sampleResnetQuickStart/cpp/scripts 

bash sample_build.sh

2.4 解决报错

报错内容1:报错找不到opencv2

解决报错:把opencv2拷贝到系统目录下:

mv /usr/include/opencv4/opencv2 /usr/include/opencv2

rm -rf opencv4

报错内容2:找不到ascendcl动态库

解决报错:把ascendcl动态库添加到cmake查找路径中

env发现无输出,使用find查找动态库的位置

然后根据cmake编写的内容修改cmake中的路径,CMAKE中,如果没有定义环境变量就用我们填入的内容,很显然没有定义,所以使用我们刚刚填写的地址

2.5 运行程序

bash sample_run.sh

这个程序成功的给狗狗分类了

三、运行其他程序

运行其他程序和sampleResnetQuickStart类似,下面只说不同的点

3.1 sampleCarColor

问题1

报错和解决方法:

error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope_‘cvloadimage’ was not declared in this scope-CSDN博客

问题2:又提示下面这个错误了:

这次编辑一下启动配置文件:vim ~/.bashrc 

source ~/.bashrc

问题3:程序运行没有结果,经过检查是例程是错的,我正在尝试修改

3.2 sampleCrowdCounting

这个程序的库函数有问题,修改库函数jpegd的这里,如果是Ascend310B4芯片,就让它宽度按照64字节对齐

同时修改resize函数中使用到的_gen_input_pic_desc函数,如下图

3.3 sampleLlama

1. 安装transformers

下载transformers-4.29.2包

wget https://codeload.github.com/huggingface/transformers/zip/refs/tags/v4.29.2

unzip v4.29.2

pip3 install SentencePiece -i https://mirrors.163.com/pypi/simple/

pip install transformers -i https://mirrors.163.com/pypi/simple/

2. 下载数据和模型

cd $HOME/samples/inference/modelInference/sampleLlama

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/llama_weight/llama_weight.zip --no-check-certificate

unzip llama_weight.zip

mkdir data & cd data

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/llama_weight/data.zip --no-check-certificate

unzip data.zip

3. 运行程序

cd $HOME/samples/inference/modelInference/sampleLlama/scripts

export ASCEND_CUSTOM_PATH=/usr/local/Ascend/ascend-toolkit/latest

bash run_llama.sh

4. 这个程序是运行不起来的,原因如下

首先要解决内存不够的问题,整个程序要把模型权重全部读入内存。香橙派最高只有16G版本的,所以16G需要增加4GB swap内存,8G需要增加12GB swap内存,才能把所有权重文件读入内存

其次本程序会调用一个aclnnPromptFlashAttentionV2函数,310B4并不支持这个函数。如何函数上面写了

最后要说明的是,如果要在支持的设备上运行这个程序,除了toolkit工具外,还要安装kernels算子包

3.4 sampleResnetAIPP

● 注意不要使用下面两句话添加环境变量,因为我们前面已经设置好了

export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest
export NPU_HOST_LIB=$DDK_PATH/runtime/lib64/stub

● 报错添加头文件#include <opencv2/imgproc/types_c.h>

python版本代码需要修改一下.sh里面的命令

3.5 sampleResnetDVPP

运行下面python程序的时候提示缺少acllite_imageproc这个包

经过查找,发现acl封装的库函数是在/root/samples/python/common/acllite目录下,将这个目录配置到环境变量中:vim ~/.bashrc

然后保存一下:source ~/.bashrc

3.6 sampleResnetRtsp

1.给程序提供视频流

cd /

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/sampleResnetRtsp/live.2023.05.10.tar.gz --no-check-certificate

tar -zxvf live.2023.05.10.tar.gz

cd ./live

./genMakefiles linux

make -j8

cd /live/testProgs

wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/models/sampleResnetRtsp/test.264 --no-check-certificate

./testOnDemandRTSPServer

让程序能从下面的地址获取视频一帧一帧的内容:

上面的程序视频流一直开着,我们用vscode进入程序执行

3.7 sampleYOLOV7MultiInput

需要安装json解析库:apt install libx11-dev

3.8 sampleYOLOV7NMSONNX

路径不存在,然后需要修改程序中的文件名

这边报错,暂时先不排查原因了(这两天看的头晕,后面有机会再排查一下)

相关文章:

OrangePi AIpro学习4 —— 昇腾AI模型推理 C++版

目录 一、ATC模型转换 1.1 模型 1.2 ATC工具 1.3 实操模型转换 1.4 使用ATC工具时的一些关键注意事项 1.5 ATC模型转换命令举例 二、运行昇腾AI模型应用样仓程序 2.1 程序目录 2.2 下载模型和模型转换 2.3 下载图片和编译程序 2.4 解决报错 2.5 运行程序 三、运行…...

vue js 多组件异步请求解决方案

接口之间异步问题可以采用Promiseasyncawait 链接&#xff1a; https://blog.csdn.net/qq_39816586/article/details/103517416 使用场景&#xff1a; 1.保障用户必须完成自动登录&#xff0c;才调用后续逻辑 2.保障必须完成初始启动&#xff0c;才调用后续逻辑 3.保障先执行on…...

【Android】不同系统版本获取设备MAC地址

【Android】不同系统版本获取设备MAC地址 尝试实现 尝试 在开发过程中&#xff0c;想要获取MAC地址&#xff0c;最开始想到的就是WifiManager&#xff0c;但结果始终返回02:00:00:00:00:00&#xff0c;由于用得是wifi &#xff0c;考虑是不是因为用得网线的原因&#xff0c;但…...

残差网络--NLP上的应用

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;残差网络&#xff08;ResNet&#xff09;同样有着广泛的应用。虽然最初的残差网络设计是为了处理图像任务&#xff0c;但其核心思想也被成功地迁移到了自然语言处理任务中&#xff0c;以解决深层神经网络中的退化问题…...

1章4节:数据可视化, R 语言的静态绘图和 Shiny 的交互可视化演示(更新2024/08/14)

在数据科学的世界中,“一图胜千言”的古老谚语依然适用。数据可视化不仅仅是将数据以图形化的方式展现,更是帮助我们发现数据背后隐藏模式、趋势和异常的强大工具。R语言作为数据科学的主要编程语言之一,以其强大的可视化能力而闻名,许多数据科学家和分析师因此选择了R作为…...

浅谈个人用户如何玩转HTTP代理

今天&#xff0c;准备和大家聊聊我是如何玩转HTTP代理的&#xff0c;希望能给大家带来一些启发和帮助。 犹记得刚开始接触HTTP代理时&#xff0c;我对它还是一无所知。那时我总被各种网络限制所困扰&#xff0c;无法随心所欲地访问我想看的网站。直到HTTP代理的出现&#xff0c…...

动手研发实时口译系统

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...

C#(asp.net)电商后台管理系统-计算机毕业设计源码70015

摘 要 随着互联网技术的不断发展&#xff0c;电商行业也越来越受到人们的关注。为了提高电商行业的管理效率和服务水平&#xff0c;本文提出了一种基于ASP.NET电商后台管理系统的设计与实现方案。 电商管理系统基于VisualStudio开发平台&#xff0c;采用C#编程语言和ASP.NET等技…...

Unity 中创建动画的教程

Unity 动画创建教程 在游戏开发中&#xff0c;生动的动画能够极大地提升玩家的体验。在这篇教程中&#xff0c;我们将一起探索如何在 Unity 中创建动画。 一、准备工作 首先&#xff0c;确保您已经安装了最新版本的 Unity 引擎。创建一个新的 Unity 项目或者打开您现有的项目…...

2024年最全渗透测试学习指南,小白也能轻松hold住!零基础到精通,看完这篇就够了!

可能会有很多人觉得渗透测试门槛很高&#xff0c;学习周期长&#xff0c;似乎只有天赋异禀者方能涉足。实则不然&#xff0c;渗透测试行业虽有其专业门槛&#xff0c;但绝非如外界渲染的那样高不可攀。归根结底&#xff0c;所需的基础不过是扎实的编程语言功底&#xff0c;同时…...

有道云docx转换markdown,导入hugo发布到github page,多平台发布适配

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 有道云导出docx 有道云笔记右上角更多按钮选择【导出为Word】&#xff0c;可以导出docx文档 docx转换markdown 尝试了几个docx转markdown的python库后&…...

如何理解:进程控制

文章目录 前言&#xff1a;进程创建&#xff1a;进程终止&#xff1a;如何终止进程&#xff1f;进程等待非阻塞等待&#xff1a; 总结&#xff1a; 前言&#xff1a; ​ 对于前面的地址空间的学习&#xff0c;我们现在了解到原来所谓变量的地址其实是虚拟地址&#xff0c;该虚…...

工业互联网边缘计算实训室解决方案

一、引言 随着物联网&#xff08;IoT&#xff09;、5G通信技术的快速发展&#xff0c;工业互联网已成为推动制造业转型升级的重要力量。边缘计算作为云计算的延伸和补充&#xff0c;在实时数据分析、降低数据传输延迟、提升处理效率及增强数据安全性方面展现出巨大潜力。在此背…...

Android全面解析之Context机制(一) :初识Android context

什么是Context 回想一下最初学习Android开发的时候&#xff0c;第一用到context是什么时候&#xff1f;如果你跟我一样是通过郭霖的《第一行代码》来入门android&#xff0c;那么一般是Toast。Toast的常规用法是&#xff1a; Toast.makeText(this, "我是toast", To…...

气象百科——气象监测站的介绍

气象监测站是专门用于监测和记录大气环境状态及变化规律的设施。这些站点通过安装各种观测仪器&#xff0c;如温度传感器、湿度传感器、气压传感器、风速风向传感器、雨量传感器以及近年来兴起的雷达水位计等&#xff0c;全方位、多角度地收集大气中的温度、湿度、气压、风速风…...

学懂C++(三十):高级教程——深入解析 C++ Windows API 的多线程支持

引言 在现代应用程序中&#xff0c;多线程编程是实现高性能和高并发任务的关键手段。Windows 操作系统为开发者提供了一套强大的 API&#xff0c;用于创建和管理线程、同步任务&#xff0c;并优化线程性能。本文将深入探讨 C 中 Windows API 的多线程支持&#xff0c;详细介绍线…...

苹果笔记本电脑可以玩steam游戏吗 MacBook支持玩steam游戏吗 在Steam上玩黑神话悟空3A大作 苹果Mac怎么下载steam

游戏是生活的润滑剂&#xff0c;越来越多的用户开始关注Mac平台上可玩的游戏。幸运的是&#xff0c;Steam作为最大的数字发行平台之一&#xff0c;提供了大量适用于Mac操作系统的游戏。无论你是喜欢策略、冒险还是射击类游戏&#xff0c;都能在Steam上找到适合自己Mac设备玩耍的…...

海康摄像头(测温型)桌面客户端开发分享

分享一个自己开发的用于企业特殊场景下温度监控告警的一个桌面应用。 关键功能&#xff1a; 1.支持海康摄像头&#xff1b; 2.支持多路视频预览&#xff0c;多通道画面选择预览&#xff0c;支持视频画面回放与下载&#xff1b; 3.支持自动探测摄像头功能&#xff0c;若具备…...

骑行耳机哪个品牌性价比高?精选五大畅销骑行耳机推荐!

骨传导耳机凭借不入耳佩戴更舒适、健康等特定在短时间内迅速风靡骑行圈&#xff0c;其独特的设计不仅让骑行者在享受音乐的同时保持对周围环境的警觉&#xff0c;还因其非入耳式的佩戴方式&#xff0c;有效避免了长时间骑行对耳朵的压迫与不适。它不仅能够激发骑行时的激情与动…...

libcurl8.9.1 上传json

在postman中 PUT----》body----》raw----》json 结构体定义&#xff1a; #define MAX_ARRAY_SIZE 5*1024*1024struct SMART_DATA_CACHE {char* buf;long dwTotalLen;SMART_DATA_CACHE(){dwTotalLen 0;buf nullptr;while (!buf) {try {buf new char[MAX_ARRAY_SIZE];}c…...

什么是暗水印?企业暗水印如何实施?企业保护利器

“明察秋毫之末&#xff0c;而不见舆薪。” 此言道出了观察之细致入微&#xff0c;却也隐含了信息泄露之隐忧。 在今日之数字时代&#xff0c;信息如潮水般汹涌&#xff0c;而电脑屏幕作为信息展示的重要窗口&#xff0c;其安全性亦成为众人关注的焦点。 当谈及监控电脑屏幕以…...

Qt 系统相关 - 文件

目录 1. 文件概述 2. 输入输出设备类 3. 文件读写类 4. 文件和目录信息类 1. 文件概述 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库&#xff0c;提供了跨平台的文件操作能力。 Qt 提供了很多关于文件的类&#xff0c;通过这些类能够对文件系统进行操作&#x…...

Android Toast居中显示方法二

Android Toast居中显示方法一请看 Android Toast设置居中显示方法一-CSDN博客 下面来讲讲第二种方法&#xff1a; Toast toast Toast.makeText(MainActivity.this, "my toast", Toast.LENGTH_SHORT);LinearLayout.LayoutParams layoutParams new LinearLayout.Lay…...

Vue启动时报异常 ‘error:03000086:digital envelope routines::initialization error‘

问题描述 启动Vue项目时&#xff0c;突发报如下异常&#xff1a; opensslErrorStack: [error:03000086:digital envelope routines::initialization error,error:0308010C:digital envelope routines::unsupported],library: digital envelope routines,reason: unsupported,…...

C#委托—马工教你轻松玩转委托

前言 在C#中有一个小白谈之色变的知识点叫委托&#xff0c;很多学了一两年C#的还不知道委托究竟是什么东西&#xff0c;本文就来帮你彻底解开解惑&#xff0c;从此委托就是小儿科&#xff01; 1、委托的本质 委托也是一种类型&#xff0c;大家知道所有的类型一定对应一种数据…...

当下最强的 AI art 生成模型 Stable Diffusion 最全面介绍

目录 模型生成效果展示&#xff08;prompt 全公开&#xff09; 如何注册 Stable Diffusion 使用 SD&#xff08;dreamstudio.ai &#xff09;的收费标注如何 SD 提供哪些参数可以设置 如何使用种子来改进一张作品 我用 SD 创作的图片著作权如何归属&#xff0c;可以拿来商…...

NPM 使用教程:从入门到精通

NPM 使用教程&#xff1a;从入门到精通 1. 引言 什么是 NPM&#xff1f; NPM (Node Package Manager) 是 JavaScript 的包管理工具&#xff0c;也是世界上最大的开源库生态系统。它帮助开发者轻松地管理项目的依赖、安装和分享包。NPM 与 Node.js 紧密结合&#xff0c;并在开…...

基于ssm+vue+uniapp的停车场小程序的设计与实现

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

C语言典型例题37

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题3.5 按照按照考试成绩的等级输出百分制分数段&#xff0c;A等为85分以上&#xff0c;B等为70~84分&#xff0c;C等为 60~69分&#xff0c;D等在60分以下&#xff0c;成绩的等级从键盘输入 代码&#xff1a; //…...

二自由度机械臂软件系统(三)ros2_control硬件底层插件

ros2_control实现了两个功能&#xff0c;一个是控制算法插件即控制的实现&#xff0c;另一个是底层插件即跟硬件通信的功能。 参考资料&#xff1a;https://zhuanlan.zhihu.com/p/682574842 1、创建功能包 ros2 pkg create --build-type ament_cmake robot_control_test在sr…...

如何网站做镜像/网站关键词优化费用

1.设计思想&#xff1a;先从命令行中输入想要相加的数&#xff0c;将输入的字符串全部转化为int类型的数字&#xff0c;之后设定一个int型的result&#xff0c;将转化完的数字全部相加起来&#xff0c;并将结果保存在result内&#xff0c;最后将result输出出来&#xff0c;得到…...

大良网站建设市场/软文广告100字

目录 一&#xff0c;写在前面 二&#xff0c;栈的定义 1&#xff0c;栈的定义 2&#xff0c;进栈出栈变化形式 三&#xff0c;栈的抽象数据类型 四&#xff0c;栈顺序存储结构及实现 1&#xff0c;栈的顺寻存储结构 2&#xff0c;栈的顺序存储结构——进栈操作 3&…...

网站开发专业术语/seo优化服务

一、引入Toolbar 在介绍ToolBar之前&#xff0c;我们先回忆一下ActionBar。 相信下面这个界面大家都已经烂熟于心了&#xff0c;没错&#xff0c;在我们每次最初创建项目的时候&#xff0c;Android Studio会为我们创建出这样最初始的界面效果&#xff1a;除了一个“HelloWorld”…...

做网站推销手表/抖音推广平台联系方式

Description 在数学上&#xff0c;平面直角坐标系上的点用X轴和Y轴上的两个坐标值唯一确定。现在我们封装一个“Point类”来实现平面上的点的操作。 根据“append.cc”&#xff0c;完成Point类的构造方法和show()方法&#xff0c;输出各Point对象的构造和析构次序。实现showPoi…...

博客网站 做淘宝客/百度云引擎搜索

https://blog.csdn.net/hutiewei2008/article/details/101202807         服务器通过笔记本电脑联网...

同一人可以做几个网站的负责人/百度seo和sem的区别

一、备份单个数据库1、备份命令&#xff1a;mysqldumpMySQL数据库自带的一个很好用的备份命令。是逻辑备份&#xff0c;导出 的是SQL语句。也就是把数据从MySQL库中以逻辑的SQL语句的形式直接输出或生成备份的文件的过程。单实例语法(Syntax):mysqldump -u -p > /path/to/**…...