欧美网站建设/sem网站推广怎么做
vim、gcc/g++、make/Makefile、yum、gdb
- 一、Linux编辑器vim
- 1、简介
- 2、三种模式的概念
- (1)正常/普通/命令模式(Normal mode)
- (2)插入模式(Insert mode)
- (3)末行/底行模式(last line mode)
- 3、三种模式的切换
- 4、正常/命令模式命令集
- (1)插入模式
- (2)移动光标
- (3)删除文字
- (4)复制
- (5)替换
- (6)撤销与还原
- (7)更改
- (8)显示与跳转至文件内容指定行
- 5、vim末行模式命令集
- (1)注意
- (2)列出行号
- (3)跳转至文件内容指定行
- (4)查找字符
- (5)保存文件
- (6)离开vim
- 二、Linux系统下的C/C++编译器gcc/g++
- 1、注意
- 2、编译器编译代码的过程
- 3、 gcc使用格式
- 4、选项
- 5、预处理
- (1)功能
- (2)示例
- 6、编译
- (1)功能
- (2)示例
- 7、汇编
- (1)功能
- (2)示例
- 8、链接
- (1)功能
- (2)示例
- (3)注意
- 9、函数库
- (1)概念
- (2)静态库
- (3)动态库
- 三、Linux项目自动化构建工具make/Makefile
- 1、概念
- 2、示例
- 3、依赖关系
- 4、依赖方法
- 5、伪目标
- 6、原理
- 7、项目清理
- 四、Linux 软件包管理器yum
- 1、软件包
- 2、查看软件包
- (1)命令
- (2)功能
- (3)示例
- 3、安装软件包
- (1)命令
- (2)说明
- (3)注意
- (4)示例
- 4、卸载软件
- (1)命令
- (2)示例
- 五、Linux调试器gdb
- 1、说明
- 2、使用格式
- 3、调试命令
- 4、示例
一、Linux编辑器vim
1、简介
- vim有很多种模式,但此处只介绍3种,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)。
- 要查看所有的模式可以打开vim,在底行模式中直接输入 :help vim-modes。
2、三种模式的概念
(1)正常/普通/命令模式(Normal mode)
进入vim后的默认模式,可以控制屏幕光标的移动、将字符、字或行删除,移动复制某区段内容以及粘贴,切换为Insert mode 或者 last line mode。
(2)插入模式(Insert mode)
只有在Insert mode下,才可以做文字内容的输入。该模式是vim中用的最频繁的编辑模式。
(3)末行/底行模式(last line mode)
进行文件的保存与退出、文件替换、查找字符串、列出行号等操作。
3、三种模式的切换
4、正常/命令模式命令集
(1)插入模式
- 【i】:从光标当前位置开始插入内容。
- 【a】:从光标所在位置的下一个位置开始插入内容。
- 【o】:插入新的一行,从行首开始输入文字。
(2)移动光标
- vim可以直接用键盘上的上下左右键来移动光标,但正规的vim是用小写英文字母【h】、【j】、【k】、【l】,分别使光标左、下、上、右移一格。
- 【$】:移动到光标所在行内容的尾部。
- 【^】:移动到光标所在行内容的头部。
- 【w】:光标移动到下个单词/字的头部。
- 【e】:光标移动到下个单词/字的尾部。
- 【b】:光标移动到上个单词/字的头部。
- 【#l】:光标每次向后移动#个位置。
- 【gg】:光标移动到文件内容的头部。
- 【G】:光标移动到文件内容的尾部,即移动到文件内容的最后一行。
- 【ctrl】+【b】:屏幕显示内容往后移动一页。
- 【ctrl】+【f】:屏幕显示内容往前移动一页。
- 【ctrl】+【u】:屏幕显示内容往后移动半页。
- 【ctrl】+【d】:屏幕显示内容往前移动半页。
(3)删除文字
- 【x】:每按一次,删除光标所在位置的一个字符。
- 【#x】:删除光标所在位置后面(包括光标所在字符)的#个字符。
- 【X】:大写的x,每按一次,删除光标所在位置前面的一个字符。
- 【#X】:删除光标所在位置前面的#个字符,不包括光标所在位置的字符。
- 【dd】:删除光标所在行。
- 【#dd】:从光标所在行开始,删除#行,包括光标所在行。
(4)复制
- 【yw】:将从光标所在位置到单词/字尾的字符复制到缓冲区中。
- 【#yw】:复制#个单词/字到缓冲区中。
- 【yy】:复制光标所在行内容到缓冲区中。
- 【#yy】:复制光标所在行以及后面# - 1行的内容,总共#行的内容到缓冲区中。
- 【p】:将缓冲区内的字符贴到光标所在位置处。
- 注意:所有与y有关的复制命令都必须与p配合才能完成复制与粘贴功能。
(5)替换
- 【r】:替换光标所在处的字符。
- 【R】:替换光标所到之处的字符,直到按下【ESC】键为止。
(6)撤销与还原
- 【u】:撤销。
- 【ctrl + r】:还原。
(7)更改
- 【cw】:删除光标所在处的单词/字到单词/字的尾部,然后进入插入模式,光标仍在输入cw前的位置处。
- 【c#w】:删除光标所在处以及之后的#个单词/字到单词/字的尾部,然后进入插入模式,光标仍在输入c#w前的位置处。
(8)显示与跳转至文件内容指定行
- 【ctrl】+【g】:列出文件内容总共有多少行,阅读到当前行占整个文件内容的百分比。
- 【#G】:移动光标至文章的第#行行首。
5、vim末行模式命令集
(1)注意
- 在使用末行模式之前,需先按【ESC】键确定已经处于正常模式,再按【:】即冒号,即可进入末行模式。
(2)列出行号
- 【set nu】:在文件内容中的每一行前面列出行号。
- 【set nonu】:取消在文件内容中的每一行前面列出行号。
(3)跳转至文件内容指定行
- 【#】:在冒号后输入一个数字,再按回车键,光标就会跳转到该行。
(4)查找字符
- 【/关键字】:先按【/】键,再输入想要寻找的字符,按【n】将向下查找。
- 【n】:如果第一次查找的关键字不是想要的那个,可以一直按【n】往后查找,直到找到想要的关键字为止;如果文件内容内的关键字已经查找完,则会继续从文件内容的第一个(或者最后一个)关键字处继续查找。
- 【?关键字】:先按【?】键,再输入想要查找的字符,按【n】将向上查找。
(5)保存文件
- 【w】:在冒号后输入字母【w】,再按回车键,就可以将编辑完的文件内容保存起来。
(6)离开vim
- 【q】:退出vim,如果无法离开vim,可以在【q】后跟一个【!】,即强制离开vim。
- 【wq】:一般建议离开时,搭配【w】一起使用,这样在退出vim的时候还可以将编辑完的文件内容保存起来。
二、Linux系统下的C/C++编译器gcc/g++
1、注意
- g++的使用方法和gcc的使用方法一样,这里只说明gcc。
- gcc只能用来编译C语言代码,g++可以编译C语言代码也可以编译C++代码。
2、编译器编译代码的过程
- 预处理:删除注释、宏定义替换、头文件展开、条件编译。
- 编译:C/C++语言代码转换为汇编代码。
- 汇编:使用汇编代码生成机器可以识别的可重定向二进制目标文件。
- 链接:将多个.o/.obj文件合并形成一个可执行文件(.out/.exe文件)。
3、 gcc使用格式
gcc [选项] 要编译的文件 [选项] [目标文件]
4、选项
- -E:让 gcc 编译器在预处理结束后停止编译过程,即只激活预处理,不生成文件,需要把它重定向到一个输出文件里面。
- -S:让gcc 编译器在编译结束后停止编译过程,即使用语言代码生成汇编代码。
- -c:让gcc 编译器在进行汇编结束后停止编译过程,即使用汇编代码生成二进制的目标代码。
- -o:将文件内容输出到指定文件中,后面跟欲生成的目标文件的文件名。
- -static:使生成的文件采用静态链接的方式进行链接,即链接静态库。
- -g:生成调试信息,即生成DEBUG版本的可执行程序,GNU 调试器可利用该信息。
- -shared:使生成的文件尽量使用动态库,因此,生成文件会比较小,但是需要系统有动态库。
5、预处理
(1)功能
- 主要包括宏定义替换,头文件包含,条件编译语句处理,删除注释等等。
- 预处理指令是以#号开头的代码行。
(2)示例
6、编译
(1)功能
gcc 编译器首先要检查代码的规范性、是否有语法错误等等,以确定代码实际要做的工作。在检查无误后,gcc 编译器将会把代码翻译成汇编语言。
(2)示例
7、汇编
(1)功能
把编译阶段生成的“.s”文件转换成目标文件,即生成的文件内容为二进制代码。
(2)示例
8、链接
(1)功能
- 链接的功能其实就是一个“打包”的过程,它将所有二进制形式的目标文件和系统组件组合成一个可执行文件。
- 一般链接的过程有两种方式,一种是动态链接,需要有动态库;另一种是静态链接,需要有静态库。
- gcc、g++默认形成的可执行程序采用的是动态链接的方式进行链接的。
(2)示例
(3)注意
- 进行链接操作的机器可能因为没有静态库,而导致链接失败。
- 动态链接必须使用.so动态库文件、静态链接必须使用.a静态库文件。
- C语言静态库安装命令:sudo yum install -y glibc-static
- C++语言静态库安装命令:sudo yum install -y libstdc++ -static
9、函数库
(1)概念
- 在我们编写的C语言代码中,并没有定义printf函数的实现,且在包含的头文件stdio.h中,也只有该函数的声明,而没有定义函数的实现。
- 系统把这些函数实现都写到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径/usr/lib下进行查找,也就是链接 libc.so.6 库文件,这样才能使用printf函数,这就是链接的作用。
- 函数库一般分为静态库和动态库两种。
(2)静态库
在编译链接时,把库文件的代码全部加入到可执行文件中,虽然生成的文件比较大,但在运行时不再需要库文件了。静态库文件的后缀名一般为“.a”。
(3)动态库
与静态库相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库文件,即将库中我要的方法实现的地址填入我的可执行程序中,建立关联,这样可以节省系统的开销。动态库文件的后缀名一般为“.so”。
三、Linux项目自动化构建工具make/Makefile
1、概念
- 在一个工程中,会有许多源文件,其按类型、功能、模块分别放在若干个目录中,我们可以在Makefile中定义一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作等等。
- make/Makefile的功能就是自动化编译,一旦写好Makefile文件,只需要一个make命令,整个工程将会完全自动编译,极大地提高了软件开发的效率。
- make是一个解释Makefile中指令的命令工具。即make是一条命令,Makefile是一个文件,它们两个搭配起来使用,才能够完成项目的自动化构建。
2、示例
3、依赖关系
- 如果文件A的改变会影响到文件B,那么就称文件B依赖于文件A
- 例如,上方代码中test:test.c和clean:都是依赖关系。
4、依赖方法
- 如果文件B依赖于文件A,那么通过文件A得到文件B的方法,就是文件B依赖于文件A的依赖方法。
- 例如,上方代码中gcc test.c -o test和rm -f test都是依赖方法。
5、伪目标
- 总是被执行的,即总是会根据依赖关系,执行依赖方法,而不会因为执行后的文件无任何变动而不执行。
- 上方.PHONY后面跟着的就是伪目标,一般习惯把clean设置为.PHONY。
6、原理
- 当执行make命令时,make会在当前目录下查找文件名为Makefile或makefile的文件。
- 如果找到了,它会在该文件内容中查找第一个目标文件(target),在上面的示例中,他会找到test这个目标文件,并把这个文件作为最终的目标文件。
- 如果test文件不存在,或者test所依赖的test.c文件的文件修改时间比test这个文件新,那么,它就会执行后面所定义的命令来生成test目标文件。
- 如果test目标文件已存在且所依赖的test.c文件的文件修改时间比test这个目标文件老,则make会报出目标文件是最新版本的错误,而不会执行后面所定义的命令来生成test目标文件。
- 如果test所依赖的test.c文件不存在,那么make会在当前文件中查找目标为test.c文件的依赖关系,如果找到,则再根据那一个规则生成test.c文件。
- make会一层一层地查找文件的依赖关系,直到最终编译出第一个目标文件。
- 在查找的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令出现错误,或者编译不成功,make不会去管它。即make只管文件的依赖性,如果查找到依赖关系之后,冒号后面的文件还是不在,那么make将不会继续工作了。
7、项目清理
- 在每次重新生成可执行程序前或者不需要可执行程序时,应该将上一次生成可执行程序时生成的一系列文件进行清理(删除),但是如果我们每次都要自己手动去执行那些指令进行清理工作的话,就会变得比较麻烦,因为每次清理时执行的都是相同的清理(删除)指令。所以,我们可以将项目清理的指令也加入到Makefile文件中。
- 像clean这种,没有被第一个目标文件直接或间接关联时,它后面所定义的命令将不会被自动执行。不过,我们可以显式的让make执行它。即执行命令make clean,以此来清理(删除)所有的目标文件,以便重新编译。
四、Linux 软件包管理器yum
1、软件包
要在Linux下安装软件,通用的办法是下载程序的源代码,并进行编译,进而得到可执行程序。但是这样操作太麻烦了。于是,就有人把一些常用的软件提前编译好,做成软件包并放在一个服务器上,而用户可以通过包管理器很方便地获取到这个编译好的软件包,然后直接进行安装。
2、查看软件包
(1)命令
yum list
(2)功能
罗列出当前一共有哪些软件包,但由于包的数目可能有很多,我们可以使用 grep 命令进行筛选,即只显示我们要查找的软件包。
(3)示例
3、安装软件包
(1)命令
sudo yum install -y 欲安装的软件包
(2)说明
执行完命令后,yum会自动查找都有哪些软件包需要下载,这时候按y确认安装即可(上方命令没有加-y默认安装时)。当出现complete字样时,说明安装已经完成。
(3)注意
- 由于安装软件时需要向系统目录中写入内容,一般需要加sudo 或者切换成 root 用户才能进行安装。
- yum安装软件时,只能将正在安装的软件安装完成了才能安装另一个。即如果yum正在安装一个软件时,这时再尝试用yum安装另外一个软件,yum会报有其他软件正在安装的错误并显示那个软件的安装信息,直到那个软件安装完成后才进行安装。当然,yum正在安装的软件的安装不会中止。
(4)示例
安装软件
yum正在安装软件时,再安装别的软件时报的错误
当安装的软件已经安装且为最新版本时的运行结果
4、卸载软件
(1)命令
sudo yum remove 欲删除的软件
(2)示例
五、Linux调试器gdb
1、说明
- 可执行程序的发布方式有两种,debug模式和release模式。
- Linux下的 gcc/g++编译器编译出来的二进制可执行程序,默认是release模式发布的。
- 要使用gdb进行调试,必须在源代码生成可执行二进制程序的时候,加上 -g 选项,使生成的可执行二进制程序是debug模式发布的。
- gdb会记录最近一条命令,如果使用的命令无变化时,可以直接按回车键。
2、使用格式
gbd debug模式发布的可执行二进制文件
3、调试命令
- q(或者quit或者ctrl + d):退出gdb调试。
- list/l 行号:显示生成binFile(debug模式的可执行二进制文件)的文件的源代码,接着上次的位置往下列,每次列10行,还需继续往下列可以按回车键或者继续输入那个命令,直到代码全部列完为止。
- list/l 函数名:列出文件内某个函数的源代码。
- r或run:运行程序。
- n 或 next:逐过程调试。
- s 或 step:逐语句调试,即如果下条调试语句为函数调用,将进入那个函数体内。
- break / b 行号:在指定行设置断点。
- break 函数名:在某个函数体的开头位置设置断点。
- info break / b:查看断点信息。
- finish:执行完当前函数后,停下来等待命令。
- p 变量:打印变量的值。
- set var 修改变量的表达式:修改变量的值。
- continue / c:从当前位置开始连续而非单步执行程序,即跳转到下一个断点处或者运行结束。
- d breakpoints (或者delete breakpoints):删除所有断点。
- d n (或者delete breakpoints n):删除序号为n的断点。
- disable breakpoints:禁用全部断点。
- enable breakpoints:启用全部断点。
- disable b num (或者disable breakpoints num):禁用序号为num的断点。
- enable b num(或者enable breakpoints num):启用序号为num的断点。
- info b(或者info breakpoints 或者 i b):查看当前设置的断点。
- display 变量名:跟踪查看一个变量,每次调试停下来时都显示它的值。
- undisplay:取消对先前设置的全部变量的跟踪。
- until X:跳转至X行。
- bt:查看各级函数调用及参数。
- info / i locals:查看当前栈帧局部变量的值。
4、示例
不加-g,即生成的是release发布的可执行二进制文件时,用gdb调试时报的错误
本文到这里就结束了,如有错误或者不清楚的地方欢迎评论或者私信
创作不易,如果觉得博主写得不错,请务必点赞、收藏加关注💕💕💕
相关文章:

