- 博客(34)
- 资源 (5)
- 收藏
- 关注
原创 嵌入式C语言高级编程之日志模块zlog
`zlog` 是由国内大佬 HardySimpson 开发的一款纯 C 语言日志库,在嵌入式、物联网、游戏服务器等领域具有统治地位。它的核心设计目标只有一个:**在极高并发下,追求极致的落盘性能,同时保证程序崩溃时日志不丢失。本文将从底层设计原理、应用场景以及配套的多线程压测代码三个维度为你深度拆解 zlog。
2026-05-04 21:51:13
400
原创 嵌入式C语言高级编程之异步日志重构覆盖日志
这篇文章展示了一套非常经典的嵌入式C语言异步日志系统。它不仅仅实现了基础的日志记录,更在代码架构中融入了面向对象思想(多态)、生产者-消费者模型以及防御性编程,最后通过极度严谨的测试用例证明了“日志文件大小限制与循环覆盖”这一核心诉求。
2026-05-04 18:52:28
75
原创 嵌入式C语言高级编程之异步日志
核心设计原理:生产者-消费者模型这套代码的核心在于“异步”。同步日志(旧方案):业务线程写日志 -> 加锁 -> 写磁盘(慢) -> 解锁。业务线程会被卡住。异步日志(新方案):业务线程写日志 -> 扔进内存队列(快) -> 继续干活。后台线程负责慢慢写磁盘。
2026-05-04 18:37:57
230
原创 嵌入式C语言高级编程之日志模块重构2
文章摘要 本文介绍了在Linux平台下实现多线程安全的日志系统解决方案。该方案有效防止了日志内容交错和资源竞争问题,适用于高并发环境下的日志记录需求。
2026-05-04 18:32:49
71
原创 嵌入式C语言高级编程之日志模块重构
这篇文章介绍了如何将C语言日志系统重构为模块化设计,采用面向对象思想实现多态日志记录器。 这种设计实现了良好的封装性,用户只需通过基类接口操作日志,无需了解具体实现细节。代码还考虑了健壮性,包括空指针检查、资源释放等处理。
2026-05-04 18:28:47
59
原创 嵌入式C语言高级编程之接口隔离原则
摘要 本文介绍了嵌入式C语言中的接口隔离原则(ISP)及其应用。ISP强调客户端不应依赖不需要的接口,通过拆分"胖接口"为多个小而专一的接口来降低耦合性。在C语言中,可以通过头文件定义接口,使用static关键字隐藏实现细节。文中给出了违反ISP的"胖接口"示例,展示了一个多功能设备驱动如何强制客户端依赖不需要的功能。随后通过重构,将接口拆分为独立的打印机、扫描仪和传真接口,每个客户端只需包含所需功能的头文件。这种设计提高了代码的模块化、可维护性和灵活性。
2026-04-22 12:26:32
445
原创 嵌入式C语言高级编程之依赖倒置原则
本文介绍了嵌入式C语言中的依赖倒置原则(DIP),重点阐述了其核心思想:高层模块不应依赖低层模块,二者都应依赖抽象。文章通过传统设计与DIP设计的对比,展示了DIP在代码复用、平台移植、团队协作等方面的优势,为嵌入式开发提供了实用的设计指导。
2026-04-20 10:44:09
403
原创 嵌入式C语言高级编程之依赖注入模式
这篇文章介绍了在嵌入式C语言中使用依赖注入(DI)模式进行高级编程的方法。主要内容包括: 依赖注入的核心思想是通过外部注入模块依赖,而不是在模块内部创建依赖对象,从而实现解耦。 该模式的三大优势:高内聚低耦合;业务逻辑与具体实现分离高可测试性;可轻松替换真实硬件为Mock函数;高可复用性,同一业务模块可适配不同硬件。
2026-04-20 10:43:03
433
1
原创 嵌入式C语言高级编程之开闭原则
嵌入式C语言开闭原则实践 摘要:本文探讨了开闭原则在嵌入式C语言开发中的应用。开闭原则强调"对扩展开放,对修改关闭",在嵌入式系统中尤为重要。文章详细介绍了通过函数指针、结构体封装、回调机制和接口抽象等技术实现开闭原则的方法,并展示了设备驱动抽象层和通信协议扩展的具体实现方案。这些技术帮助开发人员在不修改现有稳定代码的情况下扩展系统功能,提高了嵌入式系统的可维护性和可扩展性。
2026-04-19 12:04:41
418
原创 嵌入式C语言高级编程之单一职责原则
这篇文章摘要: 本文详细阐述了嵌入式C语言编程中的单一职责原则(SRP)应用。首先介绍了SRP的核心思想——"高内聚,低耦合",并强调其在嵌入式系统中的重要性,包括提升可测试性、可维护性和代码复用性。
2026-04-19 11:21:44
306
原创 嵌入式C语言高级编程之MVC设计模式
本文展示了一个极简的嵌入式C语言MVC设计模式实现。项目结构包含模型(Model)、视图(View)和控制器(Controller)三个核心组件: 模型层负责数据存储和业务逻辑,提供计数器功能并维护数值范围 视图层处理界面显示,以格式化文本方式展示当前状态 控制器层协调用户输入与模型更新,实现主事件循环 该实现特点包括: 严格分离关注点,各组件职责明确 轻量级设计,适合嵌入式环境 ,代码简洁但完整展示了MVC模式的核心思想,可作为嵌入式系统开发的基础框架。
2026-04-19 10:32:39
476
原创 Android Studio Panda 2 (2025.3.2) 安装使用说明书
Android Studio Panda 2 (2025.3.2) 安装使用说明书
2026-04-06 16:58:21
1012
原创 Windows搭建Docker+Ollama+Open-WebUI部署DeepSeek本地模型
本文将详细介绍如何在Windows系统上安装和使用Docker+Ollama+Open-WebUI,这三个强大的工具将帮助您轻松管理和运行大型语言模型DeepSeek。Ollama简化了模型的下载与部署,而Open-WebUI则提供了一个直观的图形用户界面,使用户能够更方便地与模型进行交互。
2025-01-29 23:27:57
7915
2
原创 鸿蒙操作系统系列——Hi3516 OpenHarmony_release_v1.1.0 LTS版本led内核态驱动与用户态应用贯通篇
Hi3516 OpenHarmony_release_v1.1.0 LTS版本led内核态驱动与用户态应用贯通篇此文档是针对 OpenHarmony 2021年4月10日发布的OpenHarmony_release_v1.1.0 LTS 版本分析。1. 开发环境HiSpark_AI_Hi3516D300开发板虚拟机安装Ubuntu18.04版本,参考https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_envi
2021-07-23 10:07:16
1635
1
原创 鸿蒙操作系统系列——Hi3516 OpenHarmony_2.0_canary版本设备开发起始篇
Hi3516 OpenHarmony_2.0_Canary版本设备开发起始篇此文档是针对 OpenHarmony 2021年6月2日发布的OpenHarmony_2.0_Canary 版本分析。1. 开发环境HiSpark_AI_Hi3516D300开发板虚拟机安装Ubuntu18.04版本,参考https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_environment_lin-000000110540749
2021-07-08 11:31:04
1039
原创 鸿蒙操作系统系列——Hi3516 OpenHarmony_release_v1.1.0 LTS版本设备开发起始篇
Hi3516 OpenHarmony_release_v1.1.0 LTS版本设备开发起始篇此文档是针对 OpenHarmony 2021年4月10日发布的OpenHarmony_release_v1.1.0 LTS 版本分析。1. 开发环境HiSpark_AI_Hi3516D300开发板虚拟机安装Ubuntu18.04版本,参考https://device.harmonyos.com/cn/docs/start/introduce/oem_minitinier_environment_li
2021-07-08 09:41:43
2191
原创 QT系列— UDP应用篇
QT UDP应用篇文章目录QT UDP应用篇1、开发环境2、开发目标3、UDP原理4、示例代码5、应用演示1、开发环境PC操作系统: WIN7QT开发环境:Qt Creator5.52、开发目标如下图所示,开发一个UDP工具,实现如下功能:1、设置UDP通信目的IP地址、目的端口号和绑定的本地端口号。2、支持接收消息,支持文本和十六进制显示。3、支持发送消息,支持文本和十六进制发送。4、支持接收消息的清空,支持UDP连接的打开和关闭功能。3、UDP原理使用Qt提供的QUdpSock
2021-06-26 20:22:33
2983
2
原创 QT系列—读写文件篇
QT读写文件篇文章目录QT读写文件篇1、纯文本文件读写方法1.1 QFile 类的 IODevice 方法直接进行文件读写1.2 QFile 和 QTextStream 结合的方法进行文件读写2、二进制文件读写方法 文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处理而开发的,所以文件读写是应用程序开发的一个基本功能。 如下图1所示文件读写测试用例,包括了文本文件的读写和二进制文件的读写功能,打开文件为读文件的过程,保存文件为写文件过程
2021-06-20 23:40:38
3349
原创 QT系列—数据类型转换篇
QT类型转换1、 int ,float ,double类型转换为QString//int转换为QString 方法一int temp = 123; QString str = QString::number(temp, 10); //int转换为QString 方法二int temp = 123; QString str = QString("%1").arg(temp); //float转换为QStringfloat temp = 3.1;QString str = QString
2021-06-20 23:00:20
2544
转载 鸿蒙操作系统系列——LiteOS启动流程分析
reset_vector_up.s在源码中的位置为kernel\liteos_a\arch\arm\arm\src\startup,在这个目录下有两个文件,如下图所示。转存失败重新上传取消带up字样的应该是单核时启动用的,mp为多核时启动使用。2. 我们下面来大致分析下reset_vector_up.s做了哪些事情2.1 定义中断向量表如下图所示,中断向量表是放在.vectors段中,系统启动时最先执行的是reset_vector函数。转存失败重新上传取消2.2 重定...
2021-06-08 17:44:49
4699
原创 鸿蒙操作系统系列——Ubuntu18.04搭建OpenHarmonyOS2.0开发环境篇
操作系统: WIN7+Vmware15.1.0+Ubuntu18.04内存配置: 8G内存2021年6月2日鸿蒙操作系统正式版正式发布,同时在https://gitee.com/openharmony/同步开源了OpenHarmony2.0源码和相关的文档,OpenHarmony是由开放原子开源基金会(OpenAtom Foundation,以下简称“基金会”)孵化及运营的开源项目,由基金会的OpenHarmony项目群工作委员会负责运作,主要遵循Apache 2.0协议开源,目标是面...
2021-06-05 11:51:55
7689
4
原创 Linux版本分支备忘录
Linux最早由Linus Torvalds在1991年开始编写。在这之前,Richard Stallman创建了Free Software Foundation(FSF)组织以及GNU项目,并不断的编写创建GNU程序(此类程序的许可方式均为GPL: General Public License)。在不断的有杰出的程序员和开发者加入到GNU组织中后,便造就了今天我们所看到的Linux,或称GNU/Linux。Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本
2021-06-02 22:29:50
290
1
原创 鸿蒙操作系统系列——科普篇
2020年6月2日华为将正式发布鸿蒙手机操作系统,有人说鸿蒙是PPT系统,快发布了说耍猴,真发布了又说是Android套壳。不兼容运行Android程序说要之何用,能运行了又说是基于Android,杠精真的是啥都能说。但凡去看一眼OpenHarmony在开放原子开源基金会(OpenAtom Foundation)旗下开源项目https://gitee.com/openharmony就知道这是一款定位为全场景的开源分布式操作系统。当然,众口难调,长的一样你们说是Android,长的不一样你们说是生态环境...
2021-06-02 00:43:03
2561
原创 VMware下Ubuntu系统扩展硬盘方法
首先在虚拟机里面关闭Ubuntu系统,如下图所示。在VMware里点击菜单虚拟机——>设置...,如下图所示。然后弹出“虚拟机设置”对话框,如下图所示。在上图的"硬件"里面单击底下的添加按钮,如下图所示。...
2021-06-01 22:03:00
854
原创 基于Zynq7000平台VxWorks6.9开发应用——SMP多核任务篇
前言 本篇文章主要讲解在Xilinx ZedBoard上开发基于VxWorks6.9 SMP架构的多核任务调度,创建两个任务,并分别指定运行在Zynq7000上的两个CortexA9核上,研究多核CPU根据使用场景进行最优化任务部署。本文力求讲述清楚SMP基本概念,以及系统适配SMP模式的要求,SMP模式多任务运行在CPU实现方法,并配套完整的演示软件和相关代码进行验证。下面将从以下几个方面进行讲解。VxWorks6.9创建SMP模式 多核任务调度开发使用工具说明:WorkBe...
2021-06-01 15:39:49
6298
3
原创 基于Zynq7000平台VxWorks6.9开发应用——PS与PL通信 BRAM应用篇
前言 本篇文章主要讲解在Xilinx ZedBoard上开发PS与PL读写BRAM进行数据通信,从BRAM硬件平台设计、VxWorks6.9开发PS与PL的BRAM读写功能,力求讲述清楚开发流程,并配套完整的演示软件和相关代码进行验证。下面将从以下几个方面进行讲解。BRAM设计概述 Xilinx Vivado BRAM设计与实现 VxWorks6.9开发PS与PL的BRAM读写开发使用工具说明:Xilinx Vivado2018.3 Xilinx SDK2018...
2021-05-31 23:42:11
2678
原创 基于Zynq7000平台VxWorks6.9开发应用——FPGA动态加载篇
前言 本篇文章主要讲解在Xilinx ZedBoard上通过VxWorks6.9动态加载FPGA bit/bin文件,从而实现软件定义功能目的。本文力求讲述清楚PS动态加载PL的原理和实现方法,并配套完整的演示软件和相关代码进行验证。下面将从以下几个方面进行讲解。Zynq7000 PL加载原理设计 VxWorks6.9动态加载FPGA开发使用工具说明:WorkBench3.3Zynq7000 PL加载原理设计图1 非安全启动流程框图如图1所示,非安全启动流程中PS通过芯...
2021-05-30 00:12:59
4784
3
原创 银河麒麟V10系统安装U盘制作
1、首先打开UltraISO软件,一般选择较新版本的UltraISO软件。2、 点击工具栏中打开镜像文件工具,如上图红色方框标志按钮,然后在 “打开ISO文件”对话框中找到下载好的Kylin桌面试用版本Kylin-Desktop-V10-Release-Build1-2101-arm64.iso镜像文件(对应FT2000/4 ARM64位版本,X86版本制作流程一样),之后点右下方的“打开”按钮。3、打开镜像文件之后,在上方的列表中就会出现对打开的镜像文件的预览左边显示的是具体...
2021-05-28 17:27:12
24658
1
原创 基于Zynq7000平台VxWorks6.9开发应用—组件开发应用篇
基于Zynq7000平台VxWorks6.9开发应用—组件开发应用篇前言 本篇文章主要讲解在Workbench3.3的IDE开发工具上添加VxWorks6.9相关的shell、内存盘、FTP、Telnet和FTP等开发常用和必备的组件,同时配套完整的组件测试验证。开发使用工具说明:WorkBench3.31 添加组件1.1 Shell Command(1)打开“Kernel Configuration”,“development tool components”添加“k...
2021-05-28 17:04:27
4480
4
原创 基于Zynq7000平台VxWorks6.9开发应用——OLED开发应用篇
前言 本篇文章主要讲解在Xilinx ZedBoard上开发OLED显示功能,从OLED硬件平台设计、IP核设计、SDK驱动设计到应用VxWorks6.9开发OLED显示功能,力求讲述清楚开发流程,并配套完整的演示软件和相关代码进行验证。下面将从以下几个方面进行讲解。OLED设计概述 Xilinx Vivado OLED IP核设计与实现 OLED驱动设计与实现 VxWorks6.9开发OLED驱动和应用。开发使用工具说明:Xilinx Vivado2018.3 X...
2021-05-27 22:44:05
5795
6
嵌入式C语言高级编程之日志模块zlog&zlog-test
2026-05-04
基于Zynq7000平台VxWorks6.9开发应用—OLED开发应用篇附带源码和软件.zip
2021-05-27
基于Zynq7000平台VxWorks6.9开发应用——OLED开发应用篇
2021-05-27
Hi3516 OpenHarmony_release_v1.1.0 LTS版本led内核态驱动与用户态应用贯通篇配套源码.rar
2021-07-23
QT UDP工具.zip
2021-06-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