Linux中yum、vim、gcc/g++的使用
目录
一、Linux 软件包管理器 yum
什么是软件包
关于 rzsz
查看软件包★
如何安装软件★
如何卸载软件★
Linux 开发工具
二、Linux编译器-vim使用
vim的基本概念
vim的基本操作
vim正常模式命令集
vim末行模式命令集
vim操作总结
如果在vim界面不小心按了Ctrl + Z怎么处理
批量化注释和批量化去注释
批量化注释
批量化去注释
简单vim配置
配置文件的位置
常用配置选项,用来测试
使用插件
参考资料
三、Linux编译器-gcc/g++使用
背景知识
编译器的自举过程
gcc版本问题编辑
gcc如何完成
预处理(进行宏替换)
编译(生成汇编)
汇编(生成机器可识别代码)
连接(生成可执行文件或库文件)
在这里涉及到一个重要的概念:函数库
gcc选项
一、Linux 软件包管理器 yum
1.Linux中,常见的软件安装方式 ----下载&&安装
❍ yum/apt
❍ .rpm 安装包安装
❍ 源码安装
2.Linux的软件生态
不仅仅要看到Linux操作系统本身,还要看到特定OS背后的生态:论坛、官方文档、软件体系......
什么是软件包
● 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.
● 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
● 软件包和软件包管理器, 就好比 "App" 和 "应用商店" 这样的关系.
● yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat,
Centos等发行版上.
关于 rzsz
rz和sz是用于在Linux和Unix服务器与Windows客户端之间传输文件的常用命令行工具。它们通常在通过SSH进行远程登录时使用,特别是在串行线路上,如通过串口线或者网络进行远程登录时。
-
rz:该命令在服务器端运行,用于接收文件。它允许用户从本地机器上传文件到远程Linux/Unix服务器。 -
sz:该命令也是在服务器端运行,用于发送文件。它可以将远程服务器上的文件传输到本地机器。
这两个命令是lrzsz软件包的一部分,这个软件包是rz和sz命令的Linux实现,它们模仿了传统的ZModem文件传输协议。
以下是一些基本的用法示例:
1.上传文件到服务器: 在本地机器上,你通常会使用一个支持ZModem的终端仿真器,然后在服务器上输入 rz命令,之后选择要上传的文件。
rz
2.从服务器下载文件: 在服务器上输入 sz 命令后跟文件名,文件将被发送到本地机器。
sz filename
使用这些命令之前,通常需要在服务器上安装lrzsz软件包。在基于Debian的系统(如Ubuntu)上,可以使用以下命令安装:
sudo apt-get install lrzsz
在基于RPM的系统(如CentOS)上,可以使用以下命令安装:
sudo yum install lrzsz
请注意,rz和sz命令并不总是默认包含在Linux发行版中,而且它们的使用在安全方面有一定的限制,因为它们可能会在没有加密的情况下传输数据。因此,在可以使用更安全的文件传输方法(如scp或sftp)时,推荐使用这些方法来代替rz和sz。
注意事项
关于 yum 的所有操作必须保证主机(虚拟机)网络通畅!!!
可以通过 ping 指令验证
ping www.baidu.com
查看软件包★
通过 yum list 命令可以罗列出当前一共有哪些软件包。由于包的数目可能非常之多,这里我们需要使用 grep 命令只筛选出我们关注的包,例如
yum list | grep lrzsz
结果如下
lrzsz.x86_64 0.12.20-36.el7 @base
注意事项:
● 软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
● "x86_64" 后缀表示64位系统的安装包, "i686" 后缀表示32位系统安装包. 选择包时要和系统匹配.
● "el7" 表示操作系统发行版的版本. "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.
● 最后一列, base 表示的是 "软件源" 的名称, 类似于 "小米应用商店", "华为应用商店" 这样的概念.
如何安装软件★
通过 yum,我们可以通过很简单的一条命令完成 gcc 的安装
sudo yum install lrzsz
yum 会自动找到都有哪些软件包需要下载, 这时候敲 "y" 确认安装.
出现 "complete" 字样, 说明安装完成.
注意事项:
● 安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
● yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
● 如果 yum 报错, 请自行百度.
如何卸载软件★
仍然是一条命令
sudo yum remove lrzsz
Linux 开发工具
● IDE 例子
二、Linux编译器-vim使用
vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于windows、macos、x window。我们课堂上,统一按照vim来进行讲解
早期的键盘是没有上下左右小键盘的,早期使用HJKL控制方向
vim的基本概念
vim有12种模式,目前掌握这3种模式即可,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:
● 正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到last line mode
● 插入模式(Insert mode)
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式
● 末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。在命令模式下,
shift+;即可进入该模式。
要查看你的所有模式:打开 vim,底行直接输入
:help vim-modes
我这里一共有12种模式:six BASIC modes和six ADDITIONAL modes。
vim的基本操作
● 进入vim,在系统提示符号输入vim及文件名称后,就进入vim全屏幕编辑画面:
❍
$ vim test.c❍ 不过有一点要特别注意,就是你进入vim之后,是处于[正常模式],你要切换到[插入模式]才能够输入文字。

