当前位置: 首页 > news >正文

思考:linux Vi Vim 编辑器的简明原理,与快速用法之《 7 字真言 》@ “鱼爱返 说 温泉啊“ (**)

  Linux vi/vim | 菜鸟教程     

  https://zhuanlan.zhihu.com/p/602675406 

  Linux Vim编辑器的基本使用_vim文本编辑器-CSDN博客 

   

这里提出使用 vi / vim 进行简单的编辑操作的原因,主要是在容器镜像中,普遍都是使用这个。

在 linux 服务器应用场景,vi / vim 也是默认标配的命令行编辑器?

当然,那些对输入速度有严格要求的场合,比如黑客对抗场景,输入速度慢了就意味着失败,也会选择 vi。

在多数的场景里,对于命令行编辑器,可能会有更多、更好的选择。比如:micro  Micro - Home 

$ sudo apt install micro

思考

1. 记忆公式:

按键操作的 7 字真言 1:

"鱼爱返 温泉"    ==    v i Esc : wq !

-----------

一般的简单用途,只需记住 7 字真言中说的 7 个按键的作用和用法,就行了:v i Esc : wq !  

一般人只是用来修改配置文件而已,不是用来全职写程序,所以只需要掌握 7 字真言即可,这是学习 vi/m编辑器入门的主轴线。

在有些场景里,只有发行版镜像、且里面只有 vi / vim,没有网络,这也就更有用了。

现在,个人觉得 micro 更好用,但由于历史原因,vi / vim 是 linux 发行版的标配?

------

vi /vim 命令的用法,对于一般人来说,太复杂了,完全可以当成是一种小众的人类通用语言来学习。 vimhelp .org    computerhope .com    

只是对于一般的程序员来说,花费太多的时间在这上面,值的吗?毕竟伴随者时代的进步,已经有了许多更加简便的代码编辑器了。

也就是那些以追求输入速度达到极致的黑客们,所不得不采用的工具吧?这是黑客帝国的通用语言吧?

操作系统的核心编程,都是黑客们的工作成果。骇客们不可能为了普通人去改变习惯的。所以作为普通程序员,也是需要学习最基础的用法,可以去改改配置文件之类的,就足够了吧?

======

按键操作的两种 7 字真言对比:

  • 分读型 7 字真言 1:"鱼爱返 说 温泉啊"    ==    v i Esc : wq !
  • 拼读型 7 字真言 2:"维奥返 说 温泉啊"    ==    vi ao Esc : wq !
    维 == vi , 奥 == ao
    ------------
    v : 以可视模式进入浏览编辑主窗口。可以执行复制、粘贴之类的编辑操作,但不能输入用户的内容。
    ------------
    进入到数据输入子窗口,通常有 3 种命令:
    i :  插入光标前一个字符。
    a:插入光标后一个字符。
    o:向下新开一行,插入行首。
    注:以 i a o 进入数据输入子窗口,可以输入用户的内容,但不可编辑。

注 1:Esc 键很重要,当我们不打算清楚当前在哪个窗口的时候,就按它一下返回到主窗口;当然,按多几下也没有关系。

注 2:a  o : 其实也可以不需要记忆,在进入编辑子窗口之后,通过 4 个方向键就可以实现这两个操作了,只是稍微多按了一次方向键而已。因此,分读型 7 字真言 1,才是主要的。

            .          

注 3:数据输入子窗口 与 浏览编辑主窗口 窗口的区别

a. 一般现在的图形界面编辑器,比如:office, gedit 等等,用户的数据输入和编辑排版,都是在同一个窗口下完成的。

但是,在命令行菜单界面,实现起来是困难的,或者说就算实现了,在使用上也是困难的;因为如果这样的话,普通字母就不能简单地作为编辑排版的功能字母来使用了,势必要增加许多功能字母与普通字母的组合,才能完成 vi 那么多的按键功能。

b. 因此,数据输入子窗口就是给专门给用户输入数据的。末行子窗口嵌入在该窗口的底部,平时是隐藏的。

c. 浏览编辑主窗口除了浏览功能之外,还具有编辑的功能,比如复制粘贴,删除行块等等的诸多功能。

