【雕爷学编程】Arduino动手做(181)---Maixduino AI开发板

news2024/12/30 2:19:43

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验一百八十一:Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装

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

知识点:勘智K210
2018年9月6日,嘉楠科技推出自主设计研发的全球首款基于RISC-V的量产商用边缘智能计算芯片勘智K210。该芯片依托于完全自主研发的AI神经网络加速器KPU,具备自主IP、视听兼具与可编程能力三大特点,能够充分适配多个业务场景的需求。

作为嘉楠科技自主研发的边缘侧AI芯片,勘智K210兼具高能耗比和灵活性。在算力方面,勘智K210可在0.3W的条件下提供1TOP的算力支持,充分适配在多数业务场景中低功耗约束下的算力需求。在芯片集成度方面,勘智K210采用视听一体化设计。在机器视觉上,芯片基于自主研发的神经网络加速器KPU,可完成基于神经网络的图像分类任务,进行人脸识别与检测,以及实时获被检测目标的分类。在听觉能力上,芯片自带APU语音处理单元,最高可支持8路音频数据及16个方向,无需占用CPU即可实现声源定向、声场成像、波束形成、语音识别与唤醒等功能。在算法定制化方面,勘智K210在可编程能力上呈现出更高的灵活性。首先,相比ARM等架构,勘智K210采用RISC-V架构,拥有更强的可定制化能力,便于开发者根据具体应用场景定制算法。其次,芯片搭载FPIOA现场可编程IO阵列,支持TensorFlow、Keras、Darknet、PaddlePaddle和Caffe等主流AI编程框架,以及全面的开发文档,对开发者十分友好。此外,芯片内置64位双核处理器架构,分为计算核与应用核,能够为开发者提供足以应对复杂业务场景的计算资源。

在这里插入图片描述

一颗芯片就可以实现声源定向、声场成像、波束形成、语音唤醒、语音识别等机器听觉功能。嘉楠耘智Kendryte是一款可用在智能家居、工业自动化、教育、农业、医疗等多领域终端设备的人工智能芯片,应用范围十分广泛。

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

Kendryte K210 是集成机器视觉与机器听觉能力的系统级芯片 (SoC)。使用台积电 (TSMC) 超低功耗的 28 纳米先进制程,具有双核 64 位处理器,拥有较好的功耗性能,稳定性与可靠性。该方案力求零门槛开发,可在最短时效部署于用户的产品中,赋予产品人工智能。Kendryte K210 定位于 AI 与 IoT 市场的 SoC,同时是使用非常方便的 MCU。Kendryte 中文含义为勘智,而勘智取自勘物探智。这颗芯片主要应用领域为物联网领域,在物联网领域进行开发,因此为勘物;这颗芯片主要提供的是人工智能解决方案,在人工智能领域探索,因此为探智。
• 具备机器视觉能力
• 具备机器听觉能力
• 更好的低功耗视觉处理速度与准确率
• 具备卷积人工神经网络硬件加速器 KPU,可高性能进行卷积人工神经网络运算
• TSMC 28nm 先进制程,温度范围-40°C 到 125°C,稳定可靠
• 支持固件加密,难以使用普通方法破解
• 独特的可编程 IO 阵列,使产品设计更加灵活
• 低电压,与相同处理能力的系统相比具有更低功耗
• 3.3V/1.8V 双电压支持,无需电平转换,节约成本

AI 解决方案
1.机器视觉
Kendryte K210 具备机器视觉能力,是零门槛机器视觉嵌入式解决方案。它可以在低功耗情况下进行卷积神经网络计算。
该芯片可以实现以下机器视觉能力:
• 基于卷积神经网络的一般目标检测
• 基于卷积神经网络的图像分类任务
• 人脸检测和人脸识别
• 实时获取被检测目标的大小与坐标
• 实时获取被检测目标的种类

