自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 I²S协议概述与信号线说明

I²S协议(Inter-IC Sound)是飞利浦提出的用于数字音频数据传输的串行总线标准,常用于微控制器、音频编解码器和数模转换器之间的数据交换。I²S协议包括位时钟(BCLK)、字选择时钟(LRCK/WS)和数据输入输出(DIN/DOUT)等信号线。协议支持双声道音频数据传输,通过BCLK同步数据传输,LRCK指示左右声道,DIN/DOUT传输实际音频数据。常见的工作模式包括标准I²S、左对齐(Left-Justified)和右对齐(Right-Justified),每种模式对数据的对齐和时钟的关系有所

2025-04-07 21:54:56 486

原创 深入理解 Xtensa 架构 ESP32 内存架构(SRAM、IRAM、IROM、DRAM、DROM详解)

本文详细解析了ESP32芯片的内存架构,详细介绍了SRAM、IRAM、IROM、DRAM、DROM之间的关系、作用与区别。具体讲解了IRAM与IROM的执行效率差异及如何通过 IRAM_ATTR 提升代码执行速度,也明确了DRAM与DROM的数据存放机制,给出了节约RAM的方法。文章包含示例代码、应用场景及清晰的内存结构图,帮助读者深入理解ESP32开发过程中如何有效利用内存资源。

2025-03-15 22:39:48 1256

原创 vscode 下的 esp-idf 快速搭建指南(超详细) 头文件包含问题的解决

本文详细介绍了如何使用ESP-IDF工具安装器,快速搭建ESP-IDF与VSCode集成开发环境。包括ESP-IDF工具安装器的离线安装步骤,Python环境的正确配置方法,以及VSCode ESP-IDF插件的高级(ADVANCED)配置过程。文章特别强调了Python环境的两处关键配置,并提供了.vscode目录生成方法,轻松解决VSCode中ESP-IDF项目头文件无法识别的问题。

2025-03-15 19:04:02 640 1

原创 02_LVGL学习笔记:深理解样式(Style)机制与应用方法

本文详细介绍了LVGL中样式(Style)的概念和使用方法,包括样式对象(lv_style_t)的定义、各种视觉属性(背景、边框、文本、阴影、布局等)的设置方法、不同状态下的样式应用以及样式内存的优化机制。此外,文章还详细区分了普通样式与本地样式,探讨了两者在实际开发中的使用场景与优势,帮助开发者高效地管理和应用样式,轻松实现界面的个性化定制。

2025-03-12 22:33:10 1181

原创 01_LVGL学习笔记:对象与盒子模型详解

本文介绍了 LVGL 中对象(控件)的基本概念、图层结构(活动屏幕、顶层、系统层)、对象的大小与位置设置,以及 LVGL 采用的“盒子模型”设计思想。通过解析边界框、边框宽度、内边距、外边距与内容区,阐述了 LVGL 如何以统一的矩形区域抽象管理界面元素,并在不同布局模式下灵活控制对象的对齐、间距与层级,帮助开发者高效构建嵌入式 GUI 界面。

2025-03-11 23:19:00 974

原创 基于 Windows 上 VS Code 的 LVGL 仿真开发环境配置指南

本文介绍在 Windows 平台上利用 VS Code 配置 LVGL 仿真开发环境的步骤。首先下载并放置 FreeRTOS 和 LVGL 依赖文件,然后配置 mingw、cmake 和 SDL2,并将 cmake/bin 与 mingw/bin 添加到系统环境变量。针对 CMakeLists.txt 中 SDL2 查找错误,提供了设置 CMAKE_PREFIX_PATH 和修改 sdl2-config.cmake 文件路径的解决方案,同时调整 main.c 避免 SDL_main 错误。

2025-03-10 21:32:04 1199

原创 ARM Cortex-M 内存映射详解:如何基于寄存器直接读写 寄存器映射方式编码程序 直接操作硬件寄存器来控制 MCU