按键操作的补充说明:

  • 鱼 爱 返  == v i Esc   # v 表示同中语拼音“鱼”,i 表音“爱”,Esc 表示“返回 /退出”。
  • 冒号 ( : )  == :        # 表示“说”。
  • 温 泉 == w q          # w 表音“温”,q 表音“泉”。
  • 感叹号 ( ! ) == !      # 感叹号 ( ! ) 表示“”。
  • ------------
  • 回车键,4 个方向键:记住它们,不需要用脑的?

其实,可以再归纳为:

vi /vim 编辑器包括 3 种终端窗口:

  • 数据输入子窗口 :以 i \a \o 方式进入,用户的数据在这里只能输入数据。不能对文本进行编辑,如:不能进行复制、粘贴之类的操作。
  • 浏览编辑主窗口 :以 v 方式进入,用于浏览,以及对文本进行编辑。用户可以对文本进行复制、粘贴之类的编辑操作。
  • 帮助提示主窗口 :用于提示,以及执行有效的命令,进入到其他子窗口。
    ---- 这个窗口,相当于在打开网站的真正主页之前,跳出来的一个警告页面。只在第一次单纯的 vi / vim 软件启动时,才会、且只会出现一次。
  • 末行子窗口 : 西文冒号。主要用于命令的输入,结束退出,其他的等等命令。对应于底行命令模式,存在于主窗口底部的末行位置。虽然末行子窗口平时是隐藏的,但是,和其他窗口一样,它也是一个具有独立个性的。

说明:

1. 浏览编辑主窗口和帮助提示主窗口,以下简称为 主窗口。

2. 可以忽略不计的帮助提示主窗口:只有一次实际寿命的、只在第一次单纯启动 app 时才会有菜单提示帮助。

3. Esc 是返回主窗口的万能按键。所有进入到子窗口的命令,在任意一个子窗口下按 Esc 都会返回到主窗口,包括在该窗口下按的 Esc。因此,多按 Esc 按键是没有问题的。

4. 只有在主窗口下输入有效的命令,才会进入到子窗口。一般只要懂得 v i 即可,就是软件的名字。

特别注意:在中文输入状态,造成了命令输入的无效。

  • 末行窗口被内嵌在主窗口的底部末行的位置,平时是隐藏起来的。
    输入冒号可以调出的末行子窗口。末行子窗口,总是嵌在其他窗口的底部,从而造成了在理解上的困难;其实就是 UI 设计中的 bottom bar,平时隐藏,使用冒号来叫出。
  • 主窗口相当于网站的主页,只有在主页状态下,才有通向子网页的链接。因此,只有 Esc 回退到主页场景,才能使用快捷键命令、进入到其他子窗口。
    就像是公交车,从 A 到 B 没有公交,从 A 到 B ,必须要回到总站转车才行。
  • wq! 属于在末行窗口里的菜单,通过按键输入符号来调用。

一些常用命令

在浏览编辑主窗口下,可以进行的文本编辑操作:

注:数据输入子窗口,主要就是用来输入用户数据的吧?

------

Ctr-d:向下翻半屏     
Ctr-u:向上翻半屏     
gg:光标移动文件开头      
G:光标移动文件末尾  
------
dd   删除光标所在行
ndd  删除指定的行数
:n1,n2d  删除n1到n2行
------
撤销命令
u:一步一步撤销
ctr-r:反撤销
------
yy 复制当前行。
p/P 粘贴已剪切的内容:
– 进入命令行模式,按 “p” 将剪切的内容粘贴到光标所在行的下一行。
– 进入命令行模式,按 “P” 将剪切的内容粘贴到光标所在行的上一行。

注:复制、粘贴,爽歪歪记忆法:歪屁歪歪屁

      yy p/P:歪歪小屁,贴在光标的下一行;大屁则贴在上一行。歪歪之后,可移动光标到想要的行号位置,再放屁?

------

行号:在末行命令窗口输入

:set nu 显示行号
:set nonu  取消显示行号

注:nu == number

------
/string 向光标之下寻找一个名称为string字符串
?string 向光标之上寻找一个名称为string字符串

vim 典型的命令流:ggVG y p

gg:将光标移动到文件的第一行。如果这里按 yy ,以下连续操作,则是选中当前行到文件末。

V :进入可视行模式。

G :移动光标到文件的最后一行。

y :按下 y 复制选中的内容

      p :  粘贴

      d : 删除选中

------------

每一个字母代表一个意思,多个连续的字母流,就变成了一句话。

单个字母可以看成是一句特殊构造句子。

