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

Linux第三讲:环境基础开发工具使用

Linux第三讲:环境基础开发工具使用

  • 1.Linux软件包管理器yum
    • 1.1什么是软件包管理器
    • 1.2操作系统生态问题
    • 1.3什么是yum源
  • 2.vim详解
    • 2.1什么是vim
    • 2.2vim的多模式讲解
      • 2.2.1命令模式的诸多指令
        • 2.2.1.1gg和n+shift+g
        • 2.2.1.2shift+$和shift+^
        • 2.2.1.3上、下、左、右
        • 2.2.1.4w和b
        • 2.2.1.5复制yy和粘贴p和剪切dd
        • 2.2.1.6x -- 命令模式的删除
        • 2.2.1.7撤销u和反撤销ctrl + r
        • 2.2.1.8shift+~
        • 2.2.1.9n+r:小范围的文本替换
        • 2.2.1.10shift+r:进入替换模式
        • 2.2.1.11aio进入插入模式的区别
        • 2.2.1.12保存和退出
      • 2.2.2底行模式诸多指令
        • 2.2.2.1set nu
        • 2.2.2.2/XXX -- 搜索XXX
        • 2.2.2.3!command
        • 2.2.2.4vs+other:分屏操作
      • 2.2.3视图模式指令解析
        • 2.2.3.1批量化注释和去注释
        • 2.2.3.2将所有的printf修改为print
        • 2.2.3.3vim code.c +15
        • 2.2.3.4!g和!l
    • 2.3vim的配置
  • 3.复习程序翻译
    • 3.1理解条件编译
  • 4. 补充 -- sudo问题
  • 5.理论知识科普
    • 5.1为什么要编译和汇编,以及编译器自举是什么
    • 5.2动静态库和动静态链接 -- 操作部分
    • 5.3动静态库和动静态链接 -- 理论部分
  • 6.自动化构建 - make/Makefile
  • 7.Linux第一个程序:进度条的实现
    • 7.1回车和换行
    • 7.2行缓冲区
    • 7.3进度条的一般实现
    • 7.4进度条版本1
    • 7.5最终进度条版本

1.Linux软件包管理器yum

1.1什么是软件包管理器

在这里插入图片描述

1.2操作系统生态问题

我们要完全理解yum问题,必须要了解操作系统的生态问题:

在这里插入图片描述
最后我们看一下yum的操作即可:
在这里插入图片描述

1.3什么是yum源

上面我们提到,yum是一个用于安装、更新、删除和管理软件包的命令行工具,yum源是指存储软件包及其依赖关系的服务器位置或者本地目录,yum通过访问这些源来管理软件包

在这里插入图片描述

2.vim详解

2.1什么是vim

在这里插入图片描述

2.2vim的多模式讲解

在这里插入图片描述

所以,我们要先进行命令模式的学习:

2.2.1命令模式的诸多指令

我们先进入底行模式,输入set nu,将行号显式出来

2.2.1.1gg和n+shift+g

在这里插入图片描述

2.2.1.2shift+$和shift+^

在这里插入图片描述

2.2.1.3上、下、左、右

在这里插入图片描述
但是,我们会有疑惑:有上下左右键,为什么要使用这些字符进行上下左右呢?
在这里插入图片描述
上面是一个老式的电脑,可以看到,这个电脑没有上下左右键,所以就设计成这样了,秉持着向上兼容的问题,所以上下左右也保存下来了,但是,有的并不支持上下左右进行翻阅,只支持hjkl进行翻阅!

2.2.1.4w和b

在这里插入图片描述

2.2.1.5复制yy和粘贴p和剪切dd

在这里插入图片描述
剪切可以进行粘贴,也可以进行删除!

2.2.1.6x – 命令模式的删除

在这里插入图片描述

2.2.1.7撤销u和反撤销ctrl + r

这个很好理解,就是ctrl+z和ctrl+y