ARM Cortex-M 系列 MCU 采用 32 位地址总线,内存空间按照存储功能划分为多个区域,包括 Flash(程序存储)、RAM(变量存储)、外设寄存器和系统控制寄存器(NVIC、SysTick)。本文详细解析各个地址段的作用,包括向量表(Vector Table)、程序存储(Flash)、Bootloader、数据存储(RAM)、外设控制(GPIO、UART)和系统管理(中断控制、定时器等)。此外,文章还介绍了栈与堆的内存分布、系统优化建议以及典型的存储映射示例,以帮助开发者更高效地管理 MCU

2025-03-09 22:43:03 1379

原创 深入解析 MCU 内存架构:Flash、RAM、代码与变量存储详解 .rodata .text heap stack .bss .data code RO-data RW-data ZI-data

在嵌入式系统中,MCU 内存的合理管理至关重要。本文以 STM32F103 为例,详细解析 MCU 内存分布,包括 Flash(存储 .text 和 .rodata)、RAM(存储 .data、.bss、堆和栈)的具体划分。此外,我们深入剖析 ARM 编译器中的 Code、RO-data、RW-data、ZI-data 以及它们的存储位置、作用和运行时行为。通过直观的存储结构、示例代码和优化建议,帮助开发者理解和优化 MCU 内存管理,以提高系统的内存资源利用率。

2025-03-09 22:08:56 1044

原创 深入浅出解析 FreeRTOS 内存管理:heap_1~heap_5 详解、源码分析与实验

FreeRTOS 提供了五种不同的内存管理方案(heap_1~heap_5),用于任务、队列和信号量等系统对象的动态内存分配。其中,heap_1 不支持释放,heap_2 允许释放但不合并空闲块,heap_3 直接调用 malloc/free,heap_4 支持合并空闲块减少碎片化,heap_5 进一步支持多个不连续的 RAM 区域。本篇文章详细分析每种 heap_x 的实现方式,并通过代码示例和实验验证其内存管理特性,同时解析 FreeRTOS 额外的内存开销,包括块头管理、对齐填充等。

2025-03-09 17:11:53 994

原创 解析 FreeRTOS Tickless 低功耗模式:原理、配置与实验操作

FreeRTOS Tickless 低功耗模式是一种智能节能机制,通过关闭系统滴答定时器(SysTick)让 MCU 在空闲时进入低功耗模式,仅在必要时唤醒 CPU,从而降低功耗。本文深入解析 Tickless 模式的工作原理、常见低功耗模式(Sleep、Stop、Standby)、关键配置项及其作用,并结合 FreeRTOS 任务同步实验,展示 Tickless 低功耗模式的实战应用。

2025-03-09 12:44:26 806

原创 深入浅出解析 FreeRTOS 软件定时器 定时器服务任务:机制、API 详解及实践应用

FreeRTOS 软件定时器是一种基于任务调度器的时间管理工具,支持单次和周期性定时任务,适用于定时事件触发、任务同步等应用。与硬件定时器不同,软件定时器无需额外硬件资源,但受调度影响,精度略低。软件定时器由定时器服务任务统一管理,并通过任务队列存储定时器操作请求,确保高效执行。本文介绍了软件定时器的核心概念、相关 API 及其配置方式,并通过实验演示了定时器的创建、启动、停止、周期修改,以及发送函数至定时器服务任务执行。该机制可用于按键消抖、周期数据采集等,提高系统响应效率。

2025-03-08 22:26:47 846

原创 FreeRTOS 任务通知详解:机制、API 及应用示例 实验讲解

任务通知是 FreeRTOS 提供的高效任务同步机制,比信号量和消息队列更轻量,直接存储在任务控制块中,避免额外内存开销。任务通知值与索引配合使用,多个索引相互独立,适用于不同任务同步需求。本文介绍 xTaskGenericNotify() 等核心 API,解析 eSetBits、eIncrement 等操作模式,并结合 ulBitsToClearOnEntry 和 ulBitsToClearOnExit 参数,演示如何管理通知值。通过 信号量 和 事件标志组 示例,展示任务通知的实际应用,提升任务调度性能

2025-03-08 16:41:54 750

