vim编辑器的使用介绍

news2024/9/21 16:32:27

文章目录

  • vim编辑器的使用介绍
    • vim的缓存、恢复与打开时的警告信息
    • vim的额外功能
      • 可视化区块
      • 多文件编辑
      • 多窗口功能
      • vim的关键词补全功能
      • vim环境设置与记录:~/.vimrc、~/.viminfo
        • vim的环境设置参数
      • vim常用的命令示意图
    • 其他vim使用注意事项
      • 中文编码的问题
      • DOS与Linux的换行符
        • 使用案例
      • 语系编码转换

vim编辑器的使用介绍

Vim是Vi的改进版,也是Linux和Unix系统中常用的文本编辑器。相比于Vi,Vim增加了许多新的功能和改进的用户界面。它支持多级撤销、语法高亮、自动补全、多窗口支持等功能,使得用户可以更加高效地编辑文本。Vim同样是一个纯命令行界面的编辑器,需要一些学习和熟悉才能使用。和Vi一样,Vim也被广泛用于系统配置、编程、文本处理等方面。

vim的缓存、恢复与打开时的警告信息

目前主要的文本编辑软件都会有恢复的功能,当你的系统因为特殊原因宕机了,还可以通过特别的机制将你之前未保存的数据【救!】回来!,那么vim可以恢复吗?可以的

使用vim编辑器时,vim会在与编辑器的文件目录下,在建立一个名为【.filename.swp】的文件。

比如说你有个文件file.txt 当你在编辑这个文件时,vim会主动的建立【.file.txt.swp】的缓存,你对file.txt做的操作都会被记录到这个【.file.txt.swp】里。如果你系统宕机了,你可以通过这个文件来进行恢复。

首先我们先制造一个假的宕机然后进行恢复给你看

  1. 创建文件,进入vim然后按ctrl + z 暂停进程
[root@localhost ~]# cp -rf /etc/man_db.conf /root/csrfile.txt # 将文件复制过来
[root@localhost ~]# vim csrfile.txt  # 在里面写几句话然后 ctrl + z 将vim暂停并放置到后台

[3]+  已停止               vim csrfile.txt
  1. 查看缓存文件
[root@localhost ~]# ls -al
总用量 16
dr-xr-x---.  2 root root   65 419 21:18 .
dr-xr-xr-x. 17 root root  224 45 20:11 ..
-rw-r--r--.  1 root root 5184 419 21:18 csrfile.txt
-rw-r--r--.  1 root root 4096 419 21:18 .csrfile.txt.swp  # 这就是缓存文件
  1. 我们将真在系统后台暂停的vim给kill掉,来模拟宕机情况。然后继续使用vim编辑csrfile.txt文件
[root@localhost ~]# vim csrfile.txt



E325: 注意
发现交换文件 ".csrfile.txt.swp"
            所有者: root    日期: Wed Apr 19 21:18:19 2023
            文件名: ~root/csrfile.txt
            修改过: 是
            用户名: root      主机名: localhost.localdomain
           进程 ID: 103214
正在打开文件 "csrfile.txt"
              日期: Wed Apr 19 21:18:14 2023

(1) Another program may be editing the same file.  If this is the case,
    be careful not to end up with two different instances of the same
    file when making changes.  Quit, or continue with caution.
(2) An edit session for this file crashed.
    如果是这样,请用 ":recover""vim -r csrfile.txt"
    恢复修改的内容 (请见 ":help recovery")。
    如果你已经进行了恢复,请删除交换文件 ".csrfile.txt.swp"
    以避免再看到此消息。

交换文件 ".csrfile.txt.swp" 已存在!
以只读方式打开([O]), 直接编辑((E)), 恢复((R)), 删除交换文件((D)), 退出((Q)), 中止((A)):

这是vim编辑器的一个提示信息,表示在打开文件时发现了交换文件(.swp文件),因此vim会主动判断你的这个文件可能会有些问题,上面的描述内容中给出了两种解决方法

