自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言之文件操作

基础核心:文件操作遵循 “打开 - 操作 - 关闭” 流程,fopen返回的FILE*是操作入口,必须检查打开 / 关闭是否成功;读写选择:文本文件优先用(逐字符 / 行),二进制文件优先用(按块,效率最高);模式关键:区分文本模式(无b)和二进制模式(有b),w清空、a追加、r只读是最常用的基础模式。以上便是我对于C语言中的文件管理的见解,欢迎各位一起探讨。

2026-02-11 20:00:00 600

原创 C 语言之动态内存管理:从函数到内存布局

malloc(分配未初始化内存)、calloc(分配并初始化内存)、realloc(调整内存大小)、free(释放内存),四者需配套使用且必须检查返回值。内存分区核心:栈区自动管理(小而快)、堆区手动管理(大而灵活)、全局区存储全局 / 静态变量、代码区存储执行指令。避坑关键:动态内存必须手动释放、释放后置空指针、避免越界访问和重复释放以上便是我对于C语言中的动态内存管理的见解,欢迎各位一起探讨。

2026-02-11 07:14:54 612

原创 C 语言之复合数据类型:结构体、联合体、枚举

定义结构体类型(相当于创建一个新的 “数据模板”)和实例化结构体变量(根据模板创建具体对象)。#include <string.h> // 用于strcpy// 第一步:定义结构体类型(模板)// struct是关键字,Student是结构体名(可自定义),{}内是成员列表// 成员可以是不同类型的变量// 姓名int age;// 年龄// 成绩// 注意:结构体定义末尾必须加分号// 第二步:实例化结构体变量(创建具体对象)// 方式1:定义时直接初始化。

2026-02-10 20:00:00 664

原创 C 语言之字符串解析:从基础到常用函数

/ 普通字符数组:仅存储5个字符,无'\0'// 字符串:自动在末尾添加'\0'(数组长度6 = 5个字符 + 1个'\0')// 简化写法:直接用双引号赋值,编译器自动补'\0'// 数组长度自动为6// 验证:输出字符数组和字符串的区别printf("普通字符数组 arr1:");// 无'\0',printf会持续读取内存直到遇到'\0',出现乱码printf("字符串 arr2:%s\n", arr2);printf("字符串 arr3:%s\n", arr3);

2026-02-10 09:41:47 639

原创 C语言之函数

在 C 语言中,函数是由函数头和函数体组成的、可独立调用的代码块,用于实现特定功能。它可以接收零个或多个参数(输入),经过内部逻辑处理后,返回零个或一个结果(输出),且函数内部的变量和逻辑与外部代码隔离。​// 函数头:返回值类型 + 函数名 + (参数列表)返回值类型 函数名(参数类型1 参数名1, 参数类型2 参数名2, ...) {// 函数体:实现功能的代码(变量定义、逻辑处理、return语句)变量定义;逻辑处理语句;return 返回值;

2026-02-08 17:00:00 734

原创 C语言之指针:存储内存地址的变量