2.机器听觉
Kendryte K210 具备机器听觉能力。芯片上自带高性能麦克风阵列音频处理器,可以进行实时声源定向与波束形成。
该芯片可以实现以下机器听觉能力:
• 声源定向
• 声场成像
• 波束形成
• 语音唤醒
• 语音识别

  1. 视觉/听觉混合解决方案
    Kendryte K210 可结合机器视觉和机器听觉能力,提供更强大的功能。一方面,在应用中既可以通过声源定位和声场成像辅助机器视觉对目标的跟踪,又可以通过一般目标检测获得目标的方位后辅助机器听觉对该方位进行波束形成。另一方面,可以通过摄像头传来的图像获得人的方向后,使得麦克风阵列通过波束形成指向该人。同时也可以根据麦克风阵列确定一个说话人的方向,转动摄像头指向该人。

在这里插入图片描述

勘智K210系统架构
K210 包含 RISC-V 64 位双核 CPU,每个核心内置独立 FPU. K210 的核心功能是机器视觉与听觉,其包含用于计算卷积人工神经网络的 KPU 与用于处理麦克风阵列输入的 APU. 同时 K210 具备快速傅里叶变换加速器,可以进行高性能复数 FFT 计算。因此对于大多数机器学习算法,K210 具备高性能处理能力。K210 内嵌 AES 与 SHA256 算法加速器,为用户提供基本安全功能。K210 拥有高性能、低功耗的 SRAM,以及功能强大的 DMA,在数据吞吐能力方面性能优异。K210 具备丰富的外设单元,分别是:DVP、JTAG、OTP、FPIOA、GPIO、UART、SPI、RTC、I²S、I²C、WDT、Timer 与 PWM,可满足海量应用场景。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RISC-V
RISC-V(读作“RISC-FIVE”)是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),V表示为第五代RISC(精简指令集计算机),表示此前已经四代RISC处理器原型芯片。每一代RISC处理器都是在同一人带领下完成,那就是加州大学伯克利分校的David A. Patterson教授。与大多数ISA相反,RISC-V ISA可以免费地用于所有希望的设备中,允许任何人设计、制造和销售RISC-V芯片和软件。图1展示了此前的四代RISC处理器原型芯片。它虽然不是第一个开源的的指令集(ISA),但它很重要,因为它第一个被设计成可以根据具体场景可以选择适合的指令集的指令集架构。基于RISC-V指令集架构可以设计服务器CPU,家用电器cpu,工控cpu和用在比指头小的传感器中的cpu。

与大多数指令集相比,RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。虽然这不是第一个开源指令集,但它具有重要意义,因为其设计使其适用于现代计算设备(如仓库规模云计算机、高端移动电话和微小嵌入式系统)。设计者考虑到了这些用途中的性能与功率效率。该指令集还具有众多支持的软件,这解决了新指令集通常的弱点。该项目2010年始于加州大学伯克利分校,但许多贡献者是该大学以外的志愿者和行业工作者。RISC-V指令集的设计考虑了小型、快速、低功耗的现实情况来实做,但并没有对特定的微架构做过度的设计。截至2017年5月,RISC-V已经确立了版本2.22的用户空间的指令集(userspace ISA),而特权指令集(privileged ISA)也处在草案版本1.10。

在这里插入图片描述
RISC-V主要特色
1、 完全开源
对指令集使用,RISC-V基金会不收取高额的授权费。开源采用宽松的BSD协议,企业完全自由免费使用,同时也容许企业添加自有指令集拓展而不必开放共享以实现差异化发展。

2 、架构简单
RISC-V架构秉承简单的设计哲学。体现为:
在处理器领域,主流的架构为x86与ARM架构。x86与ARM架构的发展的过程也伴随了现代处理器架构技术的不断发展成熟,但作为商用的架构,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义,导致其指令数目多,指令冗余严重,文档数量庞大,所以要在这些架构上开发新的操作系统或者直接开发应用门槛很高。而RISC-V架构则能完全抛弃包袱,借助计算机体系结构经过多年的发展已经成为比较成熟的技术的优势,从轻上路。RISC-V基础指令集则只有40多条,加上其他的模块化扩展指令总共几十条指令。 RISC-V的规范文档仅有145页,而“特权架构文档”的篇幅也仅为91页。

