Linux中的开发工具(yum,vim,gcc/g++,gdb,Makefile,git)
文章目录
- 1. Linux软件包管理器——yum
- yum 语法
- yum 常用命令
- 安装 yum 仓库源
- 2. Linux编辑器——vim
- vim 的五种常用模式
- 模式切换
- vim 基本操作
- 命令模式命令集
- (1)光标命令
- (2)复制粘贴命令
- (3)撤销与重做
- (4)删除
- (5)替换
- (6)其他命令
- 底行模式命令集
- (1)设置与取消行号
- (2)保存并退出
- (3)查找字符
- (4)其他
- 替换模式
- 视图模式
- 注释
- 取消注释
- vim 下的多线程操作
- 切换文件
- vim 配置
- 安装方法
- 3. Linux编译器——gcc/g++
- 一个C/C++程序形成可执行文件的过程
- gcc/g++ 的使用
- 函数库
- 动静态库的优缺点
- gcc/g++ 选项
- Linux调试器——gdb
- 1. 安装gdb
- 2. gdb的使用
- Linux项目自动化构建工具——make/Makefile
- 用法
- 理解
- 伪目标的概念及性质
- 文件的时间属性
- Makefile 推导能力
- Makefile 定义变量
- git
- 安装git
- git 四板斧
- git 其他命令
1. Linux软件包管理器——yum
yum(Yellow dog Updater,Modified)是Linux下非常常用的一种包管理器。主要应用在Fedora,RedHat,Centos等发行版上。
和手机上的软件商店类似,我们可以使用 yum 来下载各种我们想要的软件包。使用 yum 时必须联网。
yum 基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum 语法
yum [options] [command] [package ...]
- **options:**可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 “yes”),-q(不显示安装的过程)等等。
- **command:**要进行的操作。
- **package:**安装的包名。
yum 常用命令
- 列出所有可更新的软件清单命令:yum check-update
- 更新所有软件命令:yum update
- 仅安装指定的软件命令:yum install <package_name>
- 仅更新指定的软件命令:yum update <package_name>
- 列出所有可安裝的软件清单命令:yum list
- 删除软件包命令:yum remove <package_name>
- 查找软件包命令:yum search
- 清除缓存命令:
- yum clean packages: 清除缓存目录下的软件包
- yum clean headers: 清除缓存目录下的 headers
- yum clean oldheaders: 清除缓存目录下旧的 headers
- yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers
安装 yum 仓库源
- epel【扩展软件源】
ls /etc/yum.repos.d/
【查看是否有epel-repo】- 系统内如果没有 epel-repo,则需安装yum仓库源
yum install -y epel-release
2. Linux编辑器——vim
vi/vim 都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于 x window、 mac os、windows。
vim 有十二种模式,但是常用的有五种。
本篇文章只讲解这五种模式。
vim 的五种常用模式
- 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode- 插入模式(Insert mode)
只有在 Insert mode 下,才可以做文字输入,按「ESC」键可回到命令行模式- 底行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,「shift + :」即可进入该模式- 替换模式【shift + r = R】
- 视图模式【ctrl + v】
要查看你的所有模式:打开vim,底行模式直接输入
help vim-modes
模式切换
vim 基本操作
进入vim,在系统提示符号输入vim 及文件名称后,就进入vim 全屏幕编辑画面。
【注】进入vim之后,是处于 [正常模式],你要切换到 [插入模式] 才能够输入文字。
[正常模式] 切换至 [插入模式]
输入a
(默认定位到光标的下一个位置)
输入i
(默认定位到光标处)
输入o
(默认定位到光标的下一列开头)[插入模式] 切换至 [正常模式]
目前处于 [插入模式],就只能一直输入文字,如果发现输错了字,想用光标键往回移动,将该字删除,可以先按一下Esc
键转到 [正常模式] 再删除文字。当然,也可以直接删除。[正常模式] 切换至 [末行模式]
: (即 shift + ;)
退出 vim 及保存文件,在 [命令模式] 下,按一下
:
冒号键进入 [底行模式]
:w
(保存当前文件)
:wq
(保存并退出 vim)
:w!
(强制保存)
:q!
(不保存强制退出 vim)
:wq!
(强制保存并退出 vim)
命令模式命令集
(1)光标命令
vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
按「 $ 」:移动到光标所在行的“行尾”
按「^」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l
按[gg]:进入到文本开始处
按[shift+g]:进入文本末端
按「ctrl」+「g」:列出光标所在行的行号。
按「#G」:表示移动光标至文章的第#行行首。
按「ctrl」+「b」:屏幕往“后”移动一页
按「ctrl」+「f」:屏幕往“前”移动一页
按「ctrl」+「u」:屏幕往“后”移动半页
按「ctrl」+「d」:屏幕往“前”移动半页
(2)复制粘贴命令
- 「yw」:将光标所在之处到字尾的字符复制到缓冲区中,即复制单词【「nyw」复制 n 个单词到缓冲区】
- 「yy」:复制光标所在行到缓冲区。【可以 nyy 复制 n 行】
- 「p」:将缓冲区内的字符贴到光标所在位置【注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能】【可以「np」粘贴 n 次】
(3)撤销与重做
- 「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
- 「ctrl + r」:撤销的恢复【对 ctrl + r 后悔,还按 u】
(4)删除
- 「x」:每按一次,删除光标所在位置的一个字符【可以 nx 删除后面 n 个字母】
- 「X」:大写的X,每按一次,删除光标所在位置的 “前面” 一个字符【可以 nx 删除前面 n 个字母】
- 「dd」:删除光标所在行【和 p 配合,实现剪切】【可以 ndd 剪切 n 行】
(5)替换
- 「r」:替换光标所在处的字符【支持 nr 用一个字符替换多个字符】
- 「R」:进入替换模式,替换光标所到之处的字符,直到按下「ESC」键为止
(6)其他命令
- 「shift + ~ 」:自动切换字母大小写
- 「shift + # 」:自动查询选出和光标所在单词相同的所有单词,按 n 倒着查看下一个
底行模式命令集
(1)设置与取消行号
设置行号在底行模式输入:
set nu
取消行号在底行模式输入:
set nonu
(2)保存并退出
:w
(保存当前文件)
:wq
(保存并退出 vim)
:w!
(强制保存)
:q!
(不保存强制退出 vim)
:wq!
(强制保存并退出 vim)
(3)查找字符
在底行模式输入:
/关键字
此关键字会语法高亮出来,若这个关键字不是你想找的那个,可以按n键跳到下一个关键字位置。
(4)其他
可以在底行模式下执行 Linux 命令语句。
如:
!gcc test.c(加了!,不退出 vim 直接编译)
!./a.out(加了!,不退出 vim 直接运行)
替换模式
命令模式下输入:
shift + r
在此模式下,所有的输入都会被当作替换,替换完成后按 Esc即可。
视图模式
命令模式下输入:
ctrl + v
在左下角显示visual就代表进入了视图模式
注释
在视图模式下用
h j k l
选中要注释的行,选好后用shift +i
进入插入模式,再输入//
按Esc
退出,注释完成。
取消注释
进入视图模式,用
h j k l
选中要取消注释区域的前两列,按d
,即可删除注释。
vim 下的多线程操作
vim 文本编辑器可以同时打开多个文件,在vim的底行模式下输入:
vs 想要打开的文件名
。虽然说有多个文件,但是光标只有一个,光标在哪个文件,现在就在编辑哪个文件。
切换文件
使用指令:
ctrl + ww
vim 配置
在普通的 vim 编辑器下,我们写代码会非常别扭,没有换行,没有高亮,没有缩进······
在此,给大家推荐一个基于 C/C++ 非常好用的 vim 编辑器配置。
链接:vimforcpp
安装方法
3. Linux编译器——gcc/g++
- gcc:C语言编译器,只能编译C语言。
- g++:C++编译器,C/C++都能编译。
除此之外,gcc/g++还有链接的功能,可以直接生成可执行程序。
一个C/C++程序形成可执行文件的过程
分为四步:
(1)预处理:进行宏的替换、头文件展开、注释的删除(空格替换)。
(2)编译:将代码转化为汇编代码(这个阶段主要负责语法分析、符号汇总、 词法分析、 语义分析)。
(3)汇编:将汇编代码转化为二进制机器指令,生成符号表。
(4)链接:汇编完成后会把对应源文件生成目标文件,链接阶段就是把这些目标文件进行链接。
gcc/g++ 的使用
- 格式
gcc [选项] 要编译的文件 [选项] [目标文件]
- 直接形成可执行程序
gcc/g++ test.c -o test.exe
注意:-o选项用于指定生成的可执行文件的名称。这个选项后面需要跟上一个文件名作为参数,不加-o选项的话自动生成,默认生成的可执行程序的名称是a.out。
- 使用C99标准编译
gcc test.c -std=99
- 预处理(进行宏替换,条件编译)
gcc -E test.c -o test.i
注意:经过预处理的文件以.i
为后缀。
- 编译(生成汇编代码)
gcc –S test.i –o test.s
- 汇编(生成二进制机器码)
gcc –c test.s –o test.o
- 链接(生成可执行程序)
gcc test.o –o test.exe
gcc其它选项
-g 生成调试信息。GNU 调试器可利用该信息。
-w 不生成任何警告信息。
运行可执行程序
./test.exe
注:
.
表示在当前目录下寻找可执行程序。
函数库
我们的C程序中,并没有定义
printf
的函数实现,且在预编译中包含的stdio.h
中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实现printf
函数的呢?
于是就引出了函数库的概念,系统把这些函数实现都放在了为libc.so.6
的库文件中去了,在没有特别指定时,gcc 会到
系统默认的搜索路径/usr/lib
下进行查找,也就是链接到libc.so.6
库函数中去,这样就能实现printf
函数了,而这也就是链接的作用。
函数库一般分为静态库和动态库两种。
静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为
.a
。
动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为.so
,如前面所述的libc.so.6
就是动态库。gcc 在编译时默认使用动态库。完成了链接之后,gcc 就可以生成可执行文件。
对于库名字的解释:(以libc.so.6
为例)lib为前缀,c为库名字也就是C语言标准库,.so.6后缀与版本号。
- Linux下:
.so
是动态库.a
是静态库- Windows下:
.ddl
是动态库.lib
是静态库
查看一个可执行程序依赖的第三方库:ldd 可执行程序名
动静态库的优缺点
动静态库的区别是:
- 动态库是共享库,通过函数地址来关联程序
- 静态库是通过代码拷贝,从而形成私有库,可以独立运行
优缺点:
动态库:
- 优点:形成的可执行程序体积较小,节省资源
- 缺点:要找函数地址,会稍慢一点,并且有强依赖性
静态库:
- 优点:无视库,可以独立运行
- 缺点: 体积太大,浪费资源
我们编译代码时不指定说明默认使用动态库。
如果你想使用静态库编译代码:
gcc test.c -static
gcc/g++ 选项
- -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
- -S 编译到汇编语言不进行汇编和链接
- -c 编译到目标代码
- -o 文件输出到 文件
- -static 此选项对生成的文件采用静态链接
- -g 生成调试信息。GNU 调试器可利用该信息。
- -shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统有动态库
- -O0 / -O1 / -O2 / -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
- -w 不生成任何警告信息。
- -Wall 生成所有警告信息。
Linux调试器——gdb
- 程序的发布方式有两种,debug模式和release模式
- Linux gcc/g++ 编译产生的二进制程序,默认是release模式
- 要使用gdb调试,必须使用debug模式编译,即在源代码生成二进制程序的时候,加上 -g 选项
1. 安装gdb
sudo yum -y install gdb
2. gdb的使用
进入调试:
gdb 可执行程序
退出调试:
ctrl + d
或quit
调试命令:
- list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
- list/l 函数名:列出某个函数的源代码。
- r或run:运行程序。
- n 或 next:单条执行。
- s或step:进入函数调用
- break(b) 行号:在某一行设置断点
- break 函数名:在某个函数开头设置断点
- info break :查看断点信息。
- finish:执行到当前函数返回,然后挺下来等待命令
- print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
- p 变量:打印变量值。
- set var:修改变量的值
- continue(或c):从当前位置开始连续而非单步执行程序
- run(或r):从开始连续而非单步执行程序
- delete breakpoints:删除所有断点
- delete breakpoints n:删除序号为n的断点
- disable breakpoints:禁用断点
- enable breakpoints:启用断点
- info(或i) breakpoints:参看当前设置了哪些断点
- display 变量名:跟踪查看一个变量,每次停下来都显示它的值
- undisplay:取消对先前设置的那些变量的跟踪
- until X行号:跳至X行
- breaktrace(或bt):查看各级函数调用及参数
- info(i) locals:查看当前栈帧局部变量的值
Linux项目自动化构建工具——make/Makefile
- 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。
- makefile带来的好处就是——”自动化编译“,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
- make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
- make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
用法
makefile是一个具有特定格式的文本文件。
首先在当前目录下创建一个
Makefile
,再用 vim 编辑。假设我们已经写好了C程序
test.c
,我们想通过Makefile文件来调用编译、删除等指令,我们可以写以下代码:mybin:test.cgcc test.c -o mybin .PHONY:clean clean:rm -rf mybin
格式注意:第二行是以tab键开头,不能以空格开头。
保存退出 vim,接下来,我们只需要输入
make
就会执行gcc test.c -o mybin
指令编译形成可执行程序mybin
,使用make clean
就会执行rm -rf mybin
指令删除mybin
。
理解
在上面用法中输入
make
指令,其实等同于输入了make mybin
。这是因为单独输入make
,会从上到下扫描Makefile
文件,执行其第一个指令。要想执行后面的指令,则需要像上面的make clean
一样,输入make 操作名
。
伪目标的概念及性质
在上面
Makefile
文件中,我们写了这样的代码:.PHONY:clean
.PHONY
是将clean
指令修饰成了伪目标。
clean
被修饰后,只要我们输入一次make clean
,就会执行一次rm -rf mybin
。而没有被修饰成伪目标的mybin
,执行完第一次,执行第二次时由于已经是最新编译结果了,则不会再执行。
我们得出结论:被修饰成伪目标后,此文件总是被执行
文件的时间属性
操作系统是如何知道我们的 test.c 是否被修改,从而驳回我们的
make
请求的呢?答案一定是文件的时间属性!!!我们知道,先有源文件后才有可执行程序,所以源文件的修改时间一定小于可执行文件的修改时间。在第二次
make
时,操作系统发现源文件的修改时间小于可执行程序的修改时间,所以驳回了make
请求。同理,修改源文件后,源文件的修改时间大于可执行文件的修改时间,所以操作系统会重新执行make
。
查看文件属性
使用指令:
stat 文件名
注意:
文件 = 内容 + 属性
修改文件的内容可能会影响文件的属性,修改文件的属性不会影响文件的内容。
Makefile 推导能力
举例
mybin:test.ogcc csdn.o -o mybin
test.o:test.sgcc -c csdn.s -o test.o
test.s:test.igcc -S code.i -o test.s
test.i:test.cgcc -E csdn.c -o test.i
首先,
mybin
依赖的是test.o
文件但是系统中此时没有test.o
文件,就会执行下一条指令,但是test.o
文件依赖的是test.s
文件,系统中此时没有test.s
文件又会跳到下一条指令,以此往复直到找到系统中存在的test.c
文件,再倒推回去。
Makefile 定义变量
操作方法
target=mybin cc=gcc src=test.c $(target):$(src)$(cc) $(src) -o $(target) .PHONY:clean clean:rm -rf $(target)
- 可以用
$^
代表依赖关系的左边- 可以用
$@
代表依赖关系的右边如:
mybin:test.cgcc $@ -o $^ .PHONY:clean clean:rm -rf mybin
如果你不想一条指令被打印在显示器,可以在指令前加上@符号。
git
安装git
yum install git
git 四板斧
git clone + 仓库链接
【克隆远端仓库到本地】git add .
【增加当前目录下所有新文件至本地仓库】git commit -m "日志"
【注:提交时必须 -m 带日志】git push
【推送到远端仓库】
git 其他命令
git log
【查看提交日志、提交记录】git pull
【同步远端和本地仓库】git status
【查看本地仓库状态】
相关文章:

Linux中的开发工具(yum,vim,gcc/g++,gdb,Makefile,git)
文章目录 1. Linux软件包管理器——yumyum 语法yum 常用命令安装 yum 仓库源 2. Linux编辑器——vimvim 的五种常用模式模式切换vim 基本操作命令模式命令集(1)光标命令(2)复制粘贴命令(3)撤销与重做&#…...

什么是自动证书管理环境(ACME)
组织的网站需要 24x7 全天候可用,以建立信任并提供信息,如果网站因证书过期而停机,那么很难恢复失去的客户信任、收入和品牌声誉,手动管理证书基础结构会使组织面临中断、中间人 (MITM) 攻击等的严重风险。…...

探索光模块的MSA多源协议
在当今高度互联的世界中,光模块作为网络设备的重要部分,其性能和质量直接影响到整个网络系统的运行。其中光模块由于其灵活性和高效性,已经成为数据中心和云计算领域的主要选择。本文易天光通信将深入探讨光模块的MSA协议,揭示其重…...

《算法通关村——双指针妙用》
《算法通关村——双指针妙用》 删除元素 描述 给你一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。要求:不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组…...

postgresql|数据库迁移|ora2pg工具的web界面介绍
前言: ora2pg是一个比较强大的数据库迁移工具,那根据名字来说,也可以看出来,这个工具主要是用来配置去O化,将在运行的oracle数据库迁移到postgresql数据库内的 当然了,我们使用此工具主要还是用命令行&am…...
【zookeeper】zk的ZAB原子广播协议
zk的ZAB原子广播协议来源于paxos算法[1]。paxos算法是一种基于消息传递的消息一致性算法,其特点是在可靠的通信环境下,可以保证消息的最终一致性。paxos要求每台server都持有自己的一个事务id的记录,这个事务id会每通过一个提议就自增加一&am…...