2.2.1.8shift+~

在这里插入图片描述
按一次,转换一个字符,一直按着,就是转换一行
在这里插入图片描述

2.2.1.9n+r:小范围的文本替换

在这里插入图片描述

2.2.1.10shift+r:进入替换模式

假如我们有一行都写错了,那么我们可以进入替换模式进行更改:
在这里插入图片描述
在这里插入图片描述

2.2.1.11aio进入插入模式的区别

a:进入插入模式,并将光标向后移动一位:
在这里插入图片描述
i:进入插入模式
o:进入插入模式,并新起一行:
在这里插入图片描述

2.2.1.12保存和退出

w为保存,q为退出,进入底行模式之后,输入wq,表示保存并退出,shift+zz也表示保存并退出
wq!表示强制保存并退出,之后如果对于一些敏感文件,就需要进行强制保存或者修改

2.2.2底行模式诸多指令

2.2.2.1set nu

set nu为设置行号
set nonu为取消设置行号

2.2.2.2/XXX – 搜索XXX

在这里插入图片描述

在这里插入图片描述

2.2.2.3!command

!后边跟指令,可以直接在底行模式下进行命令的执行:
在这里插入图片描述

2.2.2.4vs+other:分屏操作

在这里插入图片描述

2.2.3视图模式指令解析

视图模式是我们的最后一个模式了!:

2.2.3.1批量化注释和去注释

批量化注释:
在这里插入图片描述
将所有代码全部注释:
在这里插入图片描述

批量化去注释:
在这里插入图片描述
通过上面,可以进行拓展:批量化去除或替换文本,批量化加;等操作

2.2.3.2将所有的printf修改为print

在这里插入图片描述

2.2.3.3vim code.c +15

在这里插入图片描述

2.2.3.4!g和!l

在这里插入图片描述
感叹号加上命令首元素,可以直接执行最近的命令

2.3vim的配置

在vim上进行代码的编写时比较麻烦的,因为它连一个缩进都没有,所以我们可以对vim进行一个基本的配置:

在这里插入图片描述
而对于test配置的vim,因为是在自己的家目录中配置的文件,所以对于其他人,是看不到自己的配置的,所以对于vim的配置是自己配置自己的!
我们自己配置一个:
在这里插入图片描述

3.复习程序翻译

code.c中的内容为:
在这里插入图片描述
在这里插入图片描述

3.1理解条件编译

我们知道条件编译,但是条件编译有什么用呢?:
我们都知道:软件有免费版、校园版、付费版、社区版等等分类,这些不同版本的软件并不是每一个版本都有一份单独的代码,而它们是一份代码!而这里面使用的其实就是条件编译!

4. 补充 – sudo问题

在这里插入图片描述
当我们普通用户进行sudo时,不是信任用户,我们现在来改成信任用户:
在这里插入图片描述

5.理论知识科普

5.1为什么要编译和汇编,以及编译器自举是什么

在这里插入图片描述

5.2动静态库和动静态链接 – 操作部分

在这里插入图片描述
对于上面,我们只需要知道:gcc默认形成的可执行程序是动态链接的,而要强制静态链接的方式为:gcc-static,而静态链接与动态链接的最大不同在目前看来是文件的大小不同

5.3动静态库和动静态链接 – 理论部分

在这里插入图片描述

6.自动化构建 - make/Makefile

在这里插入图片描述
有了上面的基础知识之后,我们下面要做的就是实现更加有通用型的makefile:
在这里插入图片描述

7.Linux第一个程序:进度条的实现

7.1回车和换行

我们的回车和换行其实是两个不同的概念,\r表示回车,\n表示的是换行,回车只是将光标移动到这一行最开始的位置,而换行是将光标移动到下一行的位置,只是垂直位置移动,而水平位置不变,我们现在使用的\n其实是将换行和回车进行综合了!
在这里插入图片描述

7.2行缓冲区