3、 易于移植*nix
现代操作系统都做了特权级指令和用户级指令的分离,特权指令只能操作系统调用,而用户级指令才能在用户模式调用,保障操作系统的稳定。RISC-V提供了特权级指令和用户级指令,同时提供了详细的RISC-V特权级指令规范和RISC-V用户级指令规范的详细信息,使开发者能非常方便的移植linux和unix系统到RISC-V平台。

4 、模块化设计
RISC-V架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用场景。用户能够灵活选择不同的模块组合,来实现自己定制化设备的需要,比如针对于小面积低功耗嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如RV32IMFDC的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。

5 、完整的工具链
对于设计CPU来说,工具链是软件开发人员和cpu交互的窗口,没有工具链,对软件开发人员开发软件要求很高,甚至软件开发者无法让cpu工作起来。在cpu设计中,工具链的开发是一个需要巨大工作量的工作。如果用RISC-V来设计芯片,芯片设计公司不再担心工具链问题,只需专注于芯片设计,RISC-V社区已经提供了完整的工具链,并且RISC-V基金会持续维护该工具链。当前RISC-V的支持已经合并到主要的工具中,比如编译工具链gcc, 仿真工具qemu等

6 、开源实现
BOOM: Christopher Celio的RV64乱序处理器实现。Chisel, BSD Licensed。[GitHub][Doc]
BottleRocket: RV32IMC微处理器。Chisel, Apache Licensed。 [GitHub]
bwitherspoon: RV32微处理器。SystemVerilog, ISC Licensed。[GitHub]
Clarvi: 剑桥大学教学用RISC-V处理器。SystemVerilog, BSD Licensed。[GitHub]
F32: 针对FPGA的RV32微处理器,VHDL,BSD Licensed。[GitHub]
GRVI: Gray Research LLC. 针对FPGA优化的RV32微处理器,commercial licensed。[Web]
Hummingbird E200. 二级流水线,目标替代Cortex-M0/8051, Verilog, Apache 2.0 licensed。[GitHub]
invicta: 一级流水线的RV32微处理器。Verilog,BSD Licensed。[GitHub]
Kamikaze: RV32微处理器。Verilog,MIT Liencensed。[GitHub]
KCP53000: Samuel A. Falvo II的RV64处理器实现。Verilog, MPL Licensed。[GitHub]
nanorv32: 2机流水线的RV32实现。Verilog, GPLv2 Licensed。[GitHub]
OpenV: 支持RV32的开源微处理器,Verilog,MIT Licensed,OnChipUIS,来源于哥伦比亚的Universidad Industrial de Santander。[GitHub]
ORCA: 支持RV32的开源微处理器,VHDL,BSD Licensed,VectorBlox。[Github]
PicoRV32: Clifford Wolf设计的(针对FPGA)RV32微处理器,Verilog,ISC Licensed。[GitHub]
Potato: 针对FPGA的RV32微处理器。VHDL,BSD Licensed。[GitHub]
RI5CY:支持RV32的开源微处理器
PULPino: SystemVerilog,Solderpad Licensed, 来源于苏黎世理工和博洛尼亚大学的PULP项目。[GitHub][Web]
River: GNSS Senor Ltd.基于Rocket架构开发的RV64处理器。VHDL, BSD Licensed。[GitHub]
Rocket: 支持RV64/32的开源处理器
Rocket-Chip: Chisel,BSD Licensed, Free chips project, UC Berkeley分离的开源工程。[GitHub]
Freedom: Chisel,Apache Licensed, SiFive, UC Berkeley分离的初创企业。[GitHub][Web]
lowRISC:Chisel+SystemVerilog,Solderpad Licensed, 从剑桥大学发起的非盈利组织。[GitHub][Web]
RoCC: the Rocket customized coprocessor interface 和Rocket处理器紧密互联的的协处理器接口。[BSG]
RV12: RoaLogic的RV32微处理器。Verilog, RoaLogic non-commercial Licensed。[GitHub]
SCR1: Syntacore的RV32开源微处理器。SystemVerilog,Solerpad Licensed。[GitHub]
SHAKTI:印度IIT-Madras的RISC-V处理器系列,Bluespec, BSD Licensed。[Bitbucket]
Sodor: 教学用的RISC-V处理器。Chisel, BSD Licensed。[GitHub]
uRV: 针对FPGA的RV32微处理器。Verilog,LGPLv3 Licensed.[ohwr]
VexRiscv: 用SpinalHDL编写的针对FPGA的RV32微处理器。SpinalHDL, MIT Licensed。[GitHub]
YARVI: Tommy Thorn设计的RV32I微处理器,Verilog,GPL2v Licensed。[GitHub]