vim、gcc/g++、make/Makefile、yum、gdb
vim、gcc/g、make/Makefile、yum、gdb 一、Linux编辑器vim1、简介2、三种模式的概念(1)正常/普通/命令模式(Normal mode)(2)插入模式(Insert mode)(3)末行/底行模式(last line mode) 3、三种模式的切换4、正…...

2022最新版-李宏毅机器学习深度学习课程-P13 局部最小值与鞍点
一、优化失败的原因 局部最小值?鞍点? 二、数学推导分析 用泰勒公式展开 一项与梯度(L的一阶导)有关,一项与海赛矩阵(L的二阶导)有关 海瑟矩阵 VTHV通过海瑟矩阵的性质可以转为判断H是否是正…...

ARM架构的基本知识
ARM两种授权 体系结构授权, 一种硬件规范, 用来约定指令集, 芯片内部体系结构(内存管理, 高速缓存管理), 只约定每一条指令的格式, 行为规范, 参数, 客户根据这个规范自行设计与之兼容的处理器处理IP授权, ARM公司根据某个版本的体系结构设计处理器, 再把处理器设计方案授权给…...

网络安全(黑客技术)——如何高效自学
前言 前几天发布了一篇 网络安全(黑客)自学 没想到收到了许多人的私信想要学习网安黑客技术!却不知道从哪里开始学起!怎么学?如何学? 今天给大家分享一下,很多人上来就说想学习黑客,…...