问题一:可能有其他人或程序同时在编辑这个文件

由与多人多任务的环境下,因此很可能有很多人同时在编辑同一个文件。在很多人共同编辑的情况下,万一大家同时保存,那么这个文件就会很乱。为了避免这个问题vim会出现这个警告窗口,解决方法是:

  • 找到另外的那个程序员,让他vim的工作结束,然后你再继续处理
  • 如果你至少看该文件内容不会编辑任何底线,可以选择只读(O)

问题二:在前一个vim环境中,可能因为某些不知名的原因导致vim中断,解决方法很多,常见的方法有:

  • 如果你之前vim处理操作尚未保存,此时你应该按下【R】,就是使用R的选项,此时vim会加载.csrfile.txt.swp的内容,让你来决定要不要保存,这样你就能够救回来之前未保存的信息。恢复后这个.csrfile.txt.swp文件并不会删除,需要自己手动删除。
  • 如果你认为这个缓存是没有用的,那你可以直接按下【D】删除掉这个缓存。此时会加重csrfile.txt的内容,并将旧的.csrfile.txt.swp文件删除,建立这次会使用的新的.csrfile.txt.swp。

【O】:以只读方式打开文件

【E】:直接编辑文件

【R】:恢复修改的内容

【D】: 删除交换文件

【Q】:退出编辑器

【A】:中止当前操作

vim的额外功能

vim不仅具有缓存文件恢复的功能,vim还有具有颜色显示功能,并且还支持许多的程序语法,因此,当你使用vim编辑程序时(不论是C语言,还是shell脚本),我们的vim将可帮你直接进行【程序除错(debug)】的功能

如果你在命令行输入alias时,会出现这样的画面

[root@localhost ~]# alias
....
.....
alias vi='vim'   

这表示当你使用vi这个命令时,其实使用的vim。

我们来看看vim的界面是怎么样的,假设我想要编辑【/etc/services】,则输入【vim /etc/services】

image-20230420090149345)

上面vim的界面示意图,在这个界面中有几点特色要说明:

  1. 由于/etc/service 是系统规划的配置文件,因此vim会进行语法检验,所以你会看到界面中内部主要为深蓝色,且深蓝色那一行是以注释符号【#】开头的
  2. 界面中最下面那一行,在左边显示该文件属性,包括只读文件、内容共有11176行670293个字符
  3. 最下面一行的右边出现的31,1表示光标所在的行

除了注释之外,其他的行就会有特别的颜色显示,可以避免打错字,最右下角%0代表目前你阅读到这一行占整体文件的0%,可见这里面写了非常多的信息。

可视化区块

刚刚我们提到简单的vi操作过程中,几乎提到的都是以行为单位的操作,那么如果我想要搞定的是一个区块(就是以列为单位)范围呢?例如以下文件:

192.168.1.1 host1.class.net
192.168.1.2 host2.class.net
192.168.1.3 host3.class.net
192.168.1.4 host4.class.net
..........
...

假设我想要将host1,host2等复制起来,并且加到每一行的后面,即每一行的结果要是【192.168.1.2 host2.class.net host2】这样的情况时,传统或现代的图形编辑器似乎不容易达到这个需求,但是咋们的vim办得到,那就可以使用可视化区块。当我们按下v或V或[Ctrl + v]时,这个时候光标移动过的地方就会开始泛白。这三个键分别的意义时

参数介绍
v字符选择,会将光标经过的地方泛白选择
V行选择,会将光标经过的行泛白选择
ctrl + v可视化区块,可以用矩形的方式选择数据
y将泛白的地方复制起来
d将泛白的地方删除掉
p将刚刚复制的区块,在光标所在处粘贴

我们来进行实际操作,就是将host再加到每一行的最后面。你可以这样做:

  1. 使用【vim csrhosts】来打开文件(可以自行准备一个测试文件)
  2. 将光标移动到第一行的host那个h上面,然后按下【ctrl + v】左下角出现可视块示意字样

