Day1 ARM基础
【ARM课程认知】
1.ARM课程的作用
承上启下
- 基础授课阶段:c语言、数据结构、linux
- 嵌入式应用层课程:IO、进程线程、网络编程
- 嵌入式底层课程:ARM体系结构、系统移植、linux设备驱动
- c++/QT
2.ARM课程需要掌握的内容
- 自己能够实现简单的汇编编程
- 能够看懂常见的电路原理图
- 掌握软件编程控制硬件的思想
- 了解芯片内部常用外设的工作原理:GPIO、UART、TIMER、IIC、SPI、GIC
- 掌握数据手册读写的方法
3.ARM的学习方法
- 上课好好整理明白硬件的工作原理
- 充分利用硬件环境
【计算机相关理论】
1.计算机的组成
输入设备、输出设备、运算器、控制器、存储器
1.输入设备:将编写好的软件代码以及相关的数据输送到计算机中,转换成计算机能够识别、处理和存储的数据形式 键盘、鼠标、手柄、扫描仪、 2.输出设备:将计算机处理好的数据的结果通过输出设备输出到计算机的外部 显示屏、打印机、音响。。 3.存储器:计算机用于存放数据以及指令的部件。也是计算机实现"程序存储控制"的基础 外部存储器、内存、cache、寄存器 4.控制器(CU):计算机的控制中枢,对机器指令进行译码操作,并且按照译码之后的结果进行相关的控制 5.运算器(ALU):算数逻辑运算单元:根据控制器译码之后的指令和数据,进行算数逻辑运算,并且把运算的结果进行输出

2.程序编译的原理
程序编译的步骤:
- 预处理:将程序中所有以#开头的内容展开到当前文件中 gcc -E 1.c -o 1.i
- 编译:检查语法错误,生成汇编程序 gcc -S 1.i -o 1.s
- 汇编:将汇编程序编译为二进制程序 gcc -c 1.s -o 1.o
- 链接:将程序中用到的一些库链接到程序中,生成二进制可执行文件 gcc 1.o -o a.out
程序编译的原理:
CPU能够识别的唯一的语言是机器语言。一个CPU能够识别哪一些机器语言是由CPU的硬件(运算器的类型)决定的。
不同的机器指令代表不同的运算。相同运算在不同的机器上的机器指令不一定一样,不同的机器的机器指令不通用,不可移植。汇编指令就是特定机器指令的标志。汇编指令也是不通用的。我们可以采用不同的编译工具编译程序生成可以被不同架构的机器识别的机器指令文件
3.指令和指令集
- 机器指令(指令的机器码):由二进制的0和1组成的一条机器码。计算机解析这条机器码可以做相应的运算处理
- 汇编指令:一条汇编指令就是一条机器指令的标志。执行汇编指令也可以让机器进行相关的运算处理
- 指令集:指令的集合
4.RISC(精简指令集)和CISC(复杂指令集)
RISC(精简指令集)的架构主要应用于嵌入式的设备上 精简指令集是选取了一些比较简单、使用频率比较高的指令组成的指令集 精简指令集的特点: 1.指令的长度和指令的执行周期固定 指令的长度:一条机器码在计算机中占用的空间 指令的周期:CPU执行一条指令花费的时间(时钟周期) 时钟周期:CPU主频率 2.基于精简指令集设计的CPU核心成本、功耗、体积更低,但是实现的功能也相对简单 CISC(复杂指令集) 基于复杂指令集设计的CPU核心更加注重功能的完善性,复杂指令集内核会集合各自各样的指令。 特点: 1.指令的长度和执行周期不固定 2.复杂指令集设计的CPU核心实现的功能更为复杂,但是功耗、成本都会更高
生成X86架构a.out的反汇编,查看a.out文件中每一条指令的大小和地址



