Linux《基础开发工具(上)》

在之前的篇章当中我们已经了解了Linux当中基本的指令以及相关的知识,那么接下来在本篇当中就开始学基本的开发工具,在此我们一共要了解6大开发工具,在此将这些工具的学习分为上中下篇,在本篇当中我们首先要来学习的是yun以及vim,一起加油吧!!!


1.软件包管理器 

1.1 安装软件方式

在windows当中我们都知道要下载一个软件可以在对应的应用商店下载也可以在浏览器直接下载,那么在Linux当中要下载相应的软件又该进行什么样的操作呢?

其实在Linux当中要下载软件可以使用以下的三种方式
1.源代码安装
2.rmp包安装
3.软件包管理器安装

以上的方式当中最原始的方式就是直接使用下载到程序的源代码,再进行编译得到可执行程序。但是我们一般是不使用这种方式来进行软件的安装的,这是因为这样实在是太麻烦了,并且在安装的过程当中如果出现源代码的丢失就会使得软件的安装过程出现错误,这时我们目前的能力还无法发现错误就会使得对应的软件无法安装。

因此为了解决使用源代码在进行软件的安装时会出现一系列的问题,在此就引入了rmp包安装的方式,rmp将要安装的源代码打包成为一个为一个完整的包,要安装软件就只需要安装rmp包即可。但是在软件进行安装时其实除了要安装对应的rmp包之外还要解决依赖的问题,也就是在使用rmp包安装的时候还要将安装的包与对应的库进行链接。

以上的方式相比直接使用源代码进行安装的方式简单了许多,但是要自行解决依赖的问题对与我们来说还是较为繁琐,于是有些⼈把⼀些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在⼀个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装。

注:在此使用包管理器进行安装的方式可以理解为在安卓的应用商店或者是在苹果当中的app store当中进行软件的安装

1.2 认识软件包管理器

在Linux当中不同的OS当中不同的包管理器是不同的,在我们使用的Centos和Ubnutu当中的软件包管理器分别是yum和apt,当前我们使用的OS是Centos,因此接下来介绍的就是如何使用yum进行软件的安装,但是在了解yum的使用之前我们先要来了解一些关于操作系统生态的相关问题和概念,这对我们认识Linux当中为什么有不同的OS有很大的助力。

其实在我们使用yum等包管理器进行安装的时候,在我们的云服务器上其实是会通过相关的配置文件查找到远程的包管理服务器,之后找出你所需要的软件包,再下载返回。

在此就有问题了,那就是我们使用yum过程当中远程的软件包服务器当中的软件包是谁写的呢?写这些软件包的工程师为什么要免费的将这些软件包进行免费开发给用户呢?

要解答以上的问题就需要了解操作系统的生态问题了,我们知道Linux是一款开源的操作系统,并且我们还知道在不同商业版本的Linux操作系统当中其实这些系统对应的系统内核其实是相同的,这时不同的人群会选择不同的操作系统就由于不同商业版本的OS当中就会有者以下不同的生态位

当对应的开发人员将一款新的软件开发出来之后将源代码开源之后就需要Linux当中系统的的工程师将对应的软件的源代码进行编译到其对应的系统当中,之后再将其对应的软件包其他环境包上线到该系统的软件包服务器当中,之后该系统下用户要下载该软件就可以使用yum安装了。

那么此时问题又来,那就是这些系统的工程师为什么要主动的将开发者的源代码编译上线到系统的软件包服务器上,他们这样做是为了什么呢,感觉在这个过程当中相应的工程师好像也无法得到相关的利益啊。其实形成这些现象的根本原因是由于Linux是一款开源的操作系统,这就使得Centos、Ubuntu这些系统在系统内核上都是相同的,那么为了吸引更多的用户就需要跟进市场上新出现的软件,否则用户之前在使用的系统上无法及时的使用到新的软件,这就会使得这鞋用户转向到其他的OS,这不就造成用户的流失了吗。