6 、成功的流片案例
已经有机构和商业公司流片的案例。可关注RISC-V社区了解具体信息。

7 、社区贡献
完整的工具链维护,大量的开源项目。risc-v的google讨论组(名称:RISC-V ISA Dev)吸引各地自愿者参与讨论来不断改进risc-v架构。

在这里插入图片描述

RISC-V指令集正式因为伯克利大学想开发一款CPU时,要么是一些老旧的架构,要么收费昂贵,芯片设计领域亟需一个开源的指令集。神说要有光,就有了光,神说要有空气,就有了空气,神说要有好的开源指令集,于是就有了RISC-V,没有好的轮子就造个轮子。RISC-V基金会就如W3C,RISC-V指令集就如HTML5,HTML5掀起了web领域的一场革命,RISC-V也将带来芯片领域的一场革命。

在这里插入图片描述
RISC-V产业生态正进入快速发展期。加州大学伯克利分校在2015年成立非盈利组织RISC-V基金会,该基金会旨在聚合全球创新力量共同构建开放、合作的软硬件社区,打造RISC-V生态系统。三年多来,谷歌、高通、IBM、英伟达、NXP、西部数据、Microsemi、中科院计算所、麻省理工学院、华盛顿大学、英国宇航系统公司等200多个企业和研究机构先后加入了RISC-V基金会。

在这里插入图片描述
RISC-V 指令特点
1 设计哲学-简单就是美
大道至简,在IC设计的实际工作中,最简洁的设计往往是最可靠的,在大多数的项目实践中一次次的得到检验。
IC设计的工作性质非常特殊,其最终的产出是芯片,而一款芯片的设计和制造周期均很长,无法像软件代码那样轻易的升级和打补丁,每一次芯片的改版到交付都需要几个月的周期。不仅如此,芯片的一次制造成本费用高昂,从几十万美金到百千万美金不等。这些特性都决定了IC设计的试错成本极为高昂,因此能够有效的降低错误的发生就显得非常的重要。
1.1 无病一身轻——架构的篇幅
后发优势,RISC-V设计汲取X86和ARM架构中的经验,前人踩过的坑不用再犯,同时无需向下兼容老旧的设计和已经过时的指令。想想去看一本架构文档,里面一大半的篇幅都在讲过时的指令和设计,是不是感觉宝贵的时间都被浪费了。
在处理器领域,目前主流的架构为x86与ARM架构。经过几十年的发展,现代的x86与ARM架构的架构文档长达几百数千页。打印出来能有半个桌子高,可真是“著作等身”。之所以现代x86与ARM架构的文档长达数千页,且版本众多,一个主要的原因是因为其架构的发展的过程也伴随了现代处理器架构技术的不断发展成熟。并且作为商用的架构,为了能够保持架构的向后兼容性,其不得不保留许多过时的定义,或者在定义新的架构部分时为了能够将就已经存在的技术部分而显得非常的别扭。久而久之就变得极为冗长。
而现在才推出的RISC-V架构,则具备了后发优势,由于计算机体系结构经过多年的发展已经成为比较成熟的技术,多年来在不断成熟的过程中暴露的问题都已经被研究透彻,因此新的RISC-V架构能够加以规避,并且没有背负向后兼容的历史包袱,可以说是无病一身轻。
目前的“RISC-V架构文档”分为“指令集文档”(riscv-spec-v2.2.pdf)和“特权架构文档”(riscv-privileged-v1.10.pdf)。“指令集文档”的篇幅为145页,而“特权架构文档”的篇幅也仅为91页。熟悉体系结构的工程师仅需一至两天便可将其通读,虽然“RISC-V的架构文档”还在不断地丰富,但是相比“x86的架构文档”与“ARM的架构文档”,RISC-V的篇幅可以说是极其短小精悍。
1.2 能屈能伸——模块化的指令集
RISC-V架构相比其他成熟的商业架构的最大一个不同还在于它是一个模块化的架构。因此,RISC-V架构不仅短小精悍,而且其不同的部分还能以模块化的方式组织在一起,从而试图通过一套统一的架构满足各种不同的应用。
这种模块化是x86与ARM架构所不具备的。以ARM的架构为例,ARM的架构分为A、R和M三个系列,分别针对于Application(应用操作系统)、Real-Time(实时)和Embedded(嵌入式)三个领域,彼此之间并不兼容。
但是模块化的RISC-V架构能够使得用户能够灵活选择不同的模块组合,以满足不同的应用场景,可以说是“老少咸宜”。譬如针对于小面积低功耗嵌入式场景,用户可以选择RV32IC组合的指令集,仅使用Machine Mode(机器模式);而高性能应用操作系统场景则可以选择譬如RV32IMFDC的指令集,使用Machine Mode(机器模式)与User Mode(用户模式)两种模式。而他们共同的部分则可以相互兼容。
1.3 浓缩的都是精华——指令的数量
短小精悍的架构以及模块化的哲学,使得RISC-V架构的指令数目非常的简洁。基本的RISC-V指令数目仅有40多条,加上其他的模块化扩展指令总共几十条指令。