image-20230420153855459

  1. 将光标移动到最底部,此时光标移动过的区域会泛白

image-20230420153955022

  1. 此时你可以按下【y】来进行复制,当按下【y】之后,泛白的区块就会消失不见。
  2. 最后,将光标移动到第一行最右边,按【i】进入编辑模式按下一个空格然后按下【ESC】按再下【p】后就会发现已经复制成功了

image-20230420154344560

多文件编辑

假设我想要将刚刚我们的csrhosts文件内的IP复制到你的/etc/hosts 这个文件夹内,那么该如何编辑呢?我们知道再vi内可以使用【:r filename】来读取某个文件的内容,不过,这样毕竟是将整个文件读入。如果我向只读入部分内容呢?这时候我们的多文件编辑就很有用了,我们可以使用vim后面同时接好几个文件来同时打开,相关的按键有:

参数解释
:n编辑下一个文件
:N编辑上一个文件
:files列出目前这个vim开启的所有文件

做一下练习,假设你要将刚刚提供的【csrhosts】内的前四行 IP数据复制到你的【/etc/hosts】文件内,那可以怎么进行?

  1. 通过【vim hosts /etc/hosts】命令来使用一个vim打开两个文件
  2. 在vim中先使用【:files】查看一下编辑的文件数据有什么?如下图的最后一行显示的是【请按下ENTER或其他命令继续】就会回到vim的命令模式

image-20230420160150349

  1. 在第一行输入【4yy】复制4行
  2. 在vim的环境下输入【:n】会来到第二个编辑的文件,就是/etc/hosts内
  3. 在/etc/hosts 按下【G】到最后一行,再输入【p】粘贴

image-20230420160646453

  1. 按下多次的【u】来还原原本的数据

  2. 最终按下【:q】来退出vim的多文件编辑

利用多文件编辑功能,可以让你很快地就将需要的数据复制到正确的文件内,当然这个功能也可以利用窗口界面来达到

多窗口功能

想象一下这两个情况:

  • 当我有一个文件非常大,我查到后面的数据时,想要对照前面的数据,是否需要使用 【ctrl + f】与【ctrl + b】(或PageUp,PageDown功能键)来跑前跑后查看?
  • 我有两个需要对照着看的文件,不想使用前一小节提到的多文件编辑功能:

在一般窗口界面下的编辑软件大多有【划分窗口】或是【冻结窗口】的功能来将一个文件划分成多个窗口的展现,那么vim能不能达到这个功能呢?可以,但是如何划分窗口并放入文件?很简单,在命令行魔术输入【:sp{filename}】即可。这个filename可有可无,如果想要在新窗口启动另一个文件,之后输入【:sp】再次的打开这个文件一次,如何再输入【G】结果如下

image-20230420162819835

万一你再输入【:sp /etc/hosts】时

image-20230420162858744

看到了吗,两个文件同时再一个屏幕上显示,你还可以利用【ctrl + w + ↑】及【ctrl + w + ↓】在多个窗口之间移动。这样复制、查看就会变得很简单,划分窗口相关命令很多只介绍一下几种

参数解释
:sp [filename]打开一个新窗口,如果有加filename,表示在新窗口创建一个新文件,否则表示两个窗口为同一个文件内容(同步显示)
ctrl + w + j按键的按法是:先按下ctrl不放,再按下w后放开所有的键,之后再按下j,则光标可移动到下方窗口
ctrl + w + ↓按键的按法是:先按下ctrl不放,再按下w后放开所有的键,之后再按下向下的箭头,则光标可移动到下方窗口
ctrl + w + k同上,不过光标移动到上面的窗口
ctrl + w + ↑同上,不过光标移动到上面的窗口
ctrl + w + q其实就是:q结束退出。举例来说,如果我想要结束下方的窗口,那么利用ctrl + w ↓ 移动到下方窗口后,输入:q即可退出,也可以按下ctrl + w + q 此外也可输入【:close】关闭所在的窗口