每一句话,就代表了不同的意思,不同的操作。

再容器镜像里,基本上都是用 vi 或 vim。

多行注释

    移动到要注释的起始行。
    进入可视行模式:按下 Shift + V。
    移动光标选择要注释的行。
    按下 : 进入命令行模式。
    输入 s/^/# 可加空格,再按下 Enter。

注:这个命令提示符号,有点怪。

一般人难以记忆的太多的命令:  Vim: intro.txt 

Visual mode and ranges 

  https://www.computerhope.com/unix/vim.htm 

You can select text with Visual mode. If you then press ":" to start a colon command, you will see this:

:'<,'>

Now you can type the command and it will be applied to the range of lines that was visually selected.

Note: When using Visual mode to select part of a line, or using Ctrl-V to select a block of text, the colon commands will still apply to whole lines.

The '< and '> are actually marks, placed at the start and end of the Visual selection. The marks remain at their position until another Visual selection is made. Thus you can use the "'<" command to jump to position where the Visual area started. And you can mix the marks with other items:

:'>,$

This addresses the lines from the end of the Visual area to the end of the file.

Vim's visual mode # 

When editing text with Vim, visual mode can be extremely useful for identifying chunks of text to be manipulated.

Vim's visual mode has three versions: character, line, and block. The keystrokes to enter each mode are:

  • Character mode: v (lower-case)
  • Line mode: V (upper-case)
  • Block mode: Ctrl+v

On the bottom left of your Vim window, you will see either -- VISUAL --, -- VISUAL LINE -- or -- VISUAL BLOCK -- to indicate which visual mode you are in.

可视化模式分为三种:字符、行、块。  vim常用命令--visual模式下粘贴、复制_vim visual模式 复制-CSDN博客 

2. 区别

省略说明:这里所有的窗口,都是指终端窗口,所以可以将“终端”这 2 个字省略掉了。
终端窗口:终端型菜单与内容显示的界面。

“鱼爱返”:v i Esc,v i 分别对应于 可视、插入 这 2 个窗口。Esc 表示从子窗口返回;由于所有的返回,都是返回到主窗口,包括在主窗口场景下所按下的 Esc 按键,所以 Esc 按键也可以看作就是主窗口。

冒号 ( : ):末行命令窗口。在插入模式下,无法调出末行命令窗口;因为这时它表示的是所输入的冒号字符。末行命令窗口只内嵌在可视窗口和主窗口的末行位置,因此,只有在这两个窗口模式下,输入才能有效地切换到末行命令窗口。

“温泉啊“ :w q ! 表示 vi 结束退出的 3 种主要方法:写入文件,退出,强制退出。

抓住主干,不拘小节

终端命令行菜单显示窗口与 GUI 图形窗口的类比:4 个终端窗口,对应于 4 个不同GUI 图形窗口,或者说是 4 个不同的网页。
只有一个主(网)页,在主页中,有通往所有 子网页 的导航按钮。
在子网页里,只有返回到主页的导航按钮。这个导航按钮是相同的,都是 Esc 按键。
要想从一个子网页跳转到另一个子网页,必须回到主页,因为只有在主页中,才有通往子网页的导航按钮。

终端窗口的好处

黑客之间的相互对抗,需要速度快。同样水准的黑客,速度慢时,就会沦为失败者。但是,大多数,甚至是绝大多数的编程场合,真的也需要这么快的速度吗?

就像打字那样,大多数的人使用拼音输入法,就可以了。但是,作为专门依靠打字赚钱的人来说,就需要用五笔字形之类的输入法了,因为输入快,就是赚钱多。

用得到的命令,才是生产力。用不到的命令,就是浪费时间的垃圾。

vi / vim 的命令,是=实在是太多了。在需要时再看,也不迟吧?
在网络上,有太多的网文,金子淹没在一大堆的沙石里。今天看了,明天忘了,为了自己的记忆,所以就写了这篇文章,以备忘。

在容器中,使用 vi / vim 是一种好的选择

如果不是为了使用容器,那么,估计我也不会太在意 vi ,毕竟它学了、很快就又忘记了,因为我不是依靠打字来生存的。

哪怕在容器中安装像 gedit 这种轻量的图形界面编辑器,都要下载一大堆依赖。当有些依赖没有被下载到时,App 在使用中就会出现一些莫名其妙的问题,甚至是无法启动。

容器的一个特征之一