云原生场景下高可用架构的最佳实践
作者:刘佳旭(花名:佳旭),阿里云容器服务技术专家 引言 随着云原生技术的快速发展以及在企业 IT 领域的深入应用,云原生场景下的高可用架构,对于企业服务的可用性、稳定性、安全性越发重要。通…...

图论-最短路径算法-弗洛伊德算法与迪杰斯特拉算法
弗洛伊德算法: 弗洛伊德算法本质是动态规划,通过添加点进如可选择的点组成的集合的同时更新所有点之间的距离,从而得到每两个点之间的最短距离。 初始化: 创建一个二维数组 dist,其中 dist[i][j] 表示从节点 i 到节点…...

[23] IPDreamer: Appearance-Controllable 3D Object Generation with Image Prompts
pdf Text-to-3D任务中,对3D模型外观的控制不强,本文提出IPDreamer来解决该问题。在NeRF Training阶段,IPDreamer根据文本用ControlNet生成参考图,并将参考图作为Zero 1-to-3的控制条件,用基于Zero 1-to-3的SDS损失生成…...

深入理解React中的useEffect钩子函数
引言: React是一种流行的JavaScript库,它通过组件化和声明式编程的方式简化了前端开发。在React中,一个核心概念是组件的生命周期,其中包含了许多钩子函数,用于管理组件的不同阶段。其中之一就是useEffect钩子函数&…...