vim的关键词补全功能

我们知道bash的环境下面可以按下[tab]按键来完成命令、参数、文件名的补全,但是再vim里面按TAB就是很多个空格,那么有没有可以补全命令的按键呢?有的

主要的vim补齐功能

组合键补全内容
【ctrl + x】 => 【ctrl + n】通过目前正在编辑的这个【文件的内容文字】作为关键字,给予补齐
【ctrl + x】=> 【ctrl + f】以当前目录内的文件名作为关键词,给予补齐
【ctrl + x】=> 【ctrl + o】以扩展名为语法补充,以vim内置的关键词,给予补齐

比较有用的是第一个和第三个组合键,第一个组合键中,你可能会再同一个文件里面重复出现许多相同的关键词,那么就能够通过这个来补全,如下图

image-20230420172641750

如果你想要使用vim内置的语法检验功能来处理取得关键词补全,那么第三个选项就很有用。不过你要注意,如果你想要使用第三个功能,就得要注意你编辑的文件的扩展名,我们下面来做个简单测试。

假设我们要编写网页,忘记

后面跟什么参数了就可以使用第三个功能,可以列出很多相关的关键词让你选择。注意,一定要使用正确的扩展名,否则会无法出现任何关键词。

image-20230420192232498

vim环境设置与记录:/.vimrc、/.viminfo

有没有发现,如果我们以vim软件来查找一个文件内部的某个字符时,这个字符串会泛白,而下次我们再次以vim编辑这个文件时,该查找的字符串泛白情况还是存在的。甚至于在编辑其他文件时,如果其他文件内也存在这个字符串,竟然还是会主动泛白,很神奇。另外,我们重复编辑同一个文件时,当第二次进入该文件时,光标竟然就在上次退出的那一行上面。为什么会这样呢?

这是因为我们的vim会主动地将你曾经做过的操作记录下来,好让你下次可以轻松作业,这个记录操作文件就是:【~/.viminfo】。如果你曾经使用过vim,那你的根目录应该会存在这个文件才对。这个文件是自动生产的,不用自行建立。在vim里所做过的操作,可以在这个文件内查询到。

此外,每个Linux发行版对vim的默认环境都不太相同,举例来说,某些版本在查到关键词时并不会高度泛白,有些版本则会主动帮你进行缩进的操作。但是这些都是可以设置的,那就是vim的环境设置,整体vim的设置一般放置在【/etc/vimrc】这个文件中,不过不建议你修改它,你可以修改【~/.vimrc】这个文件(默认不存在,需要自行手动建立),将你所希望的设置值写入。

vim的环境设置参数

参数解释
:set nu(:set nonu)就是设置行号和取消行号(nonu)
:set hlsearch(:set nohlsearch)hlsearch就是high light search(高亮度查找)
:set autoindent(:set noautoindent)是否自动缩进?autoindent就是自动缩进
:set backup是否自动保存备份文件?一般是nobackup的,如果设置backup的话,那么当你修改任何一个文件时,则源文件会被另存成一个文件名为filename~ 的文件。
:set ruler还记得我们提到右下角的一些状态栏说明?这个ruler就是在设置显示或不显示该设置值的
:set showmode这个则是,是否显示 --INSERT-- 这类的字眼在左下角的状态栏
:set backspace=(012)一般来说,如果我们按下【i】进入编辑模式后,可以利用退格键【Backspace】来删除任意字符。但是,某些Linux发行版则不许如此。此时,我们就可以通过backspace来设置,当backspace为2时,就是可以删除任意值;0或1时,仅可删除刚刚输入的字符,而无法删除原本就已经存在的文件
:set all显示目前所在的环境参数设置值
:set显示 系统默认值不同的设置参数,一般来说就是你有自行变动过的设置参数
:syntax on(:syntax off)是否依据程序相关语法显示不同颜色?举例来说,在编辑一个纯文本文件时,如果开头是以 # 开始,那么该行就会变成蓝色。
:set bg=dark(:set bg=light)可用以显示不同的颜色色调,默认是【light】,如果你常常发现注释的深蓝色字体很不容易看,那么这里可以设置为【dark】,试看看,会有不同的样式

