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

Linux探秘坊-------3.开发工具详解(1)

1 初识vim编辑器

创建第一个vim编辑的代码

在这里插入图片描述

1.新建文件

在这里插入图片描述

2.使用vim打开

3.打开默认是命令模式,写代码需要在屏幕上输出“i”字符

  • 1.写完代码后要按Esc键退出到指令模式
  • 2.再按shift+:+wq即可保存并退出vim

(因为不支持鼠标,通常 使用键盘上的箭头 移动光标进行编辑)
在这里插入图片描述

4.cat进行查看

在这里插入图片描述

5.gcc编译文件

在这里插入图片描述
运行成功

2. vim的多模式

1.模式切换

模式切换如图:
在这里插入图片描述
结论:
在这里插入图片描述
命令模式可以理解为Windows系统中的鼠标,可以快速,高效得进行编程

2.命令补充

1.与光标有关的命令
  • n+gg :光标移动至第n行(任意行)
  • shift+g :光标移动至 最后一行
  • shift+$ : 光标移动至所在行的最后
  • shift+^ : 光标移动至所在行的最前
  • h,j,k,l :上下左右移动(h左,l右,j下,k上)
  • w,b: 光标按单词间隔进行行列移动(w向后,b向前)
  • n+ x :在光标所在处 向后删除 n个字符
  • n+ X :在光标所在处 向前删除 n个字符

2.其他命令(命令模式)
  • yy :复制当前一行
  • n+ yy :从当前行开始复制n行代码
  • p :将复制的内容黏贴至当前行的下一行
  • u :撤销上一步操作
  • ctrl+r :对u进行撤销,即恢复操作
  • n+ dd :剪切或删除行
  • shift+r:进入替换模式,可以重新写当前行的代码
3.其他命令 (底行模式)
  • shift+:+set nu: 调出行号(底行模式)
  • “/+字符串” +n : 查找字符串,按n找到下一个字符串
  • !gcc+文件名 : 执行正在写的程序文件,生成可执行程序

在这里插入图片描述

在这里插入图片描述

  • !./a.out (生成的可执行程序) : 执行程序
  • 在这里插入图片描述
  • vs + 文件名(实现分屏操作
  • 在这里插入图片描述
  • ctrl+ww,切换光标至另一个界面(可以用来复制其他文件中的内容配合“yy”)

在这里插入图片描述

4.补充命令
    1. ctrl+v(进入视图模式)->hjkl(移动光标,使其覆盖部分内容)->shift+i->“//”(插入双斜杠,也可以尝试插入别的字符)->esc(回到命令模式)

批量化注释

  • 2.ctrl+v(进入视图模式)->hjkl(移动光标,使其覆盖部分内容)->d

批量化删除注释

  • 3.shift+:->%s/xxx/aaa/g

将代码中的xxx全部换成aaa

3.vim的简要配置

1.进入家目录 cd ~

在这里插入图片描述

2.创建 .vimrc文件 catch .vimrc

在这里插入图片描述

3.vim .vimrc 并在里面写入想要的指令(可以自行去网上搜索)

我这边写入 set nu(显示行数)和 set mouse=a(支持鼠标)

4.再次打开test.c

在这里插入图片描述
发现已经添加了行号。

4.程序翻译-------gcc/g++

1.预处理(宏替换+去注释+条件编译+头文件展开)

举例:
在这里插入图片描述
使用gcc -E test.c -o test.i

  • -o:表示我们要形成的文件的名称(这里即test.i)
  • gcc -E:表示从现在开始 只要预处理完成就停下来

用vim打开test.i并与test.c对比:
在这里插入图片描述
宏替换+去注释+头文件展开全部完成)

2.编译(生成汇编)

gcc -S test.i -o test.s

  • -o:表示我们要形成的文件的名称(这里即test.s)
  • gcc -E:表示从现在开始 只要编译完成就停下来

在这里插入图片描述

3.汇编(生成机器可识别代码)

gcc -c test.i -o test.o

  • -o:表示我们要形成的文件的名称(这里即test.s)
  • gcc -c:表示从现在开始 只要汇编完成就停下来

在这里插入图片描述

4.链接(生成可执行文件或库文件)

在这里插入图片描述

gcc test.o -o testtest就是可执行的文件

5.补充知识点sudo(添加用户至白名单)

1.ls -l /etc/sudoers

在这里插入图片描述

2.su(切换至root)
3.vim /etc/sudoers

在这里插入图片描述
发现白名单里只有root,我们可以自行添加用户:
在这里插入图片描述