原创 FreeRTOS 任务间通信机制:队列、信号量、事件标志组详解与实验

本篇文章详细解析了 FreeRTOS 任务间通信机制,包括 消息队列、信号量、事件标志组 的工作原理、API 介绍及适用场景。首先介绍了 队列,分析其 FIFO 特性及队列集的使用方法,并通过按键输入实验演示了 任务间数据传递。接着讲解 信号量(Semaphore) 的三种类型(二值信号量、计数信号量、互斥信号量),探讨其在任务同步、资源管理中的应用,并通过实验分析 优先级翻转及优先级继承 的影响。最后,文章介绍 事件标志组,对比其与信号量的区别,并通过按键触发实验演示了 事件同步机制。

2025-03-07 23:22:21 874

原创 FreeRTOS 任务管理与运行时间统计:API 解析与配置实践

本篇文章详细解析了 FreeRTOS 任务管理相关 API,包括任务优先级、状态查询、句柄获取、堆栈监测、任务信息获取等核心函数,并介绍了 TaskStatus_t 结构体的作用。文章重点讲解了 FreeRTOS 任务运行时间统计 ,分析了高频中断对任务调度的影响,并提供了详细的配置方法,包括统计CPU占有率、定时器配置、统计数据解析等。此外,文章通过实验对比了不同中断频率对任务调度的影响,并给出了避免 CPU 过载的优化方案,帮助开发者更高效地分析 FreeRTOS 任务执行情况。

2025-03-06 23:01:28 781

原创 深入理解 FreeRTOS 的中断管理:屏蔽机制、临界区与实验分析

本篇文章详细解析了 FreeRTOS 的中断管理机制,包括 BASEPRI 方式的中断屏蔽、configMAX_SYSCALL_INTERRUPT_PRIORITY 设定的管理范围,以及任务调度如何影响中断优先级。此外,文章深入讲解了 FreeRTOS 提供的屏蔽中断函数及其在任务调度中的作用,并介绍了临界区保护的机制。为进一步理解 FreeRTOS 的中断屏蔽,文章还提供了一个实验:设置不同优先级的定时器中断,并通过按键触发手动屏蔽和启用中断,分析实验现象,帮助开发者更直观地理解 FreeRTOS 的中断

2025-03-05 21:55:39 1151

原创 FreeRTOS 任务的挂起与恢复 任务状态查询

本篇文章详细解析了 FreeRTOS 任务挂起与恢复机制,包括 vTaskSuspend()、vTaskResume()、xTaskResumeFromISR() 以及调度器挂起 vTaskSuspendAll() 和 xTaskResumeAll() 的应用场景。结合 STM32 平台,讲解了如何配置 FreeRTOSConfig.h 以启用相关 API,并详细分析了 vTaskList() 任务状态监视的输出结果。此外,文中提供了 完整代码示例,展示了一个小实验来掌握任务调度控制,帮助开发者更深入理解

2025-03-05 17:41:51 1080

原创 FreeRTOS 源码结构解析与 STM32 HAL 库移植实践(任务创建、删除篇)

本篇文章详细解析了 FreeRTOS 源码结构,包括 Source 目录、移植适配层 portable、内存管理 MemMang 等关键内容。结合 STM32 HAL 库,完整演示 FreeRTOS 的移植步骤,涵盖源码添加、配置修改、系统时钟调整等必要操作。同时,深入讲解 任务管理机制,对 动态任务与静态任务 进行对比,并提供完整示例,包括任务创建、删除、空闲任务内存分配等核心实现。最后,总结数据类型、命名规范、任务控制块(TCB) 及 调度机制,帮助开发者更高效地理解和应用FreeRTOS进行开发。

2025-03-04 23:59:42 818

原创 深入解析 I²C 与 SPI 协议:原理、时序及软件实现