可以这样设置【~/.vimrc】

[root@localhost ~]# vim ~/.vimrc 
set bg=dark     # 显示不同的底色色调(经实验好像至是把带颜色的字加粗了)
set nu          # 显示行号
set hlsearch    # 高亮泛白
set ruler       # 可显示最后一行的状态
set backspace=2 # 可随时用退格键删除
syntax on       # 进行语法检验
set autoindent  # 自动缩进

在编写【~/.vimrc】这个文件时 我们也可以使用vim的关键词补全功能 我们上面没有介绍,可以使用【ctrl + x】=>【ctrl + v】 来补全vim命令非常好用,如下图

image-20230420201435686

vim常用的命令示意图

img

其他vim使用注意事项

vim功能非常强大,下面我们还有一些要注意的事项

中文编码的问题

很多人经常会遇到它们的vim无法正常显示中文,这是为什么呢?其实很有可能是因为编码的问题。因为中文编码有【Big5、GBK、UTF-8】等几种,如果你的文件是使用GBK编码,但在vim的终端界面中你使用的是UTF-8,由于编码的不同,你的中文内容当然就是一堆乱码了,怎么办呢?这时你要考虑很多东西

  1. 你的Linux系统默认支持的语系数据:这与【/etc/locale.conf】有关
  2. 你的终端【bash】的语系:这与LANG、LC_ALL 这几个变量有关
  3. 你的文件原本的编码
  4. 打开终端的软件,例如在GNOME下面的窗口界面

事实上最重要的是上面的第三和第四点,只要这两点的编码一致,就能够正确的看到与编辑你的中文文件,否则就是一堆乱码

如何设置呢?

[root@localhost ~]# LANG=zh_CN.UTF-8
[root@localhost ~]# export LC_ALL=zh_CN.UTF-8

LANG 和 LC_ALL 是环境变量,用于设置 Linux 系统的本地化语言环境。
LANG 变量用于设置系统的默认语言环境,它影响所有的本地化工具和应用程序。比如,LANG=en_US.UTF-8 表示使用英语(美国)的 UTF-8 编码。
LC_ALL 变量用于覆盖 LANG 变量,它会强制设置所有本地化工具和应用程序的语言环境。比如,LC_ALL=zh_CN.UTF-8 表示强制使用中文(中国)的 UTF-8 编码。

DOS与Linux的换行符

DOS和Linux系统在换行符的使用上有所不同。
在DOS系统中,每行的结尾是由两个字符组成的,即“回车符”(CR)和“换行符”(LF)。这是由当初的打印机技术决定的,为了打印机能够回到行首并换行,需要发送两个字符。因此,DOS系统中的文本文件中每行结尾都是“CR+LF”。
在Linux系统中,每行的结尾只有一个“换行符”(LF)。这是因为在Unix时代,打印机只需要一个“换行符”就能回到行首并换行。因此,在Linux系统中,文本文件中每行结尾只有一个“LF”。
这种差异造成的结果是,如果在Windows系统中编写的文本文件打开到Linux系统中,每行结尾就会多出一个“CR”字符。而如果在Linux系统中编写的文本文件打开到Windows系统中,每行结尾就会少一个“CR”字符,导致文本格式混乱。
为了解决这个问题,一些编辑器和工具会自动处理文本文件的换行符,例如Notepad++、Sublime Text等编辑器会自动识别并转换换行符格式。此外,也可以使用一些特定的工具来进行换行符的转换,例如dos2unix和unix2dos等命令行工具。

dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
选项:
-k:保留该文件原本的mtime 时间格式(不更新文件上次内容经过自定义的时间)
-n:保留原本的旧文件,将转换后的内容输出到新文件,如:dos2unix -n old new

使用案例

使用之前先确保自己安装了这两个命令

[root@localhost csr]# yum install -y unix2dos

将/etc/man_db.conf 重新复制到/tmp/csr/ 下面,并将其修改为dos换行

[root@localhost csr]# mkdir /tmp/csr/
[root@localhost csr]# cd /tmp/csr/
[root@localhost csr]# cp -a /etc/man_db.conf .
[root@localhost csr]# ll man_db.conf 
-rw-r--r--. 1 root root 5171 420 19:32 man_db.conf
[root@localhost csr]# unix2dos -k man_db.conf 
unix2dos: converting file man_db.conf to DOS format ...   # 显示这行信息,就表示换行转为DOS格式了
[root@localhost csr]# ll man_db.conf 
-rw-r--r--. 1 root root 5302 420 19:32 man_db.conf
# 因为换行符多了^M,所以容量增加了

将上述的man_db.conf 转成Linux换行符,并保留旧文件,新文件1防御 man_db.conf.linux

[root@localhost csr]# dos2unix -k -n man_db.conf man_db.conf.linux
dos2unix: converting file man_db.conf to file man_db.conf.linux in Unix format ...
[root@localhost csr]# ls
man_db.conf  man_db.conf.linux
[root@localhost csr]# ll
总用量 16
-rw-r--r--. 1 root root 5302 420 19:32 man_db.conf
-rw-r--r--. 1 root root 5171 420 19:32 man_db.conf.linux
[root@localhost csr]# file man_db.conf*
man_db.conf:       ASCII text, with CRLF line terminators  # 很清楚说明的是CRLF换行
man_db.conf.linux: ASCII text

如果你在不同的系统之间复制一些纯文本文件时,千万记得要使用unix2dos或dos2unix来转换一下换行格式。

语系编码转换

在Linux中,语系编码转换是一个常见的操作,通常需要在不同的编码之间进行转换,以便在不同的环境中更好地显示和处理文本数据。以下是Linux语系编码转换的详细说明:

inconv --list
inconv -f 原本编码 -t 新编码 filename [-o newfile]
选项:
--list:列出iconv支持的语系数据
-f:from,就是来源的意思,后面接原本的编码格式
-t:to,就是后来的新编码是什么格式
-o file:如果要保留原本的文件,那么使用-o 新文件名,可以建立新编码文件
  1. 列出iconv支持的语系数据
inconv --list 
  1. 转换语系编码
    可以使用iconv命令来进行语系编码转换,例如:
iconv -f utf-8 -t gbk input.txt > output.txt
# 然后使用file 文件名检查语系编码是否转换了

上面的命令将UTF-8编码的input.txt文件转换为GBK编码的output.txt文件。
3. 批量转换文件编码
如果需要批量转换多个文件的编码,可以使用find命令和xargs命令来进行批量操作,例如:

find . -type f -name "*.txt" | xargs -I {} iconv -f utf-8 -t gbk {} -o {}.gbk

上面的命令将当前目录下所有扩展名为txt的文件从UTF-8编码转换为GBK编码,并将转换后的文件保存为原文件名加上.gbk后缀的文件。

换语系编码
可以使用iconv命令来进行语系编码转换,例如:

iconv -f utf-8 -t gbk input.txt > output.txt
# 然后使用file 文件名检查语系编码是否转换了

上面的命令将UTF-8编码的input.txt文件转换为GBK编码的output.txt文件。
3. 批量转换文件编码
如果需要批量转换多个文件的编码,可以使用find命令和xargs命令来进行批量操作,例如:

find . -type f -name "*.txt" | xargs -I {} iconv -f utf-8 -t gbk {} -o {}.gbk