数字化时代的财务管理:挑战与机遇
导语:随着数字化技术的不断发展,财务管理正面临着前所未有的挑战和机遇。数字化不仅改变了财务数据的收集、处理和分析方式,还为财务决策提供了更多的依据和方向。本文将探讨数字化时代财务管理的新特点,以及如何利用数字化技术提…...

网络通信协议-HTTP、WebSocket、MQTT的比较与应用
在今天的数字化世界中,各种通信协议起着关键的作用,以确保信息的传递和交换。HTTP、WebSocket 和 MQTT 是三种常用的网络通信协议,它们各自适用于不同的应用场景。本文将比较这三种协议,并探讨它们的主要应用领域。 HTTPÿ…...

【深度学习】深度学习实验四——循环神经网络(RNN)、dataloader、长短期记忆网络(LSTM)、门控循环单元(GRU)、超参数对比
一、实验内容 实验内容包含要进行什么实验,实验的目的是什么,实验用到的算法及其原理的简单介绍。 1.1 循环神经网络 (1)理解序列数据处理方法,补全面向对象编程中的缺失代码,并使用torch自带数据工具将数据封装为dataloader。 (2)分别采用手动方式以及调用接口方式…...

DB2分区表详解
一、分区表基本概念 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。分区后的表称为分区表。 表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个“表空间”(物理文件上),这样查询数据时…...