我们知道不同的系统在一开始的时候针对的用户群体是不同的,就例如Centos注重企业的使用、Ubuntu注重学生群体,当时如果OS无法及时的将目标用户所需的软件及时的上线,而其他的OS上线了这些群体所需的软件,这就会使得这些用户流失到其他的OS当中。

因此通过以上的描述可以看出这些系统的工程师是为什么要主动的将开发者新开发出的软件快速的编译上线到软件的包服务器上,这就是为了避免OS用户的流失,当然有一些的工程师确实没有功利心就是为了能让更多的人使用到最新的软件,这当然也是有的。

那么此时你可能就会有疑惑了,那就是这些Linux的OS免费的将软件编译上线到软件包服务器上这个过程当中也是要损耗人力、物力的。那么在将软件上线的过程当中是无法盈利的,那么这些OS是如何保持运转的呢?毕竟软件包服务器也是需要购买的,这些都是要花费资金的。 

确实这是因为Linux开源的特性,Linux相比其他的系统就会更加的安全,就会使得更多的大公司使用。当它们使用的操作系统出现资金不足时,这些大公司就会对它们使用的操作系统进行“援助”,此时对应的操作系统就有了资金来保持正常的运转。

 1.3 镜像

在了解了操作系统的生态问题之后接下来就来了解镜像的相关知识

其实我们使用的Centos等操作系统都是国外的公司创建的,那么这就使得原来的yum当中的配置文件保存的软件源保存的是国外的软件包管理器,由于“墙”的原因这就使得我们无法正常到的查找到软件的包管理器,为了解决这一问题,国内的一些公司或者高校就在他们自己的云服务器上将国外的软件管理器的内容拷贝到他们的的云服务器上再将来用户的包管理器的配置文件当中的软件源.conf进行替换。以上的过程就是包管理器的“镜像”

以下是使用DeepSeek生成的一些国内常用的Linux软件安装源的官方链接

1. **阿里云官方镜像站**  
   - 官方链接:
阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区
   - 提供CentOS、Ubuntu、Debian等多种Linux发行版的镜像,支持快速下载和更新软件包。

2. **清华大学开源软件镜像站**  
   - 官方链接:
清华大学开源软件镜像站 | Tsinghua Open Source Mirror
   - 提供多种Linux发行版镜像,以及Python、Perl、Ruby等编程语言的扩展包。

3. **中国科学技术大学开源镜像站**  
   - 官方链接:
USTC Open Source Software Mirror
   - 提供多种Linux发行版镜像及常用开发工具,支持快速获取软件包。

4. **北京交通大学自由与开源软件镜像站**  
   - 官方链接:
首页 - 北京交通大学自由与开源软件镜像站
   - 提供多种Linux发行版镜像及相关软件仓库。

5. **中国科学院软件研究所镜像站(ISCAS)**  
   - 官方链接:
欢迎访问 ISCAS 开源镜像站
   - 提供多种Linux发行版、编程语言和开发工具的镜像。

6. **上海交通大学开源镜像站**  
   - 官方链接:
Index of /
   - 提供丰富的Linux软件资源,包括多种发行版镜像和软件仓库。

7. **网易开源镜像站**  
   - 官方链接:
欢迎访问网易开源镜像站
   - 提供多种Linux发行版镜像及相关软件仓库,支持便捷的搜索功能。

8. **搜狐开源镜像站**  
   - 官方链接:
Index of /
   - 提供CentOS、Ubuntu等发行版的镜像下载。

9. **华为云镜像站**  
   - 官方链接:
https://mirrors.huaweicloud.com/ 
   - 提供多种Linux发行版镜像及开发工具支持。

10. **腾讯云镜像站**  
    - 官方链接:
腾讯软件源
    - 提供多种Linux发行版镜像及常用软件仓库。

这些镜像站可以帮助您快速下载和更新Linux软件包,提升安装效率。

1.5 yum

在以上我们认识了包管理器的相关的知识之后接下来就来了解yum是如何使用的。但在此之前先要来了解yum要如何进行安装,正常情况之下我们的云服务器当中系统是不会自带yum的,这需要我们自行安装。

安装需要使用以下的指令:

# Centos
$ sudo yum install -y lrzsz

