- 博客(204)
- 资源 (4)
- 收藏
- 关注
原创 如何使用curl编程来下载文件
本文介绍了libcurl库的基础使用,重点讲解如何通过C语言实现文件下载功能。文章首先概述了libcurl作为一个跨平台网络传输库的特性,详细解析其核心数据结构:CURL句柄(具有独立性、可复用性和状态存储特性)和CURLcode返回值(包含80多种错误代码枚举)。通过具体代码示例,展示了如何利用libcurl进行文件下载操作,包括初始化、配置选项和错误处理等关键步骤。内容涵盖了从基础概念到实际应用的完整流程,为开发者提供了一份清晰的libcurl入门指南。
2025-08-11 22:50:40
442
原创 C语言如何安全的进行字符串拷贝
本文探讨了C语言中字符串拷贝的安全性问题,重点分析了strcpy和strncpy函数的使用方法及潜在风险。strcpy函数存在缓冲区溢出风险,当目标空间不足时会导致越界拷贝,可能破坏相邻内存数据。strncpy作为安全版本允许指定拷贝长度,但需注意手动添加字符串终止符'\0'的问题。文章通过具体代码示例展示了两种函数的正确用法,并对比了拷贝越界时的情况。最后建议在不确定字符串长度时优先使用strncpy,同时确保目标缓冲区足够大并正确处理字符串终止符,以提高程序安全性。
2025-08-11 22:49:52
692
原创 内存问题排查工具ASan初探
文章摘要 本文介绍了ASan(AddressSanitizer)内存错误检测工具及其在C/C++程序中的应用。ASan由Google开发,通过编译时插桩技术检测内存使用错误,如未分配/释放内存访问、堆栈溢出等,并提供详细错误报告。文章详细说明了ASan的编译选项(-fsanitize=address)和常见参数(如leak、thread等),并通过三个实例展示了其检测能力:内存泄漏(24字节泄漏)、堆缓冲区溢出(memcpy越界12字节)和栈缓冲区溢出(固定数组越界)。ASan能精准定位错误位置和内存分配信
2025-08-11 22:48:54
828
原创 如何使用backtrace定位Linux程序的崩溃位置
摘要:利用backtrace定位嵌入式Linux程序崩溃问题 在嵌入式Linux开发中,多人协作时定位代码崩溃点往往困难。本文介绍使用backtrace工具快速定位崩溃位置的方法。当程序崩溃触发SIGSEGV等信号时,通过signal捕获信号并在handler中调用backtrace获取调用栈信息,配合addr2line工具将地址转换为可读的函数名和行号。关键步骤包括:编译时添加-g调试选项,使用backtrace获取堆栈地址,backtrace_symbols转换地址为字符串,addr2line解析具体代
2025-07-05 23:25:08
822
原创 如何给printf打印增加颜色、时间戳、文件名、行号、函数名
本文介绍了在嵌入式Linux开发中优化日志打印的方法,通过添加颜色、等级标识等额外信息提高调试效率。首先解释了终端颜色控制原理(如"\033[31m"表示红色),并给出了基础颜色打印示例。然后展示了通过宏定义封装不同颜色等级的打印函数(如ERROR用红色,WARNING用黄色)。文中还详细说明了可变参数宏##__VA_ARGS__的作用,以及如何避免空参数导致的语法错误。最后提出了一个综合封装方案,将颜色代码、等级标识(INFO/WARN/ERRO)整合到统一打印宏中,使日志输出更结构化
2025-06-16 22:46:24
934
原创 UML活动图与泳道图
摘要:活动图是UML中用于描述业务流程的建模工具,主要展示顺序或并行的活动关系。与流程图不同,活动图面向对象且能表示并发活动。其基本元素包括活动节点、分支、同步棒等,通过泳道可以对活动进行分组。活动图能清晰呈现业务流程,辅助用例分析,如建造房屋案例所示。文章系统介绍了活动图的定义、元素及应用,突出了其在需求捕获中的重要作用。(148字)
2025-06-08 13:31:14
418
原创 UML用例模型与用例图
摘要:本文系统介绍了UML用例模型的核心内容。用例模型由系统边界、参与者、用例、用例图和用例描述组成,主要用于系统分析与设计。详细讲解了参与者的定义、寻找方法及图形表示;用例的概念及识别方式;用例图中包含的边界、参与者、用例及其关联、包含、扩展、泛化等关系;以及用例描述的要素和标准格式。最后通过POS系统案例展示了完整的用例模型应用,包括用例图和详细的事件流描述。用例模型为软件开发提供了有效的需求描述方法。
2025-06-08 13:30:22
1062
原创 UML基本概念:构造块、公共机制与规则
本篇介绍了UML的基础概念:构造块、公共机制和规则。构造块是构成UML模型的基础元素,包括事物、关系和图,它们共同构成了UML的核心。
2025-05-21 22:02:10
784
原创 C++实用函数:remove_if
本篇介绍了C++中remove_if函数的使用,它用于在vector在按照自定义的匹配规则查找到所有的匹配的数据,结合erase方法实现数据的删除。
2025-04-02 22:43:23
456
原创 面向对象的程序设计:以对象的方式进行思考
本篇介绍了面对对象的程序设计中,如果以对象的方式进行思考,包括理解接口与实现的区别,使用抽象思维设计接口,以及具体的思考过程。
2025-01-20 23:01:44
927
原创 《大话设计模式》解读09-建造者模式
本篇介绍了设计模式中的**建造者模式**,并通过画小人的实例,使用Python编程,来演示建造者模式的使用。
2024-12-30 22:40:08
1050
原创 嵌入式Linux之wifi配网C++版
本篇介绍了如何使用C++编程,来实现嵌入式Linux开发中,调用wpa_supplicant等工具进行wifi配网,通过编写测试例程,并进行实际测试,验证代码功能。
2024-12-16 22:48:29
697
原创 嵌入式Linux之wifi配网脚本分析
本篇,以飞凌嵌入式Linux开发板为例,介绍了其自带的wifi配网脚本的执行原理。通过自动配置wpa_supplicant.conf文件,并调用wpa_supplicant进行wifi配网。下篇,将继续介绍如何通过C/C++编程,来实现wifi配网。
2024-12-02 22:19:47
1340
原创 Linux中时区获取与ISO8601时间完善
本篇介绍了通过编程实现linux系统中时区的获取,并完善上篇的ISO8601格式时间的生成,增加了时区的处理。
2024-11-18 22:30:17
1416
原创 Linux-C++获取当前时间与计算时间间隔
本篇介绍了ISO8601格式时间的生成以及两个ISO8601格式的时间间隔的计算。首先介绍需要用到的一些函数,然后介绍编程实现的思路,编写代码,实现所需的功能,最后进行编译运行测试。
2024-11-04 23:41:18
1335
原创 大话设计模式解读01-简单工厂模式
本篇主要介绍设计模式中的简单工厂模式,首先通过一个活字印刷的小故事来体会程序设计中的可维护、可复用、可扩展、灵活性的思想,并引入面向对象设计模式中的三大基本思想:封装、继承、多态,然后通过一个计算器的代码实现的例子,通过C++实现了三个版本的代码,由浅到深地理解面向对象的设计思想以及简单工厂模式的使用。
2024-06-03 22:50:47
1535
原创 嵌入式基础知识-信号量,PV原语与前趋图
本篇介绍了信号量与PV原语的基础知识点,并介绍了PV操作的一些应用,实现进程互斥和实现前趋关系,前趋关系中使用前趋图来实例分析PV操作影响信号量变化的具体运行过程。
2024-03-04 22:12:14
1423
1
原创 嵌入式基础知识-逻辑覆盖测试用例设计
本篇介绍了软件测试中,白盒测试中逻辑覆盖的各种实例情况,包括语句覆盖SC、判定覆盖DC、条件覆盖CC、条件判定覆盖C/DC、条件组合覆盖MCC、路径覆盖PC、修正的条件判定覆盖MC/DC的实例。
2024-01-29 22:26:06
1924
原创 嵌入式基础知识-测试基础概念
本篇介绍了软件测试的相关基础知识,包括静态测试与动态测试、测试策略、测试阶段、白盒测试与黑盒测试等。下篇将根据实例,继续介绍白盒测试,各种语句覆盖的实操设计。
2024-01-22 22:19:10
1880
原创 STM32MP157D-DK1 STM32CubeID使用与M核开发
本篇介绍了STM32MP157D-DK1开发板M核程序的开发流程,包括STM32CubeIDE创建工程,引脚配置与程序编写,最终实现了基础了LED亮灭实验。
2024-01-08 22:14:49
1443
原创 STM32MP157D-DK1 Qt程序交叉编译与运行测试
本篇介绍了STM32MP157D-DK1开发板Qt程序交叉编译环境的搭建过程,并通过一个实际的Qt程序,编译后在板子中实际运行测试,验证Qt编译环境的可用性。
2024-01-02 22:22:21
955
原创 STM32MP157D-DK1开发板Qt镜像构建
本篇介绍了STM32MP57-DK1开发板如何搭建Qt运行环境的过程,通过构建Distribution包,并解决中间构建的各种问题,最终构建出了带有Qt功能的系统镜像,并烧录后测试。
2023-12-25 22:27:16
1745
1
原创 STM32MP157D-DK1开发板固件烧录
本篇介绍了STM32MP157D-DK1开发板烧录官方固件的详细过程,记录了烧录过程的实际操作结果和中间遇到的问题及解决方法,最后演示烧录后的效果。
2023-12-11 22:35:30
1750
2
原创 嵌入式基础知识-RSA非对称加密基本原理
本篇介绍了RSA这种非对称加密算法的加密解密基本过程,以及公钥和私钥的计算基本步骤,并补充介绍了质数的相关概念,最后通过一个实例来简单体会下RSA密钥的计算。
2023-10-30 22:34:43
598
原创 嵌入式基础知识-IP地址与子网划分
本篇介绍IP地址与子网划分的基础知识,先介绍了IPv4与IPv6的的基础知识与区别,然后结束了子网划分的一些概念,并通过一些实际的例子进行讲解分析。
2023-10-07 22:24:22
306
GD32各系列官方源码例程.rar #资源达人分享计划#
2021-08-04
GD32F4xx数据手册.rar #资源达人分享计划#
2021-08-04
FreeRTOS+STM32F407+Keil工程模板
2020-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人