行稳方能走远
码龄8年
求更新 关注
提问 私信
  • 博客:2,202,241
    社区:192
    动态:1,387
    视频:16
    2,203,836
    总访问量
  • 493
    原创
  • 32,187
    粉丝
  • 57
    关注
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
加入CSDN时间: 2018-03-17

个人简介:日日行,不怕千万里;常常做,不怕千万事

博客简介:

zhuguanlin121的博客

查看详细资料
个人成就
  • 获得3,733次点赞
  • 内容获得754次评论
  • 获得18,947次收藏
  • 代码片获得25,580次分享
  • 博客总排名25,276名
  • 原力等级
    原力等级
    9
    原力分
    10,072
    本月获得
    3
创作历程
  • 24篇
    2026年
  • 4篇
    2025年
  • 10篇
    2024年
  • 65篇
    2023年
  • 61篇
    2022年
  • 422篇
    2021年
成就勋章
TA的专栏
  • 全国计算机二级C语言考试操作题100套
    付费
    100篇
  • 韦东山安卓
    7篇
  • 学习感悟
    18篇
  • Tips
    3篇
  • 正点 QT开发
    3篇
  • 电子信息大学生毕业课程设计
    1篇
  • 电子电路
    8篇
  • IOT
    39篇
  • 单片机
    12篇
  • C语言基础
    31篇
  • 全志H616
    1篇
  • 嵌入式知识
    54篇
  • Linux系统编程
    14篇
  • 语音模块与Source Insight
    2篇
  • 树莓派(ARM架构)开发
    29篇
  • 智能家居
    18篇
  • Java
    9篇
  • 简单的安卓APP
    30篇
  • 正点Ubuntu入门学习
    23篇
  • 正点IMX6ULL裸机开发
    35篇
  • 正点IMX6ULL系统移植
    13篇
  • 正点IMX6ULL驱动开发
    31篇
  • 正点 Linux C 应用编程
    21篇
  • 迅为QT学习篇
    2篇
  • STM32
    46篇
  • 数据结构与算法
    12篇
  • GitHub
    11篇
  • sqlite
    2篇
  • Tools
    7篇

TA关注的专栏 1

TA关注的收藏夹 0

TA关注的社区 2

TA参与的活动 0

兴趣领域 设置
  • 移动开发
    android studio
  • 人工智能
    神经网络
  • 嵌入式
    单片机stm3251单片机mcu物联网嵌入式硬件iot嵌入式实时数据库
  • 硬件开发
    驱动开发arm开发硬件架构
  • 服务器
    linux
创作活动更多

AtomGit「码动四季·开源同行」秋季征稿活动

秋季征稿主题:开源成果经验分享 成果不止一种形态,我们为你准备了六大赛道,总有一款适合你: 开源项目成果复盘 把项目一年/一季的成长摊开来看:里程碑复盘、Star 与用户增长复盘、版本迭代复盘、从 0 到 1 的发布复盘。 🖊️ 示范选题: ●开源项目从 0 到 1000 Star,我做对了什么 ●开源一周年,我交出的成绩单 这类文章不只是一次经验分享,也是一张项目名片。欢迎将项目托管到 AtomGit 并申请成为 G-Star 项目,通过后可获得平台流量推荐、项目宣传等权益。(G-Star:AtomGit 最具影响力开源项目) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1f90c61528ad410d8d66f9d0e3707a5a.png) 咨询 G-Star 项目申请 2️⃣ 技术经验体系化沉淀 踩坑合集、最佳实践总结、工具链实战、CI/CD 流水线搭建、代码重构与架构演进。 🖊️ 示范选题: ●提了 50 个 PR 后,我总结的开源协作避坑清单 ●一次重大重构复盘:把单体拆成可维护的模块 3️⃣ AI 赋能开源的实战成果 AI 编程助手实战测评、基于开源模型的微调与应用开发、AI 辅助研发提效流水线。 🖊️ 示范选题: ●我用 AI 编程助手把提 PR 效率翻了 3 倍 ●基于开源大模型搭了个 XX 工具(附完整教程) 4️⃣ 开源共建笔记|文档、社区与布道 开源文档写作与翻译、issue 互助经验、组织 meetup、用开源项目做教学与分享。 🖊️ 示范选题: ●一个优秀开源项目,文档应该怎么写 ●我用开源项目做了个线上 Workshop ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/23e83ceebc594c379f7fc6aa8dcfa40c.png) 扫码加入码动四季投稿交流群,和更多伙伴一起交流技术!