在这里插入图片描述

7.3进度条的一般实现

我们想要实现的进度条为:
在这里插入图片描述
而该最一般的进度条实现起来还是非常简单的:
在这里插入图片描述

7.4进度条版本1

上面的进度条显然不太行,所以我们要再完善一个进度条:

在这里插入图片描述

7.5最终进度条版本

上面的进度条显然不足以应对我们真实的情况,因为上面并没有网速的变化、真实情况下的下载问题,我们最后进行优化:

在这里插入图片描述
我们真实的下载网速是可能会变的,我们进行测试:
在这里插入图片描述
最后将代码看一下就行了:
在这里插入图片描述

相关文章:

Linux第三讲:环境基础开发工具使用

Linux第三讲:环境基础开发工具使用 1.Linux软件包管理器yum1.1什么是软件包管理器1.2操作系统生态问题1.3什么是yum源 2.vim详解2.1什么是vim2.2vim的多模式讲解2.2.1命令模式的诸多指令2.2.1.1gg和nshiftg2.2.1.2shift$和shift^2.2.1.3上、下、左、右2.2.1.4w和b2.…...

日本TikTok直播的未来:专线网络助力创作者突破极限

近年来,随着短视频平台的崛起,尤其是TikTok(国际版抖音)成为全球范围内广受欢迎的社交娱乐平台,直播功能的加入无疑为内容创作者提供了更广阔的展示舞台。在日本,TikTok直播不仅使得年轻人能够实时与粉丝互…...

如何在家庭网络中设置静态IP地址:一份实用指南

在家庭网络环境中,IP地址扮演着至关重要的角色。大多数家庭用户依赖路由器的DHCP(动态主机配置协议)来自动分配IP地址,但在某些情况下,手动设置静态IP地址能为家庭网络带来更多的便利性与稳定性,尤其是在涉…...

qt QFile详解

1、概述 QFile类是Qt框架中用于读取和写入文本和二进制文件资源的I/O工具类。它继承自QFileDevice类,后者又继承自QIODevice类。QFile类提供了一个接口,允许开发者以二进制模式或文本模式对文件进行读写操作。默认情况下,QFile假定文件内容为…...

ESP8266 自定义固件烧录-Tcpsocket固件

一、固件介绍 固件为自定义开发的一个适配物联网项目的开源固件,支持网页配网、支持网页tcpsocket服务器配置、支持串口波特率设置。 方便、快捷、稳定! 二、烧录说明 固件及工具打包下载地址: https://download.csdn.net/download/flyai…...

内网项目,maven本地仓库离线打包,解决Cannot access central in offline mode?

背景&#xff1a; 内网项目打包&#xff0c;解决Cannot access central in offline mode? 1、修改maven配置文件&#xff1a; localRepository改为本地仓库位置 <localRepository>D:\WorkSpace\WorkSoft\maven-repository\iwhalecloud-repository\business</loca…...

stack和queue --->容器适配器

不支持迭代器&#xff0c;迭代器无法满足他们的性质 边出边判断 实现 #define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<stack> #include<queue> using namespace std; int main() {stack<int> st;st.push(1);st.push(2);st.push(3);…...

ffmpeg视频解码

一、视频解码流程 使用ffmpeg解码视频帧主要可分为两大步骤&#xff1a;初始化解码器和解码视频帧&#xff0c;以下代码以mjpeg为例 1. 初始化解码器 初始化解码器主要有以下步骤&#xff1a; &#xff08;1&#xff09;查找解码器 // 查找MJPEG解码器pCodec avcodec_fin…...

前端入门一之CSS知识详解

前言 CSS是前端三件套之一&#xff0c;在MarkDown中也完美兼容这些语法&#xff1b;这篇文章是本人大一学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。 文章目录 Emmet语法&#xff1a;CSS基本语法&#xff1a;css语法结构只有3种&#xff1a…...