若你使用的是Ubuntu那么就需要安装的是apt,对应的安装指令如下所示:

# Ubuntu
$ sudo apt install -y lrzsz

当我们使用以上的指令进行yum的安装就会发现会出现以下的问题,这其实是由于在Linux当中安装yum这些包管理器是需要使用root或者进行指令提权的,因此在普通用户下要进行yum的安装就需要在以上指令之前加上sudo 

 

 

注:在Linux当中的软件,root安装了,普通用户也是能使用的,因此软件只要安装一次即可

在此要卸载yum/apt需要使用到以下的指令

# Centos
sudo yum remove [-y] lrzsz
# Ubuntu
sudo apt remove [-y] lrzsz

安装了yum之后接下来我们就可以来了解如何使用yum来安装、卸载软件了

在此使用以下的指令就可以将罗列出当前⼀共有哪些软件包

yum list 

但由于包的数目可能非常之多, 这里我们需要使用以下的指令,grep 命令只筛选出我们关注的包

yun list | grep XXX

之后要安装对应的软件就使用以下的指令

yum install [-y] XXX

要卸载相应的软件就使用以下的指令 

yum remove [-y] XXX

其实在Linux当中是有很多好玩的指令的,通过yum/apt等安装之后就可以使用了,例如在Centos当中只要使用yum安装sl之后再使用sl就会出现一个火车的动图

yum intall [-y] sl

 

 

注:如果你还想了解更多好玩的指令可以自己查阅 

 

2. 编辑器Vim

在了解了yum之后接下来我们就月嫂了解在Linux当中的编辑器,其实在Linux当中的编辑器其实是有很多的,不过最经典的是接下来我们要学习的vim。在此了解了vim的基本使用之后我们就可以在Linux当中编写代码了,并且使用熟悉之后会比之前的效率要高许多

vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以运⾏于x window、 mac os、 windows。

2.1 见一见vim

在此当我们要使用vim来编辑指定文件的内容时之需要使用以下的指令即可

vim [文件名]

在此如果vim之后的文件是不存在的,那么就会自动的在当前的路径之下创建对应的文件

 

注:在此你的vim打开和我的vim可能是不同的,这时因为vim没有进行配置时默认就是和记事本一样的,只要进行配置之后就可以显示行号;高亮等。

以上我们就写了一个简单的C语言的代码,那么要将test1.c内的代码能运行起来,那么就需要使用到gcc,在此gcc的详细知识在下一篇当中会进行讲解,在此你只需要先知道我们写的代码要通过gcc编译之后才能形成可执行程序

使用了gcc之后默认就会形成a.out

 

之后运行a.out就可以得到原来test.c输出的结果

 

2.2 vim的多模式

在以上我们已经见到了vim的使用,那么接下来就来了解如何使用vim

2.1 命令模式

光标移动

当我们使用vin打开了我们创建了一个文件指之后,接下来使用vim打开之后这时你会发现你点键盘上的大多数按键都没有反应,其实这是当打开vim时默认所处的是命令模式此时只能进行相关的命令操作

在此vim的命令模式当中一般进行的是光标的移动,以及代码片段的删除、复制、粘贴 。

 那么接下来就来了解命令模式当中的各个命令

将文件当中的光标运移动到文本的开头就使用以下的命令

gg

如果是要移动到指定的行就使用 n+gg 在此n表示的是要光标移动的目标行数

 

要将文件当中的光标移动到文本的末尾就使用以下的命令

shift+gg

 以上命令其实就是GG,按住键盘的shift键之后再点击gg

和使用gg类似使用GG是也可以将光标移动到文本当中的指定行,只需要在使用GG之前输入指定的行号即可

除了以上将文本的光标移动到文本的开头、末尾、指定行之外,有时当一行的代码很长时使用方向键移动就很慢,那么此时就可以使用以下的命令

shift+4=$ 将光标移动到行尾
shift+6=^ 将光标移动到行首

 

如果要将光标进行上下左右的移动,就需要使用到h、j、k、i,在此h表示左;i表示右;j表示下;k表示上