篇博客详细介绍了 I²C 和 SPI 的工作原理、时序、主从通信方式、信号帧格式,并对比了 两者的区别及适用场景。文章提供了 完整的软件 I²C 和软件 SPI 代码实现,包括 GPIO 配置、时序模拟、数据读写、应答机制 等关键部分。软件 I²C/SPI 适用于无硬件 I²C/SPI 外设的 MCU,并且支持自由选择 GPIO,提高移植性。通过本文,你将深入理解 I²C 和 SPI 的底层通信机制,并掌握如何在 STM32、ESP32、51 单片机等平台上进行实际开发和优化。

2025-03-03 21:51:11 1679 1

原创 ssh配置 远程控制 远程协作 github本地配置

选项指定使用 RSA 加密算法生成密钥,这是一种广泛采用的公钥加密方式,其他可选类型包括 DSA(dss)、椭圆曲线(ecdsa)及更高效的 Ed25519(ed25519)等。定义了密钥长度为 4096 位,较长的位数提升了安全性(尤其适用于敏感场景),但生成和使用时略慢于常见的 2048 位标准。(localhost/本地主机): 这个 IP 地址是回环地址,指的是你自己的电脑。是 OpenSSH 提供的用于生成和管理 SSH 密钥对的命令。目录存在,然后将 Linux 的公钥复制到该目录下的。

2025-02-25 21:44:24 804

原创 C语言环形缓冲区:原理、实现与图解详解 环形缓冲区实现

环形缓冲区(Circular Buffer),又称循环队列,是一种高效的数据结构。它利用固定大小的内存空间和读写指针的循环移动,避免了频繁的数据复制和内存分配,显著提高了数据传输效率。文章首先介绍了环形缓冲区的基本概念,包括缓冲区大小、读写指针和空闲位置。然后,通过一系列图例演示了数据在缓冲区中的写入、读取和环绕过程,清晰地展示了环形缓冲区的运作机制。接着,文章剖析了C语言实现环形缓冲区的关键代码,包括创建、销毁、写入、读取和获取所有数据等核心函数,并对代码中的关键宏和计算公式进行了详细解读。

2025-01-07 23:40:56 1121

原创 C语言指针与动态内存管理解析:动态内存分配 释放内存 指针与字符串关系 函数指针

本篇文章详细介绍了C语言中指针的使用,包括指针的声明、解引用、指针运算以及多级指针的概念。指针存储变量的内存地址,其类型决定了内存偏移量。文章还解释了字符串数组与指针的关系,展示了如何通过指针操作字符串。此外,介绍了函数指针的声明和应用,通过typedef简化函数指针的使用,并举例说明了函数指针数组的实现。最后,文章深入讲解了动态内存管理,包括malloc、calloc、realloc和free函数的使用,强调了内存分配和释放的注意事项,以及避免内存泄漏和野指针的方法。

2025-01-07 00:39:52 978

原创 深入浅出 Pytest:自动化测试的最佳实践 pytest教程 程序测试 单元化测试

本文全面介绍了 Pytest 在自动化测试中的核心功能和用法。首先,详细解析了断言的概念及其在验证测试预期中的作用。其次,阐述了 Pytest 捕获预期异常的实现方式,并分享了代码实例。此外,文章还说明了 Pytest 的测试发现机制及 Fixture 的定义、作用域、参数化等高级特性。针对参数化测试,展示了如何通过装饰器实现多输入多输出的测试用例生成,以及参数组合和 ID 定义。最后,文章重点讲解了 Pytest 的标记功能,包括内置标记、自定义标记、条件跳过测试等应用场景。

2025-01-03 17:09:17 1204

原创 Python 类型标注详解:提高代码可读性与可维护性

Python 类型标注(Type Hinting)是一项引入于 Python 3.5 的功能,旨在通过指定变量、函数参数和返回值的类型,提高代码的可读性和可维护性。类型标注的主要作用包括:帮助静态类型检查工具(如 mypy)检测潜在错误、提升代码清晰度和 IDE 支持等。本文详细介绍了类型标注的基本语法,包括变量标注、函数返回值标注、可选类型(Optional 和 Union)、任意类型(Any)、不可变标注(Final 和 Literal),以及自定义类型别名和泛型的使用方法。

2025-01-03 13:54:40 913

原创 Python异常处理详解:概念、语法与实践