就是类似于将原生的 Linux 发行版,在删除了绝大部分的依赖,改变了原生 OS 的运行方式,以及配置之后,得到的一个类似于可以在 VirtualBox 虚拟机上运行的 Livecd ISO;但是,容器是可读写的,类似与 linux slan os 发行版;但它不能在 VirtualBox 中运行,而是在所谓的容器引擎中运行。
在运行的容器,就相当于是电脑运行中的一个进程,一个普通的 App,所以它很轻量,在底速配置的电脑上也能飞快地运行。

3. 通过对简单网站的网页导航进行类比,说明原理

主窗口 <<== 相当于 ==>> 主网页
  • 一个简单的网站,只有 1 个主页,3 个子网面;外加一些杂七杂八的东西。
  • 1. “命令模式” 子窗口 - Insert Mode :相当于 >> 网站的主页 home。网页的总入口 == App 的主菜单。要的
  • 2.  “可视模式” 子窗口 - Insert Mode :相当于 >> 网站中不可编辑的、只能浏览的子网页。
  • 3.  “编辑模式” 子窗口 / Visual Mode):相当于 >> 网站中,用户可以向网页中输入信息的、可交互的子网页。
  •  4. “末行模式” 子窗口 / Command-Line Mode :相当于 >> 网站中,用户在完成网页信息的填写之后、还要勾选几个的选项,比如:勾选同意条款 1 , 2,3 之类的,然后,才能按“提交”按钮。
  • 回车键,4 个箭头的方向建,这些不需要用脑来记忆了吧?
附加说明
  • “回车“按键 / Enter:相当于 >> 网站中的“提交“按钮。
  • Esc :相当于 >> 在网站中,所有的子网页,都有只有一个直接“返回到主页“的菜单导航按钮(以下简称:按钮)。
  • 只有主页 home( “命令模式” )才有直接跳转到各个子网页的按钮。
  • 跳转的导航规则:没有从一个子网页 可以直接转到 其他子网页 的按钮。要想从一个子网页跳转到另一个子网页,必须返回到主网页 home ,然后,再从主页上、去选择到底要点击哪一个子菜单的按钮。
  • 开始,进入到文件:在 OS 的终端里,输入如下命令
    vi 文件名 :表示用 vi 这种应用软件来编辑 / 或新建一个文件,这个文件的名字,就是 vi 命令后面用“文件名”所代表、称谓的文件。
  • 即将完成,收尾阶段:“末行模式” 子窗口在底部的末行位置,当冒号出现时,输入的命令才有效。
    :wq!

what is :wq!

  1. : 冒号是必须的,只有这样,其后的字母,才会被解释为是命令。
  2. w : write 表示写入文件命令。只有 :w 时,表示只写入,但不退出。
  3. q : quit 表示退出。只有 :q 时,表示退出,但不写入。
  4. ! : 感叹号表示强制。为什么需要感叹号?但文件被改动了,是不允许直接退出的,否则,所有的工作就白费了。
  • 结束,退出的条件正在运行中的 vi / vim 编辑器,想要退出,是有条件的:
    1. 要么是文件没有被改变 :q。
    2. 要么是存盘之后,再退出 :wq
    3. 想要退出,但又不想存盘时,就要采用“强制” :wq!:q! 表示:存盘后强制退出,或 不存盘强制退出。
    x. :q   退出,退不出?!
        :q!  强制退出,成功了。啊!啊!啊!黄了、黄了,没有存盘!!白干了。
    wq!
    这 3 个字符,就有好几种的有效组合。
  • vi / vim 的命令,全部都是 ASCII 编码的拉丁字母与符号。26 个字母就是 26 进制的数学计数系统而已,拉丁语单词,本质上就是一个可变长度的优选数值而已,根据单词的造型和发音来作为其选择的主要依据之一。

备注

1. 入门、或者个人简单运维的用途,只需要记住:鱼 爱 返 ==>>  v i Esc

2. vi / vim 编辑器的命令,是非常多的,那是给专门使用 vi 作为日常工作编辑器的古董级、或黑客级的程序员使用的。
可能大多数的程序员并不会去使用它,因为从总的用时来看,一般使用图形界面的编辑器,并不见的会比使用单纯的命令行编辑器,效率会低?

3. 当我们只想要简单地使用 vo /vim 时,v i Esc : "鱼爱返说"这 4 个精华按键,被淹没在命令字符的海洋里。