在此你可能就会又疑惑了,在键盘当中不是有对应的方向键吗,那为什么还要使用这些字符键来表示方向?

这其实是因为vim是很早就出现了,而在那时键盘还是像如下所示的,可以看到是没有方向键的,就是使用hjkl这四个键来表示方向键,虽然现在的键盘都是有方向键的,但是在一些情况下方向键可能会出现无法使用的情况,因此在此我们还是要学习hjkl表示方向。

在行内光标的移动过程当中为了提高效率,以下的命令可以实现行内光标以单词为单位的前后移动

n+w/b 

以上的单词不是我之前认识的英语单词而是由vim内部判断的有效单词

其他命令

以上我们了解了关于文本当中光标移动的相关命令,那么接下来来了解其他的命令

当我们要将文本当中的一段文本进行复制时就可以使用到以下的指令

n+yy

在此n表示的是从当前行开始要复制文本行的行数

例如以下示例:

如果要将第7行复制就需要将光标移动到第7行之后再使用yy

要将复制之后的文本进行粘贴就需要使用以下的命令

n+p

在此n表示的是要将之前复制的内容粘贴的份数,并且张贴过程是将粘贴到当前行的下一行

例如以下示例:

点击10p之后就将之前复制的第7行粘贴10遍

如果是要将一部分的文本进行裁剪或者是删除就可以使用以下的命令

n+dd

 以上n表示的是要裁剪的从当前行开始的行数

例如以下示例

要将从13行开始的文本删除5行就可以使用5dd

当要将文本当中的快速的进行大小写的切换就需要使用以下的指令

shift+`=~

 例如以下示例

要将文本当中的第7行字母全部切换为大写就只需要一直按住shift之后再点击`即可

 

要进行命令模式当中行内的删除就需要使用以下的指令

n+x/X

在此使用x是可以将当前光标之后的一个字符进行删除,X是可以将当前光标之前的一个字符进行删除。n表示的是要进行删除字符的个数

在一些情况下可能只是要将文本进行替换,那么此时就可以使用以下的命令

n+r

不过一般以上都是在进行小范围的文本替换,如果要进行较大文本的替换就可以使用shift+r进入到替换模式

如果要对之前进行的命令进行撤销那么该如何做呢,在此只需要使用以下的指令

u

只要在命令模式当中输入u即可,但是如果要对u进行撤销呢?

此时就需要使用ctrl+r

因此在vim当中u和ctrl+r可以相互进行撤销

注:只要不退出vim就可以进行撤销,但是只要退出了vim就无法将上一次的操作进行撤销 

2.2 底行模式

在vim当中底行模式可以进行文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。

当我们进入vim时默认进入的示命令模式,如果要进入底行模式就需要使用以下指令

shift+;

以上其实就是在命令模式当中输入 : 即可进入底行模式,接下来就可以进行一系列的操作 

要从底行模式退回只需要点击键盘的ESC键即可

如果要使得文本显示含行号只需要在底行模式当中输入set nu即可,要去掉行号输入 set nonu

在此要搜索文本当中的字符只需要输入 /XXX ,XXX表示的就是要进行查询的字符,之后光标就会移动到该字符的位置

 

在此要退出vim只需要在底行模式当中输入q,如果要保存修改的文本并退出输入的是wq,但是在一些情况下即使是root也无法退出此时就需要输入wq!,在此!表示的就是强制退出。

在一些情况下我们可能需要退出vim再进行一些操作,但是退出vim之后再进入这一操作就显的较为繁琐,因此为了解决这一问题其实在vim的底行模式当中其实可以可以直接在要输入的命令之前加上!,这样就可以在不退出vim的情况下执行对应的命令

例如以下示例:
当前在vim下要使用ls指令,只需要打开底行模式之后输入!ls即可

在一些情况写我们写的程序可能是包含多文件的,那么进行该程序代码的编写就要在几个文件之间的切换效率就很低下,因此在vim提供以下的命令来进行多文件的编写效率的提升

vs [文件名]

