- 博客(214)
- 资源 (4)
- 收藏
- 关注
原创 curl编程实例-上传文件
本文介绍了使用C语言的curl库实现文件上传功能,详细讲解了HTTP的PUT和POST上传方法及其幂等性差异。文章提供了完整的C代码示例,支持PUT/POST两种上传模式,包含进度显示和文件名传递功能。同时介绍了如何用Python搭建简易文件服务器用于测试,并给出了关键代码实现。通过这篇文章,读者可以掌握使用curl进行文件上传编程的完整流程,包括客户端和服务端的实现。
2025-12-22 22:54:18
749
原创 使用wpa工具配网、udhcpc分配IP的过程分析
本文介绍了在嵌入式Linux开发板中使用wpa_supplicant进行Wi-Fi配网和udhcp工具分配IP的方法。主要内容包括: wpa_supplicant的基础配置,包括创建配置文件、核心参数说明(如ctrl_interface、ssid、psk等) 详细解析了全局配置项和network块配置项,涵盖连接管理、认证方式、日志级别等关键参数 通过示例展示了如何配置Wi-Fi连接信息,包括SSID、密码以及认证方式等 摘要重点突出了wpa_supplicant的核心功能和配置要点,适用于嵌入式Linux
2025-12-08 23:10:31
1053
1
原创 pyQt实现控件的展示与隐藏
本文介绍了使用PyQt5实现通过勾选框控制组件显示/隐藏的功能。通过QCheckBox作为控制开关,当勾选状态变化时触发信号,调用槽函数控制包含目标组件的QWidget容器的可见性。关键点包括:使用QWidget包装布局组件以支持setVisible方法,通过stateChanged信号绑定控制逻辑,并采用QVBoxLayout和QHBoxLayout进行界面布局。完整代码实现了包含复选框控制区域和文本输入区域的界面,演示了勾选框选中时显示三个项目标签,取消勾选时隐藏项目并自动调整布局的效果。
2025-11-28 19:31:21
511
原创 使用cJosn将数据读写文件
本文介绍了使用cJSON库操作JSON数据的方法。cJSON是一个轻量级C语言JSON解析库,支持创建、解析、修改和序列化JSON数据。主要内容包括:1)JSON对象和数组的创建API;2)添加元素的API;3)JSON字符串解析方法;4)读取JSON字段值的接口;5)修改JSON元素值的函数;6)将JSON对象转换为字符串的序列化方法。文章还提供了各种API的功能说明表格,方便开发者快速查找和使用cJSON库的功能。
2025-10-31 22:56:57
695
原创 AES加密C代码实现
本文通过C语言代码实现AES加密过程,先使用纯C代码定义密钥位数、轮数、S-box表等常量,并实现密钥扩展算法。密钥扩展过程分为两类:对4的倍数列进行旋转字节、S-box代换和轮常量异或操作,非4倍数列则直接与前4列异或。代码通过打印调试信息展示扩展过程,确保正确性。后续将对比OpenSSL库和第三方网站结果验证实现。全文重点在于从理论到实践的转换,通过代码示例帮助理解AES加密的具体步骤。
2025-10-26 20:11:39
707
原创 图解AES密钥扩展与加密过程
本文详细介绍了AES-128对称加密算法的原理与实现过程。AES是一种分组加密算法,采用128位密钥和10轮加密流程。文章首先阐述了AES的核心特性,包括对称加密、分组处理和矩阵变换机制。然后通过具体示例,逐步解析了密钥扩展过程(从种子密钥生成11个子密钥)和完整的加密流程(初始变换、9轮循环运算和最终轮),详细说明了字节代换、行移位、列混淆和轮密钥加等关键步骤的运算规则。最后展示了一个16字节字符串的完整加密过程,帮助读者理解AES加密算法的底层实现机制。
2025-10-15 22:38:16
1212
原创 pyQt实现一种按钮切换关联变化的勾选框的逻辑
本文介绍了使用Python和PyQt实现产品型号与功能关联切换的界面设计方法。主要内容包括:通过QRadioButton和QGroupBox实现型号单选按钮组,使用QCheckBox展示功能选项;采用字典存储型号与功能的映射关系;通过清除布局组件并重新添加的方式实现动态切换功能展示。关键点在于使用QVBoxLayout和QHBoxLayout进行界面布局,以及利用槽函数处理型号切换事件。该方案提供了清晰的代码结构,实现了产品型号与功能的动态关联展示。
2025-10-04 17:28:27
1245
原创 C语言实现一个简易数据库
本文介绍了一种简易数据库的实现方法,适用于嵌入式系统等资源受限环境。该数据库采用key-value存储模式,支持整型、浮点型和字符串三种数据类型。数据库以二进制文件形式存储数据,每条记录包含键名、值类型、值长度和值数据。文章详细讲解了数据库的数据结构设计,包括ValueType枚举、Value联合体和KVNode键值对结构,并提供了完整的C语言实现代码,包含打开/关闭数据库、插入/更新、查询、删除和遍历等基本操作接口。这种简易数据库方案在数据量不大时能有效管理数据,避免了引入专业数据库的复杂性。
2025-10-04 17:23:11
1414
原创 文件检查与拷贝-简化版
本文介绍了一个优化的Shell脚本,用于智能同步两个目录。脚本通过遍历源目录下的所有文件,使用cmp命令高效比较文件差异,仅复制不一致的文件。关键功能包括:自动创建目标子目录、实时显示处理进度、统计实际拷贝数量。相比使用MD5校验的方式,该方法显著提高了比较效率。脚本通过路径处理、条件判断和进度显示等功能,实现了可靠的文件同步操作,适用于需要增量备份或目录同步的场景。
2025-09-12 22:39:22
1408
原创 shell脚本练习:文件检查与拷贝
本文介绍了一个实现文件拷贝的Shell脚本,主要功能包括: 检查源目录和目标目录路径有效性 统计源目录文件/子目录数量 通过MD5校验文件差异(使用find遍历文件,md5sum计算哈希值) 记录需要拷贝的文件和创建的目录 支持用户确认后再执行拷贝 关键点: 使用find命令递归查找文件 通过md5sum比较文件内容差异 利用临时文件存储处理信息 提供详细的执行确认提示 该脚本实现了安全可靠的文件同步功能,适用于需要校验文件完整性的备份场景。
2025-09-12 22:37:41
1299
原创 如何使用curl编程来下载文件
本文介绍了libcurl库的基础使用,重点讲解如何通过C语言实现文件下载功能。文章首先概述了libcurl作为一个跨平台网络传输库的特性,详细解析其核心数据结构:CURL句柄(具有独立性、可复用性和状态存储特性)和CURLcode返回值(包含80多种错误代码枚举)。通过具体代码示例,展示了如何利用libcurl进行文件下载操作,包括初始化、配置选项和错误处理等关键步骤。内容涵盖了从基础概念到实际应用的完整流程,为开发者提供了一份清晰的libcurl入门指南。
2025-08-11 22:50:40
1074
原创 C语言如何安全的进行字符串拷贝
本文探讨了C语言中字符串拷贝的安全性问题,重点分析了strcpy和strncpy函数的使用方法及潜在风险。strcpy函数存在缓冲区溢出风险,当目标空间不足时会导致越界拷贝,可能破坏相邻内存数据。strncpy作为安全版本允许指定拷贝长度,但需注意手动添加字符串终止符'\0'的问题。文章通过具体代码示例展示了两种函数的正确用法,并对比了拷贝越界时的情况。最后建议在不确定字符串长度时优先使用strncpy,同时确保目标缓冲区足够大并正确处理字符串终止符,以提高程序安全性。
2025-08-11 22:49:52
1302
原创 内存问题排查工具ASan初探
文章摘要 本文介绍了ASan(AddressSanitizer)内存错误检测工具及其在C/C++程序中的应用。ASan由Google开发,通过编译时插桩技术检测内存使用错误,如未分配/释放内存访问、堆栈溢出等,并提供详细错误报告。文章详细说明了ASan的编译选项(-fsanitize=address)和常见参数(如leak、thread等),并通过三个实例展示了其检测能力:内存泄漏(24字节泄漏)、堆缓冲区溢出(memcpy越界12字节)和栈缓冲区溢出(固定数组越界)。ASan能精准定位错误位置和内存分配信
2025-08-11 22:48:54
1425
原创 如何使用backtrace定位Linux程序的崩溃位置
摘要:利用backtrace定位嵌入式Linux程序崩溃问题 在嵌入式Linux开发中,多人协作时定位代码崩溃点往往困难。本文介绍使用backtrace工具快速定位崩溃位置的方法。当程序崩溃触发SIGSEGV等信号时,通过signal捕获信号并在handler中调用backtrace获取调用栈信息,配合addr2line工具将地址转换为可读的函数名和行号。关键步骤包括:编译时添加-g调试选项,使用backtrace获取堆栈地址,backtrace_symbols转换地址为字符串,addr2line解析具体代
2025-07-05 23:25:08
1374
原创 如何给printf打印增加颜色、时间戳、文件名、行号、函数名
本文介绍了在嵌入式Linux开发中优化日志打印的方法,通过添加颜色、等级标识等额外信息提高调试效率。首先解释了终端颜色控制原理(如"\033[31m"表示红色),并给出了基础颜色打印示例。然后展示了通过宏定义封装不同颜色等级的打印函数(如ERROR用红色,WARNING用黄色)。文中还详细说明了可变参数宏##__VA_ARGS__的作用,以及如何避免空参数导致的语法错误。最后提出了一个综合封装方案,将颜色代码、等级标识(INFO/WARN/ERRO)整合到统一打印宏中,使日志输出更结构化
2025-06-16 22:46:24
1456
原创 UML活动图与泳道图
摘要:活动图是UML中用于描述业务流程的建模工具,主要展示顺序或并行的活动关系。与流程图不同,活动图面向对象且能表示并发活动。其基本元素包括活动节点、分支、同步棒等,通过泳道可以对活动进行分组。活动图能清晰呈现业务流程,辅助用例分析,如建造房屋案例所示。文章系统介绍了活动图的定义、元素及应用,突出了其在需求捕获中的重要作用。(148字)
2025-06-08 13:31:14
1024
原创 UML用例模型与用例图
摘要:本文系统介绍了UML用例模型的核心内容。用例模型由系统边界、参与者、用例、用例图和用例描述组成,主要用于系统分析与设计。详细讲解了参与者的定义、寻找方法及图形表示;用例的概念及识别方式;用例图中包含的边界、参与者、用例及其关联、包含、扩展、泛化等关系;以及用例描述的要素和标准格式。最后通过POS系统案例展示了完整的用例模型应用,包括用例图和详细的事件流描述。用例模型为软件开发提供了有效的需求描述方法。
2025-06-08 13:30:22
1566
原创 UML基本概念:构造块、公共机制与规则
本篇介绍了UML的基础概念:构造块、公共机制和规则。构造块是构成UML模型的基础元素,包括事物、关系和图,它们共同构成了UML的核心。
2025-05-21 22:02:10
1266
原创 C++实用函数:remove_if
本篇介绍了C++中remove_if函数的使用,它用于在vector在按照自定义的匹配规则查找到所有的匹配的数据,结合erase方法实现数据的删除。
2025-04-02 22:43:23
903
原创 面向对象的程序设计:以对象的方式进行思考
本篇介绍了面对对象的程序设计中,如果以对象的方式进行思考,包括理解接口与实现的区别,使用抽象思维设计接口,以及具体的思考过程。
2025-01-20 23:01:44
1070
原创 《大话设计模式》解读09-建造者模式
本篇介绍了设计模式中的**建造者模式**,并通过画小人的实例,使用Python编程,来演示建造者模式的使用。
2024-12-30 22:40:08
1237
原创 嵌入式Linux之wifi配网C++版
本篇介绍了如何使用C++编程,来实现嵌入式Linux开发中,调用wpa_supplicant等工具进行wifi配网,通过编写测试例程,并进行实际测试,验证代码功能。
2024-12-16 22:48:29
889
原创 嵌入式Linux之wifi配网脚本分析
本篇,以飞凌嵌入式Linux开发板为例,介绍了其自带的wifi配网脚本的执行原理。通过自动配置wpa_supplicant.conf文件,并调用wpa_supplicant进行wifi配网。下篇,将继续介绍如何通过C/C++编程,来实现wifi配网。
2024-12-02 22:19:47
1595
原创 Linux中时区获取与ISO8601时间完善
本篇介绍了通过编程实现linux系统中时区的获取,并完善上篇的ISO8601格式时间的生成,增加了时区的处理。
2024-11-18 22:30:17
1580
原创 Linux-C++获取当前时间与计算时间间隔
本篇介绍了ISO8601格式时间的生成以及两个ISO8601格式的时间间隔的计算。首先介绍需要用到的一些函数,然后介绍编程实现的思路,编写代码,实现所需的功能,最后进行编译运行测试。
2024-11-04 23:41:18
1499
原创 大话设计模式解读01-简单工厂模式
本篇主要介绍设计模式中的简单工厂模式,首先通过一个活字印刷的小故事来体会程序设计中的可维护、可复用、可扩展、灵活性的思想,并引入面向对象设计模式中的三大基本思想:封装、继承、多态,然后通过一个计算器的代码实现的例子,通过C++实现了三个版本的代码,由浅到深地理解面向对象的设计思想以及简单工厂模式的使用。
2024-06-03 22:50:47
1642
原创 嵌入式基础知识-信号量,PV原语与前趋图
本篇介绍了信号量与PV原语的基础知识点,并介绍了PV操作的一些应用,实现进程互斥和实现前趋关系,前趋关系中使用前趋图来实例分析PV操作影响信号量变化的具体运行过程。
2024-03-04 22:12:14
1479
1
GD32各系列官方源码例程.rar #资源达人分享计划#
2021-08-04
GD32F4xx数据手册.rar #资源达人分享计划#
2021-08-04
FreeRTOS+STM32F407+Keil工程模板
2020-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