5.目前几种主流的RISC内核
ARM内核:主流的嵌入式内核,需要得到ARM的授权 RISC-V:正在快速发展,未来会成为主流 MIPS:完全闭源,中国龙芯科技直接买断,完全垄断,在它的基础上还进行了一些拓展
【ARM相关内容】
1.ARM的发展历史
ARM发展史 (huawei.com)
ARM :Advanced RISC Machines(最初命名为Acorn RISC Machine)简称ARM。对ARM可以有三种理解:1)ARM公司:Advanced RISC Machines Limited;2)ARM处理器架构;3)一种技术——ARM技术。 ARM 公司是全球领先的半导体知识产权 (IP) 提供商,并因此在数字电子产品的开发中处于核心地位 ARM 的商业模式主要涉及 IP 的设计和许可,而非生产和销售实际的半导体芯片。 里程碑1——ARM成立 ARM前身为艾康电脑(Acorn),于1978年,英国剑桥成立,大学的孵化物。 1980年代晚期,苹果开始与艾康合作,开发新版ARM核心。 1985年,艾康开发出全球第一款商用RISC处理器,即ARM1,针对于PC市场,还没有嵌入式呢!!! 1990年,艾康财务危机,受苹果和VLSI(最早做超大规模集成电路的公司)的投资,成立独立子公司:Advanced RISC Machines(ARM),ARM公司正式成立面世 里 程碑2——嵌入式RSIC处理器 1991年,ARM推出第一款嵌入式RISC处理器,即ARM6。 1993年,发布ARM7。 1997年,发布ARM9TDMI,三星2440基于此内核。 1999年,发布ARM9E,增强型ARM9。 2001年,ARMv6架构。 2002年,发布ARM11微架构。 里程碑3——微控制器 2004年,发布ARMv7架构的Cortex系列处理器,同时推出Cortex-M3。 2005年,发布Cortex-A8处理器。 2007年,发布Cortex-M1和Cortex-A9 2009年,实现Cortex-A9、发布Cortex-M0 2010年,推出Cortex-M4(F)、成立Linaro(ARM公司牵头成立的公共组织,专门做ARM处理器在Linux平台上的一些软件的开发和移植),推出Cortex-A15 MPcore高性能处理器(性能比较高了,但是发热量很大)。 里程碑4——64位处理器时代 2011年,推出32位 Cortex-A7 处理器,ARMv8发布 2012年,开始推出64位处理器。推出 Cortex-M0+、ARM 首款64位处理器架构 Cortex-A53、Cortex-A57 架构。全球第一款64位ARM手机iPhone5s。 2013年,推出32位 Cortex-A12 处理器架构 2014年,推出 Cortex-M7(F) 微控制器架构;32位 Cortex-A17处理器架构。 2015年,推出64位 Cortex-A35、Cortex-A72 处理器架构。 2016年,推出 Cortex-M23 、Cortex-M33(F) 微控制器架构;32位 Cortex-A32 处理器架构;64位 Cortex-A73 处理器架构。 2017年,推出64位 Cortex-A55 、Cortex-A75 处理器架构。 2018年,推出微控制器 Cortex-M35P;64位 Cortex-A76 处理器架构。 2016---ARM被软银收购 2020---英伟达收购ARM未果
2.ARM架构
不同版本的指令集就是不同的架构
ARMV1-ARMV6:已经被淘汰 ARMV7架构:32位架构,支持32位指令集 ARMV8架构:64位架构,支持64位指令集,并且向下兼容32位指令 ARMV9架构:64位架构,支持64位指令集
3.ARM内核
基于不同的ARM架构设计出来的不同的处理器核心叫做不同的ARM内核
arm7/arm9/arm11 cortex-A7 ARMV7 cortex-A53 ARMV8 cortex-A55 ARMV8 cortex-A77 ARMV8 cortex-A78 ARMV8 cortex-x1 ARMV8 cortex-A710 ARMV9 cortex-A510 ARMV9
4.SOC(system on chip)
ARM公司只进行技术授权。将自己的IP授权给各个半导体公司。半导体公司根据ARM的授权,在CPU核心外围设计了一些外围电路和设备,集成在一个芯片上,这个芯片就被成为SOC。
SOC由CPU+外设备+总线组成
MCU(微控制器) MPU(微处理器)
公司 SOC名称 内核 架构 ST STM32MP157A cortex-A7 ARMV7 三星 S5P6818 cortex-A53 ARMV8 海思 麒麟9000 cortex-A77 ARMV8 高通 骁龙888 cortex-x1 ARMV8
5.ARM的产品分步
5.1 Cortex-A系列
Cortex-A系列 的核心是ARM处理器中性能最强的、最完善的处理器。属于高端处理器 在基于Cortex-A处理器为核心的开发板上可以搭载linux/鸿蒙灯标准化操作系统
5.2 Cortex-R系列
Cortex-R系列 处理器追求系统的实时性能。对数阶的实时性要求高的场景下使用Cortex-R系列 处理器 汽车、军工
5.3 Cortex-M系列
属于ARM处理器中比较低端的芯片处理器,工作主频一般在24M-256MHz之间 Cortex-M系列 处理器一般不跑操作系统,主要执行一些裸机程序 Cortex-M系列 处理器可以搭载一些轻量级的实时系统 FreeRtos
5.4 SecurCore系列
用于对安全性能要求比较高的场景
6.ARM数据约定
查询芯片手册时可以看到的一些数据大小的表述
A7采用的是32位架构. ARM 约定 Byte 8 bits. Halfword 16 bits. Word 32 bits. Doubleword 64 bits. 32位指令集:一条指令占据存储空间的大小是32位 32位处理器:处理器一条指令最大能进行32位数据的运算 想要在32位处理器中进行64位数据的运算: 0X 00000001 FFFFFFFE 0x 00000004 00000002 先让低32位进行运算,再让高32位进行运算 大部分ARM core 提供: ARM 指令集(32-bit) Thumb 指令集(16-bit ) Cortex-A处理器 16位和32位Thumb-2指令集 16位和32位ThumbEE指令集
7.ARM的工作模式
ARM处理器在面对不同的情境下需要进入不同的工作模式进行对应模式下的处理
ARM 有7种基本工作模式: User : 非特权模式,大部分任务执行在这种模式 FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式 IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式 Supervisor :当复位或软中断指令执行时将会进入这种模式 Abort : 当存取异常时将会进入这种模式 Undef : 当执行未定义指令时会进入这种模式 System : 使用和User模式相同寄存器集的特权模式 Cortex-A特有模式: Monitor : 是为了安全而扩展出的用于执行安全监控代码的模式; 也是一种特权模式 HYP:虚拟化模式,当一个硬件上运行两种OS内核时进入这种模式
8.ARM寄存器组织
8.1 计算机内部存储模块介绍
8.2 寄存器概念
寄存器是集成在CPU内部的存储组织,CPU访问寄存器数据的时候只需要根据寄存器的编号就可以访问到寄存器的数值。访问寄存器的速度块。但是寄存器存在数量限制,保存的数据量也很少
8.3 ARM v7架构下的寄存器组织
ARM 有37个32-Bits长的寄存器: 1 个用作PC( program counter) 1个用作CPSR(current program status register) 5个用作SPSR(saved program status registers) 30 个通用寄存器 Cortex体系结构下有40个32-Bits长的寄存器: Cortex-A多出3个寄存器, Monitor 模式 r13_mon , r14_mon, spsr_mon 当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取: 相应的r0-r12子集 相应的 r13 (the stack pointer, sp) and r14 (the link register, lr) 相应的 r15 ( the program counter, pc) 相应的CPSR(current program status register, cpsr) 特权模式 (除system模式) 还可以存取: 相应的 spsr (saved program status register) 每一个寄存器大小都是32位
8.4 ARMV8架构寄存器组织
8.5 ARMV7架构下一些具有特定功能的寄存器
R13寄存器(the stack pointer, sp)
R13寄存器又叫SP(栈指针寄存器),这个寄存器内部保存栈顶的地址 一般在内存中分出一部分内存当作栈来使用,SP寄存器时钟保存栈顶空间的地址 栈一般存放一些临时数据,也可以用于保护现场
r15寄存器(the program counter, pc)
R15寄存器又被称为PC寄存器(程序计数器) 这个寄存器始终保存马上要进行取址的指令的地址,当一条指令执行结束之后PC寄存器的数值会自动向下+4 另外,在特定情况下可以手动修改PC的值进行程序的跳转
R14寄存器(the link register, lr)
R14寄存器又被称为链接寄存器,当程序在实现跳转的时候,LR寄存器中保存当前跳转指令下一条指令的地址。方便 实现程序的返回 程序的跳转实现: PC-》跳转之后指令的地址 程序的返回: PC=LR
CPSR寄存器(current program status register, cpsr)
CPSR:程序状态寄存器 这个寄存器中保存当前程序的运行状态,比如工作模式等信息 SPSR:saved program status register SPSR寄存器可以用于保存程序某一时刻的状态 比如当发生异常之后,处理器的工作模式要切换到对应的异常模式去处理异常,这样CPSR的数值会发生对应的改变 在处理完异常结束后,我们需要将CPSR的值修改为没有发送异常之前的状态,这个时候就可以将SPSR保存的异常发送之前的状态赋值给CPSR
1. N[31] : 指令的运行结果为负数时,N位被自动置1,否则为0. eg : 100 - 200 2. Z[30] : 指令的运行结果为零时,Z位被自动置1,否则为0. 100-100 3. C[29] : 加法:加法运算如果产生进位,C位被自动置1,否则为0. 32位指令:低32位向高32位进位 0XFFFFFFFF+1 减法:减法运算如果产生借位,C位被自动清0,否则位1. 32位指令:低32位向高32位借位 1-0XFFFFFFFE 4. V[28] : 符号位发送变化,V位被自动置1,否则清0. 5. I[7] : IRQ中断屏蔽位 I = 0 : 不屏蔽IRQ中断 I = 1 : 屏蔽IRQ中断 6. F[6] : FIQ中断屏蔽位 F = 0 : 不屏蔽FIQ中断 F = 1 : 屏蔽FIQ中断 7. T[5] : 状态位 T = 0 : 表示ARM状态,执行的是ARM指令集 T = 1 : 表示Thumb状态,执行的是Thumb指令集 ARM指令集 : 一条汇编指令编译生成32位的机器码 thumb指令集:一条汇编指令编译生成16位的机器码 ARM指令集的代码的密度低,而thumb指令记得代码密度高。 ARM指令集的功能性要高于Thumb指令集。 8. M[4:0] : 模式位 10000 User mode; 10001 FIQ mode; 10010 IRQ 10011 SVC mode; 10111 Abort mode; 11011 Undfined mode; 11111 System mode; 10110 Monitor mode; 其他没有使用到的值,保留。
9.ARM的流水线工作
9.1 一条指令的执行过程
取址:CPU将PC寄存器中保持的指令地址通过地址总线传输给存储器,存储器将PC对应的指令通过数据总线传输给CPU。CPU将指令保存在IR(指令暂存寄存器)寄存器中 译码:IR寄存器的指令交给译码器,对指令进行译码 执行:译码器对指令译码之后由运算器对译码之后的指令进行运算
9.2 ARM三级流水线
当一条指令在被取址是,译码模块和执行模块处于空闲状态,这样这两个模块相当于没有得到充分利用。为了充分,利用资源,ARM引入了流水线工作,增加了指令的处理速度
【任务】
1.安装汇编环境:
开发工具-》汇编环境搭建
相关文章:
Day1 ARM基础
【ARM课程认知】 1.ARM课程的作用 承上启下 基础授课阶段:c语言、数据结构、linux嵌入式应用层课程:IO、进程线程、网络编程嵌入式底层课程:ARM体系结构、系统移植、linux设备驱动c/QT 2.ARM课程需要掌握的内容 自己能够实现简单的汇编编…...
ns3入门基础教程
ns3入门基础教程 文章目录 ns3入门基础教程ns环境配置测试ns3环境ns3简单案例 ns环境配置 官方网站:https://www.nsnam.org/releases/ 代码仓库:https://gitlab.com/nsnam/ns-3-dev 如果安装遇到问题,可以参考以下博文: https://…...
计算机视觉
目录 一、图像处理 main denoise 二、Harris角点检测 三、Hough变换直线检测 四、直方图显著性检测 五、人脸识别 六、kmeans import 函数 kmeanstext 七、神经网络 常用函数: imread----------读取图像 imshow---------显示图像 rgb2hsv---------RGB转…...
NSSCTF第10页(3)
[LitCTF 2023]彩蛋 第一题: LitCTF{First_t0_The_k3y! (1/?) 第三题: <?php // 第三个彩蛋!(看过头号玩家么?) // R3ady_Pl4yer_000ne (3/?) ?> 第六题: wow 你找到了第二个彩蛋哦~ _S0_ne3t? (2/?) 第七题…...
MySQL性能分析工具的使用
1. 统计SQL的查询成本:last_query_cost SHOW STATUS LIKE last_query_cost; 使用场景:它对于比较开销是非常有用的,特别是我们有好几种查询方式可选的时候。 SQL 查询是一个动态的过程,从页加载的角度来看,我们可以得到…...
Uniapp使用AES128加解密16进制
在对接低功耗蓝牙时,我们需要对蓝牙传输数据进行加解密,由于我们对接的命令是16进制,如5500020101aa00,每个16进制表示特定的含义,所以直接对16进制加解密 import CryptoJS from crypto-js// AES128 加密函数 functio…...
C++基础——类与对象
1 概述 C是面向对象的语言,面向对象语言三大特性:封装、继承、多态。 C将万事万物抽象为对象,对象上有其属性和行为。 2 封装 2.1 封装的意义 封装是面向对象的三大特性之一,封装将属性和行为作为一个整体,对属性和…...
人工智能-卷积神经网络
从全连接层到卷积 我们之前讨论的多层感知机十分适合处理表格数据,其中行对应样本,列对应特征。 对于表格数据,我们寻找的模式可能涉及特征之间的交互,但是我们不能预先假设任何与特征交互相关的先验结构。 此时,多层感…...
MySQL的event的使用方法
MySQL的event的使用方法 一、事件定时策略 1、查看event事件开启状态 SHOW VARIABLES LIKE event_scheduler;如图,Value值 ON:打开,OFF:关闭。 2、设置event事件打开 SET GLOBAL event_scheduler ON;如果MySQL重启了&#x…...
Leetcode Daily Challenge 1845. Seat Reservation Manager
1845. Seat Reservation Manager 题目要求:初始化一个SeatManager类包括默认构造函数和类函数,所有的seat初始化为true。reverse函数返回最小的true,然后把这个编号的椅子赋值为false。unreverse(seatNumber)函数把编号为seatNumber的椅子恢…...
Blender vs 3ds Max:谁才是3D软件的未来
在不断发展的3D建模和动画领域,两大软件巨头Blender和3ds Max一直在争夺顶级地位。 随着技术的进步和用户需求的演变,一个重要问题逐渐浮出水面:Blender是否最终会取代3ds Max?本文将深入探讨二者各自的优势和劣势、当前状况&…...
MapReduce:大数据处理的范式
一、介绍 在当今的数字时代,生成和收集的数据量正以前所未有的速度增长。这种数据的爆炸式增长催生了大数据领域,传统的数据处理方法往往不足。MapReduce是一个编程模型和相关框架,已成为应对大数据处理挑战的强大解决方案。本文探讨了MapRed…...
【已解决】ModuleNotFoundError: No module named ‘dgl‘
禁止使用下面方法安装DGL,这种方法会更新你的pytorch版本,环境越变越乱 pip install dgl 二是进入DGL官网:Deep Graph Library (dgl.ai),了解自己的配置情况,比如我cuda11.8,ubuntu,当然和linux是一样的 …...
R 复习 菜鸟教程
R语言老师说R好就业,学就完了 基础语法 cat()可以拼接函数: > cat(1, "加", 1, "等于", 2, \n) 1 加 1 等于 2sink():重定向 sink("r_test.txt", splitTRUE) # 控制台同样输出 for (i in 1:5) print(i…...
第十二章《搞懂算法:朴素贝叶斯是怎么回事》笔记
朴素贝叶斯是经典的机器学习算法,也是统计模型中的一个基本方法。它的基本思想是利用统计学中的条件概率来进行分类。它是一种有监督学习算法,其中“朴素”是指该算法基于样本特征之间相互独立这个“朴素”假设。朴素贝叶斯原理简单、容易实现࿰…...
【从0到1开发一个网关】网关Mock功能的实现
文章目录 什么是Mock?如何实现Mock什么是Mock? Mock(模拟)是一种测试技术,用于创建虚拟对象来模拟真实对象的行为。Mock对象模拟了真实对象的行为,但是不依赖于真实对象的实现细节。它们可以在测试中替代真实对象,以便进行独立的单元测试。 需要使用Mock的原因包括以下几…...
前端框架Vue学习 ——(三)Vue生命周期
生命周期:指一个对象从创建到销毁的整个过程。 生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法(钩子) mounted:挂载完成,Vue 初始化成功,HTML 页面渲染成功…...
相机滤镜软件Nevercenter CameraBag Photo mac中文版特点介绍
Nevercenter CameraBag Photo mac是一款相机和滤镜应用程序,它提供了一系列先进的滤镜、调整工具和预设,可以帮助用户快速地优化和编辑照片。 Nevercenter CameraBag Photo mac软件特点介绍 1. 滤镜:Nevercenter CameraBag Photo提供了超过2…...
游戏专用....
游戏专用:星际战甲 APP窗口以及键鼠监控 import tkinter as tk import time,threading from pynput.keyboard import Key,Listener import pynput.keyboard as kbclass myClass:def __init__(self):self.root tk.Tk()self.new_text self.flag threading.Event()…...
第三方登录和第三方支付
第三方登录 在现代Web应用中,提供第三方登录选项已经变得非常普遍。用户可以使用其社交媒体或其他在线帐户(如Google、GitHub或Facebook)来访问您的应用程序,而无需创建新的用户名和密码。这提供了更好的用户体验,减少…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