本文系统地介绍了Python异常的概念、内建异常类型及其应用,并详细阐述了异常处理的基本语法及高级用法,包括多异常捕获、else和finally块、异常抛出和自定义异常。特别是在Python 3.11新增的ExceptionGroup处理并发场景中的多个异常。此外,通过案例分析深入剖析了异常的传递机制,包括正常情况、部分捕获、完全未捕获等不同情境下的行为,帮助读者全面掌握异常处理的核心知识和实际应用方法。

2025-01-02 21:26:49 1154

原创 Makefile教程 C语言编译 多个C文件编译 C文件 编译链接 自动依赖 make工具使用 makefile make 基础语法

本文介绍了Makefile的基本概念和语法,包括Makefile的三大要素:目标文件、依赖文件和规则。详细解释了如何通过规则定义目标文件与依赖文件的关系,并使用make自动判断目标是否需要更新。通过伪目标,可以定义不生成文件的操作。还探讨了Makefile中自动依赖管理的方法,尤其是使用gcc的-M选项自动生成头文件依赖。文章进一步讲解了Makefile中变量的使用、控制命令的执行以及如何处理头文件依赖问题。最后,提供了一个标准的Makefile模板,涵盖了自动生成、清理操作、文件组织等内容。

2024-12-25 01:11:33 1442

原创 面向对象 类函数的区别 实例方法 类方法 静态方法 抽象方法

本文详细介绍了面向对象编程中的四种方法:实例方法、类方法、静态方法和抽象方法。实例方法通过实例访问并操作对象属性;类方法与类本身相关,适用于操作类级别的属性或状态;静态方法则不依赖于实例或类状态,常用于组织工具函数;抽象方法则定义在抽象类中,强制子类实现特定的接口,确保子类行为的一致性。每种方法的适用场景和调用方式均有详细阐述,旨在帮助开发者深入理解和合理应用这些方法,以提高程序的结构性和可维护性。

2024-12-23 23:23:26 513

原创 Zed调试宏 C语言错误日志 异常错误调试信息

本文介绍了C语言中的错误处理机制,重点讲解了`errno`全局变量的使用和通过宏简化错误处理和调试。`errno`记录系统调用或库函数错误的类型,程序可通过`perror()`或`strerror()`输出错误信息。为提高代码的健壮性和可维护性,文章提出了使用一系列调试宏,如`debug`、`log_err`、`log_warn`、`log_info`等,帮助开发者记录不同级别的日志。通过`check`宏简化条件检查,`sentinel`和`check_mem`宏处理内存分配失败或严重错误时的跳转。使用这些

2024-12-23 23:09:22 769

原创 C语言 函数指针使用 函数回调 如何修改可执行文件机器码

本文介绍了C语言中函数指针的使用,重点解释了不同形式的函数声明,包括普通函数声明和函数指针声明。通过对比三种声明形式,帮助理解函数指针的结构。此外,文中提供了一个经典的排序算法示例,使用函数指针作为回调函数来实现动态排序。通过定义compare_cb类型的函数指针,可以在bubble_sort和insertion_sort等排序函数中传递不同的比较函数,实现灵活的排序方式。同时,文章也展示了如何通过typedef简化代码,提高可读性和可维护性。最后,作者探讨了修改二进制文件内容(如字符串)。

2024-12-20 16:22:51 1096

原创 C语言数据库管理系统示例:文件操作、内存管理、错误处理与动态数据库设计 栈和堆的内存分配

本文通过一个完整的C语言数据库管理系统示例,展示了如何通过C语言实现一个简单的联系人管理数据库。系统功能包括数据库的创建、读取、修改、删除和列出记录,同时涵盖了如何进行文件操作(如fopen、fread、fwrite、rewind、fflush)及内存管理。文章详细讲解了如何通过struct定义数据库及其记录,如何使用错误处理机制(如errno和perror)来确保系统的健壮性,并说明了栈与堆的内存分配方式。此外,示例代码通过支持动态大小的数据库设计和添加了查找功能,进一步提高了数据库的灵活性与扩展性

