Linux软件包管理与Vim编辑器使用指南
目录
一、Linux软件包管理器yum
1.什么是软件包?
2.什么是软件包管理器?
3.查看软件包
4.安装软件
编辑
5.卸载软件
Linux开发工具:
二、Linux编辑器---vim
1.vim的基本概念
(1) 正常/普通模式(Normal mode)
(2) 插入模式(insert mode)
(3) 底行模式(last line mode)
(4) vim三种模式的相互关系
2.vim的简易执行范例
(1) 使用【vim filename】
(2) [正常模式]切换至[插入模式]
(3) [插入模式]切换至[正常模式]
(4) [正常模式]切换至[底行模式]
(5) 退出vim环境
3.vim编辑模式命令集
(1) 移动光标
(2) 查找与替换
(3) 删除、复制与粘贴
4.普通模式切换到编辑模式命令集
5.vim底行模式命令集
6.可视化模式(Visual Mode)
7.总结
8.简单配置vim
(1) 配置文件的位置
(2) 常用配置选项用来测试
(3) 使用插件
9.参考资料
一、Linux软件包管理器yum
1.什么是软件包?
在Linux下安装软件:
(1) 通常的办法是下载到程序的源代码,并对其进行编译,得到可执行程序。
(2) 但是这样太麻烦,于是有人把一些常用的软件提前编译好,做成软件包---rpm(可以理解成Windows上安装程序)放在一个服务器上。(rpm是一种以数据库记录的方式将所需要的软件安装到Linux系统的一套软件管理机制 => 需要满足软件的依赖属性需求,满足版本兼容性需求)
(3) 通过包管理器 --- yum(Centos) / apt / apt-get(ubuntu)可以很方便的获取到这个编译好的软件包,直接进行安装(本质就是拷贝 => 必须使用root权限 => 安装到系统里,只要安装一次,所有人都能使用)。
2.什么是软件包管理器?
yum是Linux下非常常用的一种包管理器。软件包和软件包管理器,就好比“App”和“应用商店”的关系。主要应用于Fedora,RedHat,Centos等发行版上。
由于Linux发行版必须要先发布软件,然后软件放置于yum服务器上,以提供客户端来安装与升级之用。因此我们要使用yum功能时,必须要先找到合适的yum服务器才行。而每个人yum服务器可能都会提供许多不同的软件功能,因此,我们必须要前往yum服务器查询到想换的软件源网址后,再继续处理后续的设置事宜。但Centos在发布软件时已经制作出多个镜像站(国内知名的有阿里云、清华大学、163),提供全世界的软件更新之用。所以理论上我们不需要处理任何设置值,只要能连上网就可以使用yum(操作系统内部内置链接)。也就是说包管理器会自动解决软件的依赖关系。
3.查看软件包
通过yum list命令可以罗列出当前一共有哪些软件包。由于包的数目可能非常之多,这里我们需要使用grep命令只筛选出我们关注的包。
yum list | grep sl