4. 为什么要学习 vi / vim ?当需要使用容器时,在容器里是可以安装一个大型的编辑器的,但是,这可能需要浪费不少的流量、磁盘空间、精力、时间(寿命)等等。

5. 为什么要使用容器?在 Linux 的世界里,App 的跨发行部,跨大版本号的使用,实在是困难的。

6. 那,为什么要 App 软件进行跨平台使用呢?因为需要使用,所以就要采用。自己造轮子吗?这可能会浪费更多的人生寿命阿。

7. 需要掌握,但又不想浪费过多的时间,于是,就有了 7 字真言:"鱼爱返 温泉啊"    ==    v i Esc : wq !"

8. 它别注意:在有些官方仓库里,可能只有 vim,而没有 vi,但它们的大部分,甚至是绝大部分的命令,都是相同的。

App 窗口图的说明

vim 运行开始界面

工作及窗口切换框架 示例 2

刚刚打开文件时的界面: vim 文件名

子窗口 == 子网页:注意看左下角的提示。

 按错了按键,一般没有关系,看准左下角的提示,就行。

问题记录

当打开没有权限、或只读型的文件时,出现警告:

此时,如果处在中文输入状态,则会出现无法进入菜单窗口的问题。

相关文章:

思考:linux Vi Vim 编辑器的简明原理,与快速用法之《 7 字真言 》@ “鱼爱返 说 温泉啊“ (**)

Linux vi/vim | 菜鸟教程 https://zhuanlan.zhihu.com/p/602675406 Linux Vim编辑器的基本使用_vim文本编辑器-CSDN博客 这里提出使用 vi / vim 进行简单的编辑操作的原因&#xff0c;主要是在容器镜像中&#xff0c;普遍都是使用这个。 在 linux 服务器应用场景&#x…...

共筑开源技术新篇章 | 2024 CCF中国开源大会盛大开幕

在这个技术革新日新月异的时代&#xff0c;开源精神如同点燃创新火焰的火种&#xff0c;照亮了无数技术探索者的征途。2024年11月9日&#xff0c;备受瞩目的2024 CCF中国开源大会在深圳这座充满活力的创新之城盛大开幕。这场开源领域的顶级盛事&#xff0c;以“湾区聚力 开源启…...

SpringBoot(十八)SpringBoot集成Minio

项目上传文件集成一下Minio,下面是我在项目中集成Minio的全过程。 首先介绍一下Minio:MinIO是高性能的对象存储,单个对象最大可达5TB。适合存储图片、视频、文档、备份数据、安装包等一系列文件。是一款主要采用Golang语言实现发开的高性能、分布式的对象存储系统。客户端支…...

ODOO学习笔记(3):Odoo和Django的区别是什么?

Odoo和Django都是基于Python的开源框架&#xff0c;但它们的设计目标和用途有所不同&#xff1a; 设计目标和用途&#xff1a; Odoo&#xff1a;Odoo是一个企业资源规划&#xff08;ERP&#xff09;系统&#xff0c;它提供了一套完整的商业管理软件&#xff0c;包括会计、库存…...

持续收集解决VCcode各种报错的方法

在学习中我们经常会发生各种各样的报错&#xff0c; 1、pip 安装失败的报错 类似下面的 我们有时候纠结在上面会纠结好久&#xff0c;浪费很多时间。&#xff08;什么轮子我不知道&#xff09; 常见的解决方法: s-1:先uninstall packing&#xff0c;再重新装一次(有时候会重…...

Windows下使用adb实现在模拟器中ping

文章目录 前言安装adb执行adb命令查找模拟器设备链接模拟器命令行执行ping命令 总结 前言 有时在模拟器中测试应用不像在Windows这种开发环境中那么方便&#xff0c;毕竟Windows或者Linux下的工具五花八门&#xff0c;可以满足各种测试需求&#xff0c;比如应用在模拟器中无法…...

c++之deque和priority_queue

Deque 文档&#xff1a;https://legacy.cplusplus.com/reference/deque/deque/?kwdeque 相关接口&#xff1a; push_back():在尾部插入 #include <iostream> #include <deque>int main () {std::deque<int> mydeque;int myint;std::cout << "…...

SDL渲染器和纹理