【JS学习】10. web API-BOM

文章目录 Web APIs - 第5天笔记js组成window对象定时器-延迟函数location对象navigator对象histroy对象本地存储&#xff08;今日重点&#xff09;localStorage&#xff08;重点&#xff09;sessionStorage&#xff08;了解&#xff09;localStorage 存储复杂数据类型 综合案例…...

C#实现递归获取所有父级的列表

条件&#xff1a; 父级的id是子级的父id形成递归条件 实现功能&#xff1a; 获取自己到最顶级父级的列表&#xff08;假如最顶级父级的父ID0&#xff09; 代码&#xff1a; 解释&#xff1a;CF_CODE是自己的ID&#xff0c;CF_PARENT_ID是父id /// <summary>/// 递归获…...

【深度学习】梯度累加和直接用大的batchsize有什么区别

梯度累加与使用较大的batchsize有类似的效果&#xff0c;但是也有区别 1.内存和计算资源要求 梯度累加&#xff1a; 通过在多个小的mini-batch上分别计算梯度并累积&#xff0c;梯度累积不需要一次加载所有数据&#xff0c;因此显著减少了内存需求。这对于显存有限的设别尤为重…...

【Linux】网络相关的命令

目录 ① ip addr show ② ip route show ③ iptables -nvL ④ ping -I enx00e04c6666c0 192.168.1.100 ⑤ ip route get 192.168.1.100 ⑥ sudo ip addr add dev enx00e04c6666c0 192.168.1.101/24 ⑦ ifconfig ⑧ netstat ⑨ traceroute ⑩ nslookup ① ip addr sho…...

leetcode哈希表(五)-四数相加II

题目 454.四数相加II 给你四个整数数组 nums1、nums2、nums3 和 nums4 &#xff0c;数组长度都是 n &#xff0c;请你计算有多少个元组 (i, j, k, l) 能满足&#xff1a; 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1&#xff1a; 输入&…...

Java学习路线:Maven(一)认识Maven

目录 认识Maven 新建Maven文件 导入依赖 认识Maven Maven是一个Java的项目管理工具&#xff0c;通过Maven&#xff0c;我们可以实现&#xff1a; 项目自动构建&#xff0c;包括代码的编译、测试、打包、安装等依赖管理&#xff0c;快速完成依赖的导入 在学习Maven之前&…...

【深度学习】— 多输入多输出通道、多通道输入的卷积、多输出通道、1×1 卷积层、汇聚层、多通道汇聚层

【深度学习】— 多输入多输出通道、多通道输入的卷积、多输出通道、11 卷积层、汇聚层、多通道汇聚层 多输入多输出通道多通道输入的卷积示例&#xff1a;多通道的二维互相关运算 多输出通道实现多通道输出的互相关运算 11 卷积层11 卷积的作用 使用全连接层实现 11 卷积小结 …...

java mapper 的 xml讲解

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace"com.bnc.s12.mapper.GoodaCateDT…...

全面解析:区块链技术及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 全面解析&#xff1a;区块链技术及其应用 文章目录 全面解析&#xff1a;区块链技术及其应用什么是区块链区块链的工作原理1. 分…...

python基础学习笔记

本文类比c语言讲解python 一.变量和类型 前缀小知识&#xff1a; 注意&#xff1a;1.python写每一行代码时&#xff0c;结尾不需要 ; 这点是和c语言有很大区别的 2.代码的缩进&#xff08;就是每行代码前面的空格&#xff09;是非常重要的后文会提到 1.定义变量 注意: 和C/C …...

【dvwa靶场:XSS系列】XSS (DOM) 低-中-高级别,通关啦

一、低级low 拼接的url样式&#xff1a;​​​​​​​ http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default 拼接的新内容 <script>alert("假客套")</script> 二、中级middle 拼接的url样式&#xff1a;​​​​​​​ http://127.0.0.1/dvwa/vuln…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...