自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 问答 (1)
  • 收藏
  • 关注

原创 【网络编程 + 数据库】select 与 epoll 核心区别详解 + SQLite 入门到 C 接口全攻略

select 与 epoll 的核心差异在于事件管理的位置、拷贝开销、触发模式和事件定位方式,epoll 在高并发场景下性能远优于 select。SQLite 是轻量嵌入式关系型数据库,支持标准 SQL 语法,通过单个文件存储数据,适合嵌入式和小型项目。SQL 语法核心围绕增删改查,条件筛选、排序、多表连接是查询的核心技能。SQLite 的 C 接口简洁易用,三个函数即可完成绝大多数数据库操作,查询操作通过回调函数获取结果。

2026-09-04 20:25:29 34

原创 网络编程学习 Day5:TCP 并发服务器模型、四大 I/O 模型与 select/epoll 多路复用详解

多线程是最直观的 TCP 并发方案,但受限于线程资源,高并发场景下必须配合线程池优化四种 I/O 模型各有适用场景:阻塞 IO 简单高效但并发弱,非阻塞 IO 轮询耗 CPU,信号驱动 IO 编程复杂,I/O 多路复用是高并发网络的核心技术select 是跨平台通用的多路复用实现,但存在数量限制和性能瓶颈,适合连接数少、场景简单的环境epoll 是 Linux 平台的高性能实现,基于事件回调与就绪链表机制,从根本上解决了 select 的效率问题,是构建十万、百万级并发服务器的基石。

2026-09-03 22:34:20 486

原创 【网络编程入门 Day3】TCP 协议核心 + HTTP 协议 + cJSON 解析实现城市天气查询项目

第三天的学习从 TCP 传输层核心机制,到 HTTP 应用层协议规范,再到落地实现天气查询项目,完整走通了「底层传输 → 应用协议 → 业务解析」的全流程。理解了 TCP 面向字节流、可靠传输的本质,以及粘包、连接管理、流量控制等核心机制掌握了 HTTP 报文结构、URL 组成与传输流程,能手写 Socket 发送标准 HTTP 请求熟练使用 cJSON 库解析 JSON 数据,掌握了从原始报文中提取业务数据的方法积累了网络编程的常见调试技巧,学会用 Wireshark 抓包验证请求与响应。

2026-09-02 20:18:51 325

原创 【网络编程 Day2】TCP 通信核心:三次握手、核心 API、C/S 架构与粘包问题全梳理

面向连接:通信前必须通过三次握手建立连接,通信结束通过四次挥手断开可靠传输:有确认机制、超时重传、排序、流量控制、拥塞控制,保证数据不丢、不乱、不重复面向字节流:数据被看作连续的字节流,没有消息边界,会出现粘包全双工:同一个连接建立后,双方可以同时发送和接收数据,两条数据流独立TCP 连接有两条独立的数据流(A→B 和 B→A),可以同时收发,互不干扰。同一个 fd 既能调用 send 也能调用 recv,这就是全双工。TCP 是面向字节流的,没有消息边界。

2026-09-01 21:36:39 576

原创 【网络编程入门 Day1】OSI 七层模型、TCP/IP 体系、IPv4 地址与 UDP 套接字基础全梳理

协议就是网络通信双方共同约定的一套标准规则,规定了数据怎么封装、怎么传输、怎么解析,只有遵循同一套协议,不同设备之间才能正常通信。网络分层的核心思想是职责分离,每层只做自己的事,通过标准接口对接,降低通信复杂度。UDP 和 TCP 没有优劣之分,场景决定选型:追求简单、低开销、能容忍丢包选 UDP;追求可靠、有序选 TCP。IP 地址的本质是网络标识 + 主机标识,子网掩码是划分两者的工具,理解网络地址和广播地址是后续组网的基础。

2026-08-31 22:40:19 485

原创 【Linux 系统编程第九天】System V IPC 全家桶:消息队列 + 共享内存 + 信号量 原理 | 函数 | 实战全解