在此vs是可以在打开了两个文件之后再打开文件的,只需要进行使用vs [文件名]  

例如以下示例:

如果当前我们处在test1.c下还要再打开test.h那么就可以使用vs test.h ,这样就可以将两个文件都显示出来

如果要将光标切换到另一个文件时只需要使用以下的命令,此时当前文件的光标就会移动到另一个文件当中

CTRL+ww

2.3 插入模式 

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

要进入插入模式需要在键盘当中点击i,按“i”进入插入模式后是从光标当前位置开始输入文件。如果要从当前光标的下以行进行输入需要点击键盘当中的a。若要插入新的一行,从行首开始输入文字需要在键盘当中输入o

在此插入模式就不进行讲解,,之后我们进行代码的编写都是要在该模式当中进行

在插入模式其实也是可以不用退回命令模式再保存退出的,有一种快速保存退出的方式就是直接使用SHIFT+zz

2.4 补充实用操作

在以上我们已经了解了基本的vim的使用方式,接下来了解了解几个vim当中的实用命令操作,了解之后在使用时能大大提到我们的效率

1.批量化注释

在我们使用vim进行代码的编写时可以会出现要将一大段的代码进行注释,当然我们是可以进入插入模式之后再一行一行的注释,但是这样的效率太低下了,接下来就来了解更高效的方式

在此只要先使用CTRL+v进入视图模式之后再使用 hjkl选定要进行注释的行 再使用shift+i进入到插入模式,再点击ESC就可以实现批量化的注释

例如以下示例: 

2.批量化去注释

如果要批量化的去除注释,只需要先使用CTRL+v进入视图模式之后接下来再使用hjkl选定要删除注释的行,再点击键盘当中的d就可以实现批量化注释的删除

例如以下示例:

 

3.进行文本内的替换

如果要将文本内的字符替换为指定的字符,那么就可以在底行模式当中使用到以下的指令

%s/[要被替换的字符]/[要替换的字符]/g

例如以下示例,要将文本当中的world 替换为linux就可以使用以上的命令

4.使光标跳转指定行

其实在打开使用vim打开指定的文件时光标默认是停在之前退出的位置,那么如果要使得光标跳转到指定的文本的行就需要在使用vim打开文件时加上要跳转的行号

vim [文件名] +[行号]

例如以下示例:

5.快速调用历史命令 

在之前我们就了解过可以使用上下键和ctrl+r来调用历史的命令,但是确实还有更快速的方式就是直接使用!外加原来命令的首个字母

 2.5 vim模式关系图

以上我们了解的命令模式、底行模式、插入模式、视图模式、替换模式之间的关系图如下所示

因此当我们不知道所处的是什么模式下就只需要无脑的ESC这样肯定能退回命令模式

注:其实除了以上地5大模式之外,vim内还有其他的模式,只不过这5大模式已经完全能满足我们的日常使用了

2.6 vim配置

之前你打开vim时会发现vim就和普通的记事本一样,这是因为没有进行文件的配置,那么接下来就来了解该如何进行配置

配置文件的位置
• 在目录 /etc/ 下⾯,有个名为vimrc的⽂件,这是系统中公共的vim配置文件,对所有用用户都有
效。
• 而在每个用户的主目录下,都可以自己建⽴私有的配置⽂件,命名为:“.vimrc”。例如,/root
⽬录下,通常已经存在⼀个.vimrc⽂件,如果不存在,则创建之。
• 切换用户成为⾃⼰执⾏ su ,进⼊自己的主工作目录,执⾏ cd ~
• 打开自己⽬录下的.vimrc⽂件,执⾏ vim .vimrc
常⽤配置选项,用来测试
• 设置语法⾼亮: syntax on
• 显示行号: set nu
• 设置缩进的空格数为4: set shiftwidth=4

但是这时你玩可以会觉得自己配置太麻烦了,那么有什么办法能一键完成配置的方法呢?

在此你可以将以下的脚本链接粘贴到命令行当中,注意在使用该脚本时最好在普通用户下,不要在root当中使用

注:以下只能在Centos当中使用

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