2024-12-20 10:21:27 2230

原创 C语言 结构体解析 堆内存存储结构体的适用场景、优势及动态内存分配 结构体在内存中的不同分配情况

本文讨论了使用堆内存存储结构体的适用场景。首先,对于跨函数或跨模块共享数据的情况,堆内存允许结构体在多个函数间共享,并且在结构体实例的生命周期超出某个函数作用域时,堆内存更为合适。其次,当结构体的大小在编译时不可知,或者需要动态确定时,堆内存的动态分配是必不可少的。最后,对于存储大量数据或结构体较大的情况,栈内存可能不足以容纳这些数据,而堆内存提供了更大的空间,避免了栈溢出。本文还强调了堆内存的灵活性和高效性,适合应对内存需求较大的场景,尤其在资源有限的环境中,合理使用堆内存至关重要。

2024-12-19 12:47:33 947

原创 C语言指针与数组深入剖析及优化示例 指针解读 数组与指针的关系

本文详细介绍了指针的基本概念和应用,通过不同的示例探讨了指针与数组的关系。通过修改函数,使程序更简洁,减少冗余函数,如将can_print_it移除,直接在print_letters中实现字符筛选。进一步优化了处理命令行参数的函数,使用strlen传递字符串长度,并通过指针遍历打印字符串中的字母、数字、标点等字符类型。文章还涵盖了如何通过指针与数组的互换使用,展示了如何在函数中传递指针来简化操作。此外,还讨论了指针的地址输出、指针与数组在内存中的表现等内容,进一步加强了对指针和数组的理解。

2024-12-18 23:59:28 848

原创 Linux上的C语言编程实践

本文是对《笨办法学C》学习过程中每个练习章节附加题的解析和回答总结。内容涵盖从字符与指针操作到数组和内存分配等C语言核心知识。针对练习9,分析了字符数组与整数的存储关系、字符指针的遍历及其在不同数据类型间的转换操作;在练习10和11中,探讨了二维数组与指针数组的区别、指针的步长与解引用操作,以及在循环中使用`break`提前退出的逻辑。练习14则聚焦于字母的大小写转换及`switch`与`if-else`语句的对比,探讨了代码风格和逻辑控制优化的实践。这些内容通过示例代码与详细解释,帮助学习者掌握C语言的基

2024-12-18 00:13:31 704

原创 Linux上的C语言编程实践

本文聚焦于 Linux 平台 C 语言学习网站的练习。详细解析了如 char *argv[]这类代码符号的意义,探讨了修改 printf 致其崩溃的方法,像参数类型不匹配等情况。深入研究了 printf 高级占位符与多种数字打印形式,包括八进制、十六进制等。还涉及变量类型操作,如 char 与 int 相乘的隐式转换,以及 Valgrind 对代码错误的检测,如数组越界访问、内存泄漏等问题的呈现。同时介绍了不同 CPU 架构下 int 类型所占字节大小的区别,为 C 语言学习提供了丰富且实用的知识总结与实践

2024-12-09 23:41:09 775

原创 Linux上的C语言编程实践

本文围绕一系列 C 语言编程实践展开,包括对 ex1 文件的修改与运行分析,ex2 中 Makefile 的构建与理解,ex3 中使程序崩溃的多种尝试及 printf 格式化占位符学习并整合进 Makefile,ex4 借助 Valgrind 检测和修复程序错误并涉及手动构建其他程序。同时介绍了 Valgrind 的安装、源码目录组织以及其 Makefile 文件,展现了从代码编写、调试到深入探究相关工具源码与构建体系的完整过程,有助于提升 C 语言编程能力与对开发工具的掌握程度。

2024-12-09 11:59:58 1108

原创 MIT工具课第六课任务 Git基础练习题

本文主要介绍了Git相关操作。包括克隆课程网站仓库、可视化版本历史、查询文件修改信息等。阐述了git stash的作用,如暂存工作目录和暂存区更改,以及相关命令如apply、drop、pop等的用法,还提及创建带消息的stash和查看其详细内容。介绍了在.gitconfig中创建别名的方法,以及配置全局.gitignore_global忽略规则。还讲解了在GitHub上Fork仓库、本地修改后发起拉取请求的步骤,为Git初学者提供了全面的操作指南与知识要点。