4.安装软件
用 yum 完成 sl 的安装,yum会自动找到都有哪些软件包需要下载,这是敲 "y" 确认安装,出现“complete”说明安装成功。
sudo yum install sl
注意:
• 关于yum的所有操作必须保证主机(虚拟机)网络畅通!!!可以用ping指令验证:如果能够收到响应,说明主机可以访问互联网。
ping www.baidu.com• 安装软件时由于需要向系统目录中写入内容,一般需要sudo或者切到root用户下才能完成。
• yum安装软件只能一个装完了再装另外一个。正在yum安装一个软件的过程中,如果在尝试用yum安装另外一个软件,yum会报错。
• /etc/yum.repos.d/*里面的文件称之为yum源。也就是我们开头所提到的yum服务器。更新yum源也就是更新里面的文件。Base 是稳定软件源,epel 是扩展软件源(新软件)。
[zyt@iZ2vcf9wvlgcetfeub9f11Z ~]$ cd /etc/yum.repos.d/
[zyt@iZ2vcf9wvlgcetfeub9f11Z yum.repos.d]$ ll
total 16
-rw-r--r-- 1 root root 675 Nov 11 17:01 CentOS-Base.repo
-rw-r--r-- 1 root root 230 Nov 11 17:01 epel.repo
-rw-r--r-- 1 root root 1358 Sep 5 2021 epel.repo.rpmnew
-rw-r--r-- 1 root root 1457 Sep 5 2021 epel-testing.repo
5.卸载软件
sudo yum remove sl
下面这些命令通常一起使用,以确保软件包管理器的缓存是最新的,并且软件包是最新版本的。首先移除软件包,然后清理缓存,接着更新缓存,最后重新安装软件包。
sudo yum remove sl #移除软件包
sudo yum clean all #清除软件包缓存
sudo yum makecache #生成元数据缓存
sudo yum install sl #安装软件包
Linux开发工具:

二、Linux编辑器---vim
前面的学习,我们一直都是使用命令行模式来处理Linux系统的设置问题。但在Linux的系统中使用文本编辑器来编辑你的Linux参数配置文件,可是一件很重要的事情,也因此,系统管理员至少应该熟悉一种文本处理工具。在Linux命令行模式下的常听的文本编辑器就有emacs、pico、nano、joe和vim等。之前我们已经介绍的简单好用的nano,为什么还要学vim?
因为,所有的 UNIX-like 系统都会内置vi文本编译器,其他的文本编译器则不一定会存在;很多软件的编辑接口都是主动调用vi(之后会讲的crontab,visudo,edquota等命令)等优点。
那什么是vim?vi/vim的区别简单来说,它们都是多模式编译器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x windows、mac os、windows。
1.vim的基本概念
讲解vim的三种模式(其实有好多种模式,目前掌握这三种即可)分别是普通模式(command mode)、插入模式(insert mode)和 底行模式(last line mode)。
(1) 正常/普通模式(Normal mode)
以vim打开一个文件就直接默认是普通模式。在这个模式中,可以控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入insert mode模式下,或者last line mode。(帮助我们快速编辑)
(2) 插入模式(insert mode)
在普通模式下可以进行删除、复制、粘贴等操作,但是却无法编辑文件的内容,作文字的输入。要等到按下【i,I,o,O,a,A,r,R】等任何一个字母才能后才能进入编辑模式。通常在Linux中,界面左下方会出现【INSERT】或【REPLACE】等字样,才可以进行编辑。而要回到普通模式要按下【Esc】。
(3) 底行模式(last line mode)
在命令模式中输入【: / ?】三个中的任何一个按钮,就可以将光标移动到最下面那一行。该模式下,文件保存(w)或退出(q),也可以进行文件替换,找字符串,列出行号等操作。
(4) vim三种模式的相互关系

2.vim的简易执行范例
(1) 使用【vim filename】
【vim filename】进入vim全屏幕编辑画面,进入后,是处于[普通模式],要切换到[插入模式]才能够输入内容。整个界面分为两部分,上半部分与最下面一行可以视为独立的。上半部分展示的是文件的实际内容,最下面一行则是状态显示行,或命令执行行。
● 用vim创建一个新文件node.c
vim node.c
● 用vim打开一个已有文件
man printf > code.c
vim code.c

●【vim filename + num】
执行命令时加上数字,进入vim后光标位置就在所输数字行。
●【!v】
自动匹配上次执行过的v开头的命令
●【ctrl + r】
输入要查找的历史命令
(2) [正常模式]切换至[插入模式]
按下a,i,o等字符就可以从普通模式进入插入模式,在插入模式中,左下角会出现-INSERT-字样,键盘上出来【ESC】按键之外其他的按键都可以视为一般的输入按键,所以你可以进行任何编辑。
(3) [插入模式]切换至[正常模式]
按左上角的【ESC】即可。
(4) [正常模式]切换至[底行模式]
「shift + ;」, 其实就是输入「:」
(5) 退出vim环境
在 [普通模式下] 按「:」进入底行模式后,再输入下面所需要的命令:
w:保存当前文件
wq:存盘并退出vim
q!:不存盘强制退出vim
3.vim编辑模式命令集
(1) 移动光标
| h 或 ← | 光标左移一个字符 |
| j 或 ↓ | 光标下移一个字符 |
| k 或 ↑ | 光标上移一个字符 |
| l 或 → | 光标右移一个字符 |
| [ctrl] + [f] | 屏幕【向下】移动一页,相当于【pgdn】按键(常用) |
| [ctrl] + [b] | 屏幕【向上】移动一页,相当于【pgup】按键(常用) |
| [ctrl] + [d] | 屏幕【向下】移动半页 |
| [ctrl] + [u] | 屏幕【向上】移动半页 |
| 0 或 ^ 或 [Home] | 移动到这一行的最前字符串处(常用) |
| $ 或 [End] | 移动到这一行的最后字符(常用) |
| G | 移动到这个文件的最后一行(常用) |
| nG | n为数字,移动到这个文件的第n行 |
| gg | 移动到这个文件的第一行,相当于1G(常用) |
| w | 以单词为单位右移 |
| b | 以单词为单位左移 |
| n<Enter> | n为数字,光标向下移动n行(常用) |
(2) 查找与替换
| ~ | 切换光标位置大小写 |
| # | 选中单词 |
| n | n是英文按键,代表【重复上一个查找的操作】,向下查找 |
| N | N是英文按键,与n刚好相反,是【反向】查找 |
| /word | 向光标之下找一个名为word的字符串 |
| ?word | 向光标之上找一个名为word的字符串 |
#选中word(或/word)配合n及N是非常有帮助的,可重复的查找的关键单词
(3) 删除、复制与粘贴
| x 与 X | 在一行中,x为向后删除一个字符(相当于[del]),X为向后删除一个字符(相当于[Backspace])(常用) |
| nx | n为数字,连续向后删除n个字符 |
| dd | 剪切光标所在的那一整行(常用) |
| ndd | n为数字,剪切光标所在的向下n行(常用) |
| yy | 复制光标所在的那一行(常用) |
| nyy | n为数字,复制光标所在的向下n行(常用) |
| p 与 P | p为将已复制的数据在光标下一行粘贴,P为粘贴在光标的上一行(常用) |
| u | 撤销历史操作(常用) |
| [Ctrl] + r | 撤销u的操作(常用) |
| . | 小数点,重复上一个操作的含义(常用) |
注意:u 和 [Ctrl] + r 这两个操作一旦退出文件编辑就无法再撤销,但如果只是保存过没有退出文件就还能使用。
4.普通模式切换到编辑模式命令集
| i 与 I | 进入插入模式(Insert mode) i 为【从目前光标所在处插入】,I 为【在目前所在行的第一个非空空格符开始插入】(常用) |
| a 与 A | 进入插入模式(Insert mode) a 为【从目前光标所在的下一个字符处开始插入】,A 为【从光标所在行的最后一个字符处开始插入】(常用) |
| o 与 O | 进入插入模式(Insert mode) 这是英文字母的小写o,o 为【在目前光标所在的下一行处插入新的一行】,O 为【在目前光标所在处的上一行插入新的一行】(常用) |
| r 与 R | 进入替换模式(Replace mode) r 会【替换光标所在的那一个字符一次】,R 会【一直替换光标所在的文字(可移动)】,直到按下[Esc]为止(常用) |
| [Ctrl] + v | 进入可视化模式(Visual Block) 【可视区块,可以用矩形的方式选择数据】,光标移动过的位置就会反白(只能用hjkl移动光标)(常用) |
| [Esc] | 退出编辑模式,回到普通模式(常用) |
可视化模式举例:批量注释:
先【Ctrl + r】进入可视化模式,移动光标选择要注释的部分,再按【Ctrl + i】也就是【I】进入插入模式,输入【//】注释符,最后按【Esc】退出插入模式就实现了。
批量去掉注释:【Ctrl + r】进入可视化模式,选中注释符【//】,再按 d(删除)就完成去注释。
使用上面这些按键,再vim界面的左下角会出现【--INSERT--】,【--REPLACE--】,【--VISUAL-BLOCK--】的字样。
5.vim底行模式命令集
| :w | 将编辑的数据写入硬盘文件中 |
| :w! | 若文件属性是【只读】时,强制写入该文件。到底能不能写入,跟你对该文件的文件权限有关 |
| :q | 退出vim(常用) |
| :q! | 若曾修改过文件,又不想保存使用 ! 为强制退出不保存 |
| :wq | 保存后退出,若为 :wq! 则为强制保存后退出(常用) |
| ZZ | 快捷键,若文件没有被修改,则不保存退出;若文件已经被修改过,则保存退出 |
| :!command | 执行command命令,显示结果。 |
| :%s/x/y/ | 用 x 批量化替换 y |
| :vs dst.c | 纵向屏幕创建一个新窗口,打开的是名为dst.c的文件(可能是新建的)。([Ctrl] + ww 可以切换窗口) |
| :set nu | 显示行号,设置之后会在每一行的前缀显示该行的行号 |
| :set nonu | 与 set nu 相反,为取消行号 |
6.可视化模式(Visual Mode)
当我们按下v或V或[Ctrl] + v时,光标移动过的地方会反白
| v | 进入字符可视化模式(Character Visual Mode) 字符选择,会将光标经过过的地方会反白选择 |
| V | 进入行可视化模式(Line Visual Mode) 会将光标经过过的地方会反白选择 |
| [Ctrl] + v | 进入区块可视化模式(Block Visual Mode) 可以用矩形的方式选择数据(只能用hjkl控制移动) |
| y | 将反白的部分复制 |
| d | 将反白的地方删除 |
| p | 将刚刚复制的区块,在光标所在处粘贴 |

7.总结

8.简单配置vim
(1) 配置文件的位置
• 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。• 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如 /root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建之。
下面是Vim 编辑器的配置文件和相关路径,这些文件和变量共同定义了 Vim 的行为和外观。用户可以通过修改 .vimrc 和 .exrc 文件来定制自己的 Vim 环境,而系统管理员可以通过修改 /etc/vimrc 文件来为所有用户提供统一的配置。
系统 vimrc 文件: "/etc/vimrc"用户 vimrc 文件: "$HOME/.vimrc"第二用户 vimrc 文件: "~/.vim/vimrc"用户 exrc 文件: "$HOME/.exrc"defaults file: "$VIMRUNTIME/defaults.vim"$VIM 预设值: "/etc"$VIMRUNTIME 预设值: "/usr/share/vim/vim81"
• 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~• 打开自己目录下的.vimrc文件,执行 vim .vimrc(此时还是空文件)
(2) 常用配置选项用来测试
我们写入常用配置项,测试一下:
set nu "显示行号
syntax on "语法检验,颜色显示
set shiftwidth=4 "缩进空格数为4
set tabstop=4
set expandtabset autoindent "自动缩进
set showmode "显示左下角那一行状态
(3) 使用插件
要配置好看的vim,原生的配置可能功能不全,可以选择安装插件来完成配置,保证用户是你要配置的用户,然后:
安装 TagList 插件
- 下载
taglist_xx.zip文件。- 解压该文件。
- 将解压出来的
doc目录下的内容放到~/.vim/doc目录中。- 将解压出来的
plugin目录下的内容拷贝到~/.vim/plugin目录中。- 在
~/.vimrc文件中添加以下配置:vimlet Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let Tlist_Use_Right_Window=1- 重启 Vim。
安装 WinManager 插件
- 下载
winmanager.zip文件,确保是 2.X 版本以上。- 解压该文件。
- 将解压出来的
doc目录下的内容放到~/.vim/doc目录中。- 将解压出来的
plugin目录下的内容拷贝到~/.vim/plugin目录中。- 在
~/.vimrc文件中添加以下配置:vimlet g:winManagerWindowLayout=‘FileExplorer|TagList' nmap wm :WMToggle<cr>- 重启 Vim。
使用方法
- 打开
~/XXX.c或~/XXX.cpp文件。- 在普通模式(Normal mode)下输入
wm,你将看到下面文件浏览器和标签列表的效果。- 手把手教你把Vim改装成一个IDE编程环境(图文)_vim 打造成 ide-CSDN博客
其他手册
- 要查看更多手册信息,请执行
vimtutor命令。请注意,上述步骤假设你已经有一定的 Vim 插件安装经验,并且你的 Vim 环境已经配置好了相应的路径。如果你在执行这些步骤时遇到任何问题,可能需要检查文件路径和权限设置是否正确。
(4) 一键式配置vim
目前只支持 Centos7 x86_64. 具体操作查看文档
VimForCpp: 快速将vim打造成c++ IDE
9.参考资料
GitHub - wsdjeg/vim-galore-zh_cn: Vim 从入门到精通
相关文章:
Linux软件包管理与Vim编辑器使用指南
目录 一、Linux软件包管理器yum 1.什么是软件包? 2.什么是软件包管理器? 3.查看软件包 4.安装软件 编辑 5.卸载软件 Linux开发工具: 二、Linux编辑器---vim 1.vim的基本概念 (1) 正常/普通模式(Normal mode࿰…...
每日一练 | 包过滤防火墙的工作原理
01 真题题目 包过滤防火墙对哪一层的数据报文进行检查? A. 应用层 B. 物理层 C. 网络层 D. 链路层 02 真题答案 C 03 答案解析 包过滤防火墙是一种基本的安全设备,它通过检查进出网络的数据包来决定是否允许该数据包通过。 这种类型的防火墙主要关注…...
AR眼镜方案_AR智能眼镜阵列/衍射光波导显示方案
在当今AR智能眼镜的发展中,显示和光学组件成为了技术攻坚的主要领域。由于这些组件的高制造难度和成本,其光学显示模块在整个设备的成本中约占40%。 采用光波导技术的AR眼镜显示方案,核心结构通常由光机、波导和耦合器组成。光机内的微型显示…...
SpringBoot(十九)创建多模块Springboot项目(完整版)
之前我有记录过一次SpringBoot多模块项目的搭建,但是那一次只是做了一个小小的测试。只是把各模块联通之后就结束了。 最近要增加业务开发,要将目前的单模块项目改成多模块项目,我就参照了一下我上次搭建的流程,发现总是有报错。上次搭建的比较顺利,很多细枝末节也没有仔细…...
Navicat 17 功能简介 | 单元格编辑器
Navicat 17 功能简介 | 单元格编辑器 本期,我们一起了解 Navicat 17 出色的数据操作功能的单元格编辑器。单元格编辑器支持文本、十六进制、图像和网页四种格式的数据编辑,位于底部的编辑器窗格,为你编辑更大容量的数据信息提供足够的显示和操…...
MySQL【四】
插入数据 向数据表中插入一行数据 INSERT|REPLACE INTO 表名[(字段列表)] VALUES(值列表); ########## 在s表中插入一条记录:学号为s011,姓名为李思,性别为默认值,计算机专业 ########## insert into s(sno,sname,dept)values(s011,李思,计…...
简单叙述 Spring Boot 启动过程
文章目录 1. 准备阶段:应用启动的入口2. 创建 SpringApplication 对象:开始启动工作3. 配置环境(Environment):识别开发环境与生产环境4. 启动监听器和初始化器:感知启动的关键事件5. 创建 ApplicationCont…...
微信小程序自定义tabbar;禁用某个tab;修改某个tab的样式
微信小程序自定义tabbar;禁用某个tab;修改某个tab的样式 原本使用本身的tabBar就已经很舒服了,很合适了的,但是总有一些脑洞大开的产品和客户,给你搞点多样式,没办法牛马就得去做咯,现在就给大…...
力扣113:路径总和II
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22 输出&a…...
JavaScript字符串常用方法
在JavaScript中,字符串是用来表示文本数据的基本数据类型。字符串可以用单引号()、双引号(")、或反引号()包裹。JavaScript中的字符串是不可变的,也就是说,字符串的值一旦创建就无法更改,但可以创建新字符串来替换原有字符串…...
xtu oj 加一
样例输入# 2 4 1 2 3 4 4 3 2 4 1样例输出# 3 5 解题思路:最小操作次数一定是把所有数变成数组中最大值max。 1、找最大值,一开始我把max初始值设为0,如果a[i]>max,maxa[i],WA了。又看了一遍题目,发现所有整数的绝对值小于…...
QTcpSocket 服务端和客户端
前提: pro文件中添加 QT network 服务端主要采用信号槽机制,代码如如下 核心代码头文件#ifndef TCPSERVER_H #define TCPSERVER_H#include <QObject>#include <QTcpServer> #include <QTcpSocket> #include <QDebug> #inclu…...
Isaac Sim+SKRL机器人并行强化学习
目录 Isaac Sim介绍 OmniIssacGymEnvs安装 SKRL安装与测试 基于UR5的机械臂Reach强化学习测评 机器人控制 OMNI GYM环境编写 SKRL运行文件 训练结果与速度对比 结果分析 运行体验与建议 Isaac Sim介绍 Isaac Sim是英伟达出的一款机器人仿真平台,适用于做机…...
项目中用户数据获取遇到bug
项目跟练的时候 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘code’) at Proxy.userInfo (user.ts:57:17) 因此我想要用result接受信息的时候会出错,报错显示为result.code没有该值 导致我无法获取到相应的数据 解决如下 给…...
SpringSecurity+jwt+captcha登录认证授权总结
SpringSecurityjwtcaptcha登录认证授权总结 版本信息: springboot 3.2.0、springSecurity 6.2.0、mybatis-plus 3.5.5 认证授权思路和流程: 未携带token,访问登录接口: 1、用户登录携带账号密码 2、请求到达自定义Filter&am…...
项目技术栈-解决方案-web3去中心化
web3去中心化 Web3 DApp区块链:钱包:智能合约:UI:ETH系开发技能树DeFi应用 去中心化金融P2P 去中心化网络参考Web3 DApp 区块链: 以以太坊(Ethereum)为主流,也包括Solana、Aptos等其他非EVM链。 区块链本身是软件,需要运行在一系列节点上,这些节点组成P2P网络或者半…...
【AI声音克隆整合包及教程】第二代GPT-SoVITS V2:创新与应用
一、引言 随着科技的迅猛发展,声音克隆技术已经成为一个炙手可热的研究领域。SoVITS(Sound Voice Intelligent Transfer System),作为该领域的先锋,凭借其卓越的性能和广泛的适用性,正在为多个行业带来前所…...
分清数据链路层、网络层、传输层的区别,以及这些层面的代表协议
目录 数据链路层 网络层 传输层 数据链路层 OSI模型的第二层,负责在相邻节点之间传输帧,处理帧的封装、地址、差错控制和流量控制等。确保数据在物理介质上可靠地传输,并为上层协议提供服务。 以太网(Ethernet)&…...
git没有识别出大写字母改成小写重命名的文件目录
Git 默认不会跟踪大写字母和小写字母的区别,因为在大多数文件系统中,大写字母和小写字母被认为是相同的文件,只有在区分大小写的文件系统中(如 macOS 的 HFS 或 Windows 的 NTFS),这才是一个问题。 如果重命…...
自己动手写Qt Creator插件
文章目录 前言一、环境准备1.先看自己的Qt Creator IDE的版本2.下载源码 二、使用步骤1.参考原本的插件2.编写自定义插件1.cmakelist增加一个模块2.同理,qbs文件也增加一个3.插件源码 三、效果总结 前言 就目前而言,Qt Creator这个IDE,插件比…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
css3笔记 (1) 自用
outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size:0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格ÿ…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

