
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
好,现在我们撸起袖子开始写代码。第一步,我们需要把一个普通的数据变量"包装"成一个可以被观察的对象。在面向对象语言里,这叫 Observable;在我们的 C 语言实现里,我们叫它 Subject。有了被观察者,接下来我们需要实现具体的观察者。这里要用到我们在第 9 篇讲过的 C 语言多态 技巧:让不同的观察者(LCD、Flash、LED)共享同一个 Observer 接口,但各自实现不同的行为。
不知道你有没有遇到过这种情况:项目初期,你写了一个简洁的串口数据处理函数,几十行代码,逻辑清晰。三个月后,这个函数膨胀到了 500 行,嵌套了七八层 if-else,你自己看着都头疼。每次产品经理提新需求,你就得在这坨代码里小心翼翼地"埋地雷"。改完之后祈祷别炸,测试通过了长舒一口气。这篇文章,我想跟你聊聊怎么用责任链模式来终结这种噩梦。好了,开始撸代码。Handler 1:噪声过滤器/*** @
核心要点回顾OOP 是思想,不是语法• C++ 把机关藏在编译器里,C 把机关摆在明面上• 学会 C OOP,不是为了炫技,而是为了在大型系统中获得可维护性三大支柱的 C 实现• 封装: struct + static + 不透明指针• 继承: 结构体嵌套(父类在首位)• 多态: 函数指针表(V-Table)关键技术• 向上转型:利用内存布局重叠• 虚函数表:每个对象持有方法指针• contain
核心要点回顾OOP 是思想,不是语法• C++ 把机关藏在编译器里,C 把机关摆在明面上• 学会 C OOP,不是为了炫技,而是为了在大型系统中获得可维护性三大支柱的 C 实现• 封装: struct + static + 不透明指针• 继承: 结构体嵌套(父类在首位)• 多态: 函数指针表(V-Table)关键技术• 向上转型:利用内存布局重叠• 虚函数表:每个对象持有方法指针• contain
结构体不仅仅是数据的集合,更是内存布局的蓝图和软件架构的基石。掌握这些技巧,你的嵌入式代码将更加优雅高效。
本文介绍了一种轻量级的多任务处理方法,适用于资源有限的嵌入式系统。针对不使用RTOS时面临的任务调度问题,提出了三种解决方案: 时间片轮询法:通过记录任务上次执行时间,实现周期性任务调度,确保各任务按设定间隔执行。 任务表驱动:将任务统一管理为数组形式,便于维护和扩展,增删任务只需修改任务表。 状态机编程:将耗时任务分解为多个状态,每次只执行一小步,避免阻塞其他任务。 此外还建议采用"中
先说最基本的东西。环形缓冲区本质上就是一个定长数组,加上两个索引——head(写指针)和 tail(读指针)。写数据时 head 往前走,读数据时 tail 往前走。关键在于:走到数组末尾时,绕回开头。这就是"环"的由来。上图画的不太对,应该是head在前,tail在后,先写后读。和普通队列比,环形缓冲区最大的好处是不需要搬移数据。普通数组队列读完前面的数据后,要么整体前移,要么浪费空间。环形缓冲
作者简介2021应届本二,目前年薪20,在某行业头部大厂从事嵌入式多媒体开发(音视频应用方向)。由于没有耀眼的学历,学习的资料和企业实际应用有些偏差,2020年大三时秋招处处碰壁,当时最高只有10k,于是抛开薪资选择了一个自认为不错的方向进行实习。努力终有回报,实习半年,......