输入之后接下来只需要输入root密码即可自动完成vim的配置 ,接下来就是耐心的等待

 

以上配置默认的缩进是两个字符的,之前我们使用的vs当中默认缩进是4个字符,因此你如果要把缩进修改为4个字符就需要进行以下的操作

使用链接安装了之后就会发现出现了许多的插件 

 

接下来就是使用vim打开.vimrc ,再在底行当中输入/2点击回车,将以下的2都替换为4即可

 

如果你想了解更多的关于vim的配置可以看以下的文章

Vim 从入门到精通

3.解决sudo无法使用问题

在了解了vim的使用之后接下来我们就可以来解决之前在使用sudo时无法使用的问题,其实之前就说过是由于没有将普通用户写道相关的配置文件当中,那么接下来就来讲解如何将配置修改指定的配置文件

在此通过ls就可以看到以下的文件只有root有读权限,因此要修改该文件只有使用超级用户才能执行

 因此接下来就需要切换到超级用户在使用vim打开指定的文件

之后在100行左右就可以看到相关的配置信息,此时就将要写入的用户的用户名和root类似之后也带上ALL=(ALL)       ALL写入到该文件另起一行当中即可 

 

此时使用wq保存退出是会出现以下的警告的,这是因为该配置文件即使是root正常情况下也是不能修改的

 

此时就需要使用wq!来强制保存退出

完成以上的操作之后接下来就可以正常地使用sudo了

 

 

以上就是本篇的全部内容了,接下来还会继续带来Linux当中其他基础的开发工具,未完待续……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/26203.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kali liux的下载

Kali Linux | Penetration Testing and Ethical Hacking Linux Distributionhttps://www.kali.org/ VMware虚拟机https://pan.quark.cn/s/aa869ffbf184 【补充一个今天学到的知识昂和内容无关:(遥感)指非接触的远距离探测技术,使用传感器探…

微软AI900认证备考全攻略:开启AI职业进阶之路

在当今数字化时代,人工智能(AI)正深刻地改变着我们的工作和生活。微软AI900认证作为AI领域的权威认证之一,不仅为技术爱好者提供了深入探索AI的机会,更是开启AI职业进阶之路的重要敲门砖。以下是一份全面的备考攻略&am…

【Mark】记录用宝塔+Nginx+worldpress+域名遇到的跨域,301,127.0.0.1,CSS加载失败问题

背景 想要用宝塔搭建worldpress,然后用域名直接转https,隐藏掉ipport。 结果被折磨了1天,一直在死活在301,127.0.0.1打转 还有css加载不了的情况 因为worldpress很多是301重定向的,所以改到最后我都不知道改了什么&am…

算法题001——移动零

移动零 力扣——移动零点击链接即可跳转 这道题的数组被划分为两个区间,前一个区间为 非零元素,而后一个指针是 零元素 我们运用双指针,先定义两个指针,分别为 dest 和 cur , cur用来遍历整个数组,而 dest 表示我们…

Selenium自动化测试:如何搭建自动化测试环境,搭建环境过程应该注意的问题

最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,但是对于没有学过的人来说,通过资料再到自己写的…

mysql 全方位安装教程

下载 MySQL 【官网下载地址】 注意要选择较大的哪个安装包,小的安装包是一个安装器。 我们不用登录,直接下载 直接运行下载好的安装包 MySQL如果是 安装包安装, 可以图形化界面自主配置 如果是压缩包解压, 可以配置 配置文件, 可以解压安装到指定的…

深入刨析 之C++ string类

欢迎来到干货小仓库!!! 没有完美的计划,每个人都在试验的过程中渐渐清晰!!! 1.标准库的string类 a. string是表示字符串的字符串类。 b. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操…

【AI论文】MedVLM-R1:通过强化学习激励视觉语言模型(VLMs)的医疗推理能力

摘要:推理是推进医学影像分析的关键前沿领域,其中透明度和可信度对于赢得临床医生信任和获得监管批准起着核心作用。尽管医学视觉语言模型(VLMs)在放射学任务中展现出巨大潜力,但大多数现有VLM仅给出最终答案&#xff…

