自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从零实现C语言环形缓冲区

环形缓冲区并不复杂,它解决的其实是一个很实际的问题:生产者和消费者的工作节奏不同。通过数组保存暂时无法处理的数据,再利用两个循环移动的索引,我们就能重复利用内存空间,避免频繁搬移数据。这也是它经常出现在串口接收、DMA 数据处理和 FreeRTOS 任务通信中的原因。需要注意的是,上面的代码实现了基本的环形缓冲区逻辑,但没有处理多任务或中断并发访问的同步问题。真正接入 STM32 工程时,还需要结合具体的生产者、消费者关系进行设计。

2026-10-24 14:48:41 312

原创 计数法讲解——如何查找数组或字符串中仅出现过一次的值

计数法是一种通过统计元素出现频率来解决问题的方法,常用于处理数组或字符串中查找唯一值、重复值或高频值等场景。核心思想是利用哈希表(或数组)记录每个元素的出现次数,再根据统计结果筛选目标数据。计数法并不是代码层面非常难理解的一种算法,但确实算法思想层面很难想到的一种方法,因为这涉及到了算法中利用空间换时间的一种非常反直觉的用法。好在只要牢记这种思想,在遇到计数问题的时候就能很轻松的解决问题。

2026-05-29 17:13:17 349

原创 链式二叉树层序遍历实现

在二叉树的遍历方式中,一共有两类,分别是前、中、后序遍历(DFS)和层序遍历(BFS):本质是“一竿子插到底”,沿着一条路径走到尽头再回头。它模拟的是过程,天然适合处理需要先处理子树再处理根的问题(如计算高度、判断平衡)。:本质是“逐层扫描”,一层层向外扩展。它模拟的是过程,核心价值在于能。在处理问题的时候,有着比较明显的优势。

2026-05-19 14:50:16 327

原创 合并两个有序数组问题的思考

给你两个按排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你nums2到nums1中,使合并后的数组同样按排列。最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。

2026-05-06 12:03:44 482

原创 顺序表“尾插”操作感悟

这完美地对应了——当你们创建新的、足够强烈的共同经历时,那些新的记忆并不会删除旧的,但它们会让旧的记忆慢慢褪色、失真,就像被反复覆盖的磁盘,旧数据的轮廓变得越来越难以完整读取。这像极了人的记忆:多少往事其实还完好地存放在脑海深处,没有刻意销毁,只是边界一收,它们就退出了“当下”,成了潜意识的暗物质。那个被“删除”的数值,依然躺在原来的内存单元里,0和1的排列纹丝不动,物理层面完好无损。那些一起看过的晚霞,争吵的缘由,甚至枕边的发香,都还清晰地刻在你的神经元的物理连接里。,并存入全新的人格、体温和故事。

2026-05-05 15:49:42 461

原创 深度解析如何实现“判断字符串A是否为字符串B旋转之后的结果”

对于任何一个编程问题,首先要考虑的都是如何建立解决这个问题的万用模型,之后才是想办法实现这个模型。建立的模型不同,代码实现的方式也会有天差地别。所以对于一个程序员来说,代码能力只是基础,分析问题并建立解决模型的能力才是关键。前面两部分完成后,这个功能就能实现了,但是要考虑到边界问题带来的bug,例如当字符串B的长度小于A时,肯定不能由A旋转得来,但是输入程序的话,有可能会得出1的结果,所以这里要注意一下。对于这个问题,经典解法就是字符串B自我拼接一次,之后检验字符串A是否为拼接串的子串。

2026-04-19 22:34:21 202

原创 分享一下个人对于函数栈帧的创建逻辑的看法

今天学了函数栈帧的创建,确实很难。主要难点不在于理解整个过程,而在于对于一些数据还有细节操作的理解。自己画图详细复盘以后,感觉思路清晰了很多。所以发个文章整理一下思路,也顺便给各位分享一下。

2026-04-12 10:42:57 443

原创 三子棋实现的简单思路

当棋盘设定好以后,落子其实还挺简单的,只要根据输入的位置,把二维数组中的空格换成棋子就好。这里玩家落子需要防止重复以及错误输入问题,而机器人落子只要随机选择一个空格即可,后续可以优化一下机器人落子的逻辑。之后就是按照顺序,一行一行打印,这里需要注意,为了让棋盘更好看,竖着的分割线有一部分是跟数组在同一行打印的。也就是说这里一共要打印五行,三行数据两行分割线。构建棋盘本身可能并不难,但是涉及落子显示的问题可能一时间会想不明白怎么实现,其实只要在二维数组中预留好空格,然后在落子的时候用棋子替换掉空格就好,

2026-04-10 17:49:07 225

原创 汉诺塔问题的小白想法

有时候还会修一些bug,最多的就是传送带上的bug,要么就是线路没有规划好导致本不该出现在这条线路上的能源方块出现了太多,要么就是没规划好这条线路上不同车间对资源的需求,导致蓝色能源都不够,而红色能源都用不完。在学C之前,我特别喜欢玩一款叫做戴森球的游戏,因为那个游戏里我可以用自己的逻辑思考去达成自己想要的目标,例如实现不同能源生产之间的协同,最大化资源产出,实现前后级资源输出与输入的自动链条。编程的魅力,既在于它能够实现现实中的一切目的,也在于它自身逻辑自洽又充满无限可能的环境。

2026-04-08 14:06:43 274

原创 世界很自由

如果说Ai是以语言生成的方式诞生了机械的灵魂,那嵌入式大概就是在用泥捏的方式去塑造工具的智能,这么想想挺有意思的,所以就打算开始这么做了。最近突然想换个行业,打算去做嵌入式后端,但是一窍不通,所以今天开始从C开始学了。给自己半年的时间吧,不长也不短,来探索一个人生的未知领域。

2026-04-03 20:12:15 28

空空如也

空空如也

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

TA关注的人

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