16人参与 去参加
  • 最近
  • 文章
  • 专栏
  • 代码仓
  • 资源
  • 收藏
  • 关注/订阅/互动
更多
  • 最近

  • 文章

  • 专栏

  • 代码仓

  • 资源

  • 收藏

  • 关注/订阅/互动

  • 社区

  • 帖子

  • 问答

  • 课程

  • 视频

搜索 取消

Android java 学习笔记3

Reflect.class文件打不开。Person.class文件打不开。文件路径a->b->c->d。文件路径a->b->c->d。文件路径a->b->c->d。文件路径a->b->c->d。文件路径a->b->c->d。文件路径a->b->c->d。
原创
博文更新于 2026.08.14 ·
128 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Android java 学习笔记2

文件夹里的Mymath.class 打不开。文件夹里的Print.java。文件夹里的Math.java。文件夹里的Math.java。根目录里的Pack.java。Pack.class 打不开。
原创
博文更新于 2026.08.14 ·
455 阅读 ·
12 点赞 ·
0 评论 ·
5 收藏

Android C++ 学习笔记3

template.cpptemplate2.cppexception.cppexception2.cppexception3.cppexception4.cppexception5.cppexception6.cppexception7.cppexception8.cpp19th_smartpointerperson.cppperson2.cppperson3.cppperson4.cppperson5.cppperson6.cppperson7.cppperson8.c
原创
博文更新于 2026.08.14 ·
1151 阅读 ·
22 点赞 ·
0 评论 ·
18 收藏

Android C++ 学习笔记 2

person.cpppoint.cpppoint2.cpppoint3.cpppoint4.cpppoint5.cpppoint6.cpppoint7.cppfather_son.cppfather_son2.cppfather_son3.cppfather_son4.cppfather_son5.cppfather_son6.cppperson.cppperson_student.cppSofabed.cppSofabed2.cppSofabed3.cppSofabe
原创
博文更新于 2026.08.14 ·
1328 阅读 ·
27 点赞 ·
0 评论 ·
18 收藏

Linux 常用命令学习

1、ls命令2、cd 命令3、pwd 命令4、mkdir 命令5、rm 命令6、rmdir 命令7、mv 命令8、cp 命令9、cat 命令10、more 命令11、less 命令12、head 命令13、tail 命令14、which 命令15、whereis 命令16、locate 命令17、find 命令18、chmod 命令19、tar 命令20、chown 命令21、df 命令22、du 命令23、ln 命令24、date 命令25、cal 命令2
原创
博文更新于 2026.07.08 ·
681 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

嵌入式软件架构一:一个能让人放心接手的嵌入式项目,骨架长什么样

回过头看,可维护的嵌入式项目并没有什么神奇配方。它无非是一些朴素的工程实践叠加起来——清晰的目录、单向的依赖、自动化的构建、可见的运行状态、跑得起来的测试、写下了"为什么"的文档。每一项单独看都不复杂,难的是长期坚持。一个项目从开始的几千行到后来的几万行,过程中有无数次"先这么写吧,以后再改"的妥协。这些妥协单看都合理,加在一起就是后来人接手时的那一声叹气。回到开头那张"四种成本"的尺子。下次你看自己的项目,可以拿它对照一下:四个问题里有两个让你心里一沉,那大概率就是项目开始走下坡路的信号。
转载
博文更新于 2026.05.11 ·
150 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

嵌入式C语言设计模式十:观察者模式

好,现在我们撸起袖子开始写代码。第一步,我们需要把一个普通的数据变量"包装"成一个可以被观察的对象。在面向对象语言里,这叫 Observable;在我们的 C 语言实现里,我们叫它 Subject。有了被观察者,接下来我们需要实现具体的观察者。这里要用到我们在第 9 篇讲过的 C 语言多态 技巧:让不同的观察者(LCD、Flash、LED)共享同一个 Observer 接口,但各自实现不同的行为。十篇文章,断断续续写了很久。
转载
博文更新于 2026.04.21 ·
144 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