System V IPC 是内核维护的内存对象,不属于任何进程,进程退出后对象不会自动销毁,必须手动调用接口删除。一个 key 值可以分别创建一个消息队列 + 一个共享内存 + 一个信号量数组,三者属于不同 IPC 类型,内核互不冲突。key 是 IPC 对象的「全局名称」,ID 是进程操作的「内部句柄」,类似文件名和文件描述符的关系。消息结构体第一个成员必须是 long mtype,顺序不能换,内核严格校验格式。msgsnd/msgrcv 的长度参数只算正文,不包含 mtype,否则会越界。

2026-08-29 18:14:50 527

原创 【Linux 系统编程学习日记 08】进程间通信(上):管道(无名 / 有名)与信号 核心知识点 + 踩坑总结

进程是独立的地址空间,互相之间不能直接访问对方的内存,必须通过内核提供的媒介进行数据交互,这就是进程间通信。管道:无名管道、有名管道信号:内核向进程发送事件通知消息队列:内核中的消息链表共享内存:多个进程映射同一块物理内存信号灯(信号量):进程间同步与互斥特性无名管道有名管道适用范围仅亲缘进程任意进程文件实体无,仅内核缓存有磁盘文件通信方向半双工,单根单向半双工,单根单向open 阻塞无(创建即返回 fd)读端等写端,写端等读端读写阻塞规则一致一致。

2026-08-28 21:55:58 437 1

原创 【Linux 系统编程】学习第七天:线程属性 | 互斥锁 | 死锁 | 信号量 核心知识点 + 踩坑实战

今天是系统编程学习的第七天,核心围绕多线程同步与通信展开,覆盖线程分离属性、多进程与多线程的优劣对比、互斥锁机制、死锁的产生与规避、信号量的同步 / 互斥用法四大模块。学习过程中踩了不少经典面试坑:比如信号量初值设置错误导致线程顺序错乱、误以为互斥锁是硬件级变量保护、scanf 输入带空格字符串出现缓冲区残留等。本篇把知识点、API、实战案例、踩坑避坑一次性整理清楚,方便复习。多线程:计算密集型任务、频繁数据交互、并发量高的场景(如服务器、线程池)

2026-08-27 20:42:15 603

原创 【Linux 系统编程 Day6】waitpid 精准回收、exec 函数族与环境变量、线程基础核心笔记

第六天的内容完成了从进程到线程的过渡:waitpid 让进程回收更灵活精准,exec 函数族实现了进程内程序的替换,而线程则是并发编程的基础。核心要抓住「资源分配」和「调度执行」两个维度去区分进程与线程,理解函数参数背后的内存逻辑,避开入门阶段的经典坑点,为后续线程同步、并发编程打下基础。

2026-08-26 21:54:46 348

原创 【Linux 软件编程 Day5】进程核心知识全梳理:概念、命令、fork 机制与僵尸 / 孤儿进程实战避坑

循环 fork 不加 exit,进程指数爆炸子进程会继续执行循环代码,持续派生孙进程,8 次循环会产生 256 个进程,完全失控。子进程分支必须加exit(0)终止。父进程提前退出,子进程变孤儿父进程创建完子进程后直接 return 退出,部分后调度的子进程会变成孤儿进程,PPID 变为系统 init 进程 PID。需通过 wait 让父进程等待子进程全部结束后再退出。kill 命令语法错误(- 和 9 之间加空格)会报错误,正确写法为-9为连续整体,中间不能有空格。进程执行顺序不可控。

2026-08-25 20:28:57 623

原创 C 语言迷你日志系统:标准 IO 实现日志查询、筛选与统计 | 附核心知识点详解

在上一篇中我们基于open/write系统调用完成了日志写入功能,本篇我们继续完善日志系统的查询、筛选、统计三大核心功能。很多同学会困惑:为什么手写read读取日志要写复杂的leftover残留缓冲区?换成 C 标准 IO 的fgets为什么就能大幅简化代码?本文会从底层原理到代码实现一步步拆解,同时梳理等高频字符串函数的用法与坑点。perror 不能乱用perror只能用于系统调用 / 标准库函数失败后的错误打印(配合 errno),普通参数错误应该用,否则会打印无意义的系统错误信息。

2026-08-24 20:02:00 381

原创 C 语言文件 IO 学习Day03:从基础函数到实战踩坑(BMP 读取 + 词典查询)