在这里插入图片描述
勘智K210成支持RISC-V NOMMU范本
如果谈及嵌入式领域,RISC-V或许是你绝对绕不过的一个知识点。虽然ARM依旧是移动端的霸主,但RISC-V被外界赋予了太多意义,架构本身适合于颇具前景的嵌入式开发,其免费开源的特性也在当前的国际环境中备受关注,俨然成为移动端领域的新晋网红。 RISC-V大势所趋,市场上也涌现了一些基于该架构的芯片与开发模组,例如很多开发者正在使用的勘智K210。去年底,名为Jean-Luc的资深工程师分享了将Linux5.1系统部署在K210处理器上的工作。同时,他也在文中引用了西部数据的分享,勘智K210被作为支持RISC-V NOMMU的示范列入其中。

在这里插入图片描述

在AI领域,神经网络属于计算密集型场景,人脸识别等算法往往会受到边缘侧应用场景的功耗限制。嘉楠表示ARM在实际计算的过程中往往会伴随大量的能耗,并不是非常经济的架构。公开资料显示,嘉楠是RISC-V联盟中前五家使用RISC-V架构的厂商之一。在勘智系列AI芯片的研发中,嘉楠使用了RISC-V RocketChip,减少了大量相关的工作量,也节省了大量的研发人力成本,以及IP授权的成本。 目前,勘智K210及其开发模组受到不少开发者的青睐,吸引了来自百度、阿里等国内顶尖AI团队的目光。例如嘉楠为百度AI开发平台PaddlePaddle定制开发模组PaddlePi-K210,打通了PaddlePaddle 模型设备端部署解决方案。开发人员不需要硬件更改,使用公版模具就可以一直做到样品阶段。在前沿项目的探索上,勘智K210兼容阿里最新TinyML算法模型,是可用于探索TinyML科研项目的RV平台。

Maixduino AI开发板 k210 RISC-V AI+lOT ESP32视觉听觉开发套装