嵌入式C语言设计模式九:架构师必修用 struct 和 void* 构建可扩展的对象系统

核心要点回顾OOP 是思想,不是语法• C++ 把机关藏在编译器里,C 把机关摆在明面上• 学会 C OOP,不是为了炫技,而是为了在大型系统中获得可维护性三大支柱的 C 实现• 封装: struct + static + 不透明指针• 继承: 结构体嵌套(父类在首位)• 多态: 函数指针表(V-Table)关键技术• 向上转型:利用内存布局重叠• 虚函数表:每个对象持有方法指针• container_of:从成员反推整体避坑要点。
转载
博文更新于 2026.04.21 ·
196 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

嵌入式C语言设计模式八:责任链模式重构串口协议ProcessData()

不知道你有没有遇到过这种情况:项目初期,你写了一个简洁的串口数据处理函数,几十行代码,逻辑清晰。三个月后,这个函数膨胀到了 500 行,嵌套了七八层 if-else,你自己看着都头疼。每次产品经理提新需求,你就得在这坨代码里小心翼翼地"埋地雷"。改完之后祈祷别炸,测试通过了长舒一口气。这篇文章,我想跟你聊聊怎么用责任链模式来终结这种噩梦。好了,开始撸代码。Handler 1:噪声过滤器/*** @brief 过滤掉太短的垃圾数据*/// 长度小于 3 的一律丢弃。
转载
博文更新于 2026.04.21 ·
99 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

嵌入式C语言设计模式七:“面向对象“的状态机

当你的状态机越做越大,状态数量从 5 个变成 15 个、30 个,你会发现一个新的问题:很多状态有共同的行为。一个典型场景假设你在做一个带菜单的设备,有这些状态:• 主界面• 设置菜单• 设置时间• 设置闹钟• 设置亮度• 运行状态• 正在倒计时• 暂停中需求是:在任何"设置"子菜单里,按"返回键"都要回到设置菜单主页。// 设置时间状态// 复制粘贴 1return;// ... 其他逻辑// 设置闹钟状态// 复制粘贴 2return;
转载
博文更新于 2026.04.21 ·
119 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

嵌入式C语言设计模式六:对象池模式

原理讲完了,开始写代码。第一步:定义链表节点首先要解决一个问题:怎么把"空闲块"和"链表指针"统一起来?// 指向下一个空闲块(仅空闲时有效)这个结构体只有一个成员:next 指针。它占用 4 字节(32位系统)或 8 字节(64位系统)。关键理解点: 这个 next 指针只在块空闲时才有意义。当块被分配出去之后,用户可以随意使用这块内存,next 会被用户数据覆盖掉,但没关系——反正空闲的时候再重新赋值就行。第二步:定义对象池管理结构// 指向空闲链表的头// 内存池起始地址。
转载
博文更新于 2026.04.21 ·
77 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

嵌入式C语言设计模式五:命令模式

写到这里,让我们回顾一下命令模式带来的改变:命令模式的核心思想是:把"请求"封装成对象。这个思想看似简单,但威力巨大。它让你的代码从"过程式"升级为"数据驱动式"。你不再是在代码里硬编码"先做这个、再做那个",而是定义一套数据结构来描述要做什么,然后用统一的引擎去执行。这种思维方式的转变,是从"码农"到"架构师"的关键一步。最后,送给大家一句话:好的架构不是设计出来的,是演化出来的。但如果你一开始就用了对的模式,演化的方向会更清晰。
转载
博文更新于 2026.04.19 ·
118 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

嵌入式C语言设计模式四:发布-订阅模式

写到这里,我们来回顾一下这篇文章讲了什么。
转载
博文更新于 2026.04.19 ·
209 阅读 ·
2 点赞 ·
0 评论 ·
10 收藏

嵌入式C语言设计模式三:单例模板