4.sudo验证

在这里插入图片描述

成功使用sudo,代表白名单配置成功。

在这里插入图片描述

相关文章:

Linux探秘坊-------3.开发工具详解(1)

1 初识vim编辑器 创建第一个vim编辑的代码 1.新建文件 2.使用vim打开 3.打开默认是命令模式,写代码需要在屏幕上输出“i”字符 1.写完代码后要按Esc键退出到指令模式2.再按shift:wq即可保存并退出vim (因为不支持鼠标,通常 使用键盘上的箭…...

Spring Boot整合Thymeleaf、JDBC Template与MyBatis配置详解

本文将详细介绍如何在Spring Boot项目中整合Thymeleaf模板引擎、JDBC Template和MyBatis,涵盖YAML配置、依赖版本匹配、项目结构设计及代码示例。 一、版本兼容性说明 Spring Boot版本与Java版本对应关系 Spring Boot 2.x:支持Java 8、11(推…...

白玉微瑕:闲谈 SwiftUI 过渡(Transition)动画的“口是心非”(下)

概述 秃头小码农们都知道,SwiftUI 不仅仅是一个静态 UI 构建框架那么简单,辅以海量默认或自定义的动画和过渡(Transition)特效,我们可以将 App 界面的绚丽升华到极致。 不过,目前 SwiftUI 中的过渡&#x…...

论文:深度可分离神经网络存内计算处理芯片

引言:SRAM - CIM芯片在处理深度可分离神经网络时面临的挑战 深度可分离卷积(Depthwise separable convolution, DSC)由逐深度卷积(DW)和逐点卷积(PW)组成,逐深度卷积用于提取空间特征&#xff…...

hdrnet,Deep Bilateral Learning for Real-Time Image Enhancement解读

论文、代码和ppt地址:Deep Bilateral Learning for Real-Time Image Enhancement 论文使用的数据集: HDR: 这是一个复杂的摄影管道,包括色彩校正、自动曝光、去雾和色调映射等操作。 MIT “FiveK” 数据集: 这个数据集由 Bychkovsky 等人 提…...

Android系统开发(十五):从 60Hz 到 120Hz,多刷新率进化简史

引言 欢迎来到“帧率探索实验室”!今天,我们要聊聊 Android 11 中对多种刷新率设备的支持。你可能会问:“这和我写代码有什么关系?”别急,高刷新率不仅仅让屏幕更顺滑,还会直接影响用户体验。想象一下&…...

js判断一个数组对象中是否有相同的值

let userTitleLevelList[{title:医生,code:20},{title:老师,code:21}]; 如果一个数组对象格式如上面。如果有一样的对象就提示。即:title和code都是一样的内容、 const hasDuplicate userTitleLevelList.some((item, index, array) > { return array.filter(…...

基于深度学习的视觉检测小项目(十五) 用户的登录界面

用户管理离不开的是消息框(QMessageBox)和对话框(QDialog),比如对话框用于用户名和密码输入,消息框用于提示登录成功、密码错误。 • 基础知识:PySide6(PyQT5)的常用对话…...

redis-排查命中率降低问题

1.命中率降低带来的问题 高并发系统,当命中率低于平常的的运行情况,或者低于70%时,会产生2个影响。 有大量的请求需要查DB,加大DB的压力;影响redis自身的性能 不同的业务场景,阈值不一样,一般…...

ui文件转py程序的工具

源博客连接: PyCharm中利用外部工具uic转成的py文件,里面全是C代码,并非python类型的代码,导致大量报错。。。_pyside6-uic为什么把ui转为了c-CSDN博客 如果想把ui文件转为py文件,首先设置pycharm的外部工具&#xf…...

Alluxio 联手 Solidigm 推出针对 AI 工作负载的高级缓存解决方案

作者:Wayne Gao, Yi Wang, Jie Chen, Sarika Mehta Alluxio 作为全球领先的 AI 缓存解决方案供应商, 提供针对 GPU 驱动 AI 负载的高速缓存。其可扩展架构支持数万个节点,能显著降低存储带宽的消耗。Alluxio 在解决 AI 存储挑战方面的前沿技…...

Oracle 数据库常见字段类型大全及详细解析

在工作期间会遇到数据库建表的业务,经常会使用复制粘帖等操作,而不清楚数据库的字段类型。本文记录了 Oracle 数据库常见字段类型,根据不同的数据需求,可以选择不同的字段类型来存储数据。 文章目录 一、字符类型(Char…...

U3D的.Net学习

Mono:这是 Unity 最初采用的方式,它将 C# 代码编译为中间语言 (IL),然后在目标平台上使用虚拟机 (VM) 将其转换为本地机器码执行。 IL2CPP:这是一种较新的方法,它会将 C# 代码先编译为 C 代码,再由 C 编译器…...

Tomcat下载配置

目录 Win下载安装 Mac下载安装配置 Win 下载 直接从官网下载https://tomcat.apache.org/download-10.cgi 在圈住的位置点击下载自己想要的版本 根据自己电脑下载64位或32位zip版本 安装 Tomcat是绿色版,直接解压到自己想放的位置即可 Mac 下载 官网 https://tomcat.ap…...

adb常用指令(完整版)

1、adb devices 查看是否连接到设备 2、adb install [-r] [-s] 安装app,-r强制,-s安装sd卡上 3、adb uninstall [-k] 卸载app,-k保留配置和参数 4、adb push 把本地文件上传设备 5、adb pull 下载文件到本地 6、cd D:\sdk\platform-tool…...

大数据学习(36)- Hive和YARN

&&大数据学习&& 🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一下博主哦&#x1f91…...

C# ASP.NET MVC项目内使用ApiController

1.在App_Start文件夹新建WebApiConfig.cs文件,建立webApi路由的注册方法。 using System.Web.Http;namespace PrivilegeManager {public class WebApiConfig{public static void Register(HttpConfiguration config){config.MapHttpAttributeRoutes();config.Route…...

Kafka 入门与应用实战:吞吐量优化与与 RabbitMQ、RocketMQ 的对比

前言 在现代微服务架构和分布式系统中,消息队列作为解耦组件,承担着重要的职责。它不仅提供了异步处理的能力,还能确保系统的高可用性、容错性和扩展性。常见的消息队列包括 Kafka、RabbitMQ 和 RocketMQ,其中 Kafka 因其高吞吐量…...

“推理”(Inference)在深度学习和机器学习的语境

“推理”(Inference)在深度学习和机器学习的语境中,是指使用经过训练的模型对新数据进行预测的过程。将其简单地理解为“模型的应用阶段”。在这一阶段,我们不再进行模型训练,而是利用已训练好且保存下来的模型来获取对…...

字节腾讯阿里大厂面经汇总:Java集合(容器)大厂面试题及参考答案

ArrayList 的扩容机制以及删除操作的时间复杂度 ArrayList 是 Java 中非常常用的一个集合类,它是基于数组实现的动态数组。当我们创建一个 ArrayList 时,如果不指定初始容量,它会有一个默认的初始容量(通常是 10)。当我们向 ArrayList 中添加元素时,如果元素的数量达到了…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线, n r n_r nr​ 根接收天线的 MIMO 系…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...

加密通信 + 行为分析:运营商行业安全防御体系重构

在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...

鸿蒙HarmonyOS 5军旗小游戏实现指南

1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...

前端调试HTTP状态码

1xx(信息类状态码) 这类状态码表示临时响应,需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分,客户端应继续发送剩余部分。 2xx(成功类状态码) 表示请求已成功被服务器接收、理解并处…...

【系统架构设计师-2025上半年真题】综合知识-参考答案及部分详解(回忆版)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20~21题】【第…...

scan_mode设计原则

scan_mode设计原则 在进行mtp controller设计时,基本功能设计完成后,需要设计scan_mode设计。 1、在进行scan_mode设计时,需要保证mtp处于standby模式,不会有擦写、编程动作。 2、只需要固定mtp datasheet说明的接口即可&#xf…...

RocketMQ 客户端负载均衡机制详解及最佳实践

延伸阅读:🔍「RocketMQ 中文社区」 持续更新源码解析/最佳实践,提供 RocketMQ 专家 AI 答疑服务 前言 本文介绍 RocketMQ 负载均衡机制,主要涉及负载均衡发生的时机、客户端负载均衡对消费的影响(消息堆积/消费毛刺等…...

CCF 开源发展委员会 “开源高校行“ 暨红山开源 + OpenAtom openKylin 高校行活动在西安四所高校成功举办

点击蓝字 关注我们 CCF Opensource Development Committee CCF开源高校行 暨红山开源 openKylin 高校行 西安站 5 月 26 日至 28 日,CCF 开源发展委员会 "开源高校行" 暨红山开源 OpenAtom openKylin 高校行活动在西安四所高校(西安交通大学…...