第三天的学习核心围绕标准文件 IO 操作展开,从单字符读写到整块数据读写,再到文件位置偏移控制,最终落地到两个实战场景。这部分知识点函数多、细节碎,坑点密集,尤其字符串与指针结合的地方非常容易出错。本文按「函数大全 → 易混对比 → 实战项目 → 易错汇总」的结构整理,方便复习和避坑。

2026-08-21 21:09:48 609

原创 【C 语言标准 IO 入门】第二天学习笔记:文件操作核心函数 + 实战案例 + 踩坑合集

第二天学习 C 语言标准 IO 库,核心围绕文件打开、读写、关闭三步法展开,掌握按字符读写的核心函数,理解缓冲区机制,并结合链表完成字符频次统计实战。本文梳理所有核心知识点,整理编码过程中实际遇到的段错误、double free、统计不准等高频坑点,方便复习与避坑。文件是存放在磁盘空间中的一段数据的集合。程序运行时数据在内存中,持久化保存需要写入磁盘文件。第二天标准 IO 的核心是掌握文件指针、打开关闭、按字符读写三个核心点,理解缓冲区机制是理解输出现象的关键。

2026-08-20 20:25:55 414

原创 【Linux 软件编程入门 Day1】Shell 基础命令 + 脚本语法全梳理(附实操高频踩坑避坑)

本文是Linux软件编程学习的首日笔记,适合零基础入门者参考。内容涵盖操作系统基础概念、Linux内核架构、Shell常用命令和脚本编程入门,重点讲解了Shell脚本的分支语法和常见避坑点。文章详细介绍了Linux五大核心功能、Shell命令分类使用、三类变量定义、条件判断语法差异,并针对初学者的常见错误(如空格缺失、引号使用不当、逻辑顺序错误等)提供了解决方案。通过多个实战脚本示例,帮助读者快速掌握基础Shell编程技能。笔记特别强调了Linux"一切皆文件"的设计思想和Shell语法

2026-08-19 19:26:30 481

原创 【数据结构学习 Day6】哈希表原理 + 六大经典排序算法全解

本文系统讲解了哈希表与经典排序算法两大核心数据结构。哈希表部分详解了链地址法的C语言实现,包括冲突处理、负载因子等面试考点。排序算法章节对比分析了冒泡、选择、插入、希尔和快速排序,涵盖原理、复杂度、稳定性及代码实现,特别强调了快速排序的分治思想和优化方向。全文采用“概念+代码+面试要点”的三段式结构,既适合初学者系统学习,又能帮助面试者快速复习核心考点,最后总结了各类排序算法的适用场景与优化策略。

2026-08-18 21:25:36 321

原创 【数据结构学习 Day5】二叉树核心概念 + 链式实现全解(前 / 中 / 后序 + 层序遍历 + 踩坑汇总)

本文系统梳理了树形结构与二叉树的完整知识体系,重点讲解了二叉树的C语言实现方法。内容包括:1. 树形结构基础概念(节点类型、层级关系、子树与森林);2. 二叉树核心特性(完全/满二叉树、遍历方式、重要性质);3. 链式存储实现(结构体定义、递归创建、三种DFS遍历、BFS层序遍历、高度计算与内存释放);4. 典型问题排查(段错误、输出异常等指针操作陷阱)。通过理论结合实践的方式,帮助读者掌握二叉树的存储原理与递归编程思想,并规避常见开发错误。文中所有代码均附详细注释,可直接用于项目开发。

2026-08-17 21:21:48 351

原创 【数据结构学习 Day4】栈与队列核心概念梳理 + 顺序栈 / 链式栈 / 链式队列完整实现(附踩坑排错指南)

数据结构学习进入第四天,今天的核心内容是操作受限的线性表 —— 栈和队列。相比于可以在任意位置插入删除的普通线性表,栈和队列仅允许在指定端点进行操作,是算法与工程开发中非常基础且高频使用的数据结构。本文整理了栈的核心概念、顺序栈与链式栈的完整代码实现、队列基础概念与链式队列实现,同时汇总了今天实操中踩过的经典坑点,方便复盘和后续查阅。seqstack.h// 指向数据区首地址int tLen;// 栈的最大容量int Top;// 栈针,指向下一个可入栈的位置} Stack_t;