饿汉式,顾名思义,就是"饿得不行,迫不及待"——在程序启动时就立即创建单例实例,不管你用不用得到。核心特点:• 实例在编译期或启动期就创建好• 不存在运行时创建的开销• 天生线程安全(因为创建发生在多任务启动之前)懒汉式,顾名思义,就是"懒得动"——只有在第一次真正需要使用时,才创建实例。这就是所谓的 延迟加载(Lazy Load)。核心特点:• 实例在首次调用 GetInstance() 时创建• 节省启动时间和初始内存占用• 需要额外处理线程安全问题。
转载
博文更新于 2026.04.19 ·
98 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

嵌入式C语言设计模式二:适配器模式(Adapter Pattern)

先看生活中的例子在讲代码之前,我想先问你一个问题:你出国旅游的时候,最怕什么?语言不通?路不熟?都不是。最怕的是——插座不一样!你带着国标两脚插头的充电器,到了英国发现是三孔方插,到了德国发现是两孔圆插。手机没电,相机没电,什么都干不了。怎么办?买一个转换插头。这个转换插头,就是现实世界中的适配器:• 你的需求(Target):给手机充电,需要国标插头• 现实情况(Adaptee):酒店只有英标插座• 解决方案(Adapter):转换插头,一头是国标,一头是英标。
转载
博文更新于 2026.04.12 ·
133 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

嵌入式C语言设计模式一:老板突然要换芯片?用 C 语言工厂模式,改 1 行代码就搞定!

本文介绍了如何在C语言中实现工厂模式,解决嵌入式开发中传感器更换带来的代码耦合问题。通过结构体和函数指针模拟面向对象接口,业务层只需调用统一接口而无需关心具体传感器类型。青铜段位使用switch-case工厂函数,王者段位利用链接器将驱动自动注册到指定内存段,实现零修改扩展。最终方案让更换传感器只需修改一行宏定义,大幅提升代码复用性和可维护性。
转载
博文更新于 2026.04.12 ·
164 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

Android java 学习笔记 1

【代码】Android java 学习笔记 1。
原创
博文更新于 2026.04.04 ·
158 阅读 ·
2 点赞 ·
0 评论 ·
4 收藏

Linux MQTT 物联网通信

目录物联网曾被认为是继计算机、互联网之后,信息技术行业的第三次浪潮。随着基础通讯设施的不断完善,尤其是5G 的出现,进一步降低了万物互联的门槛和成本。物联网本身也是AI 和区块链应用很好的落地场景之一,各大云服务商也在纷纷上架物联网平台和服务。物联网通讯是物联网的一个核心内容,目前物联网的通讯协议并没有一个统一的标准,比较常见的有MQTT、CoAP、DDS、XMPP 等,在这其中,MQTT(消息队列遥测传输协议)应该是应用最广泛的标准之一。目前,MQTT 已逐渐成为IoT 领域最热门的协议,也是国内外
原创
博文更新于 2026.03.25 ·
8921 阅读 ·
12 点赞 ·
0 评论 ·
68 收藏

从串口丢数据说起——环形缓冲区的几个实战心得

先说最基本的东西。环形缓冲区本质上就是一个定长数组,加上两个索引——head(写指针)和 tail(读指针)。写数据时 head 往前走,读数据时 tail 往前走。关键在于:走到数组末尾时,绕回开头。这就是"环"的由来。上图画的不太对,应该是head在前,tail在后,先写后读。和普通队列比,环形缓冲区最大的好处是不需要搬移数据。普通数组队列读完前面的数据后,要么整体前移,要么浪费空间。环形缓冲区天然解决了这个问题——读写指针追着跑就行。
转载
博文更新于 2026.03.23 ·
138 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

写了十年C,才发现链表+结构体+函数指针才是真正的“三件套“

回顾一下今天讲的这五个组合技:你会发现,这些技巧的本质都是同一件事:用数据结构描述行为,而不是用代码硬编码行为。C语言没有类,没有继承,没有虚函数表。但它有结构体、函数指针和链表。这三样东西足够你搭出任何你想要的架构。不信你去翻Linux内核源码——那些最优雅的设计,拆开来看,核心就是这三板斧。区别只在于:有些人把它们当语法来学,有些人把它们当积木来用。
原创
博文更新于 2026.03.14 ·
454 阅读 ·
8 点赞 ·
0 评论 ·
13 收藏
加载更多