上面的命令将当前目录下所有扩展名为txt的文件从UTF-8编码转换为GBK编码,并将转换后的文件保存为原文件名加上.gbk后缀的文件。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PyTorch】课堂测试一:线性回归的求解

作者🕵️‍♂️:让机器理解语言か 专栏🎇:PyTorch 描述🎨:PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语💓:🐾没有白走的路,每一步都算数&#…

如何在自定义数据集上训练YOLOv8的各个模型

YOLOv8效果图(可以应用到图片和视频): 四个模式命令 yolo taskdetect modepredict modelmodel/yolov8n.pt sourceinput/test.mp4 showTrueyolo tasksegment modepredict modelmodel/yolov8x-seg.pt sourceinput/zidane.jpg showTrueyolo tas…

JavaSE-part2

文章目录 Day07 IO流1.IO流1.1背景介绍1.2File类1.2.1常用方法 1.3IO流原理1.4IO流的分类1.4.1InputStream 字节输入流1.4.1.1FileInputStream1.4.1.2FileOutPutStream1.4.1.3练习 1.4.2Reader and Writer1.4.2.1FileReader1.4.2.2FileWriter 1.4.3节点流和处理流1.4.3.1处理流…

MSNet网络结构与代码搭建深入解读

模型结构 1、首先,将多光谱遥感图像的波段分为可见光和不可见光两组,然后进行分组同步特征提取; 代码 先看总体结构,主代码 __init__定义了声明MSNet模型有哪些类,MSNet的forward方法规定数据如何在层之间流动。 1、首先是获得图片的输入尺寸input_size = (rgbnnd.size(…

Python数据结构与算法-动态规划(钢条切割问题)

一、动态规划(DP)介绍 1、从斐波那契数列看动态规划 (1)问题 斐波那契数列递推式: 练习:使用递归和非递归的方法来求解斐波那契数列的第n项 (2)递归方法的代码实现 import time # 递…

Spark----RDD(弹性分布式数据集)

RDD 文章目录 RDDRDD是什么?为什么需要RDD?RDD的五大属性WordCount中的RDD的五大属性如何创建RDD?RDD的操作两种基本算子/操作/方法/API分区操作重分区操作聚合操作四个有key函数的区别 关联操作排序操作 RDD的缓存/持久化cache和persistchec…

Java学习-MySQL-DQL数据查询-联表查询JOIN

Java学习-MySQL-DQL数据查询-联表查询JOIN 1.分析需求,查找那些字段 2.分析查询的字段来自哪些表 3.确定使用哪种连接查询 4.确定交叉点 5.确定判断条件 操作描述inner join返回左右表的交集left join返回左表,即使右表没有right join返回右表&#xf…

iptables深度总结--基础篇

iptables 五表五链 链:INPUT OUTPUT FORWARD PREROUTING POSTROUTING 表:filter、nat、mangle、raw、security 数据报文刚进网卡,还没有到路由表的时候,先进行了prerouting,进入到路由表,通过目标地址判…

FFMPEG 关于smaple_fmts的理解及ffplay播放PCM

问题 当我将一个aac的音频文件解码为原始的PCM数据后,使用ffplay播放测试是否成功时,需要提供给ffplay 采样率,通道数,PCM的格式类型 3个参数,否则无法播放! 所以使用ffprobe 查看原来的aac文件信息&…

Python手写板 画图板 签名工具

程序示例精选 Python手写板 画图板 签名工具 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<Python手写板 画图板 签名工具>>编写代码&#xff0c;代码整洁&#xff0c;规则&am…

别再回答面试官,toFixed采用的是四舍五入啦!

四舍五入大家都知道&#xff0c;但你知道银行家舍入法么&#xff1f;你知道JS里的toFixed实现用的是哪种吗&#xff1f; 前两天我写了篇《0.1 0.2 不等于 0.3&#xff1f;原来是因为这个》&#xff0c;大概就是说&#xff0c;0.1 0.2不等于0.3是因为浮点数精度问题。 结果在…

LinkedList 的特点及优缺点

现在来讲 LinkedList LinkedList 是链表集合&#xff0c;基于链表去存储数据&#xff0c;每一个数据视作一个节点 private static class Node<E> {// 存放的数据E item;// 下一个节点Node<E> next;// 上一个节点Node<E> prev;Node(Node<E> prev, E ele…

【unity实战】2D横版实现人物移动跳跃2——用对象池设计制作冲锋残影的效果(包含源码)

基于上一篇人物移动二段跳进一步优化完善 先看看最终效果 什么是对象池? 在Unity中,对象池是一种重复使用游戏对象的技术。使用对象池的好处是可以减少游戏对象的创建和销毁,从而提高游戏的性能。如果不使用对象池,每次需要创建游戏对象时,都需要调用Unity的Instantiate函…

国内几大技术网站,你最爱和哪个玩耍?

所谓“物以类聚&#xff0c;人以群分” 所谓“士为知己者死&#xff0c;女为悦己者容” 所谓“世上的乌鸦都一般黑&#xff0c;鸽子却各有各的白” CSDN&#xff0c;掘金&#xff0c;博客园等&#xff0c;说起来都是“技术”社区&#xff0c;每个却都有着不同的姿色和用处。至于…

初识Spring——IoC及DI详解

目录 一&#xff0c;什么是Spring Spring设计核心 Spring核心定义 Spring官网 二&#xff0c;什么是IoC IoC思想 控制权的反转 三&#xff0c;什么是DI DI的定义 DI和IoC的关系 一&#xff0c;什么是Spring Spring设计核心 我们常说的Spring其实指的是Spring Framewo…

ABP vNext电商项目落地实战(一)——项目搭建

一、落地条件&#xff1a; 1. .NET5版本 2. DDD 3. ABP vNext 4.ABP CLI &#xff08;ABP的命令行工具&#xff0c;包括ABP的各种模板&#xff09; 5.SQL Server 写在前面&#xff1a;我觉得这个框架的文件分层很凌乱&#xff0c;在企业的实际业务场景中&#xff0c;一般…

vscode+git浅尝

git 安装git以后初始化仓库分支重命名合并分支连接远程仓库推送项目 安装git以后 第一次使用git需要配置用户名和邮箱 任意处打开git终端&#xff0c;譬如鼠标右击点击git bash here 命令分别为&#xff1a; 设置用户名和邮箱 git config --global user.name “username” …

【QA】Python代码调试之解决Segmentation fault (core dumped)问题

Python代码调试之解决Segmentation fault 问题 问题描述排查过程1. 定位错误&#xff0c;2. 解决办法 参考资料 问题描述 Python3执行某一个程序时&#xff0c;报Segmentation fault (core dumped)错&#xff0c;且没有其他任何提示&#xff0c;无法查问题。 Segmentation fa…

jenkins gitlab asp.net core持续集成

什么是jenkins Jenkins直接取自其官方文档&#xff0c;是一个独立的开源自动化服务器&#xff0c;您可以使用它来自动执行与构建、测试、交付或部署软件相关的各种任务。 jenkins可以干什么 Jenkins 通过自动执行某些脚本来生成部署所需的文件来工作。这些脚本称为JenkinsFi…

叶酸聚乙二醇羟基FA-PEG-OH;了解高分子试剂 Folate-PEG-OH

FA-PEG-OH&#xff0c;叶酸-聚乙二醇-羟基 中文名称&#xff1a;叶酸聚乙二醇羟基 英文名称&#xff1a;FA-PEG-OH HO-PEG-FA Folate-PEG-OH 性状&#xff1a;黄色液体或固体&#xff0c;取决于分子量 溶剂&#xff1a;溶于水&#xff0c;DMSO、DMF等常规性有机溶剂 活性基…