在这里插入图片描述
在这里插入图片描述
Maixduino
基于MAIX模块,是用于AI + IoT应用的RISC-V 64开发板。与其他Sipeed MAIX dev不同。主板Maixduino采用Arduino Uno外形设计,板载ESP32模块和MAIX AI模块。MAIX是Sipeed专门设计的产品系列,专为在边缘运行AI而设计。将AI模型从云端移动到网络边缘的设备,在这些设备上运行速度更快,成本更低,隐私性更高。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
CPU:带FPU的双核64位RISC-V;400MHz神经网络处理器
QVGA@60FPS/VGA@30FPS图像识别
板载ESP32模块支持2.4G 802.11.b/g/n和蓝牙4.2
Arduino Uno外形,Arduino兼容接口
板载全向I[size=75%]2S数字输出MEMS麦克风
用于DVP相机的24P 0.5mm FPC连接器
8位MCU LCD 24P 0.5mm FPC连接器
基于卷积神经网络的机器视觉
在这里插入图片描述
支持自弹式micro SD卡支架
重置和启动按钮;3W DAC+PA音频输出
连接USB Type-C电缆以完成下载
用于机器听觉的高性能麦克风阵列处理器
支持MaixPy IDE、Arduino IDE、OpenMV IDE和PlatformIO IDE
支持Tiny-Yolo、Mobilenet和TensorFlow Lite,用于深度学习
在这里插入图片描述

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

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

相关文章

091.粉刷房子

一、题目 剑指 Offer II 091. 粉刷房子 - 力扣&#xff08;LeetCode&#xff09; 二、代码 class Solution { public:int minCost(vector<vector<int>>& costs) {int row costs.size();int col costs[0].size();if (row 1)return min(min(costs[0][0], cos…

Liunx开发工具

Liunx开发工具 1.Linux编辑器-vim使用1.1vim的基本概念1.2vim的基本操作1.3命令模式命令集1.3.1光标定位1.3.2光标移动1.3.3文本复制1.3.4文本操作 1.4插入模式命令集1.5底行模式命令集 2.vim配置3.sudo配置4.Linux编辑器-gcc/g使用4.1背景知识4.2gcc如何操作 5.函数库5.1函数库…

ES6 - generator和async函数

一、前言 ES6 诞生以前&#xff0c;异步编程的方法&#xff0c;大概有下面四种。 回调函数事件监听发布/订阅Promise 对象 回调函数本身并没有问题&#xff0c;它的问题出现在多个回调函数嵌套会造成回调地狱&#xff0c;非常不利于代码的维护和逻辑混乱等问题&#xff1b; …

数论分块学习笔记

准备开始复习莫比乌斯反演&#xff0c;杜教筛这一部分&#xff0c;先复习一下数论分块 0.随便说说 数论分块可以计算如下形式的式子 ∑ i 1 n f ( i ) g ( ⌊ n i ⌋ ) \sum_{i1}^{n}f(i)g(\lfloor\frac{n}{i}\rfloor) ∑i1n​f(i)g(⌊in​⌋)。 利用的原理是 ⌊ n i ⌋ \lf…

StarRocks数据库部署全记录(保姆式帮助你初次体验StarRocks)

因业务需要&#xff0c;特此了解StarRocks产品和部署。 接触过程中发现指导资料很稀少&#xff0c;本人将结合官方的手册其他开源博主指导&#xff0c;将第一次接触到的概念和部署流程梳理&#xff0c;得出本文。 已有的资源中对细节介绍欠缺&#xff0c;导致我本人整个过程中花…

fifo读写的数据个数

fifo IP核设置读写个数 如果不勾选精确值&#xff0c;则统计的当前写入和待读出的数据为估计值&#xff0c;可能会相差2个左右。且fifo设计的wr_data_count. wr_data_count&#xff1a;当前的fifo中剩余已经写入的数据。 rd_data_count&#xff1a;当前的fifo中剩余可以读出…

Codeforces Round 855 (Div. 3) E题题解