基本地址变换机构
基本地址变换机构:用于实现逻辑地址到物理地址转换的一组硬件机构。 关于页号页表的定义,放个本人的传送门 1.页表寄存器 基本地址变换机构可以借助进程的页表将逻辑地址转换为物理地址。 1.作用 通常会在系统中设置一个页表寄存器(PTR&…...

以单颗CMOS摄像头重构三维场景,维悟光子发布单目红外3D成像模组
维悟光子近期发布全新单目红外3D成像模组,现可提供下游用户进行测试导入。通过结合微纳光学元件编码和人工智能算法解码,维悟光子单目红外3D成像模组采用单颗摄像头,通过单帧拍摄,可同时获取像素级配准的3D点云和红外图像信息,可被应用于机器人、生物识别等广阔领域。 市场…...

Jinja2模板注入 | python模板注入特殊属性 / 对象讲解
在进行模板利用的时候需要使用特殊的属性和对象进行利用,这里对这些特殊属性及方法进行讲解 以下实验输出python3版本为 3.10.4, python2版本为 2.7.13 特殊属性 __class__ 类实例上使用,它用于获取该实例对应的类__base__ 用于获取父类__mr…...

一致性公式证明
首先,假设存在两个不同的聚类假设 f 1 f^1 f1和 f 2 f^2 f2,它们在两个视角上的聚类结果分别为 y 1 ∈ { − 1 , 1 } n y^1\in\{-1,1\}^n y1∈{−1,1}n和 y 2 ∈ { − 1 , 1 } n y^2\in\{-1,1\}^n y2∈{−1,1}n。 证明一致性不等式: …...

allegro中shape的一些基本操作(一)——添加和修改shape
添加shape 简单添加shape的方式有3种,如下图所示 点击选择相应的shape模式后可以在option面板中设置相应的shape参数(这里不做过多介绍,里面可以设置shape的大小、静态或动态shape等参数),然后再用鼠标在相应的层上添…...

HBuilder创建uniapp默认项目导入uview(胎教)
1:更新HBuilder 建议更新 2:更新插件 我本人在没有更新插件的情况下报错了,找到了**这个大佬**解决问题,所以建议更新插件 先卸载uni-app(Vue2)编译 再重新安装 uni-app(Vue2)…...

C语言基础算法复习
003 斐波那契数列问题 #include<stdio.h> int main() {int i,f11,f21,f3,num;printf("%5d %5d",f1,f2);num2;for(i1; i<18; i){f3f1f2;f1f2;f2f3;num;printf("%5d",f3);if(num%40) printf("\n");}return 0; }//#输数斐波那契数列的前20…...

PyQt界面里如何加载本地视频以及调用摄像头实时检测(小白入门必看)
目录 1.PyQt介绍 2.代码实现 2.1实时调用摄像头 2.2 使用YOLOv5推理 2.3 代码中用到的主要函数 1.PyQt介绍 PyQt是一个用于创建桌面应用程序的Python绑定库,它基于Qt框架。Qt是一个跨平台的C应用程序开发框架,提供了丰富的图形界面、网络通信、数据…...

Ubuntu:VS Code IDE安装ESP-IDF【保姆级】
物联网开发学习笔记——目录索引 参考: VS Code官网:Visual Studio Code - Code Editing. Redefined 乐鑫官网:ESP-IDF 编程指南 - ESP32 VSCode ESP-ID Extension Install 一、前提条件 Visual Studio Code IDE安装ESP-IDF扩展&…...

软考高级系统架构设计师系列之:快速掌握软件工程核心知识点
软考高级系统架构设计师系列之:快速掌握软件工程核心知识点 一、软件开发方法二、软件开发模型三、软件开发模型-瀑布模型四、软件开发模型-经典模型汇总五、软件开发模型-增量模型与螺旋模型六、软件开发模型-V模型七、软件开发模型-构件组装模型八、软件开发模型-统一过程九…...

Java基础面试-ArrayList和LinkedList的区别
ArrayList: 基于动态数组,连续内存存储,适合下标访问(随机访问),扩容机制: 因为数组长度固定,超出长度存数据时需要新建数组,然后将老数组的数据拷贝到新数组,如果不是尾部插入数据还会涉及到元素的移动(往…...

如何从 Pod 内访问 Kubernetes 集群的 API
Kubernetes API 是您检查和管理集群操作的途径。您可以使用Kubectl CLI、工具(例如curl)或流行编程语言的官方集成库来使用 API 。 该 API 也可供集群内的应用程序使用。Kubernetes Pod 会自动获得对 API 的访问权限,并且可以使用提供的服务帐户进行身份验证。您可以通过使…...

计网面试复习自用
五层: 应用层:应用层是最高层,负责为用户提供网络服务和应用程序。在应用层,用户应用程序与网络进行交互,发送和接收数据。典型的应用层协议包括HTTP(用于网页浏览)、SMTP(用于电子邮…...

【Android 性能优化:内存篇】——WebView 内存泄露治理
背景:笔者在公司项目中优化内存泄露时发现WebView 相关的内存泄露问题非常经典,一个 Fragment 页面使用的 WebView 有多条泄露路径,故记录下。 Fragment、Activity 使用WebView不释放 项目中一个Fragment 使用 Webview,在 Fragm…...

C++入门(一)
文章目录 前言一、C的发展史二、c关键字二、c命名空间1、代码演示2、::(域作用限定符) 和namespace(命名空间)3、命名空间可以嵌套使用4、同一个工程中的相同名字的命名空间 三、c的输入&&输出1、iostream(输入…...

C#控制台程序读取输入按键非阻塞方式
参考内容: http://www.dutton.me.uk/2009-02-24/non-blocking-keyboard-input-in-c/ 相关代码: while (true) {if (Console.KeyAvailable){ConsoleKeyInfo key Console.ReadKey(true);switch (key.Key){case ConsoleKey.F1:Console.WriteLine("Y…...

小程序框架->框架,视图层,生命周期(逻辑层)
框架视图层生命周期(逻辑层) 1.框架 小程序开发框架的目标是通过尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务。 整个小程序框架系统分为两部分:**[逻辑层](https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/)…...

Spring framework Day14:配置类的Lite模式和Full模式
前言 Lite模式和Full模式是指在软件或系统中的不同配置选项。一般来说,Lite模式是指较为简洁、轻量级的配置,而Full模式则是指更加完整、功能更丰富的配置。 Lite模式通常会去除一些不常用或占用资源较多的功能,以提高系统的运行效率和响应…...