文章目录 渲染器 (SDL_Renderer)纹理 (SDL_Texture)代码 渲染器 (SDL_Renderer) &#xff1a;它是渲染内容的接口&#xff0c;负责将内容绘制到窗口中。通过SDL_CreateRenderer创建&#xff0c;可以设置渲染器的背景颜色、绘图颜色、透明度等。所有绘图操作&#xff08;如绘制…...

基于Matlab 火焰识别技术

课题介绍 森林承担着为人类提供氧气以及回收二氧化碳等废弃气体的作用&#xff0c;森林保护显得尤其重要。但是每年由于火灾引起的事故不计其数&#xff0c;造成重大的损失。如果有一款监测软件&#xff0c;从硬件处获得的图像中监测是否有火焰&#xff0c;从而报警&#xff0…...

Qt 监控USB设备的插入和移除

Qt 监控USB设备的插入和移除 flyfish Ubuntu22.04 Qt 6.2.4 CMakeLists.txt 内容 # 指定 CMake 的最低版本要求 cmake_minimum_required(VERSION 3.16)# 定义项目的名称和使用的编程语言 project(USBMonitor LANGUAGES CXX)# 开启自动 UIC&#xff0c;MOC 和 RCC 工具 set(…...

终于弄懂了Python自定义模块与代码复用

自定义模块与代码复用 在编写Python代码时&#xff0c;很多时候我们会遇到需要多次使用相同功能的情况。这时候&#xff0c;模块化编程就显得尤为重要。通过将常用的功能代码放入单独的模块中&#xff0c;我们可以轻松地进行代码复用&#xff0c;避免重复编写相同的代码&#…...

从无音响Windows 端到 有音响macOS 端实时音频传输播放

以下是从 Windows 端到 macOS 端传输音频的优化方案&#xff0c;基于上述链接中的思路进行调整&#xff1a; Windows 端操作 安装必要软件 安装 Python&#xff08;确保版本兼容且已正确配置环境变量&#xff09;。安装 PyAudio 库&#xff0c;可通过 pip install pyaudio 命令…...

直方图均衡化及Matlab实现

文章目录 直方图均衡化关键点及思路Matlab实现 直方图均衡化 直方图均衡化是一种图像增强技术&#xff0c;主要用于增强图像的对比度&#xff0c;特别是当图像的有用数据的对比度接近时效果显著。通过改变图像的直方图分布&#xff0c;直方图均衡化能够使图像的灰度值更加接近…...

设备接入到NVR管理平台EasyNVR多品牌NVR管理工具/设备的音视频配置参考

NVR管理平台EasyNVR是一款功能强大的安防视频监控平台&#xff0c;能够轻松实现视频流的导入、录像、存储和回放等功能。在将设备接入到海康NVR管理平台EasyNVR时&#xff0c;视音频配置是确保视频监控效果的重要步骤。本文将详细介绍如何将设备接入到EasyNVR平台&#xff0c;并…...

后端:Aop 面向切面编程

文章目录 1. Aop 初步学习面向切面编程&#xff0c;EnableAspectJAutoProxy2. AOP的核心概念3. 前置通知&#xff08;Before&#xff09;4. 后置通知&#xff08;After&#xff09;5. 返回通知&#xff08;AfterReturning&#xff09;6. 异常通知&#xff08;AfterThrowing&…...

大数据机器学习算法与计算机视觉应用02:线性规划

Linear Programming Definition of linear programmingmax and min-cost max flowlinear program to solve minimax optimal strategies in gamesAlgoithms for linear programmingl1 regressionSeidel’s 2-dimensional linear programming algorithm linear program 线性规…...

godot——主题、Theme、StyleBox

我刚开始被这些术语吓到了&#xff0c;一直不敢去接触它们&#xff0c;都用的默认样式。现在好不容易有点思路了&#xff0c;记录下来。 下面看看怎么自定义样式。 1.先新建一个Theme 2.再次点击创建好的Theme 得到 图1 这样一个面板。&#xff08;看不懂没事&#xff0c;继…...

深入理解接口测试:实用指南与最佳实践5.0(一)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…...

SQL面试题——飞猪SQL面试 重点用户

飞猪SQL面试题—重点用户 在一些场景中我们经常听到这样的一些描述&#xff0c;例如20%的用户贡献了80%的销售额&#xff0c;或者是20%的人拥有着80%的财富&#xff0c;你知道这样的数据是怎么算出来的吗 数据如下,uid 是用户的id ,amount是用户的消费金额 |uid|amount| ---…...