文章目录 [ Unforgivable Curse (hard version)](https://codeforces.com/contest/1800/problem/E2)问题建模问题分析方法1分析性质1.分析操作对元素位置的影响2.分析可以使用操作的元素可以与相邻元素交换位置的作用代码 方法2通过DFS得到相互可以交换位置的字符集合代码 方法…

vue3和typescript_组件

1 components下新建myComponent.vue 2 页面中引入组件&#xff0c;传入值&#xff0c;并且绑定事件函数。 3

原型链污染,nodejs逃逸例子

文章目录 原型链污染原型链污染原理原型链污染小例子 原型链污染题目解析第一题第二题 Nodejs沙箱逃逸方法一方法二 原型链污染 原型链污染原理 原型链 function test(){this.a test; } b new test;可以看到b在实例化为test对象以后&#xff0c;就可以输出test类中的属性a…

关于Linux启动后eth0网卡起不来的问题

1./etc/udev/rules.d/70-persistent-net.rules 先到这个文件中 将eth0注掉 ## 同时记录ADDR 2.mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth2 注意这个eth2, 要和第一步的号码对应 同时进入文件,将设备和ADDR修改 3.重启网络 servi…

FTP文件传输协议

FTP文件传输协议 介绍 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中&#xff0c;是一项基本的网络应用&#xff0c;即文件传送文件传输协议(File Transfer Protocol)是因特网上使用得最广泛的文件传输协议 FTP提供交互式访问&#xff0c;允许客户指明文件…

flask中写一个基础的sqlHelper类

写一个SQLHelper类&#xff1a; from flask_sqlalchemy import SQLAlchemydb SQLAlchemy()class SQLHelper:staticmethoddef add(record):db.session.add(record)return SQLHelper.session_commit()staticmethoddef add_all(records):db.session.add_all(records)return SQLH…

FFmepg视频解码

1 前言 上一篇文章<FFmpeg下载安装及Windows开发环境设置>介绍了FFmpeg的下载安装及环境配置&#xff0c;本文介绍最简单的FFmpeg视频解码示例。 2 视频解码过程 本文只讨论视频解码。 FFmpeg视频解码的过程比较简单&#xff0c;实际就4步&#xff1a; 打开媒体流获取…

Meta-Transformer:基于Transformer的多模态感知,融合Token化与共享编码

论文标题&#xff1a;Meta-Transformer: A Unified Framework for Multimodal Learning 论文地址&#xff1a;https://arxiv.org/pdf/2307.10802.pdf 这里写目录标题 引言基于Transformer的多模态发展Meta-Transformer框架预备知识数据到序列如何分词&#xff08;Data-to-Seq…

Clion一个项目内多个main

创建单个main文件时 这样的文件不属于任何项目&#xff0c;每个文件都有自己的exe

全网最强,Jmeter接口测试-SHA256加密接口测试(详细实战)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 接口文档如下&…

【福建事业单位-语言理解】04 逻辑填空-病句-歧义

【福建事业单位-语言理解】04 逻辑填空-病句-歧义 一、逻辑填空1.1 词的辨析1.1.1词义侧重1.1.2固定搭配1.1.3程度轻重1.1.4 感情色彩总结 1.2语境分析&#xff08;关联关系&#xff09;1.2.1 转折1.2.2递进1.2.3并列1.2.4因果关系 1.3语境分析&#xff08;对应关系&#xff09…

中国工商银行长春分行 聚焦融合互促 让机关党建更有活力

党的十八大以来&#xff0c;中国工商银行长春分行党委认真落实中央部署&#xff0c;立足金融工作政治性、人民性的基本原则&#xff0c;深刻把握机关党建的要点、着力破解难点、大力打造亮点&#xff0c;围绕“党建”模式&#xff0c;将党建融入经营管理各个方面&#xff0c;使…

SSD 之乱七八糟的概念

1. 性能指标有哪些&#xff1f;分别是什么意思&#xff1f; 硬盘性能指标一般包括 IOPS&#xff08;反映的是随机读写性能&#xff09;、吞吐量&#xff08;也称为带宽&#xff0c;反映的是顺序读写性能&#xff09;、Response Time / Latency&#xff08;响应时间 / 时延&…

dev控件gridControl,gridview中添加合计

需求&#xff1a;在合并结账查询中&#xff0c;双击每一条结账出现这次结账对应的结算明细&#xff1a; 弹出的页面包括&#xff1a;结算日期&#xff0c;ID&#xff0c;姓名&#xff0c;费别&#xff0c;预交金收入&#xff0c;结算金额&#xff0c;收据号&#xff0c;合计&a…