数据类型 *指针变量名;指针核心:指针是存储内存地址的变量,解引用用于访问地址指向的数据,取地址用于获取变量地址。关键区分数组是内存块,指针是存储地址的变量(arr[i]等价于*(arr+i)常量指针()保护内容,指针常量()保护指向指针函数是返回指针的函数,函数指针是指向函数的指针避坑指南:避免野指针 / 悬空指针(初始化置 NULL、释放后置 NULL),函数不要返回局部变量地址,指针运算要确保不越界。以上便是我对于C语言中的指针的见解,欢迎各位一起探讨。

2026-02-08 09:45:57 704

原创 C语言之数据类型

本质是告诉编译器:需要为数据分配多大的内存空间、数据能表示什么范围的值、可以进行哪些运算。

2026-02-07 16:00:00 1535

原创 C语言之控制流:选择、循环与跳转结构

选择结构if系列处理条件分支,switch处理等值判断,三目运算符简化简单二选一;循环结构while先判断后执行,do while先执行后判断,for适合固定次数循环,死循环配合break实现持续运行;跳转结构break终止循环 /switch,continue跳过当前步骤,goto无条件跳转(慎用)。以上便是我对于C语言中的控制流的见解,希望对各位有用。

2026-02-07 11:00:00 715

原创 C语言之数组

数组是具有相同数据类型、固定长度、连续存储的元素集合,每个元素通过唯一的下标(索引)标识,下标从0开始计数。数据类型、数组名、数组长度数据类型 数组名[数组长度];数据类型 数组名[行数][列数];数据类型:元素的统一类型(int、char、float 等);行数:常量 / 常量表达式,不能是变量(C99 支持变长数组,可暂时忽略);列数:同上,必须固定。// 3行4列整型二维数组// 2行5列字符二维数组// 4行2列浮点型二维数组本质:数组的数组,按行连续存储,内存地址连续;定义。

2026-02-07 07:26:55 723

原创 网络编程核心:TCP 与 Socket 并发笔记

TCP/IP 五层模型是网络编程的基础,每层都有明确的职责Socket 接口提供了网络通信的标准 API,支持 TCP 和 UDP 协议TCP 通信需要建立连接,提供可靠的数据传输多连接处理可以通过多进程或多线程实现,各有优缺点:多进程:隔离性好,但资源消耗大多线程:资源消耗小,但需要注意线程安全。以上便是我对于网络编程相关知识的见解,欢迎大家来讨论。

2025-11-30 14:32:48 773

原创 Linux多线程的核心概念

互斥锁是一种 “二元信号量”,用于保证同一时刻只有一个线程能访问共享资源,本质是通过 “加锁 - 解锁” 机制保护临界区(访问共享资源的代码段)。​条件变量是配合互斥锁使用的 “等待 - 通知” 机制,用于线程间传递 “条件满足” 的信号,避免线程通过 “忙等”(反复加锁尝试)浪费 CPU 资源。​。

2025-11-19 18:09:15 665

原创 Linux压缩技术:算法原理与核心逻辑解析

同时,LZMA2 结合了区间编码(一种比霍夫曼编码更高效的熵编码方式),对高频数据的编码更紧凑,因此能实现极高的压缩比,但也因为要处理更大范围的数据和更复杂的编码,压缩和解压速度相对较慢。当窗口外出现与窗口内重复的字符串时,用“ 距离(窗口内重复字符串的位置) + 长度(重复字符串的长度) ”替代该字符串,从而减少重复内容的存储。例如,对字符串“banana”,BWT 会生成所有可能的循环移位版本(如“anana b”“nana ba”等),然后按字典序排序这些移位后的字符串,取最后一列作为输出。

2025-11-12 14:26:40 618

原创 信号机制笔记:概念、类型与处理流程

信号是 Linux 系统中进程间异步通信的一种机制,用于通知进程发生了某种事件(如中断、错误、用户请求等)。信号可以打断进程的正常执行流程,促使进程处理相应事件。

2025-11-08 18:48:58 992

原创 进程的通信——管道

进程是操作系统中独立的执行单元,拥有各自独立的地址空间,进程间通信是指不同进程之间传递数据、交换信息的机制。IPC 的核心需求数据传输:进程间传递数据(如从 A 进程发送文件内容到 B 进程)。同步:协调多个进程的执行顺序(如控制 A 进程完成后再执行 B 进程)。共享资源:多个进程安全访问共享资源(如避免同时写入同一文件)。通知事件:一个进程向另一个进程发送事件信号(如进程终止通知)。IPC 机制的分类管道类:匿名管道、命名管道(FIFO)。信号类:信号(Signal)。

2025-11-07 16:56:14 542

原创 基础IO的本质与核心操作

3. file 结构体:存储文件的实际信息(如文件指针、权限、inode 等),多个文件描述符可指向同一个 file 结构体(如父子进程共享文件)1. task_struct (进程控制块):进程的核心数据结构,其中包含 files_struct 指针,指向该进程的文件描述符表。"r+"/"w+"/"a+":读写模式("r+" 保留原内容,"w+" 截断原内容,"a+" 追加时只能在末尾写。"rb"/"wb"/"ab":二进制模式(避免换行符转换,适用于非文本文件如图片、音频)

2025-11-07 16:37:37 272

原创 关于进程控制的认识

底层硬件:网卡,硬盘,其他这样设计的好处:1. 安全与稳定:防⽌应⽤程序胡作⾮为,直接操作硬件会导致系统崩溃或被恶意利⽤。2. 抽象与统⼀:应⽤程序⽆需关⼼具体硬件细节(⽐如不同型号的硬盘),统⼀由操作系统搞定。3. 权限控制:操作系统可以检查每次请求的合法性。下面了解一下进程的最重要的几个控制指令。

2025-10-29 21:57:38 987

原创 Git如何将文件上传到远程仓库的补充

如果要进行文件的修改(如果两个分支同一个文件的内容有冲突·),只需要将其中的一个的内容更改后再进行 git add //git commit //git push操作来完成冲突的解决。首先由工作区内的.md文件通过 git add进入暂存区临时存储,再由 git commit 将文件提交到客户端上,再通过 git push 将本地仓库的文件或者代码推送到远程仓库。以上就是对于git 将文件传输到远程仓库的过程的补充和具体内容的见解。一般,我们使用的是master分支/main分支。

2025-10-29 17:51:46 293

原创 计算机体系结构&程序虚拟地址空间&进程

计算机体系结构&程序虚拟地址空间&进程

2025-10-23 15:32:54 1013

原创 初步认识Git与Github

对与linux的学习以及VMware的Ubuntu的使用来说,GitHub可以很好的帮助你快速的积累经验。现在让我带你认识一下Git与Github吧。

2025-10-22 13:13:59 236

原创 C语言之运算符的见解

也可以按照数据类型进行分类:分为数值型,字符型,布尔(逻辑运算)型。还可以按照功能进行分类:算数运算符,关系运算符,逻辑运算符,位运算符,赋值运算符,其他运算符。本次对运算符的梳理暂告一段落,后续我们还将深入编程世界,解锁更多核心知识,欢迎持续关注,一起探索更多编程奥秘。,:逗号运算符,从左向右进行计算每个表达式的值,并返回到最后一个表达式的值。运算规则:在二进制数的右侧补0。位运算符都是在二进制的基础上进行的计算,所以要先将数化为二进制的形式再进行计算。对条件表达式进行判断,如果为真,执行表达式1;

2025-03-29 12:32:12 615

空空如也

空空如也

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

TA关注的人

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