● 退出vim及保存文件,在【正常模式】下,按一下「:」冒号键进入「Last line mode」,例如
❍ w(保存当前文件)
❍ wq(保存并退出vim)
❍ q!(不保存强制退出vim)
vim正常模式命令集
● 插入模式
❍ 按「i」进入插入模式「Insert mode」,按“i”进入插入模式后从光标当前位置开始输入文件;
❍ 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
❍ 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字
● 从插入模式切换为命令模式
❍ 按「ESC」键。
● 移动光标
❍ vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」「j」「k」「l」,分别控制光标左、下、上、右一格
❍ 按「G」移动到文章的最后
❍ 按「$」移动到光标所在行的行尾
❍ 按「^」移动到光标所在行的行首
❍ 按「w」光标跳到下个单词的开头
❍ 按「b」光标跳到上个单词的开头
❍ 按「e」光标跳到下个字的字尾
❍ 按「num + l」光标移到接下来第num个位置,比如:5l,56l
❍ 按「gg」进入文本的开始
❍ 按「shift + g」进入文本末端
❍ 按「ctrl」+「b」屏幕往“后”移动一页
❍ 按「ctrl」+「f」屏幕往“前”移动一页
❍ 按「ctrl」+「u」屏幕往“后”移动半页
❍ 按「ctrl」+「d」屏幕往“前”移动半页
● 删除文字
❍ 「x」每按一次,删除光标所在位置的一个字符
❍ 「num + x」例如「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
❍ 「X」大写的X,每按一次,删除光标所在位置的“前面”一个字符
❍ 「num + X」例如,「20X」表示删除光标所在位置的“前面”20个字符
❍ 「dd」删除光标所在行
❍ 「num + dd」从光标所在行开始删除 num 行
● 复制
❍ 「yw」将光标所在之处到字尾的字符复制到缓冲区中
❍ 「num + yw」复制 num 个字到缓冲区
❍ 「yy」复制光标所在行到缓冲区
❍ 「num + yy」例如,「6yy」表示拷贝从光标所在的改行“往下数”6行文字
❍ 「p」将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。
● 替换
❍ 「r」替换光标所在处的字符
❍ 「R」替换光标所到之处的字符,直到按下「ESC」键为止
● 撤销上一次操作
❍ 「u」如果误执行一个命令,马上可以按下「u」,回到上一个操作
❍ 「ctrl + r」撤销的恢复
● 更改
❍ 「cw」更改光标所在处的字到字尾处
❍ 「c + num + w」:例如,「c3w」表示更改3个字
● 跳至指定的行
❍ 「ctrl」+「g」列处光标所在行的行号
❍ 「num + G」例如,「15G」表示移动光标至文章的第15行行首
vim末行模式命令集
在使用末行模式之前,请记住先按「ESC」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。
● 列出行号
❍ 「set nu」输入「set nu」后,会在文件中的每一行前面列出行号
● 跳到文件中的某一行
❍ 「num」直接在冒号后输入一个数字,再按回车键就会跳到改行了,如输入数字15,再回车,就会跳到文章的第15行。
● 查找字符
❍ 「/ 关键字」先按住「/」键,再输入您想寻找的字符,如果第一次找的关键字不是你想要的,可以一直按「n」会往后寻找到你要的关键字为止
❍ 「?关键字」先按住「?」键,再输入你想寻找的字符,如果第一次找的关键字不是你想要的,可以一直按「n」会往后寻找到你要的关键字为止
❍ 问题:/ 和 ?查找有和区别?操作实验一下
● 保存文件
❍ 「w」在冒号输入字母「w」就可以将文件保存起来
● 离开vim
❍ 「q」按住「q」就是退出,如果无法离开vim,可以在「q」后跟一个「!」强制离开vim
❍ 「wq」一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件
❍ shift + zz:保存并退出
● 分屏
❍ vs + filename
❍ ctrl + ww 进入另一端分配文件
vim操作总结
● 三种模式
❍ 正常模式
❍ 插入模式
❍ 底行模式
● 我们一共有12种总模式,大家下来可以研究一下
● vim操作
❍ 打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。
如果在vim界面不小心按了Ctrl + Z怎么处理
再次打开是如下情况
1️⃣ 按照提示 最后一行的几个命令
2️⃣ 删除隐藏文件,例如这里 rm .test.c.swp
批量化注释和批量化去注释
批量化注释
1️⃣ 先按ctrl+v 进入 VISUAL BLOCK (视图模式)模式,进行区域选择
2️⃣ 支持shift+g进行选择 也支持 nums + shift + g;也可以hjkl进行区域选择
3️⃣ 按 shift + i 进行双斜杠 + esc 完成注释
批量化去注释
1️⃣ 先按ctrl+v 进入 VISUAL BLOCK (视图模式)模式,进行区域选择
2️⃣ d一下即可
简单vim配置
配置文件的位置
❍ 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
❍ 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
❍ 切换用户成为自己执行
su,进入自己的主工作目录,执行cd ~❍ 打开自己目录下的.vimrc文件,执行
vim .vimrc
常用配置选项,用来测试
❍ 设置语法高亮: syntax on
❍ 显示行号: set nu
❍ 设置缩进的空格数为4: set shiftwidth=4
使用插件
要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完善配置,保证用户是你要配置的用户,接下来:
❍ 安装TagList插件,下载taglist_xx.zip ,解压完成,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到~/.vim/plugin
❍ 在~/.vimrc 中添加:
let Tlist_Show_One_File=1let Tlist_Exit_OnlyWindow=1let
Tlist_Use_Right_Window=1❍ 安装文件浏览器和窗口管理器插件: WinManager
❍ 下载winmanager.zip,2.X版本以上的
❍ 解压winmanager.zip,将解压出来的doc的内容放到~/.vim/doc, 将解压出来的plugin下的内容拷贝到~/.vim/plugin
❍ 在~/.vimrc 中添加
let g:winManagerWindowLayout=‘FileExplorer|TagListnmap wm :WMToggle<cr>❍ 然后重启vim,打开~/XXX.c或~/XXX.cpp, 在normal状态下输入"wm", 你将看到上图的效果。更具体移步:手把手教你把Vim改装成一个IDE编程环境(图文)_vim 打造成 ide-CSDN博客, 其他手册,请执行 vimtutor 命令。
参考资料
GitHub - wsdjeg/vim-galore-zh_cn: Vim 从入门到精通Vim从入门到牛逼(vim from zero to hero)
三、Linux编译器-gcc/g++使用
背景知识
1.预处理(进行宏替换) 2.编译(生成汇编)
3.汇编(生成机器可识别代码)4.连接(生成可执行文件或库文件)
编译器的自举过程
编译器的自举(bootstrap)过程是指编译器自身使用另一个版本的编译器来编译自身代码的过程。这个过程通常涉及到以下几个步骤:
◉ 初始编译器: 编译器自举的起点是一个已经编译好的编译器。这个编译器被称为初始编译器,它是编译器的第一个版本,通常是用低级语言(如汇编语言)或高级语言(如C或C++)编写的。
◉ 自举编译器: 初始编译器使用高级语言编写,需要用一个低级语言编译器(如汇编语言编译器)来编译。但是,为了能够编译自己,这个编译器需要使用另一个版本的编译器。这个版本的编译器就是自举编译器。
◉ 源代码: 自举编译器的源代码是用自举编译器的目标语言编写的。这意味着,编译器使用它自己的代码来编译自己。
◉ 编译: 自举编译器使用初始编译器来编译自己的源代码。这个过程涉及到将源代码转换为机器代码。
◉ 链接: 编译器还需要链接其库文件,以便在运行时使用它们。链接是将编译后的对象文件组合成一个可执行文件的过程。
◉ 运行: 一旦编译器和库文件被编译和链接,就可以运行它们了。这通常涉及到将编译器和库文件复制到目标系统中,然后运行它们。
这个过程需要特别注意,因为如果编译器中有错误,可能会导致编译过程失败。因此,编译器的自举过程需要经过严格的测试和调试。
而最初计算机只能识别二进制语言(现在也是),当时人们用打孔纸条让机器识别二进制语言,人们后面觉得这过于麻烦,于是开创新的汇编语言,然后用二进制语言写的编译器编译汇编语言,既然汇编语言能够编译了,那再使用汇编语言借助二进制写的编译器,写一门新的编译器,专门编译汇编语言,此时旧的编译器可以淘汰了,我们只需要维护新的汇编编译器,这个过程叫做编译器的自举,如此这样,形成了后续很多编译器,于是也形成了C语言编译器。这也能解释,为什么编译C语言需要有这么多的步骤,最终也就是形成二进制让机器识别。
为什么不直接将C语言直接编译为二进制语言?
因为要遵循历史的发展,并且使用汇编这个过程比较好维护,因为只管到汇编,汇编以后的步骤前人为我们探索过了,无需在探索
gcc版本问题
我们默认使用的gcc版本为4.8.5有点低,不一定支持c99。例如我们编写一个文件,里面只有for循环,确无法执行
此时我们就要用指定方式编译
gcc test1.c -std=c99