2026-08-15 18:44:49 407 1

原创 数据结构入门 Day3:双向链表与双向循环链表全解析(核心操作 + 易错坑点 + 三类链表对比)

今天是数据结构学习的第三天,在掌握单向链表的基础上,我们进阶学习了双向链表与双向循环链表,核心聚焦「创建初始化、头插、尾插、销毁」四大基础操作。本文结合实操中踩过的编译、逻辑坑点,梳理完整知识点,并横向对比单向链表、双向链表、双向循环链表的异同提示:以下是本篇文章正文内容,下面案例可供参考双向链表的核心是每个节点拥有两个指针域pNext:指向后继节点(下一个节点)pPre:指向前驱节点(上一个节点)相比单向链表,它支持双向遍历,插入删除时无需额外遍历查找前驱节点,操作灵活性更高。

2026-08-14 21:06:53 567

原创 【C 语言数据结构】单向链表核心操作全解析 + 实战踩坑总结

本文系统介绍了C语言中带头结点单向链表的实现与核心操作。通过对比数组与链表的优缺点,阐述了链表的适用场景。详细讲解了创建、判空、头插/尾插、遍历、反转、冒泡排序、查找、删除和销毁等操作的代码实现与关键逻辑。特别针对指针操作顺序、空指针解引用、断链等常见问题提供实战踩坑指南。文章采用模块化设计,包含完整头文件定义,强调二级指针在链表销毁中的重要性,并总结了"先存后移,先连后接"等操作口诀,适合作为链表编程的入门参考资料。

2026-08-13 21:54:38 288

原创 【数据结构入门 Day1】顺序表全解析 + 实战踩坑汇总

数据结构是嵌入式 / 后端开发的核心基础,第一天从线性表 —— 顺序表数据结构基本概念与分类顺序表的底层原理与结构体设计增、删、改、查、创建、销毁全套接口实现手写代码高频踩坑与避坑指南顺序表底层是连续数组,随机访问快,插入删除需挪动元素核心操作围绕clen展开,所有增删必须同步更新有效长度遍历类函数严禁在循环内提前 return,否则会终止遍历二级指针的核心作用:修改外部指针变量本身,常用于销毁置空边界判断是高频考点:插入位置、数组下标、空表空指针都要做防护。

2026-08-12 21:26:42 445

原创 C 语言学习笔记Day16 | 内存管理、调试技巧与库文件全梳理

malloc 与 free 必须成对出现:只申请不释放会造成内存泄漏;重复 free 会触发程序崩溃。栈区空间不能用 free 释放:free 只能释放堆区内存,释放栈区变量会直接报错。字符串函数越界风险getsstrcpy等无长度限制的函数存在缓冲区溢出风险,优先使用带长度限制的安全函数。野指针访问:free 释放后的指针、未初始化的指针,都不能直接访问,否则会触发段错误。

2026-08-06 21:25:27 558

原创 【C 语言入门第 15 天】共用体、枚举、位运算核心知识点梳理

/ 定义共用体类型int a;char b;float c;// 定义共用体变量MONDAY, // 默认值 0第一个枚举常量默认值为 0后续常量的值默认 = 前一个常量的值 + 1支持手动指定某个常量的值,后续常量依旧在前一个基础上 +1循环变量忘记更新导致死循环:手写反转、遍历函数时,while 循环内只写业务逻辑,忘记start++end--,导致循环条件永远成立,程序直接卡死。边界条件遗漏:处理字符串、数组时,循环终止条件草率写成< len。

2026-08-05 20:54:55 565

原创 C 语言入门第十四天:二维字符数组、指针数组与结构体核心知识点

/ 定义:5行32列,最多存5个字符串,每个字符串最长31个有效字符// 定义:包含5个char*指针的数组struct 结构体名 {数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;// ...注意末尾分号不可省略。先定义类型,再定义变量(最常用)// 结构体数组定义类型同时定义变量int age;} s1, s2;传参逻辑:区分数组指针与指针数组,掌握二维字符数组、结构体的传参规则结构体基础。