【问题思考总结】为什么分布函数右连续要左闭右开
问题 这个问题困扰我很久了,虽然感觉没什么用,但是还是想着搞清楚一点。 思考 Q1:什么是右连续? A1:F(x0)F(x0),即函数在一点的右极限等于该点的函数值。 …...
解决 edge 浏览器开发者工具出不来的问题
文章目录 猜测原因问题现象尝试过程最终解决办法C盘爆满解决经过(拆东墙补西墙) 猜测原因 windows 系统更新导致电脑管家C盘迁移导致(我C盘爆满了,每天提醒看着膈应,想着清理一下) 问题现象 按F12 和 右键…...

嵌入式算法——傅里叶变换算法
文章引注 https://mp.weixin.qq.com/s/5VIpNWci9YLY3m4gcYd6-w 摘要 傅里叶变换的核心在于,“任何连续周期信号可以由一组适当的正弦曲线组合而成”,在这个基础上对信号的中特定频率的正弦波进行分解或者重组,基于频率方面分析波形。 1、傅…...

让数据“动”起来:Python动态图表制作详解
在读技术博客的过程中,我们会发现那些能够把知识、成果讲透的博主很多都会做动态图表。他们的图是怎么做的?难度大吗?这篇文章就介绍了 Python 中一种简单的动态图表制作方法。 数据暴增的年代,数据科学家、分析师在被要求对数据有…...
Python获取网络适配器接口的类型、状态IPv4和IPv6地址
参考CSDN博主「Kwoky」的https://blog.csdn.net/Kwoky/article/details/84858997的简介: psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。它主要用来…...