2024-12-06 16:48:28 869

原创 Linux Git新手入门 git常用命令 Git全面指南:基础概念、操作与远程仓库、标签、分支全解析 MIT第六课

本文全面介绍了 Git 相关知识与操作。涵盖基础概念,如文件的已提交、已修改、已暂存状态,以及工作区、暂存区和 Git 目录三个阶段。基础操作包括获取仓库(初始化或克隆)、记录更新(提交)、检查状态、跟踪文件、暂存与撤消修改、忽略文件、查看差异、提交更新(含修正提交)、移除与重命名文件、查看提交历史等。还讲述了远程仓库的使用,如配置、查看、添加、抓取、拉取与推送,以及打标签(创建、列出、共享、删除、检出)和分支操作(创建、切换、合并、管理、跟踪远程分支),最后提及 Git 用户信息配置。

2024-12-04 22:57:41 1320

原创 MIT工具课第五课 Ubantu上进行任务控制、终端复用、别名与配置文件操作

本文主要介绍了任务控制、终端多路复用、别名设置以及配置文件相关操作。在任务控制中,通过 `ps`、`pgrep`、`pkill` 等命令对进程进行查看、筛选与终止操作,还展示了等待进程结束的脚本编写。终端多路复用提及参考 `tmux` 教程自定义配置。别名创建方面,可设 `dc` 别名纠正错误输入,还能依据 `history` 命令统计结果为常用命令创建别名。配置文件部分,新建文件夹存储 `bash`、`vim`、`tmux` 等配置文件并设置版本控制,介绍快速安装配置方法及相关脚本编写与测试,最后将配置文

2024-12-04 14:44:02 833

原创 自定义tmux功能 更好的使用tmux进行终端多复用

文章围绕自定义配置tmux展开,介绍了多个实用配置方法。先是说明tmux通过tmux.conf文件存储配置,可放于不同位置供不同范围用户使用。接着列举常见改动,如将快捷键前缀从C-b改为更顺手的C-a;用直观的|、-替代原本难记的窗格拆分命令;实现免前缀用Alt+方向键切换窗格;还介绍了启用鼠标模式、停止自动重命名窗口、改变tmux外观等配置项,最后指出可通过绑定r键来重新加载tmux配置文件,整体涵盖tmux从操作便捷性到外观等多方面的自定义配置内容。

2024-11-27 22:20:07 886

原创 MIT工具课第四课任务 Linux在shell中数据流处理 正则表达式

文章先介绍了正则表达式基本语法,如分组等。接着阐述Linux中三种正则匹配模式(BRE、ERE、PCRE)及其差异、启用方式与示例,像PCRE有前瞻、后顾断言等高级特性。还通过具体命令示例展示统计单词文件中满足特定条件(含至少三个“a”且不以“'s”结尾)单词个数、出现频率前三的末尾两字母等操作及对应命令解析。此外,提及查找未出现的词尾两字母组合方法、获取开机时间统计相关操作、处理启动日志以及利用工具获取和处理数据集等内容,涵盖了多方面实用的Linux文本处理与数据分析相关知识。

2024-11-27 16:31:19 878

原创 在vim编辑器中解决plug-vim插件问题 E492: 不是编辑器的命令: PlugInstall

文章围绕vim执行“PlugInstall”显示“E492: 不是编辑器的命令”问题展开。先是介绍常见原因,如确认vim-plug是否正确安装、检查.vimrc配置文件语法、重新加载配置或重启编辑器、查看Vim版本兼容性等,接着指出关键在于vim工作路径需含plug-vim所在路径,可通过“:echo &runtimepath”检查,还分享在.vimrc文件添加“set runtimepath+=~/.vim/autoload”以包含路径的经历,因配置文件“bug”,将相关代码放文件开头再更新配置才生效,建

2024-11-24 12:24:46 2592

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除