Vim 命令从头学习记录
学习链接:eleon-vim基础教程
Vim - 基础翻屏操作
光标移动:hjkl 20j 向下移动20行,w 向后移动一个字符,b 向前移动一个字符。
Ctrl + u
向上翻半页 UP
Ctrl + d
向下翻半页 Down
Ctrl + f
向下翻整页 Forward
Ctrl + b
向上翻整页 Backward
大写M
跳转到屏幕中间 Middle
大写L
跳转到屏幕最后一行 Last Line
大写H
跳转到屏幕第一行 Home
Count + 大写H
光标移动到顶部下面的count行。
Count + 大写L
光标移动到底部上面的count行。
Ctrl + e
向下翻一行,光标不动
Ctrl + y
向上翻一行,光标不动
Vim - 编辑操作
复制:yy=Y
复制光标所在行,3yy 复制光标所在行以在内的三行, y$ 复制光标所在字符至行尾的内容。
粘贴:p P
一个是粘贴到光标或行之前,一个是之后。
删除:dd
删除本行,3dd
删除光标所在行以在内的三行,D = d$
删除光标所在字符至行尾的内容。
剪切:x
剪切当前字符,3x
剪切当前字符在内的三个字符
交换字符顺序:xp
,其实就是先剪切后粘贴
合并行:大写J
无论光标在哪里,都能把下一行的内容补到当前行尾,间隔一个空格。(在代码整理的时候用吗???)
替换光标处字符(单词打错了后很常用):rb
就可以把光标所在位置字符替换成b,Rccc
就可以把光标所在位置和其后面的俩字符都替换成b。
s
会删除掉单个字符然后进入插入模式。 S
会删除掉光标所在行让后进入插入模式。
变更: cc
与S
的作用一样。
撤销:u
或者 U
都行,撤销上一步。
重做: Ctrl + r
是u
作用的反向
大小写转换:gu + Motion
, gU + Motion
其中Motion可以是w表示转换单词,如果是2w就是转换当前单词在内的俩单词。
重复上次修改:点“.
” 可以重复上次的命令操作。
Vim - 文本对象(常用)
Operation + type + Object 的组合
Operation: 可能是d,y, c, v
Type:只有两种 a
和 i
,分别表示all和in
Object:可以是一堆括号{ [ ( " '
等,也可也是w
(word)s
(句子)t
(tab,html用到)
Vim - 缩进
1 手动缩进:
>>
:增加缩进
<<
:减小缩进
3>>
:当前行以下3行增加缩进,减小缩进类似。
> %
:当光标放在大括号上时有效,对当前块进行增加缩进操作,减小缩进类似。
> i {
:为{}内的内容(不含{})增加缩进
> a {
:为包含{}在内的块儿内内容增加缩进
2 自动缩进:
==
:对当前行自动缩进
4==
:对当前行及下面三行执行自动缩进
=i{
:对{中的内容自动缩进
=a{
:对{中的内容包括{自动缩进(常用)
=%
:当贯标在括号上时自动缩进整个块
3 缩进格式设置:
set shiftwidth=8
设置缩进操作长度为8个空格的长度(如果tab为4个空格,则缩进就是两个制表符,如果tab为8个空格,则缩进就是1个制表符)
set tabstop=4
设置tab的长度为4,当在命令模式下进行缩进时起作用。
set expandtab
在插入模式和命令模式都起作用,使用手动缩进插入的是空格。此时如果在插入模式下敲入tab,则插入的是空格
set noexpandtab
expandtab 的反面,使用手动缩进插入的是制表符。此时如果在插入模式下敲入tab,则插入的是制表符
上面的命令与手动自动缩进命令的配合来编写符合原代码规范的代码。
set softtabstop=8
只在插入模式起作用。 注意与tabstop的不同。如果你想手动写tab则要修改这个命令。
在检查更改时如果要检查自己的设置是否正确使用俩命令:
set list
显示特殊符号,如$表示行尾,Ctrl+I表示tab制表符
set nolist
隐藏特殊符号
4 插入模式下编辑下一行时如何自动缩进:
set <自动缩进类型>
: 类型有四种,autoindent
,smartindent
, cindent
, indentexpr
;
我现在先使用cindent, 是用于c语言时的缩进格式。 我找了很长时间,网上的教程都是东拼西凑,原来学习还得需要系统,这块东西如果光靠一个博客就搞明白的确很费精力。
Vim - 折叠-Floding
如果有不需要的代码可以折叠起来。也可以参考手册命令模式输入:help folding
当前我,几乎不咋用,只有使用vim -d 进行文件对比的时候使用。仅列在这,详情参考vim 基础教程
z + f + Motion
: 创建当前行至Motion为一个折叠。
count + z + F
: 创建当前行之后count行的折叠。
z + f + %
:查找光标所在的块进行块儿折叠。
z + o
打开折叠,z + O
递归打开折叠。
z + c
折叠起来,z + C
递归折叠起来。
z + d
删除光标所在行折叠,z + D
递归删除光标所在块折叠。
z + E
删除所有折叠。
Vim - Buffers 多文件(很重要)
命令模式下有如下命令,我曾苦苦找寻,如今发现vim本身就特么强大的一批了,我还装个毛线的nvim. lvim,骑驴觅驴而已。
e + 文件名
打开并激活指定文件(e为edit)
ls, buffers, files
列出缓冲区文件,这仨命令一样的作用
b add b.txt
向缓冲区列表添加新文件但不激活。
b d 3
删除缓冲区编号为3的文件,d也可写作delete, 如果删除当前文件不需要加数字即可。
b+空格+Tab
先在命令模式输入ls进入buffer列表,然后输入该命令tab就可实现文件跳转,哈哈好方便啊,我之前都打开一堆vim窗口,简直是浪费声明卧槽了。
bn, bp
可以切换到buffer中下一个nexp文件,上一个privious文件
b3
,buffer3
都可以切换到buffer中符号为3的文件。
b#
访问刚刚访问的文件,这个应该最常用了。
bf, bl
可以跳转到buffer中第一个文件,最后一个文件
b1.txt, buffer1.txt
都可以切换到指定文件名的文件,支持tab补全。
set hidden
当写入内容后不保存也能切换不同文件 set nohidden
作用相反。
Vim - Windows 多窗口
可以将一个窗口分隔成多个窗口,不常用,如果对比文件直接vim -d 不更方便?但是还是记录下基本用法,以免以后用到查找。
sp + 文件名
,split的缩写,横向分隔窗口打开指定文件
vs + 文件名
,vertical split缩写,纵向分隔窗口打开指定文件
Ctrl + W + Motion
Motion 可以是hjkl实现窗口切换
Ctrl + W + w
轮换窗口
Ctrl + W + +
增加窗口高度。Ctrl + W + -
减小窗口高度。
Ctrl + W + >
增加窗口宽度。Ctrl + W + <
减小窗口宽度。
Ctrl + W + Count + action
其中action可以是上面的窗口操作,比如窗口宽度增大4个格:ctrl + W + 4 + >
Ctrl + W + _
最大化窗口高度; Ctrl + W + |
最大化窗口宽度;
Ctrl + W + =
调整窗口为一致性大小。
Ctrl + W + H/J/K/L
注意motion为大写,用于调整光标所在窗口在屏幕的位置。
Ctrl + W + q
退出当前窗口
Ctrl + W + =
除当前窗口之外全部退出,等价于on。
Vim - tabs 多标签
vim -p 文件1 文件2
以TAB形式打开指定文件
vim -p *
以TAB形式打开当前目录所有文件
:tabe + 文件名
以TAB形式打开新文件,常用(tab edit)
gt
或:tabn
跳到下一个tab.
gT
或:tabp
跳到上一个tab.
数字 + gt
或 :tabn + 数字
跳到指定序号的的tab
:tabl
跳到最后一个tab
:tabm + 数字
(tab move)将当前tab插入到指定数字的位置
:tabc
(tab close)
:tabo
只保留当前窗口 (tab only)
《思考 buffers Windows tabs 的关系》
之前都是先搜索怎么配置,网上找到博客一通复制粘贴,跟着人家的命令就开始用,也不知到为啥,但是最终还是被这些概念搞烦了,最后使用最简单的vim 打开一个文件的最原始状态。现在机缘成熟,我学到这里了,也该搞明白他们的关系了,看这个大佬博客:如何理解并正确使用 Vim 中的 Buffer、Window 和 Tab
总结:
buffers
: 为文件在内存中的缓存数据,每个文件对应内存中唯一的buffer。
Windows
: 在一个电脑屏幕大小的空间,划分不同的小窗口,每个小窗口可以显示一个打开的文件。可以说Windows可以规定一个窗口的布局。
tabs
:每个tab可以理解为一个电脑屏幕,每个tab里面都可以有一种窗口布局。不同tab之间的窗口没关系。
我应该如何使用 tabs 和 buffer ?
Windows使用的很少,当我使用vim filename.c 打开一个文件,找到一个目标函数,转到定义时此时跳到另外一个文件,此时通过:ls
可以到这个文件的buffer也被激活了,这就已经打开了多buffer.
当我要 porting 两个不同工程的代码时,我可以为每个工程打开一个tag。这样可以方便的实现复制。
之前我都是使用多tag, 每个tag显示一个文件,但是当你使用ctags工具跳转时,tag显示的名称已经不是原来的文件了,会把自己搞晕。(如果能时刻显示当前打开buffer对应的文件就好了)
Vim 寄存器
无名寄存器(Unnamed):“
(没错就是个双引号)
用于保存d, c, x, s, y
操作的内容。可以通过命令行输入:reg "
来查看无名寄存器的内容。
数字寄存器(Number): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 一共10个数字寄存器。
0号寄存器 保存y
操作的内容。
1-9 号寄存器 保存d, c
操作的内容,且保存的内容会随着操作的进行逐渐向后搬移,1号寄存器始终保存着最新删除的内容。
搜索寄存器:/
,当执行搜索字符后,这个寄存器保存刚刚的搜索记录。
系统剪切板寄存器:+ 和 * 。在ubuntu中看到两个寄存器的内容一致,都来自鼠标或键盘复制得到的内容。
只读寄存器:有三个,分别为:
- 文件名寄存器:
%
- 命令寄存器:
:
- 插入文本寄存器:
.
Named - 寄存器:a-z 共26个寄存器
。比较常用,如果想要将指定内容复制到指定寄存器,需要" + 寄存器 + 操作
,其中寄存器小写表示替换大写表示追加,vim普通命令模式下例子:
"ayaw
:将单词 复制 到 a 寄存器。
"byiw
:将单词 复制 到 b 寄存器。
"Cyaw
:将单词 追加 到 c 寄存器。
"ap
:将 a 寄存器中的内容粘贴到光标位置。
思考:这一堆寄存器什么时候用?
当我们要跨文件进行大量复制粘贴时,如果只是使用0号寄存器,我们就得来回切换文件,此时若使用vim提供的Named寄存器单次保存不同内容就可以提升编辑效率。还有就是用于存储录制的宏。
寄存器内容查看:reg + 寄存器名
寄存器内容操作:Count + " + 寄存器名 + 操作
举例:3"+p
或 "+3p
都是将+寄存器中的内容粘贴到光标处重复3次。
Vim - Macro 宏(需要用寄存器存储)
宏就是一个录制好的一串命令,如果这个命令需要多次重复操作,你就可以录制一个宏到指定的Named 寄存器,这样下次就不用一个一个敲了(但是觉的还是很少用到)。
记录宏的步骤:
开始记录宏:q + 寄存器名
输入宏命令
按下q
结束宏录制
使用宏的步骤:
使用录制的宏命令:@ + 寄存器名
使用最近一次录制的宏命令:@@
追加宏内容:q + 大写寄存器名
多次重复宏命令:count + @ + 寄存器名
举例子:
比如我想要实现按下@c
来快速将本行行首添加//
注释掉本行(想法牛逼,很实用)。
比如我想要实现按下@d
来快速将本行行尾添加;
。
Vim - Marks书签(需要用寄存器存储)
用到小写和大写两种寄存器,每个文件内有一套小写Named寄存器提供文件内书签跳转(局部跳转),而文件之间有大写Named寄存器可以实现文件之间书签跳转(全局跳转)。
添加书签:m + Named寄存器
清理书签:delmarks a
可清理a书签
查看书签:marks + 要查看的寄存器
(此时区分小写还是大写)
跳转到书签所在行: ' + Named寄存器
(单引号)
跳转到书签所在行与列: ` + Named寄存器(反引号)
范式:Operation + ' + Named寄存器
(单引号)
比如:
d'a
:删除当前光标所在行至a寄存器书签所在行之间的内容。
y'a
:复制光标所在行至a寄存器书签所在行之间的内容。
c'a
:删除当前光标所在行至a寄存器书签所在行之间的内容并进入插入模式。
思考:书签什么时候用?
通过marks查看寄存器存储的标签,可见他会随着你删除代码动态更新,这比较有用。
1,多文件穿梭,可能你说用buffers的命令bn就够了,但是书签可以更快的跳转到目标位置,还能跟随删除粘贴等命令移动。
2,调试过程中,可以标记报错位置,快速往返于代码和日志。
Vim - 插入模式下的快捷键
- 进入插入模式常用的有:i, l, a, A, o, O, ea
- Ctrl + y : 插入光标之前行的内容,一直操作就可以一直复制。
- Ctrl + e : 插入光标之后行的内容,一直操作就可以一直复制。
- Ctrl + r + =:将表达式求值并插入。(会议一下:在命令模式使用“ap插入寄存器内容)
Ctrl + r + 寄存器
,将寄存器内容插入Ctrl + t
:当前行增加缩进Ctrl + d
:当前行减小缩进Ctrl + w
:删除光标前面的单词- Ctrl + h:删除光标前面的字符
- Ctrl + o:切换到普通模式,完成一个命令后,重新进入插入模式。
插入模式下比较常用的操作
缩进应该比较少用,我只需要知道如何在命令模式自动管理缩进就够了。删除操作吧,都是退回到命令模式切换光标位置或者按上下左右切换位置,感觉都不咋用。
Vim - 视图模式
之前我只知道Ctrl+V, 用来对那几行前面插入注释,但不知道为何他只能选择一个方块儿,后面的内容就无法选中。。。
小写v
: 基于字符模式选择,从光标所在字符开始选中。
大写V
:基于行选择,从光标所在行开始选中整行。
Ctrl + v
:基于块,可以选中方块儿形状的内容。(可配合小写o,大写O
来快速跳转光标位置)
gv
:选中之前选择的内容。
小写u大写U
来切换文本大小写,~
也可切换大小写。
>
增加缩进,<
减小缩进。
相关文章:
Vim 命令从头学习记录
学习链接:eleon-vim基础教程 Vim - 基础翻屏操作 光标移动:hjkl 20j 向下移动20行,w 向后移动一个字符,b 向前移动一个字符。 Ctrl u 向上翻半页 UP Ctrl d 向下翻半页 Down Ctrl f 向下翻整页 Forward Ctrl b 向上翻整页 …...
[Linux]物理地址到虚拟地址的转化
[Linux]物理地址到虚拟地址的转化 水墨不写bug 文章目录 一、再次认识地址空间二、页表1、页表的结构设计2、页表节省了空间,省在哪里?3、页表的物理实现 一、再次认识地址空间 OS和磁盘交互的内存基本单位是4KB,这4KB通常被称为内存块。OS对…...
js获取明天日期、Vue3大菠萝 Pinia的使用
直接上代码 const today new Date(2019, 2, 28) const finalDate new Date(today) finalDate.setDate(today.getDate() 3)console.log(finalDate) // 31 March 2019 安装 yarn add pinia # or with npm npm install pinia创建第一个store仓库 1、在src目录下创建store目录…...
矩阵置零(中等)
可以用两个标记数组分别记录每一行和每一列是否有零出现。 首先遍历该数组一次,如果某个元素为 0,那么就将该元素所在的行和列所对应标记数组的位置置为 true。然后再次遍历该数组,用标记数组更新原数组。 class Solution {public void set…...
GZ人博会自然资源系统(测绘)备考笔记
本文为备考 GZ人才博览会自然资源系统(测绘) 的笔记,包括若干 知识点整理 及 近两年考核(面试)真题 (文末附《GZ人博会自然资源系统(测绘)备考笔记》1 的下载链接)。 目录…...
《进制转换的终极指南:原理、方法与编程应用》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、进制转换的基本原理二、进制转换方法总结(一)使用权重法的转换1. 二进制 → 十进制2. 八进制 → 十进制3. 十六进制 → 十进制 &…...
2025系统架构师---论软件的设计模式论文
2023 年,我所在的公司承担了某部网络靶场的研发任务。我作为公司的技 术总监,希望能打造基于网络靶场的系列产品,参与到项目的设计中,以期开发 扩展性和可维护性良好的网络靶场,为以后的产品开发打下基础。网络靶场是网 络安全技术研究的基础支撑平台,它利用虚拟的和实物…...
嵌入式Linux驱动学习
Ubuntu18 下载链接 https://releases.ubuntu.com/bionic/ Ubuntu配置静态IP 更新Ubuntu18的镜像源 以清华大学镜像源举例 网站:https://mirrors.tuna.tsinghua.edu.cn/ 第一步点开网站搜索ubuntu然后点击问号 第二步选择自己的Ubuntu版本 第三步在Ubuntu中复制…...
基于大模型的子宫腺肌病全流程预测与诊疗方案研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、子宫腺肌病概述 2.1 疾病定义与病理机制 2.2 流行病学特征 2.3 现有诊断与治疗方法综述 三、大模型技术原理与应用基础 3.1 大模型简介 3.2 在医疗领域的应用现状 3.3 适用于子宫腺肌病预测的可行性分析…...
Notebook.ai 开源程序是一套工具,供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切
一、软件介绍 文末提供程序和源码下载 Notebook.ai 开源程序是一套工具,供作家、游戏设计师和角色扮演者创建宏伟的宇宙 - 以及其中的一切。 二、软件特点 Notebook 是作家的规划工具,用于创建从宇宙到角色、情节到单个项目的任何内容。通过浏览器、…...
关于 dex2oat 以及 vdex、cdex、dex 格式转换
版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/ dex2oat dex2oat 是 Android 系统中的一个核心工具,负责将应用中的 .dex(Dalvik Executable)字节码编译为本地机器代码&am…...
Java---Object和内部类
Object类和内部类 前言:一、Object类1.object类初识2.Object的方法2.(1).获取对象的信息--toString方法2.(2).对象比较equals方法2.(3).hashCode方法 二、内部类1.内部类初识:2.内部类的分类:2.(1).实例内部类2.(2).静态内部类2.(3).匿名内部…...
【OSPF协议深度解析】从原理到企业级网络部署
目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心配置实现案例1:单区域基础配置案例2:多区域配置案例3:安全认证配置 运行…...
linux tar命令详解。压缩格式对比
1.压缩格式对比 压缩格式命令选项文件扩展名压缩率速度无压缩-cvf.tar无最快gzip-czvf.tar.gz中等较快bzip2-cjvf.tar.bz2较高较慢xz-cJvf.tar.xz最高最慢 9. 更多参考 【Linux基础】文件压缩tar命令指南tar压缩方式对比...
C++和Lua混和调用
为什么要C/C 流行的语言,学习人员多高性能,对于嵌入式设备则是省电大量的第三方库 为什么要Lua C缺点:编译慢,调试难,学习难度大Lua优点: 最快的脚本语言可以编译调试与C/C结合容易Lua是对性能有要求的必…...
Cadence高速系统设计流程及工具使用
上一章已经谈到,在Cadence的高速设计流程中,有两个重要的工具SigXP和Constrain Manager(CM约束管理器)。SigXP是仿真分析工具和约束生成工具,我们就是使用这个工具对关键信号进行仿真的。SI工程师通过对仿真结果的分析…...
Unity:AddTorque()(增加旋转力矩)
目录 什么是 AddTorque()? 第一性原理出发:什么是 Torque(力矩)? Torque 公式 Unity 中 AddTorque 的工作原理 参数属性 🔍 Linear Drag(线性阻力) 线性阻力模拟的现实情况&…...
嵌入式硬件设计全解析:从架构到实战
一、嵌入式硬件设计核心架构与系统组成 1. 处理器选型与架构设计 (1)处理器类型与应用场景 处理器类型 代表架构 / 型号 典型应用场景 核心优势 微控制器(MCU) ARM Cortex-M3/M4、STM32F 系列 低功耗控制、小型设备 集成外设、低功耗、低成本 微处…...
R7打卡——糖尿病预测模型优化探索
🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 1.检查GPU import torch.nn as nn import torch.nn.functional as F import torchvision,torch# 设置硬件设备,如果有GPU则使用,没有…...
win10开了移动热点,手机无法连接,解决办法(chatgpt版)
提问: win10连着网线上网,有无线网卡intel Wireless-AC 9560网卡 可以用电脑开移动热点给手机连接吗?如何设置?我现在可以开热点,但是手机连不上,显示正在获取ip地址后就连不上了 chatgpt回答:…...
下载core5compat 模块时,被禁止,显示 - servese replied: Forbbidden. -->换镜像源
怎么解决? --->换镜像源 方法 1:使用命令行参数指定镜像源 在运行 Qt 安装器时,通过 --mirror 参数指定镜像源: # Windows qt-unified-windows-x64-online.exe --mirror https://mirrors.ustc.edu.cn/qtproject# Linux/macO…...
《MATLAB实战训练营:从入门到工业级应用》高阶挑战篇-《用无人机仿真玩转PID控制:MATLAB四旋翼仿真建模全攻略》
《MATLAB实战训练营:从入门到工业级应用》高阶挑战篇-✈️ 用无人机仿真玩转PID控制:MATLAB四旋翼仿真建模全攻略 🚁 欢迎来到这篇超级详细的MATLAB四旋翼无人机仿真教程!无论你是控制理论爱好者、无人机发烧友,还是M…...
GESP2024年3月认证C++八级( 第二部分判断题(1-5))
孙子定理参考程序: #include <iostream> #include <vector> using namespace std;// 扩展欧几里得算法:用于求逆元 int extendedGCD(int a, int b, int &x, int &y) {if (b 0) {x 1; y 0;return a;}int x1, y1;int gcd extende…...
PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡
PHP的现代复兴:从脚本语言到企业级服务端引擎的演进之路-优雅草卓伊凡 一、PHP的历史误解与现实真相 1.1 被固化的陈旧认知 当卓伊凡浏览知乎上关于PHP的讨论时,发现大量回答仍然停留在十年前的刻板印象中。这些误解包括但不限于: “PHP只…...
手表功能RunModeTasks
RunModeTasks 功能解释 “RunModeTasks 执行特定于当前模式的功能 根据模式控制作行为”这句话是指 OV-Watch 智能手表项目中的一组任务,这些任务负责管理设备的运行模式并根据不同模式控制设备的行为。 主要组成部分 RunModeTasks 主要由以下三个部分组成&#…...
Qt6.8中进行PDF文件读取和编辑
1.环境配置 在 .pro 文件中添加 PDF 模块依赖: QT core gui pdf # 添加 pdf 模块 注意:独立 pdf 模块的起始版本是Qt 5.15,建议需要 PDF 功能的开发者优先选择此版本或更高版本 2.读取PDF 文件 核心类:QPdfDocument…...
Barrett Reduction算法优化:更紧的界限消除冗余的减法
1. 引言 Barrett Reduction 是一种被广泛使用的模 m m m 运算算法。在zkSecurity 受NEAR团队所委托的(针对RustCrypto: NIST P-256 (secp256r1) elliptic curve——https://github.com/RustCrypto/elliptic-curves/tree/master/p256)进行的 Rust p256 …...
Node.js 是什么?
Node.js 是什么? Node.js 是一个基于 Chrome V8 JavaScript 引擎 的 跨平台 JavaScript 运行时环境,用于在服务器端运行 JavaScript 代码。它使开发者能够使用 JavaScript 编写后端(服务端)程序,而不仅仅局限于浏览器端(前端)。 1. Node.js 的核心特点 (1) 基于 Chrom…...
数据结构中 数组、链表、图的概念
数据结构是计算机存储、组织数据的方式,数组、链表和图是三种常见的数据结构,下面为你详细介绍它们的概念: 数组 数组是一种线性数据结构,它由一组相同类型的元素组成,这些元素存储在连续的内存位置上。每个元素都可…...
基于PPO的自动驾驶小车绕圈任务
1.任务介绍 任务来源: DQN: Deep Q Learning |自动驾驶入门(?) |算法与实现 任务原始代码: self-driving car 在上一篇使用了DDPG算法完成自动驾驶小车绕圈任务之后,继续学习了PPO算法&…...
Three.js + React 实战系列 - 客户评价区细解教程 Clients 组件✨(回答式评价 + 评分星级)
对个人主页设计和实现感兴趣的朋友可以订阅我的专栏哦!!谢谢大家!!! 在这篇博客中,我们将实现一个简洁的 Hear from My Clients 客户评价区域。这个区块在个人主页中可以突显用户体验和专业度,帮…...
2048游戏(含Python源码)
前言 相关参考游戏: 像素飞机大战(含Python源码)-CSDN博客https://blog.csdn.net/weixin_64066303/article/details/147693018?spm1001.2014.3001.5501使用DeepSeek定制Python小游戏——以“俄罗斯方块”为例-CSDN博客https://blog.csdn.n…...
百度golang开发一面
讲一下数据库的事务机制?acid特性是靠什么实现的? 持久性 redo log 原子性 undo log 隔离性 MVCC或next-lock锁 四个隔离级别是什么,分别解决什么问题? 可串行化实现原理 mysql锁机制?介绍锁的类型,以及原理…...
【Springboot知识】Springboot计划任务Schedule详解
文章目录 Spring Boot 定时任务从原理到实现详解一、核心原理分析1. 架构分层2. 核心组件3. 线程模型 二、基础实现步骤1. 添加依赖2. 主类配置3. 定时任务类 三、高级配置技巧1. 自定义线程池2. 动态配置参数3. 分布式锁集成(Redis示例) 四、异常处理机…...
大模型推理--从零搭建大模型推理服务器:硬件选购、Ubuntu双系统安装与环境配置
自从大模型火了之后就一直想自己组装一台机器去深入研究一下大模型,奈何囊中羞涩,迟迟也没有行动。在下了很大的勇气之后,终于花了接近4万块钱组装了一台台式机,下面给大家详细介绍一下我的装机过程。 1.硬件配置 研究了一周&am…...
如何使用QWidgets设计一个类似于Web Toast的控件?
如何使用QWidgets设计一个类似于Web Toast的控件? 前言 笔者这段时间沉迷于给我的下位机I.MX6ULL做桌面,这里抽空更新一下QT的东西。这篇文章是跟随CCMoveWidget一样的文章,尝试分享自己如何书写这份代码的思考的过程,和笔者…...
博图V20编译报错:备不受支持,无法编译。请更改为受支持的设备。
使用高版本博图打开低版本博图的工程文件时,hmi编译报错不通过,报错提示:备不受支持,无法编译。请更改为受支持的设备。 原因:当前版本的博图软件没有或不支持该组态设备的固件版本。 解决办法:1、安装报错…...
凸性(Convexity)
凸性(Convexity)是一个跨学科的重要概念,广泛应用于数学、优化理论、金融等领域。其核心含义是描述某种结构(如函数、集合)在特定条件下的“无凹陷”性质。 1. 数学中的凸性 1.1 凸函数与凹函数 在数学分析中&#…...
Vuex使用指南:状态管理
一、什么是状态管理?为什么需要 Vuex? 1. 状态管理的基本概念 在 Vue 应用中,状态指的是应用中的数据。例如: 用户登录状态购物车中的商品文章列表的分页信息 状态管理就是对这些数据的创建、读取、更新和删除进行有效管理。 …...
kotlin中枚举带参数和不带参数的区别
一 ✅ 代码对比总结 第一段(带参数 工具方法) enum class SeatPosition(val position: Int) {DRIVER_LEFT(0),DRIVER_RIGHT(1),SECOND_LEFT(2),SECOND_RIGHT(3);companion object {fun fromPosition(position: Int): SeatPosition? {return SeatPosi…...
【Python】Python好玩的第三方库之二维码生成,操作xlsx文件,以及音频控制器
前言 🌟🌟本期讲解关于python的三种第三方库的使用介绍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么…...
VTK 交互类介绍
基本概念 交互器(Interactor): 处理用户输入事件的基础类 交互样式(InteractorStyle): 定义具体的交互行为 Widgets: 可交互的UI组件,如滑块、按钮等 Picker: 用于选择场景中的对象 常用交互类 类名功能描述vtkRenderWindowInteractor渲染窗口交互器vtkInteractorStyle交互样式…...
在Window10 和 Ubuntu 24.04LTS 上 Ollama 在线或离线安装部署
Ollama 是一个开源的大型语言模型(LLM)服务框架,旨在通过轻量化、跨平台的设计,简化大模型在本地环境中的部署与应用。其基于 Go 语言开发,通过 Docker 容器化技术封装模型运行环境,提供类似命令行工具的交…...
语音合成之十一 提升TTS语音合成效果:低质量数据清洗、增强与数据扩增
低质量数据清洗、增强与数据扩增 1. 引言:TTS的基石——数据质量2. 基础:TTS数据准备工作流2.1 规划:定义蓝图2.2 执行:从原始数据到训练就绪格式2.3 最佳实践与可复现性 3. 攻克缺陷:低质量语音数据的清洗与增强3.2 手…...
RGB三原色
本文来源 : 腾讯元宝 RGB三原色(红绿蓝)详解 RGB(Red, Green, Blue)是光学的三原色,通过不同比例的混合可以产生人眼可见的绝大多数颜色。它是现代显示技术(如屏幕、投影仪)…...
BUUCTF 大流量分析(一) 1
BUUCTF:https://buuoj.cn/challenges 文章目录 题目描述:密文:解题思路:flag: 相关阅读 CTF Wiki BUUCTF:大流量分析(一) 题目描述: 某黑客对A公司发动了攻击,以下是一段时间内我们…...
虚幻引擎5-Unreal Engine笔记之显卡环境设置使开发流畅
虚幻引擎5-Unreal Engine笔记之显卡环境设置使开发流畅 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之显卡环境设置使开发流畅1.电源管理2.显卡优先设置3.拯救者支持FnQ性能模式切换,建议开发前切至“野兽模式”或高性能模式。4.NVIDIA 驱动设置5.VS2022中…...
suna工具调用可视化界面实现原理分析(一)
这是一个基于React构建的工具调用侧边面板组件,主要用于展示和管理自动化工具调用流程。以下是代码功能解析及关键组件分析: 一、核心功能模块 多工具视图切换系统 • 动态视图加载:通过getToolView函数根据工具名称(如execute-c…...
【将你的IDAPython插件迁移到IDA 9.x:核心API变更与升级指南】
文章目录 将你的 IDAPython 插件迁移到 IDA 9.x:核心 API 变更与升级指南为什么 API 会变化?关键不兼容性一:数据库信息访问 (inf_structure)关键不兼容性二:窗口/视图类型判断 (BWN_* 和 form_type)其他可能的 API 变更迁移策略建…...
《Python星球日记》第31天:Django 框架入门
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、Django…...