- 博客(21)
- 收藏
- 关注
原创 200行C语言实现消消乐小游戏(附完整代码)
通过这200行左右的代码,初步实现了消消乐游戏的基本框架,包括界面初始化、资源加载、游戏数据初始化、图形映射以及简单的交互逻辑。后续可进一步完善,增加游戏音效、优化界面等,丰富游戏功能。
2025-04-17 20:14:38
795
原创 Linux进阶篇:网络编程
基于用户态的轻量级线程,切换开销远小于线程,通过协程调度器实现高并发,如libco、ucontext等库,适用于I/O密集型场景。服务端: socket() → bind() → listen() → accept() → 收发数据 → 关闭套接字。TCP是字节流传输,易出现粘包,解决方法:固定消息长度;多进程:通过 fork() 创建子进程处理客户端连接,进程间独立,稳定性高,但创建/切换开销大。TCP收发: read() / write() 、 recv() / send() ,基于。
2025-12-29 20:22:09
807
原创 Linux进阶篇:线程
线程是进程内的执行单元,是操作系统调度的基本单位,一个进程可包含多个线程,所有线程共享进程的地址空间(代码段、数据段、堆等),仅拥有独立的栈空间和寄存器上下文。轻量级:线程创建与切换的开销远小于进程资源共享:线程间可直接访问进程的全局变量、文件描述符等资源并发执行:多个线程可在同一进程内并发执行,提高程序执行效率。
2025-12-25 10:32:32
881
原创 Linux进阶篇:信号与进程间通信
本文重点讲解了Linux中两个核心的进程协作机制:1. 信号:是进程间的异步通知方式,通过signal()注册处理函数,支持忽略、自定义、默认三种处理策略。2. IPC机制:管道适合简单的流式数据传递(无名管道限亲缘进程,有名管道可跨进程);共享内存是效率最高的IPC方式,但需配合信号量保证同步;信号量通过PV原语解决临界资源竞争问题,是多进程同步的核心工具。
2025-11-27 09:54:49
1010
原创 Linux进阶篇:内存管理
触发拷贝:当任意一个进程修改内存页时,MMU检测到“写只读页”的异常,内核会为该页分配新的物理页框,将原页数据拷贝到新页,再更新页表映射;初始状态: fork() 创建子进程后,父子进程共享同一物理内存页(页表中逻辑页映射到同一物理页框),但页表标记该页为“内存浪费:程序需要连续内存块,若内存中只有小块空闲,即使总空间足够也无法分配。拷贝内存页,减少了 fork() 的资源开销,是Linux支持高并发进程的关键优化之一。中 &a 是逻辑地址),内核通过页表将进程的逻辑地址转换为物理地址,完成数据写入。
2025-11-07 17:09:52
672
原创 Linux进阶篇:进程
多进程(如父子进程)中子进程优先用 _exit() ,避免父进程资源被意外清理。作用:父进程通过 wait() 或 waitpid() 回收子进程资源,避免子进程成为“地址空间:子进程复制父进程的地址空间(代码段、数据段、堆、栈等),但现代Linux采用。特点:若 exec 调用成功,当前进程的代码段、数据段、堆、栈会被新程序替换,且。(3GB):分为代码段、数据段、堆、栈等区域,进程仅能访问自己的用户空间。”(子进程终止后,父进程未回收其PCB,导致资源泄漏)。fg %进程编号 :将后台进程调至。
2025-11-04 17:32:03
846
原创 Linux基础篇:GDB调试
GCC(GNU Compiler Collection)是Linux下最常用的编译器,它将源码编译为可执行文件需经历预处理、编译、汇编、链接四个阶段。1. 预处理阶段(-E) 命令: gcc -E hello.c -o hello.i 作用:处理宏定义( #define )、头文件包含( #include ),展开所有预处理指令。生成 .i 文件,内容是“纯C代码”(无预处理指令)。2. 编译阶段(-S) 命令: gcc -S hello.i -o hello.s
2025-11-02 19:05:34
455
原创 Linux基础篇:Shell脚本
chmod 777 是赋予文件最高权限的操作:第一位 7 ,文件所有者(user)的权限( r=4 、 w=2 、 x=1 , 7=4+2+1 即读、写、执行);条件运算符: -gt (大于)、 -lt (小于)、 -le (小于等于)、 -ge (大于等于)、 -eq (等于)、 -ne (不等于);逻辑运算符: -a (与)、 -o (或)。执行 chmod 777 文件名.sh ,赋予脚本满权限(可读、可写、可执行);需求:输入n和a,求 a + aa + aaa + ... (共n项)的和。
2025-10-30 16:36:20
418
原创 Linux基础篇:文件操作
本文介绍了Linux系统常用文件操作命令,分为基础操作、文件权限和高级操作三部分。基础操作包括文件创建(touch)、内容查看(cat)、文件定位(which/type)和查找(find);文件权限部分详解了chmod、umask和chown命令的使用方法;高级操作涵盖文件复制/移动/删除、压缩解压(tar)、文件对比(cmp)、分屏查看(more)等命令。文章还解释了内置命令(如cd)与外部命令的区别,以及批量修改权限等实用技巧,为Linux文件管理提供了全面的操作指南。
2025-10-10 19:13:23
660
原创 Linux基础篇:基础命令
文章介绍了Linux系统的核心操作命令和目录结构。主要内容包括:1)常用文件/目录操作命令;2)Linux树形目录结构及各目录功能;3)权限管理的两种表示方法;4)vi编辑器的三种模式切换及基本操作流程。
2025-09-25 22:50:12
355
原创 最短补全词问题
LeetCode 748题要求找出满足补全条件的最短单词。解题步骤:预处理字符串,提取字母并转为小写;统计字母频次需求;遍历单词数组,验证是否满足字母需求频次,并记录最短匹配词
2025-09-25 22:07:23
955
原创 可以输入的最大单词数
对于固定范围的字符检查,使用数组作为查找表是经典优化技巧,这种方法可以扩展到其他类似问题,比如检查单词中是否包含特定字符集合,统计满足某种字符约束条件的单词数量,处理多字符编码或特殊符号的情况。题目推荐:【LeetCode 824】山羊拉丁文,【LeetCode 1455】检查单词是否为句中其他单词的前缀,【LeetCode 2047】句子中的有效单词数。
2025-09-16 18:12:23
684
原创 找出字符串中第一个匹配项的下标
本文介绍了字符串匹配问题,要求在haystack字符串中查找needle字符串首次出现的位置。通过暴力匹配法实现,核心思路是逐个字符比较并在匹配失败时回溯。
2025-09-15 12:41:16
373
原创 合并两个有序链表
本文介绍了合并两个升序链表的两种方法。基础实现采用迭代方式,通过比较节点值逐个连接较小节点,最后处理剩余节点。优化版本使用递归,直接比较头节点并递归处理后续节点。
2025-09-14 22:50:49
338
原创 有效的括号
关键知识点:栈数据结构的应用,括号匹配的算法思想,边界情况处理的重要性,代码优化的技巧。相关LeetCode题目:22 括号生成 - 生成所有有效的括号组合,32 最长有效括号 - 找最长的有效括号子串,856 括号的分数 - 计算括号字符串的分数。
2025-09-11 22:53:46
239
原创 C语言实现校园导航系统(附完整代码)
本文介绍了一个校园导航系统的设计与实现。系统采用三层架构(数据层、算法层、表示层),提供地图显示、场所查询、路径搜索和校园跑路线推荐等功能。数据层使用邻接表存储校园场所和路径信息;算法层实现DFS全路径搜索和Dijkstra最短路径算法;表示层支持图形界面和命令行交互。系统新增了图书馆座位预约功能,并优化了路径推荐逻辑。测试结果表明,系统能准确显示校园地图、查询场所信息、提供多种路径方案和推荐跑步路线。该系统为校园导航提供了便捷的解决方案,具有良好的实用性和扩展性。
2025-07-02 17:08:07
672
原创 C语言核心篇: 文件
本文介绍了C语言文件操作的核心概念与技术:1. 文件路径分为绝对路径和相对路径;2. 格式化输出函数sprintf的使用方法及其与文件操作的结合;3. 标准I/O流操作及文件定位函数(fseek/ftell);4. 文件类型分类与打开模式选择;5. 文件操作基本流程,包括fopen、fread/fwrite、fclose等关键函数的使用。这些内容涵盖了C语言文件处理的基础知识,为程序设计中的文件读写操作提供了技术指导。
2025-06-03 00:08:23
1029
原创 C语言核心篇:动态存储(malloc)
动态内存分配解决了栈区空间不足(仅1M)导致程序崩溃的问题。动态存储函数包括malloc分配内存、calloc初始化内存、realloc调整大小以及free释放内存。合理使用动态内存可优化程序性能,避免资源浪费。
2025-06-01 21:33:02
867
原创 C语言核心篇:结构体(struct)
用户自定义的数据类型,允许将不同类型的数据组合在一起//设计结构体 未分配存储空间//成员变量int age;//struct关键字 定义结构体变量 分配存储空间(*p).成员名 p->成员名int age;//等价于(*p).age=20。
2025-05-22 21:33:27
1017
原创 C语音核心篇:运算符 数组 指针
数组类型:相同数据类型的集合,开辟一块连续的内存空间数组的定义与初始化//元素类型为随机值//其余为默认值0//10个默认值。
2025-05-22 08:56:55
830
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