Angular 和 Vue2.0 对比

前言 &#xff1a;“业精于勤&#xff0c;荒于嬉&#xff1b;行成于思&#xff0c;毁于随” 很久没写博客了&#xff0c;大多记录少进一步探查。 Angular 和 Vue2.0 对比&#xff1a; 一.概念 1.1 Angular 框架&#xff1a; 是一款由谷歌开发的开源web前端框架&#xff08;核…...

websocket服务器(协程风格)--swoole进阶篇

swoole的websocket服务器(协程风格)示例真不算友善,从头了解到尾,那还好,但是谁有那么多时间从头到尾了解。示例不够针对性,写websocket就该单独写websocket的东西,偏偏又加上http的东西。这里我来解读一下websocket服务器(协程风格)示例 <?php use Swoole\Http\…...

Windows C/C++ Socket 编程

承接上文&#xff1a;socket 编程 本文目录 Windows Client 端WSADATA 结构体WSAStartup() 函数SOCKET 以及 socket() 函数sockaddr_ininet_pton() 函数in_addr structmemcpy()connect() 函数send() 函数recv() 函数 Windows Server 端 在进行 socket 编程之前&#xff0c;你要…...

计算两个结构的乘法

在行列可自由变换的平面上&#xff0c;2点结构有3个 3点结构有6个 计算2*2 2a1*2a14a6 2a1*2a24a8 2a1*2a34a12 显然2a1*2a14a6因为这3个结构都分布在同一列上&#xff0c;就是整数乘法。2a1*2a2的结果有2种写法&#xff0c;一种外形像2a1细节为2a2&#xff0c;一种外形为2…...

学校服务器连接pycharm配置2

上一个可能还是有点问题&#xff0c;因为实际在跑的时候读取的其实是本地的anaconda&#xff0c;这个重新整了一下流程 首先在学校服务器先激活自己创建的虚拟环境&#xff0c;这里就不截图了 然后在pycharm里面打开设置 选择这个python解释器 这里有添加解释器 选择SSH …...

AI赋能电商:创新应用提升销售与用户体验

目录 一、引言 二、AI技术在电商领域的创新应用 三、AI技术提高电商销售效率和用户体验的实践路径 一、引言 随着人工智能&#xff08;AI&#xff09;技术的不断成熟&#xff0c;电商行业正迎来一场深刻的变革。AI技术在购物推荐、会员分类、商品定价等方面的创新应用&…...

详解kafka消息发送重试机制的案例

在 Kafka 生产者中实现消息发送的重试机制&#xff0c;可以通过配置 KafkaProducer 的相关属性来实现。以下是一些关键的配置项&#xff1a; retries&#xff1a;设置生产者发送失败后重试的次数。 retry.backoff.ms&#xff1a;设置生产者在重试前等待的时间。 buffer.memo…...

linux文本管理!!!

文章目录 第1章 文本过滤/查看命令1.echo&#xff1a;输出文本2.cat&#xff1a;合并文件或查看文件内容3.head&#xff1a;显示文件头部信息4.tail&#xff1a;显示文件尾部信息5.wc: 统计文本行号6.less&#xff1a;分页显示文件内容7.grep&#xff1a;文本过滤工具8.定向符号…...

软件设计师-计算机体系结构分类

计算机体系结构分类 Flynn分类法 根据不同的指令流数据流组织方式分类单指令流但数据流SISD,单处理器系统单指令多数据流SIMD&#xff0c;单指令流多数据流是一种采用一个控制器来控制多个处理器&#xff0c;同时对一组数据&#xff08;又称“数据矢量”&#xff09;中的每一…...

《基于深度学习的车辆行驶三维环境双目感知方法研究》

复原论文思路&#xff1a; 《基于深度学习的车辆行驶三维环境双目感知方法研究》 1、双目测距的原理 按照上述公式算的话&#xff0c;求d的话&#xff0c;只和xl-xr有关系&#xff0c;这样一来&#xff0c;是不是只要两张图像上一个测试点的像素位置确定&#xff0c;对应的深…...

jwt用户登录,网关给微服务传递用户信息,以及微服务间feign调用传递用户信息

1、引入jwt依赖 <dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version></dependency> 2、Jwt工具类&#xff0c;生成token以及解析token package com.niuniu.gateway.uti…...