无敌了!Redis进军磁盘存储!
在高手林立的数据库江湖,Redis就像一个刺客,或许不如经典数据库存在感强,但因其高性能的特质而在群英榜中独占一席。 作为缓存的首选内存数据库,Redis最近放出了一个大新闻——将磁盘作为分层存储体系结构的一部分,以…...

中文编程开发语言工具编程实际案例:台球棋牌混合计时计费软件使用的编程构件说明
中文编程开发语言工具编程实际案例:台球棋牌混合计时计费软件使用的编程构件说明 上图说明:该软件可以用于桌球和棋牌同时计时计费,在没有开台的时候,图片是处于等待状态,这使用编程工具中的固定图像构件,在…...

在线客服系统源码 客服系统源码
在线客服系统源码 客服系统源码 框架:Thinkphp5workerman,环境:nginxphp7.3mysql5.6 多商户客服、不限坐席、独立系统--数据存储自己服务器上,支持开启SSL、支持离线对话。 新款在线客服系统全开源无加密:多商户、国…...

抽象轻松java——简易图书馆前置
用Maven写一个垃圾的项目,第一步打开IDEA,点击创建,创建一个Maven <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.22</versi…...

图书推荐管理系统Python+Django网页界面+协同过滤推荐算法
一、介绍 图书管理与推荐系统。使用Python作为主要开发语言。前端采用HTML、CSS、BootStrap等技术搭建界面结构,后端采用Django作为逻辑处理,通过Ajax等技术实现数据交互通信。在图书推荐方面使用经典的协同过滤算法作为推荐算法模块。主要功能有&#…...
IT行业就业方向:探索未来的职业机会
引言: 随着信息技术的飞速发展,IT行业已经成为了当前最具活力和发展潜力的行业之一。在这个充满机遇和挑战的时代,选择一个好的就业方向对于个人的职业发展至关重要。本文将探讨IT行业中哪些方向具有更好的就业前景,并提供一些建…...

docker-compose安装ES7.14和Kibana7.14(有账号密码)
一、docker-compose安装ES7.14.0和kibana7.14.0 1、下载镜像 1.1、ES镜像 docker pull elasticsearch:7.14.0 1.2、kibana镜像 docker pull kibana:7.14.0 2、docker-compose安装ES和kibana 2.1、创建配置文件目录和文件 #创建目录 mkdir -p /home/es-kibana/config mkdir…...
k8s-----14、controller-Job和Cronjob
Job和Cronjob 1、Job(一次性任务)2、CronJob(定时任务) 1、Job(一次性任务) [rootmaster controlleryaml]# cat job.yaml apiVersion: batch/v1 kind: Job metadata:name: pi spec:template:spec:contain…...

蓝桥杯每日一题2032.10.24
蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 由于布局为两个字节为一行,那我们输入两个数就为一行,但是这两个数全部得用二进制进行表示使用bitset bitset:将一个数转化为二进制 bitset<8>:将一个数转化为8位…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...