2026-08-04 20:05:04 480

原创 【C 语言入门学习笔记 Day13】指针高阶:void 指针、二级指针、指针数组与数组指针、二维数组传参全解析

q:二级指针本身,存储指针变量p的地址*q:解引用一次,得到p的值,等价于p,即变量a的地址**q:解引用两次,得到a的值,等价于*paint *a[5];解析:变量a先和[5]结合,说明a是长度为 5 的数组;数组内每个元素的类型为int *内存大小:64 位系统下每个指针占 8 字节,整个数组共占5 * 8 = 40字节解析:括号让p先和结合,说明p是一个指针;它指向的是一个长度为 5 的 int 型一维数组内存大小:指针变量本身占 8 字节(64 位),它指向的数组空间占 20 字节。

2026-08-03 19:46:43 509

原创 【C 语言入门学习笔记 Day12】指针进阶:字符数组传参、指针函数、函数指针与 const 指针全解析

字符数组传参同样退化为首元素指针,借助'\0'结束符可实现下标、指针两种遍历方式。指针函数本质是函数,返回指针;函数指针本质是指针,指向函数,核心看和括号的位置。指针函数严禁返回局部变量的地址,避免野指针问题。const 指针核心看修饰对象:修饰*p则内容不可改,修饰p则指向不可改,双重 const 则都不可改。

2026-08-01 19:32:02 531

原创 【C 语言入门学习笔记 11】指针核心知识点全梳理:从基础概念到数组传参

本文为 C 语言第十一天的学习内容,系统整理指针模块的全部核心知识点。指针是 C 语言的灵魂,它不仅能让程序更加简洁高效,还支持直接访问内存空间,是底层开发、嵌入式开发不可或缺的核心能力。本文将从地址、指针的基础概念出发,逐步讲解指针运算符、指针变量、指针运算、函数传参以及数组与指针的关联。提示:以下是本篇文章正文内容,下面案例可供参考数据类型 *变量名;int *p;// 指向int类型的指针变量char *p;// 指向char类型的指针变量float *p;// 指向float类型的指针变量。

2026-07-31 19:32:40 390

原创 【C 语言入门】Day10 函数传参、递归函数与预处理命令全解析

提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。全局重名 printf("局部范围内:num=%d\n", num);// 优先使用局部变量 } int main() { test();printf("全局范围内:num=%d\n", num);return 0;在定义一个函数时,函数体内直接或间接调用函数本身,这种函数称为递归函数。

2026-07-30 19:53:24 392

原创 【C 语言入门】Day09 二维字符数组、函数基础与变量存储类型全解析

二维字符数组的核心作用是存储和操作多个字符串,可以理解为 “字符串数组”—— 每一行存放一个独立的字符串。char 数组名[行数][每行最大字符数];// 共5行,每行最多存31个有效字符 + 1个结束符'\0'注意:每行长度要预留一个位置给字符串结束符\0,因此 32 字节的行最多存放 31 个有效字符。返回值类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...)函数体语句;return 返回值;二维字符数组本质是字符串数组,str[i]代表第 i 行字符串,str[i][j]

2026-07-29 19:54:11 458

原创 C 语言入门学习Day08:字符数组与字符串全解 + 二维整型数组核心知识点

今天是 C 语言学习的第八天,核心内容围绕字符数组与字符串操作和二维整型数组展开。C 语言没有原生的字符串类型,所有字符串的存储、遍历与修改都依赖字符数组实现,这是后续 C 语言字符串处理、指针操作的核心基础;同时我们也从一维数组延伸到二维数组,学习其定义、存储规则与初始化语法。提示:以下是本篇文章正文内容,下面案例可供参考数据类型 数组名[元素个数];// 定义一个可存放20个char类型元素的数组元素个数必须是常量,不能用变量指定数组长度数组空间必须足够,要预留 1 个字节存放字符串结束标志。

2026-07-28 19:38:32 366

原创 C 语言入门学习 Day07—— 数组(一维数组基础与经典算法实现)

