Linux的基础开发工具
目录
前言:
1、包管理器yum
1.1 软件包的依赖
1.2 镜像源
1.3 查找/安装/卸载软件
2、编辑器vim
2.1 命令模式(默认)
2.1.1 撤销与反撤销
2.1.2 光标定位
2.1.3 复制&&剪切(删除)&&粘贴
2.1.4 替换
2.1.5 插入模式
2.1.6 V-Block模式
2.2 底行模式
2.3 命令行使用vim的技巧
2.4 vim的配置
3、编译器gcc/g++
3.1 预处理
3.2 编译
3.3 汇编
3.4 链接
3.4.1 动态库(动态链接)
3.4.2 静态库(静态链接)
3.4.4 库的本质
两个编译过程:
4、自动化构建工具make/Makefile
4.1 make
4.2 Makefile
1. 目标 (Target)
2. 依赖 (Prerequisites)
3. 命令 (Recipe)
4.3 Makefile的一些细节
5、版本控制器git
5.1 安装和clone
5.2 add&&commit&&push
6、调试器gdb/cgdb
6.1 预备知识
6.2 常用指令
1. r_q
2. 断点
3. 跳转
4. 查看
前言:
作者使用的是Centos7.9。
从现在开始,使用普通用户(root用户权限太高,有点危险),需要更高的权限,sudo即可。
1、包管理器yum
Centos,一般使用yum来下载软件。Ubuntu,用apt,类似。
1.1 软件包的依赖
yum,会解决 包的依赖 问题(即一起帮你下载)。
1.2 镜像源
Linux通过内置链接,下载软件,可是由于国家安全(不能访问外网),内地社区就拷贝资源,使用自己社区的链接。
镜像站 | 官网 | 支持发行版 |
---|---|---|
清华大学 | https://mirrors.tuna.tsinghua.edu.cn | CentOS, Ubuntu, Debian, Arch, EPEL |
阿里云 | https://mirrors.aliyun.com | CentOS, Ubuntu, Docker |
华为云 | https://mirrors.huaweicloud.com | CentOS, Ubuntu |
网易 | http://mirrors.163.com | Ubuntu, Debian |
中科大 | https://mirrors.ustc.edu.cn | Arch Linux, Docker |
可以通过更改yum的配置文件,更改下载链接(从哪里下载)。
1.3 查找/安装/卸载软件
yum list 有哪些安装包
yum list | grep 安装包 查找指定的安装包
sudo yum install -y 安装包 下载指定的安装包 -y确认下载
sudo yum remove -y 软件 删除指定的软件 -y确认删除
注意:
安装和删除需要root权限。
安装到系统目录(不是其他用户的家目录),任何人都能使用。
2、编辑器vim
注意:
Esc,可能有点慢。
2.1 命令模式(默认)
2.1.1 撤销与反撤销
u,撤销。
Ctrl+r,撤销u操作,反撤销。
注意:一旦退出,就不能撤销了。
2.1.2 光标定位
可以先通过底行模式,显示行号。
gg,光标定位到第一行 第一个非空字符。n+gg,光标定位到第n行 第一个非空字符。
G(shift+g),光标定位到最后一行 第一个非空字符。n+G,光标定位到第n行 第一个非空字符。
^(shift+6),光标定位到光标所在行的第一个非空白字符。
$(shift+4),光标定位到光标所在行的最后一个字符。
h (左) j (下) k (上) l (右),键盘的上下左右键在一些场景下不可用。n+hjkl,移动n个字符。
b,移动到上一个单词的首字母。n+b,移动到上n个单词的首字母。
w,移动到下一个单词的首字母。n+w,移动到下n个单词的首字母。
搜索:
#(shift+3),向上搜索 当前光标下的单词,n上一个(正向搜索),N下一个(反向搜索)。
*(shift+8),向下搜索 当前光标下的单词,n下一个(正向搜索),N上一个(反向搜索)。
可以通过底行模式,删除高亮。
2.1.3 复制&&剪切(删除)&&粘贴
yy,复制 当前行,n+yy,复制 从当前行开始的n行。p,在下一行新建一行,粘贴。
dd,剪切(删除) 当前行,n+dd,剪切(删除) 从当前行开始的n行。
x,剪切(删除) 光标位置的字符,n+x,剪切(删除) 从光标开始的n个字符。
X(shift+x),剪切(删除) 光标前面的字符,n+X,剪切(删除) 光标前面的n个字符。
对于yy,dd,
p,粘贴到光标下面的新建行 P(shift+p),粘贴到光标上面的新建行。
当然,也可以n+p,n+P,粘贴n次。
对于x,X,
p,粘贴到光标前面 P(shift+p),粘贴到光标后面。
当然,也可以n+p,n+P,粘贴n次。
2.1.4 替换
r,替换 光标所在的字符,n+r,替换 光标及后面的n个字符。
R(shift+r),命令模式进入替换模式,直接替换。
~(shift+`),大小写切换。n+~,将光标及后面的n个字符 切换大小写。
2.1.5 插入模式
插入模式,可以插入字符。
i,命令模式进入插入模式,光标不动。
a,命令模式进入插入模式,光标后移一位。
o,命令模式进入插入模式,向下新建一行,光标在新建行的行首。
2.1.6 V-Block模式
Ctrl+v,进入V-Block模式。
常用于:
批量注释,
Ctrl+v(进入V-Block模式),
hjkl(选择区域,也可以n+hjkl),
shift+i,进入插入模式,输入//,
Esc,进入命令模式,就一起注释了。
批量删除注释,
Ctrl+v(进入V-Block模式),
hjkl(选择区域,也可以n+hjkl),
直接x(删除光标位置的字符),自动切换到命令模式。
2.2 底行模式
:(shift+;),英文的冒号,命令模式进入底行模式。
set nu,显示行号,set nonu,取消行号。
%s/src/dst/,批量替换,把所有的src换成dst。
vs new_src,再打开一个new_src源文件,Ctrl+ww,光标切屏。
w(保存vim),q(退出vim),q!(强制退出vim),wq(保存并退出vim),wq!(强制保存并退出vim)。
2.3 命令行使用vim的技巧
vim 不存在的文件,只要w(保存),文件会自动生成。
vim 文件 +n,+号要写,打开文件,光标直接跳到第n行,方便快速定位编译报错的位置。
!v,执行 最近v开头的命令。
2.4 vim的配置
vim,没有自动缩进,没有自动补齐等等,用起来不太方便,需要一些配置。
这里推荐一个自动化配置(自己配置比较麻烦):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注意:
在普通用户下一键式安装(root用户容易出问题)。就改变了普通用户的vim配置。
只支持Centos7。
失败就多试几次。安装成功后,可能需要重启一下。
默认是两个空格的缩进。
如果要改成四个空格的缩进,vim 家目录下的vimrc,
都改成4。
3、编译器gcc/g++
gcc/g++ 默认情况下会执行完整的编译流程,包括 预处理、编译、汇编、链接 这四个步骤,并最终生成可执行文件(或库)。
gcc只能编译.c文件,g++既能编译.c文件也能编译.cpp文件,其他基本相同,以下以gcc为例。
// 将code.c编译为code的两种格式
gcc code.c -o code // 常用
gcc -o code code.c
3.1 预处理
- 修改代码,通过头文件展开,宏替换,条件编译(进行功能裁剪),去注释等。
- -E 选项仅进行预处理。
- 生成 .i 文件。
gcc -E code.c -o code.i
3.2 编译
- 将预处理后的代码转换为汇编代码。
- -S 选项仅生成汇编代码。
- 生成 .s 文件。
gcc -S code.i -o code.s
3.3 汇编
- 将汇编代码转换为机器码(CPU能直接执行的二进制指令)。
- -c 选项仅生成汇编代码。
- 生成 .o 目标文件。
gcc -c code.s -o code.o
gcc -c code.c // 默认生成,同名的.o文件
3.4 链接
-
将多个 .o 目标文件和库文件(.so/.a)合并,生成最终的可执行文件或动态库。
-
直接运行 gcc 或 g++ 默认会执行链接:
gcc code.o -o code
Linux中,是lib+库名+后缀。
注意:
自己写的可执行程序,需要指定目录,才能执行。./(当前目录)
3.4.1 动态库(动态链接)
- Linux,.so后缀,Windows,.dll后缀。
- 动态库,又称共享库,被多程序共享。可执行程序的动态库不能缺失。
- 执行目标方法,需跳转到库中。文件体积小。
ldd 可执行文件或动态库,可以查看 需要的动态库。
3.4.2 静态库(静态链接)
- Linux,.a后缀,Windows,.lib后缀。
- 执行目标方法,会将方法拷贝过来,再执行。文件体积大。可执行程序的对静态库的依赖度小。
3.4.4 库的本质
库可以理解为,.o文件和.h文件的集合。
一般把文件编译到.o文件,再与库文件 链接,形成可执行程序。
两个编译过程:
1. 文件包含1.h(有方法的声明),可以过编译这关,然后给1.o(有方法实现),链接,没问题。
2. C++模板不支持声明和定义分离到.h.c,因为文件虽然包含了.h,预处理展开头文件,编译时实例化了声明,可以过编译这关,但是.o的方法没有实例化,所以链接时找不到方法的实现,所以有问题。
4、自动化构建工具make/Makefile
4.1 make
make,是命令,可以指定目标,默认执行当前目录下Makefile中的第一个目标。
4.2 Makefile
Makefile或makefile,是文件(包含编译的指令 或 各种自动化任务)。
Makefile 主要由以下三部分组成:
目标(target): 依赖(prerequisites)
[TAB]命令(recipe)
1. 目标 (Target)
-
通常是最终要生成的文件名(如
main.o
) -
也可以是一个操作名称(如
clean
) -
一个 Makefile 可以有多个目标
2. 依赖 (Prerequisites)
-
构建目标所需的文件或其他目标
-
可以是多个文件,用空格分隔
-
如果依赖文件比目标文件新(目标文件应该是更新的,因为最后生成的是目标文件,当依赖文件被修改了,此时依赖文件更新,会重新编译),make 会重新构建目标。(即当改了依赖文件,make 会重新构建目标)
注意:
通过文件的Modify(最近文件内容修改时间)判断,是否更新。
默认没改依赖文件,就不会重新构建目标。这里会引出一个问题。如果
clean:rm -f *.o main
当执行 make clean 时,rm -f *.o main 会正常执行。
但是如果当前目录下恰好存在一个名为 clean 的文件或目录,make 会认为 clean 目标已经是最新的(因为 clean 没有依赖项),从而拒绝执行 rm 命令。
加上 .PHONY 的作用
.PHONY: clean
clean:rm -f *.o main
- 明确声明 clean 是伪目标(不是实际文件),强制 make 执行其命令,无论是否存在同名文件。
- 避免意外行为:即使有人创建了 clean 文件,make clean 也能正确执行清理操作。
- 提高可读性:明确告知开发者这是一个用于执行操作(而非生成文件)的目标。
3. 命令 (Recipe)
-
必须以 Tab 开头(不能用空格代替)
-
是要执行的 shell 命令
-
可以有多条命令,每条占一行
4.3 Makefile的一些细节
1. 直接make,默认执行第一个目标test(因为依赖,所以不断执行),test依赖test.o,test.o依赖test.c,所以先生成test.o,再生成test。
2. 执行的命令会回显,前面加@就不会回显了。如:
3. Makefile 中确实使用了类似宏定义(变量)和类似解引用(变量展开)的机制。这种设计使得 Makefile 更加灵活和可维护。如:
# 变量定义 需要$(),类似于解引用,才能使用
CC := gcc
TARGET := myprogram
SRCS := main.c test.c # 空格隔开
# SRC := $(wildcard *.c) # 当前目录下所有的.c文件
OBJS := $(SRCS:.c=.o) # 将 .c 替换为 .o# 默认目标
$(TARGET): $(OBJS)$(CC) -o $@ $^ # $@,是目标,@^,是所有的依赖# 模式规则:编译 .c 到 .o,只编译需要的.o
%.o: %.c$(CC) -c $< # 默认生成同名的.o文件
# $<,是单个依赖,将.c分别编译为.o# 伪目标
.PHONY: clean
clean:rm -f $(OBJS) $(TARGET)
5、版本控制器git
5.1 安装和clone
安装git
sudo yum install -y git
在gitee创建远端仓库,
复制https的地址,
将远端仓库克隆到本地。
git clone https地址
5.2 add&&commit&&push
可以多次add,然后一次commit,push。
第一次需:
填写gitee的名字和邮箱,
git add .,git commit(需要gitee的名字和邮箱),git push(需要gitee的名字和登入密码)。
git log,查看提交记录。
git status
-
检查哪些文件被修改(但未暂存)。
-
查看哪些文件已暂存(准备提交)。
-
显示未跟踪的文件(新文件,Git 尚未管理)。
-
提示当前分支状态(是否与远程分支同步)。
git pull,将远程仓库同步到本地。(远程仓库认为是最新的,当本地仓库和远端仓库不同时,需要同步)
注意:
一个文件/目录,每次提交修改都需要add,commit,push,
Windows的小乌龟第一次add,commit,push,后面只需commit,push,简化了而已。
6、调试器gdb/cgdb
6.1 预备知识
1. 程序发布模式
Debug模式:包含调试信息,便于调试程序。
Release模式:默认模式,不包含调试信息,程序更高效。
gcc code.c -o code // gcc/g++默认release模式
gcc code.c -o code -g // -g添加调试信息
2. gdb不太好用,再下载个cgdb,封装一层,便于调试。
sudo yum install -y gdb
sudo yum install -y cgdb
3. cgdb 携带调试信息的可执行程序。
6.2 常用指令
1. r_q
- r/run,启动调试并开始执行程序。或重新调试并执行程序。
- q/quit,退出cgdb。
2. 断点
注意:
一般是在run之前打断点。
- b 行号。在该行打断点。b 函数名。在函数的入口打断点。
- b 行号 if 条件。在该行打条件断点。
- info b。查看断点。cgdb不退出,断点的编号一直增加。
- d 断点编号。删除断点。
- disable 断点编号。禁用断点。
- enable 断点编号。启用断点。
3. 跳转
- n/next。逐过程,类似于vs2022的f10。
- s/step。逐语句,类似于vs2022的f11。
- c。跳到逻辑上的下一个断点。
- until 行号。执行到指定行号。 默认只在 当前函数内 生效,方便局部跳转。
- finish。直接执行完当前函数。
tip:回车——执行最近的gdb命令。
4. 查看
- p 变量/表达式。显示变量/表达式的值。
- info locals。显示当前栈帧的局部变量的值。
- display 变量/表达式。一直显示变量的值。undisplay 编号。不再显示。
- watch 变量/表达式。只有值变化,才显示。是一种断点,通过d 断点编号,删除。
- bt。显示当前函数的调用栈。
- set var 变量名=值。手动修改变量的值。
相关文章:

Linux的基础开发工具
目录 前言: 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …...

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发
前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…...

Linux基础(最常用基本命令)
1.查看文件ls 1.1 格式 ls 选项 参数,如:ls -lah ~/ 1.2 选项设置: -l:list 以列表方式显示文件 -h:human-readable 以人类可读的方式显示文件大小(会将纯数字转换为kb,mb) -a:all 显示所有的…...

含铜废水循环利用体系
在工业绿色转型浪潮中,含铜废水回收技术正以"资源再生智能管控"的双核驱动模式,重构传统水处理产业的价值链。该体系通过构建"精准分离-梯级利用-智慧运维"的闭环系统,不仅突破了重金属废水处理的技术桎梏,更…...
移动端返回指定页面
onLoad(() > { // #ifdef APP-PLUS || MP-ALIPAY || H5 onBackPress(() > { uni.switchTab({ url: ‘/pages/my/my’, }) return true }) // #endif }) onUnload(() > { // #ifdef MP-WEIXIN uni.switchTab({ url: ‘/pages/my/my’, }) // #endif })...

MySQL 安装配置(完整教程)
文章目录 一、MySQL 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1 初始化 MySQL5.2 搭建 MySQL 环境 六、修改 MySQL 密码七、卸载 MySQL八、结语 一、MySQL 简介 MySQL 是一款广泛使用的开源关系型数据库管理系统(RDBMS)&#…...

【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升
文章目录 1、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链 2、JC垃圾回收机制♻️3、GC算法3.1 引用计数法3.2 标记清除法 4、闭包4.1 定义4.2 闭包的应用:实现数据的私有 5、变量提升 1、作用域 即一个范围,离开了这个范围,这个变量就不…...

【从零开始学习RabbitMQ | 第一篇】从异步通信到交换机
目录 前言 1.什么是RabbitMQ? 2.同步调用的优缺点 3.异步调用的优缺点 3.1优点: 3.2异步调用的问题是什么? 4技术选型 4.1AMQP协议就是: 4.2kafka和RabbitMQ的使用场景 5.安装RabitMq 6.rabitmq的整体架构 7.RabibtM…...
100个常用的DeepSeek指令
日常生活类(20个) 1. 新闻解读:请为我解读今天的热点新闻。 2. 天气查询:请查询……的天气并推荐着装。 3. 旅行攻略:请制定前往……的旅行攻略。 4. 菜谱生成:请生成……菜的具体做法。 5. 解决方案&…...

AI(学习笔记第二课) 使用langchain进行AI开发
文章目录 AI(学习笔记第二课) 使用langchain进行AI开发学习内容:1. 使用背景2.创建python(pycharm community版)开发环境并连接deepseek2.1 创建python(pycharm community版)开发环境2.2 创建python工程2.3 写入初始py…...

基于Jenkins的DevOps工程实践之Jenkins共享库
文章目录 前言Jenkins共享库结构1、共享库演示2、知识点补充3、实践使用共享库格式化输出日志4、groovy基础语法4.1、 什么是 Groovy?4.2、groovy特点4.3、运行方法4.4、标识符4.5、基本数据类型4.5.1、string类型4.5.2、list类型 4.6、函数使用4.7、正则表达式 5、…...

使用Qt自带的Qt assistant时如何添加需要查看的文档
当我们双击打开Qt Assistant时 左边目录栏只有自带的帮助文档,所以需要添加要查看的文档 点击左上角Edit中的Preferences,点击add 找到qdoc文件夹 全选里面的内容 点击Apply 点击ok 左边的目录栏就出现所有这个版本的Qt有关的文档啦...

基于网络爬虫+Spark+Hadoop等大数据和SpringBoot技术实现的的汽车行业大数据分析与可视化平台系统(源码+论文+PPT+部署文档教程等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...

日本IT|AI应用工程师主要工作内容以及职业前景解析
1. 主要工作内容 AI应用工程师是: 类别具体工作内容常见工具需求分析和业务部门沟通,明确「用AI解决什么问题」PowerPoint, Excel, Miro模型选型与微调用现成AI(如BERT、YOLOv8、Stable Diffusion等)做Fine-TuningPython (PyTor…...

Soft Mask(软遮罩)技术
一、概述 Soft Mask是一种技术或工具,主要用于实现平滑的边缘遮罩效果。它在不同的应用领域有不同的实现和定义 1.在Unity UI设计中 SoftMask是一款专为Unity设计的高级遮罩工具,它突破了传统Mask的限制,提供了更为灵活和细腻的UI遮罩解决方案…...

ESP32开发之freeRTOS的互斥量
什么是互斥量互斥量的应用场合互斥量的API函数基本代码结构互斥量使用举例递归锁递归锁举例总结什么是互斥量 在freeRTOS中,多个任务访问一块共享资源,会产生竞争现象。 比如马路上只有一个很早以前的电话亭,A、B都想要打电话,然后他们就开始打架了。但是如果A先进去了然…...

K8s 资源分类
K8s 资源分类图谱 内置资源的分类 1、工作负载相关: Pod:最小的部署单元,包含一个或多个容器。 Deployment:管理无状态应用的副本和滚动更新。 StatefulSet:适用于有状态应用(如数据库)&#…...
Python连接云端服务器:基于Paramiko库的实践与问题剖析
引言 在软件开发与运维场景中,借助Python连接云端服务器进行操作极为常见。Paramiko库作为实现SSHv2协议的有力工具,为Python与云端服务器的交互搭建了桥梁。本文将深入介绍使用Paramiko连接云端Linux服务器的方法,并剖析过程中可能遭遇的问…...

基于 Flask的深度学习模型部署服务端详解
基于 Flask 的深度学习模型部署服务端详解 在深度学习领域,训练出一个高精度的模型只是第一步,将其部署到生产环境中,为实际业务提供服务才是最终目标。本文将详细解析一个基于 Flask 和 PyTorch 的深度学习模型部署服务端代码,帮…...
洛谷 P1850 [NOIP 2016 提高组] 换教室
题目传送门 前言 终于自己想出概率期望 d p dp dp 的状态了,但是依旧没能相对转移方程。(招笑) 暴力 这题部分分和特殊情况分给的挺多的,所以先拿部分分。 一、思路 先跑一边 F l o y d Floyd Floyd 最短路求出两点间最短距…...
C#生成二维码和条形码
C# 实现二维码和条形码生成:从入门到实战 文章目录 C# 实现二维码和条形码生成:从入门到实战一、引言二、准备工作2.1 开发环境搭建2.2 引入相关库 三、生成条形码3.1 条形码基本概念3.2 使用[ZXing.Net](https://ZXing.Net)生成条形码3.2.1 核心代码实现…...

【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南
我们都知道,现在企业数字化转型那可是势在必行,数据库迁移这事儿就变得特别关键。金仓数据库的 KingbaseES(简称 KES),就给咱从 MySQL 往 KES 迁移数据库提供了一套超好用的方案。下面咱就讲下 咋用金仓数据库来完成这…...

多态(c++详细版)
一.多态 1.1 多态的概念 多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态),这⾥我们重点讲运⾏时多态,编译时多态(静态多态)和运⾏时多态(动态多态)。编译时多态(静态多态)主…...
内存泄漏系列专题分析之八:高通相机CamX内存泄漏内存占用分析--通用ION(dmabuf)内存拆解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之七:高通相机CamX--Android通用ION(dmabuf)内存分配和释放原理 这一篇我们开始讲: 内存泄漏系列专题分析之八:高通相机CamX内存泄漏&内存占用分析--通用ION(dmabuf)内…...
后端项目进度汇报
项目概述 本项目致力于构建一个先进的智能任务自动化平台。其核心技术是一套由大型语言模型(LLM)驱动的后端系统。该系统能够模拟一个多角色协作的团队,通过一系列精心设计或动态生成的处理阶段,来高效完成各种复杂任务ÿ…...

数据结构——二叉树和堆(万字,最详细)
目录 1.树 1.1 树的概念与结构 1.2 树相关的术语 1.3 树的表示法 2.二叉树 2.1 概念与结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树存储结构 2.3.1 顺序结构 2.3.2 实现顺序结构二叉树 2.3.2.1 堆的概念与结构 2.3.2. 2 堆的插入与删除数据…...

MATLAB基于格拉姆角场与2DCNN-BiGRU的轴承故障诊断模型
本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏目录,查看更多内容。 目录 0 引言 1 格拉姆角场原理 2 2DCNN-BiGRU网络结构 3 应用实例 3.1 数据准备 3.2 格拉姆角场数据提取 3.3 网络模型搭建-重中之重 3.4 …...

正点原子IMX6U开发板移植Qt时出现乱码
移植Qt时出现乱码 1、前言2、问题3、总结 1、前言 记录一下正点原子IMX6U开发板移植Qt时出现乱码的解决方法,方便自己日后回顾,也可以给有需要的人提供帮助。 2、问题 用正点原子IMX6U开发板移植Qt时移植Qt后,sd卡里已经存储了Qt的各种库&…...

JVM局部变量表和操作数栈的内存布局
局部变量表和操作数栈 首先看一段Java源码 public class Add_Sample{public int add(int i, int j){int k 100;int result i j k;return result;}public static void main(String[] args){int result new Add_Sample().add(10,20);System.out.println(result);} }使用ja…...

Mockoon 使用教程
文章目录 一、简介二、模拟接口1、Get2、Post 一、简介 1、Mockoon 可以快速模拟API,无需远程部署,无需帐户,免费,跨平台且开源,适合离线环境。 2、支持get、post、put、delete等所有格式。 二、模拟接口 1、Get 左…...