深入理解并实现自定义 unordered_map 和 unordered_set

亲爱的读者朋友们😃,此文开启知识盛宴与思想碰撞🎉。 快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 在 C 的标准模板库(STL)中,unorder…

使用ChatGPT-Deep Reaserch两步给出文献综述!

文献综述是学术论文写作中不可或缺的一部分,它不仅是对已有研究的梳理和总结,更是为后续研究奠定理论基础的关键步骤。通过文献综述研究者能够全面了解当前研究领域的现状、主要观点和研究方法,从而找到自己研究的切入点和创新点。这一过程需…

[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)

文章目录 1. JVM内存模型2. 常量池中有什么类型?3. 常量池中真正存储的内容是什么4. 判断一个字符串(引用)是否在常量池中5. BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗?6. 获取堆内存使用情况、非堆内存使用情况 1. JVM内…

塔能科技:工厂智慧照明,从底层科技实现照明系统的智能化控制

在全球节能减碳和智慧生活需求激增的背景下,基于“用软件定义硬件,让物联运维更简捷更节能”的产品理念,塔能科技的智慧照明一体化方案如新星般崛起,引领照明行业新方向。现在,我们来深入探究其背后的创新技术。该方案…

RabbitMq-消息确认机制-消息队列可靠投递

RabbitMq-消息确认机制-消息队列可靠投递 发送端确认 ConfirmCallback 在spring中开启ConfirmCallback, springboot rabbitmq属性配置spring.rabbitmq.publisher-confirm和spring.rabbitmq.publisher-confirm-type详解_弃用的配置属性 spring.rabbitmq.publisher-…

水滴tabbar canvas实现思路

废话不多说之间看效果图,只要解决了这个效果水滴tabbar就能做出来了 源码地址 一、核心实现步骤分解 布局结构搭建 使用 作为绘制容器 设置 width=600, height=200 基础尺寸 通过 JS 动态计算实际尺寸(适配高清屏) function initCanvas() {// 获取设备像素比(解决 Re…

散户如何实现自动化交易下单——篇1:体系介绍与获取同花顺资金账户和持仓信息

一、为什么要实现自动化交易 在瞬息万变的金融市场中,越来越多的散户投资者开始尝试构建自己的交易策略:有人通过技术指标捕捉趋势突破,有人利用基本面分析挖掘低估标的,还有人设计出复杂的网格交易或均值回归模型。然而&a…

32位,算Cache地址

32位,算Cache地址

cursor 弹出在签出前,请清理仓库工作树 窗口

问题出现的背景:是因为我有两台电脑开发,提交后,另一个电脑的代码是旧的,这个时候我想拉取最新的代码,就会出现如下弹窗,因为这个代码暂存区有记录或者工作区有代码的修改,所以有冲突&#xff0…

基于Ant Design Vue 引入 Flowable 【workflow-bpmn-modeler-antdv】流程设计器组件

安装Ant Design Vue npm i --save ant-design-vue1.7.2安装less相关依赖 npm install less3.9.0 less-loader5.0.0 --save-dev安装设计器 npm i workflow-bpmn-modeler-antdv在src目录下创建flowable文件夹&#xff0c;并创建Demo.vue文件 <template><div style&q…

Linux云计算SRE-第十五周

1.总结Dockerfile的指令和Docker的网络模式 一、Dockerfile 核心指令详解 1、基础构建指令 指令 功能描述 关键特性 FROM 指定基础镜像&#xff08;必须为首条指令&#xff09; - 支持多阶段构建&#xff1a;FROM node AS builder - scratch 表示空镜像 RUN 在镜像构建…

Linux:进程概念

目录 1 冯诺依曼体系 2 操作系统(Operator System) 3 如何理解管理 3.1计算机管理硬件 3.2 管理逻辑图 3.3 怎样管理 4 什么是进程&#xff1f; 5 查看进程 5.1 ps ajx显示所有进程信息 5.2 /proc(内存文件系统) 5.2.1 ls /proc/PID 5.2.2 ls /proc/PID -al ​ 5…