gcc如何完成
动态条件编译


格式
gcc [选项] 需要编译的文件 [选项] [目标文件]
预处理(进行宏替换)
❍ 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。
❍ 预处理指令是以#号开头的代码行。
❍ 实例:
gcc –E hello.c –o hello.i选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序
编译(生成汇编)
❍ 在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言
❍ 用户可以使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。
❍ 实例:
gcc –S hello.i –o hello.s
汇编(生成机器可识别代码)
❍ 汇编阶段是把编译阶段生成的“.s”文件转成目标文件
❍ 读者在此可使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码了
❍ 实例:
gcc –c hello.s –o hello.o
连接(生成可执行文件或库文件)
❍ 在成功编译之后,就进入了链接阶段
❍ 实例:
gcc hello.o –o hello
在这里涉及到一个重要的概念:函数库
❍ 我们的C程序中,并没有定义“printf”的函数实现,且在预编译中包含的“stdio.h”中也只有该函数的声明,而没有定义函数的实现,那么,是在哪里实“printf”函数的呢?
❍ 最后的答案是:系统把这些函数实现都被做到名为 libc.so.6 的库文件中去了,在没有特别指定时,gcc 会到系统默认的搜索路径“/usr/lib”下进行查找,也就是链接到 libc.so.6 库函数中去,这样就能实现函数“printf”了,而这也就是链接的作用
函数库一般分为静态库和动态库两种。
❍ 静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”
❍ 动态库与之相反,在编译链接时并没有把库文件的代码加入到可执行文件中,而是在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”,如前面所述的 libc.so.6 就是动态库。gcc 在编译时默认使用动态库。完成了链接之后, gcc 就可以生成可执行文件,如下所示。
gcc hello.o –o hello❍ gcc默认生成的二进制程序,是动态链接的,这点可以通过 file 命令验证。
安装静态库
sudo yum install -y glibc-static libstdc++-static
静态链接的应用-->便于可移植程序(一般只有公司内部才用)
gcc选项
❍ -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
❍ -S 编译到汇编语言不进行汇编和链接
❍ -c 编译到目标代码
❍ -o 文件输出到文件
❍ -static 此选项对生成的文件采用静态链接
❍ -g 生成调试信息。GNU 调试器可利用该信息。
❍ -shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
❍ -O0
❍ -O1
❍ -O2
❍ -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
❍ -w 不生成任何警告信息。
❍ -Wall 生成所有警告信息。
gcc选项记忆
esc,iso例子
相关文章:
Linux中yum、vim、gcc/g++的使用
目录 一、Linux 软件包管理器 yum 什么是软件包 关于 rzsz 查看软件包★ 如何安装软件★ 如何卸载软件★ Linux 开发工具 二、Linux编译器-vim使用 vim的基本概念 vim的基本操作 vim正常模式命令集 vim末行模式命令集 vim操作总结 如果在vim界面不小心按了Ctrl …...
基于模糊神经网络的金融序列预测算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于模糊神经网络的金融序列预测算法matlab仿真,根据序列的MAD,RSI,KD等指标实现序列的预测和最终收益分析。 2.测试软件版本以及运行结果展示 MATLAB2022A版本…...
STM32 HAL库常用功能封装
关中断 /*** brief 关闭所有中断(但是不包括fault和NMI中断)* param 无* retval 无*/ void sys_intx_disable(void) {__ASM volatile("cpsid i"); }开中断 /*** brief 开启所有中断* param 无* retval 无*/ void sys_intx_enabl…...
golang zap日志库 打印日志时显示的源文件始终是同一个问题解决方法 zap.Option函数可选项 zap.AddCallerSkip(1) 使用示例
这种情况一般出现在我们对zap日志库进行二次封装的情况下, 在打印日志的时候的源文件非我们期望的文件,如下 原因分析 出现这个问题的原因是zap函数内部在调用 runtime.Caller 时的skip层级不对了,因为我们进行了二次封装,所以za…...
BL196MQTT远程IO模块助力智能楼宇自动化升级
在智能楼宇自动化领域,每一个细节的优化都能带来整体效率与舒适度的显著提升。钡铼技术的BL196MQTT远程IO模块,以其卓越的灵活性和强大的性能,正在成为这一领域中推动楼宇自动化升级的关键力量。 钡铼技术IOy系列:创新与灵活性的…...
【面试宝典】Java面向对象面试题总结(上)
一、重写和重载 在Java中,重写(Override)和重载(Overload)是面向对象编程中两个非常重要的概念,它们都与方法的定义和调用有关,但两者有着本质的区别。 1、重写(Overrideÿ…...
如何运用独特的产业运营体系打造一流的数字媒体产业园
如何运用独特的产业运营体系打造一流的数字媒体产业园 2024-08-15 17:37树莓集团 在数字经济蓬勃发展的今天,数字媒体产业作为其中的重要一环,正展现出巨大的潜力和活力。而如何运用独特的产业运营体系,打造一流的数字媒体产业园࿰…...
安全基础学习-SHA-256
SHA-256 是一种密码学哈希函数,是 SHA-2(Secure Hash Algorithm 2)家族的一部分。它被广泛用于数据完整性验证、数字签名以及密码存储等领域。 1、SHA-256的原理 SHA-256 生成一个固定长度为 256 位(32 字节)的哈希值。无论输入数据的大小或类型,输出的哈希值始终是 25…...
Redis中Big Key该如何解决?
目录 1、Big Key的产生 2、BigKey场景分析 3、Big Key的危害 4、检测 BigKey 5、解决 BigKey 问题 Big Key拆分 (1)按时间/业务拆分 (2)按哈希(Hash)拆分 (3)按前缀树拆分…...
基于springboot的实习管理系统
TOC springboot207基于springboot的实习管理系统 绪论 1.1研究背景与意义 信息化管理模式是将行业中的工作流程由人工服务,逐渐转换为使用计算机技术的信息化管理服务。这种管理模式发展迅速,使用起来非常简单容易,用户甚至不用掌握相关的…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测
土地利用/土地覆盖数据是生态、环境和气象等领域众多模型的重要输入参数之一。基于遥感影像解译,可获取历史或当前任何一个区域的土地利用/土地覆盖数据,用于评估区域的生态环境变化、评价重大生态工程建设成效等。借助CLUE模型,实现对未来土…...
Rust 之环境搭建
前言 Rust 是一种现代的系统级编程语言,以其内存安全性、高性能和简洁的语法而著称。本文将介绍如何在不同操作系统上搭建 Rust 开发环境,并配置好基础工具,使您能够快速开始 Rust 编程。 1. 安装 Rust Rust 官方推荐使用 rustup 工具来管…...
基于微信小程序地图实现点位标注、覆盖物、地图聊天
目录 小程序部分map标签的使用获取用户经纬度并转换地址地图点击事件覆盖物标注点击并实现弹窗交互数据库及接口部分数据库表结构设计API搭建小程序接口使用注意事项wx.getLocation深入控制地图小程序部分 map标签的使用 创建小程序的步骤这里不再重复赘述,在wxml页面中放一个…...
xxl-job的分片广播+单播
1 介绍一下xxl-job XXL-JOB 是一个分布式任务调度平台,旨在为分布式应用系统提供开箱即用的调度解决方案。它非常易于使用,并具有很高的可扩展性。以下是 XXL-JOB 的详细介绍,包括其核心功能、架构设计、主要组件及其应用场景。 核心功能 简…...
情感分类代码
在进行自然语言处理中的情感分类时,通常需要准备以下几方面的内容: 1. **数据集**:高质量的标注数据集是关键,包括正面、负面和中性情感标记的文本。 2. **情感词典**:可用的情感词典,如SentiWordNet&…...
WPF—常用控件、属性、事件、详细介绍
WPF—常用控件、属性、事件、详细介绍 WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人…...
Oracle遭遇bug导致共享内存无法分配报ORA-04031错误
1.故障描述 在7月17日上午11时左右,收到告警短信,提示集群节点2宕机,当即登陆该节点进行查看,发现数据库状态正常。但日志里出现大量的ORA-04031报错,提示无法分配shared_pool,当时手动执行shared pool刷新…...
SAP BRIM用于应收账款AR收入中台
SAP BRIM(Billing and Revenue Innovation Management)是SAP提供的一个综合性解决方案,旨在帮助企业高效管理计费和收入流程。它与SAP ERP系统集成,提供端到端的功能,简化计费流程,自动化收入确认ÿ…...
LVS原理简介
LVS是Linux virtual server的缩写,为linux虚拟服务器,是一个虚拟的服务器集群系统。LVS简单工作原理为用户请求LVS VIP,LVS根据转发方式和算法,将请求转发给后端服务器,后端服务器接收到请求,返回给用户。对…...
Qt五大核心特性之元对象系统
前言 Qt 的元对象系统(Meta-Object System)是 Qt 框架的核心之一,提供了一些 C 原生不具备的功能(因为在C它们是静态的),如反射、信号槽机制、属性系统等。通过这个系统,Qt 实现了许多强大的功能,这使得它…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