今天是 C 语言学习的第七天,核心内容为数组。数组是 C 语言中最基础、最常用的复合数据类型,是批量处理同类型数据的核心工具。本文将从一维数组的定义、访问规则、内存存储、初始化方式入手,结合可运行代码实战讲解数组最值查找、元素倒置、冒泡排序、选择排序等经典算法,夯实数组编程基础。数组是一组相同类型数据的有限集合单一性:数组内所有元素的数据类型必须完全一致连续性:数组在内存中占用一段连续的存储空间有序性:元素按固定顺序排列,通过下标可以精准定位单个元素数据类型 数组名[元素个数];

2026-07-27 19:12:48 433

原创 C 语言入门学习Day 06:循环结构核心知识点全梳理

本文为 C 语言第六天学习内容整理,系统梳理循环结构的四类语法、执行逻辑与使用场景,以及配套的循环辅助控制语句,纯知识点汇总,适合入门复习与快速查阅。当程序需要重复执行同一段代码,或是处理有规律的批量逻辑时,就需要使用循环结构。它是程序中实现批量计算、重复逻辑的核心语法,能大幅简化冗余代码。while循环for循环do...while循环goto语句(特殊场景使用)循环结构选用建议循环次数明确、有固定递增逻辑,优先使用for循环循环次数不明确、需要先判断再执行,使用while循环。

2026-07-25 18:36:12 655 1

原创 C语言学习Day 05|流程控制(顺序、分支、if、switch、三目运算符)

今天是 C 语言学习第五天,本次学习内容直接从流程控制展开。流程控制用来规定代码的执行走向,分为顺序、分支两大基础结构,其中关系运算符、逻辑运算符、三目运算符、if 多形式分支、switch 开关语句是实现选择性代码执行的核心语法。本文完整梳理课堂知识点与配套练习,同时记录手写代码时频繁踩坑的问题,方便后续复习查阅。知识点总结顺序结构是程序默认执行逻辑;关系、逻辑运算符提供真假判断依据;三目运算符简化简单二选一逻辑;if 语句支持单层、阶梯、嵌套多场景判断;switch 适合多常量等值判断场景。

2026-07-24 18:49:04 508

原创 C 语言Day04学习笔记:格式化 IO(printf/scanf)+ 字符串 IO(puts/gets

经过前几天 Linux 环境搭建、gcc 编译流程、C 语言基础数据类型、运算符、字符 IO 学习后,第四天我们聚焦格式化输入输出核心函数 printf、scanf,同时补充专门处理字符串的 puts、gets 函数。提示:以下是本篇文章正文内容,下面案例可供参考printf、scanf 是格式化交互核心,适用于数字、字符、字符串混合输出输入,依靠占位符匹配数据类型;printf 支持域宽、对齐、小数保留等格式化修饰,排版更美观;scanf 牢记普通变量加,字符输入前加空格过滤空白;

2026-07-23 19:03:50 373

原创 【Linux+C 语言学习 Day03】C 语言变量、类型转换、运算符与字符 IO 全解

前两日学习了 Linux 基础操作、gcc 编译流程与 C 语言基础数据类型,今天从变量知识点开始,完整学习变量规范、表达式运算、隐式 / 强制类型转换、全部常用运算符,以及 stdio 库下字符输入输出函数,本篇整理全部学习内容与个人学习总结。变量是程序运行过程中值可以发生改变的量,程序运行时会在内存中开辟专属存储空间,通过变量名读写内部数据;变量必须先定义,后使用。// 整型变量short var;int var;long var;// 浮点型变量float var;

2026-07-22 18:59:26 279

原创 Linux+C 语言零基础 Day2|拆解 GCC 四层编译流程,吃透 C 语言全部基础数据类型

Linux+C 语言零基础 Day2|拆解 GCC 四层编译流程,吃透 C 语言全部基础数据类型

2026-07-21 18:06:28 361 2

原创 零基础 Linux 第一天学习笔记!虚拟机快捷键 + 常用命令全整理

刚入门 Linux 看着黑框终端无从下手?本篇整理初学第一天全部核心知识点,区分普通用户与 root 权限、详解文件权限指令、配套完整实操练习,vi 写代码 + gcc 编译流程全覆盖,附带新手踩坑总结,零基础直接复制命令练习!

2026-07-20 18:22:59 416 2

空空如也

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

TA关注的人

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