自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 应用——Linux FrameBuffer图形显示与多线程消息系统项目

本项目实现了一个基于Linux FrameBuffer的嵌入式图形显示系统,集成了多线程通信和物联网功能。系统包含FrameBuffer图形显示模块(支持基本绘图、位图和中文字符显示)、UTF-8字库处理模块和多线程邮件系统。关键技术包括显存映射、线程同步机制和UTF-8编码处理。项目提供图形显示、多线程通信和物联网云平台三个示例应用,适用于嵌入式GUI开发和教育演示。系统采用模块化设计,支持扩展优化,如添加双缓冲、触摸屏支持等功能。开发需注意权限管理、资源释放和线程安全等问题。

2026-01-09 23:38:05 402

原创 应用——MQTT客户端开发

本文介绍了一个基于Paho MQTT C客户端库开发的物联网设备通信程序。程序实现了设备属性上报和数据订阅功能,采用OneNET平台标准主题格式($sys/{产品ID}/{设备名}/thing/property/post)进行通信。关键技术包括:MQTT主题设计、JSON消息格式构建、Token认证机制、回调函数处理(连接断开、消息接收、发送确认)等。程序通过gcc编译,依赖Paho MQTT和pthread库,支持QoS 0级别的消息传输,并包含25秒间隔的模拟数据上报功能。文中还指出了密码有效期管理、Q

2026-01-07 23:35:11 343

原创 学习笔记——MQTT协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅模式的轻量级通讯协议,构建于TCP/IP协议之上

2026-01-07 18:12:38 736

原创 应用——Linux Framebuffer 图形库显示

本文介绍了一个基于Linux Framebuffer的轻量级图形库实现。该库提供基本的图形绘制功能,包括点、线、矩形、圆形绘制,支持BMP图片显示和中文字符渲染。核心实现通过内存映射直接操作显存,支持RGB888和RGB565两种颜色格式。中文显示通过UTF-8转Unicode并查找字模实现。文章详细说明了图形库的初始化流程、关键数据结构、像素绘制原理以及中文显示机制,并提供了编译运行方法和优化建议。该图形库适用于嵌入式系统显示、信息显示系统等场景,是学习Linux底层图形编程的良好示例。

2026-01-06 22:39:12 1296

原创 应用——基于Linux内核链表和线程的邮箱系统

这是一个基于Linux内核风格双向链表实现的线程间通信邮箱系统。系统采用生产者-消费者模型,使用队列作为消息缓冲区,支持多线程间的异步消息传递。

2026-01-05 23:59:56 739

原创 应用——Web服务器项目代码解析

本文介绍了一个基于C语言实现的轻量级Web服务器项目,主要功能包括用户登录、商品搜索和详情展示。项目采用SQLite数据库存储数据,支持HTTP协议处理,包含6个HTML模板文件实现前端交互。服务器核心功能包括:数据库初始化与查询、HTTP响应处理、文件发送、URL参数解析等。系统具有安全性考虑(防SQL注入)、性能优化(分块读取)和良好用户体验(响应式设计)。项目结构清晰,包含主程序ser.c、URL处理模块url2.c和html模板目录。改进建议包括增强安全性、扩展功能及优化性能。该项目展示了C语言实现

2026-01-04 18:55:35 1299

原创 应用——C语言基础知识2

本文摘要: 本文系统介绍了C语言中指针、函数指针、内存管理等核心概念。主要内容包括:1)多级指针的定义与使用;2)函数指针的声明、赋值和调用方式;3)回调函数的实现原理;4)指针数组与数组指针的区别;5)结构体和共用体的内存布局特性;6)编译链接过程和内存管理技术;7)常见数据结构的实现与操作。重点讲解了指针相关的进阶用法,如二级指针解引用、函数指针数组等,并分析了各种数据结构的存储特点和时间复杂度。文中还包含内存对齐、大小端检测等底层技术细节,为C语言开发者提供了全面的参考指南。

2026-01-04 00:34:58 1001

原创 应用——C语言基础知识1

本文系统介绍了C语言开发的核心知识点,包括开发环境配置、基本语法、函数设计与调用、数组与指针操作等内容。重点解析了C语言特有的指针机制、内存管理方式和底层控制能力,对比了与其他高级语言的差异。通过大量代码示例详细演示了字符串处理函数实现、递归编程技巧、数组越界问题等实际开发中的关键问题,并提供了内存管理和性能优化的专业建议。文章旨在帮助开发者深入理解C语言的底层原理和高效编程方法,为系统级开发和性能敏感场景提供技术参考。

2026-01-03 23:04:32 934

原创 复习——SQLite3 数据库

本文介绍了SQLite3数据库的基础知识和C语言编程接口。主要内容包括:SQL语言分类(DDL、DML、DQL)、SQLite3特点(轻量级、文件型数据库)和安装方法;数据库基本操作(创建表、增删改查数据);C语言API使用(打开/关闭数据库、执行SQL语句、回调函数查询);并通过学生信息管理系统示例演示了完整开发流程。文章还提供了实用技巧(复杂查询、事务处理)和最佳实践建议(错误处理、数据备份等)。适合需要快速掌握SQLite3数据库开发的程序员参考。

2026-01-02 23:46:53 855

原创 复习—sqlite基础

INSERT INTO 表名 (column1, column2, ...) VALUES (value1, value2, ...);• 创建表:在“Database Structure”标签页中,点击“Create Table”按钮,输入表名和字段信息。• 插入数据:在“Browse Data”标签页中,点击“New Record”按钮,输入数据并保存。• 查询数据:在“Execute SQL”标签页中,输入 SQL 查询语句并执行,查看查询结果。

2026-01-01 23:57:31 691

原创 学习笔记——HTML网页开发基础

本文介绍了HTML网页开发的基础知识,包括文档结构、常用标签和属性。主要内容有:1)HTML文档基本框架;2)标题、段落等文本标签;3)超链接和图片的使用方法;4)无序/有序列表的创建;5)表格的制作与单元格合并;6)表单元素及各类输入框的应用。文章还提供了HTML实体字符的表示方法,并给出最佳实践建议:使用语义化标签、统一编码格式、合理添加注释等。最后建议用CSS替代HTML样式属性,并介绍了HTML5新增的表单输入类型。

2025-12-31 23:19:14 1112

原创 应用——基于C语言实现的简易Web服务器开发

本文介绍了一个基于C语言实现的简易Web服务器项目。该项目支持HTTP/1.1协议,能够处理HTML页面和图片文件请求,并实现基本的登录验证功能。核心功能包括:1)使用Socket编程实现网络通信;2)解析HTTP请求并构造响应;3)根据文件类型动态设置Content-Type;4)实现用户登录验证逻辑。项目采用模块化设计,包含服务器主程序、HTML页面和图片资源等文件,通过分块读取方式高效传输文件。该项目适合学习网络编程基础,理解HTTP协议工作原理,以及掌握C语言在实际项目中的应用。

2025-12-31 23:03:29 1062

原创 学习笔记——SQLite3 编程与 HTML 基础

本文介绍了SQLite3数据库编程基础和HTML基础知识。SQLite3部分包括数据库操作的基本流程(打开、执行SQL、关闭),重点说明了sqlite3_exec函数的使用方法及回调函数的注意事项,并提供了完整示例代码。HTML部分讲解了网页基本结构、常用标签(超链接、图片、表单、输入框等)及其属性,强调了表单提交方式和输入框类型的重要性。文章最后总结了SQLite3编程的要点(错误处理、资源管理)和HTML学习的重点(语义化标签、表单设计),并给出了开发建议,如始终检查返回值、注意标签属性格式等。

2025-12-30 23:37:27 1138

原创 应用——SQLite3 C 编程学习

本文介绍了四个SQLite3 C语言程序示例:1) sqli.c演示数据库连接和插入操作;2) sql_dict.c实现从文件批量导入数据到数据库;3) sql_select.c展示查询结果处理;4) sql_arg.c演示带参数的查询(存在SQL注入漏洞)。这些示例涵盖了SQLite3的核心功能,包括数据库连接、CRUD操作、文件数据导入和查询结果处理。文章特别指出直接拼接SQL语句存在安全风险,建议使用参数化查询替代,并提供了安全编程建议。这些示例为学习SQLite3 C编程提供了基础参考。

2025-12-30 21:08:19 1232

原创 学习笔记——sqlite3 数据库基础

SQLite3是一个轻量级嵌入式数据库,具有体积小(<10MB)、无需服务器、支持2TB数据库等特点。文章介绍了数据库基础概念,包括层级结构(数据库→表→记录→字段)和分类(大型/中型/小型/内存数据库)。详细讲解了SQLite3的安装配置方法,以及命令行操作(.help/.tables/.schema等)。重点解析了SQL语句:创建表(CREATE TABLE)、增删改查(INSERT/DELETE/UPDATE/SELECT)、修改表结构(ALTER TABLE)等核心操作,并提供了大量实用示例。

2025-12-29 23:46:57 1040

原创 应用——Linux Socket编程

本文摘要: 本文详细介绍了Linux Socket编程中TCP服务器的五种实现模型:基础模型、select、epoll、fork多进程和pthread多线程。主要内容包括:1)基础模型的核心流程和关键结构体;2)select模型的特点及实现代码;3)epoll模型的高效事件驱动机制;4)fork模型的进程隔离优势;5)pthread模型的线程共享特性。文章还对比了各模型的性能特点、适用场景,并提供了优化建议和常见问题解决方案。最后给出了统一的客户端实现和编译命令,为开发者选择合适的高并发网络编程方案提供了全

2025-12-29 22:18:08 1041

原创 复习——网络基础知识

本文系统介绍了计算机网络基础与Socket编程知识。首先对比了OSI七层模型和实际应用的TCP/IP四层模型,详细解析了各层功能。其次阐述了IP地址分类、子网划分及特殊地址用途。重点讲解了Socket编程核心概念,包括套接字本质、通信五元组和字节序转换。通过TCP/UDP编程流程对比,说明TCP的三次握手与四次挥手机制,以及UDP的无连接特性。最后介绍了网络调试工具和抓包分析方法。全文为网络编程提供了全面的理论基础和实践指导。

2025-12-28 21:57:50 728

原创 复习——网络测试工具

--- FIN=1, seq=u ---------------->| # 第1次:主动关闭。|<--- FIN=1, ACK=1, seq=w, ack=u+1-| # 第3次:被动关闭。|<--- ACK=1, seq=v, ack=u+1 ------| # 第2次:确认。|--- ACK=1, seq=u+1, ack=w+1 ---->| # 第4次:确认。客户端 服务器。

2025-12-28 21:28:29 952

原创 复习——网络编程基础

本文摘要:网络编程基础知识涵盖了OSI七层模型和TCP/IP四层模型,重点介绍了IP地址分类、Socket编程基础以及TCP/UDP编程模型。详细讲解了TCP服务器端函数调用流程(socket-bind-listen-accept)和UDP专用函数sendto/recvfrom,并列举了常见网络端口号。文章还比较了C/S、B/S和P2P三种网络模式,最后强调了网络编程中的错误处理、资源管理和并发控制等注意事项。内容系统全面,适合网络编程初学者快速掌握核心概念。

2025-12-27 23:41:17 1326

原创 应用——Linux FIFO(命名管道)与I/O多路复用

Linux FIFO(命名管道)与I/O多路复用编程笔记摘要 本文介绍了Linux FIFO(命名管道)通信机制及多种I/O模型实现方式: FIFO基础 半双工通信的特殊文件 需读写双方同时打开 默认阻塞式I/O,数据先进先出 I/O模型实现 非阻塞I/O:通过fcntl设置O_NONBLOCK标志 信号驱动I/O:使用SIGIO信号异步通知 select多路复用:监控多个文件描述符 epoll机制:高效处理大量文件描述符 核心对比 select受FD_SETSIZE限制,效率O(n) epoll支持大量f

2025-12-27 22:15:45 995

原创 学习笔记——IO多路复用技术

IO多路复用技术是实现高并发网络编程的核心方法,主要包括select、poll和epoll三种机制。其中,select模型存在1024文件描述符限制和性能问题,而epoll通过事件驱动和共享内存机制显著提升了性能,支持水平触发和边缘触发两种模式,适用于Linux平台下的高并发场景。相比之下,select适合少量连接或跨平台需求,epoll则更适合处理大量并发连接。实际应用中,epoll配合非阻塞IO和事件循环能构建高效服务器,被Nginx等高性能服务器广泛采用。掌握这些技术对开发高并发网络应用至关重要。

2025-12-26 21:11:19 1091

原创 应用——HTTP天气查询

本文详细解析了一个基于C语言的HTTP天气查询客户端程序。该程序通过TCP Socket连接天气API服务器,发送HTTP GET请求获取指定城市(西安)的天气数据,并解析返回的JSON格式响应。代码分为七个部分:建立TCP连接、构造HTTP请求、发送请求、接收响应、解析JSON数据、输出结果和资源清理。文章深入讲解了Socket编程、HTTP协议、网络字节序转换和字符串处理等核心技术,并提供了常见问题解决方案和改进建议(如增大缓冲区、使用JSON解析库)。此外,还给出了扩展练习(修改查询城市、封装函数)和

2025-12-26 10:21:14 1133

原创 学习笔记——数据封包拆包与协议

本文介绍了网络编程中的关键概念和技术:1. 详细讲解了Socket编程中的send()和connect()函数使用;2. 分析了网络协议分层和数据封装过程,包括MAC、IP、TCP/UDP头部结构;3. 介绍了Wireshark抓包工具的使用方法和常用过滤条件;4. 深入解析了HTTP协议,包括URL格式、请求报文结构和关键字段;5. 总结了TCP三次握手、HTTP通信步骤等核心网络知识。文章内容涵盖了从底层协议到应用层通信的完整知识体系,适合网络编程学习者参考。

2025-12-25 23:50:28 1009

原创 应用——TCP Socket 编程笔记

socket() // 创建套接字bind() // 绑定地址listen() // 监听连接accept() // 接受连接connect() // 连接服务器send()/recv() // TCP 发送/接收close() // 关闭套接字。

2025-12-25 23:25:14 1136

原创 学习笔记——TCP 传输控制协议

本文整理了TCP传输控制协议的核心内容,主要包括:1)三种网络模型(CS、BS、P2P)的特点对比;2)TCP协议的可靠性机制(应答、超时重传)和黏包问题;3)关键socket函数详解及TCP编程流程;4)三次握手和四次挥手过程;5)服务器和客户端的代码框架示例。重点阐述了TCP面向连接、可靠传输的特性,以及通过流式套接字实现全双工通信的机制,同时提供了网络编程中的注意事项和错误处理建议。

2025-12-24 20:47:32 968

原创 应用——UDP Socket 编程笔记

本文介绍了UDP Socket编程的核心知识。UDP具有无连接、不可靠但高效的特点,适合实时性要求高的场景。文章详细讲解了UDP编程的关键函数sendto()和recvfrom(),并通过三个示例程序(回显服务器、聊天程序和文件传输)展示了UDP的实际应用。同时提供了完整的编程模板,并总结了常见错误解决方法。最后还介绍了广播通信、组播通信等进阶主题,为开发者提供了全面的UDP编程指南。

2025-12-24 16:13:03 1174

原创 学习笔记——网络基础

本文介绍了计算机网络的两大基础模型:OSI七层参考模型(理论标准)和TCP/IP四层模型(实际标准)。重点分析了各层功能及核心协议,包括应用层的HTTP/DNS、传输层的TCP/UDP、网络层的IP等。详细比较了TCP与UDP的特性差异,并提供了Linux网络配置命令。在编程实践部分,阐述了C语言Socket编程的核心概念,特别是UDP通信流程及关键函数的使用方法。最后建议通过抓包分析和编写简单网络程序来加深理解,强调实践对掌握网络协议的重要性。

2025-12-23 23:19:11 1002

原创 应用——UDP 网络编程

本文介绍了基于UDP协议的网络编程实现,包含客户端和服务器端的C语言代码。客户端(02cli.c)创建UDP socket后循环10次向服务器发送"hello"消息并接收响应,服务器(01server.c)绑定端口接收消息并返回带时间戳的响应。关键点包括:socket创建(AF_INET+SOCK_DGRAM)、地址结构体sockaddr_in的使用、字节序转换函数(htons/inet_addr)、收发函数(sendto/recvfrom)的参数说明。代码特点为简洁直接但缺乏错误处理,

2025-12-23 21:30:48 750

原创 应用——MPlayer 媒体播放器系统代码详解

本文详细解析了一个基于C语言的MPlayer媒体播放器控制系统。该系统通过命名管道(FIFO)实现进程间通信,采用多进程编程(fork())来运行MPlayer播放器。核心功能包括播放控制、列表管理、速度调节和快进快退等操作。代码结构包含初始化、命令发送、播放控制等模块,采用静态数组管理播放列表(最多10个文件)。系统实现了健壮的错误处理机制和资源管理策略,包括信号处理和进程清理。虽然存在扩展名检查不严谨、缓冲区溢出风险等问题,但通过模块化设计和清晰的用户界面,展现了Linux系统编程中的进程管理、IPC通

2025-12-22 22:56:07 1084

原创 应用——基于Linux的音乐播放器项目

本文详细解析了一个基于Linux的音乐播放器项目。项目采用C语言开发,主要包含三个文件:main.c(主程序)、func.c(功能实现)和func.h(头文件)。系统通过命名管道(FIFO)与mplayer进程通信实现播放控制,支持歌曲列表显示、播放/暂停、停止、切换歌曲等基本功能。文章详细分析了项目架构、关键代码实现、进程间通信机制(SIGPIPE信号处理)以及调试技巧,并提供了扩展功能(如播放模式切换)的实现示例。该项目展示了Linux环境下系统编程、进程控制和IPC技术的实际应用。

2025-12-22 16:33:41 1182

原创 复习——共享内存

共享内存是UNIX系统中最高效的进程间通信方式,通过SystemV接口实现。其操作流程包括申请、映射、读写、撤销映射和删除对象。相比管道,共享内存具有双方读写权限、无阻塞等特点,但需要配合信号/信号量实现同步。关键函数包括ftok()生成键值、shmget()申请内存、shmat()映射内存等。示例代码展示了完整的共享内存使用流程,包括读写字符串和进程ID。系统提供ipcs/ipcrm等命令管理共享内存对象。共享内存采用拷贝而非剪切方式传输数据,多次读写会覆盖原有内容,需注意同步问题。

2025-12-21 20:34:30 1080

原创 复习——IPC(进程间通信)

本文总结了进程间通信(IPC)的三大类别:传统方式(无名/有名管道、信号)、IPC对象(消息队列、共享内存、信号量)和Socket通信。重点解析了管道通信的特性与实现:无名管道通过pipe()创建,仅限亲缘进程;有名管道通过mkfifo()创建,支持任意进程通信,二者均为半双工、FIFO结构,默认容量64KB。信号通信部分详述了异步特性、信号类型及处理方式,强调SIGKILL/SIGSTOP不可屏蔽。文章还包含实验验证方法和实用技巧,如双向管道实现、信号调试等,为进程间通信提供了完整的技术参考。

2025-12-21 18:05:04 680

原创 复习——线程(pthread)

多线程编程的关键在于正确处理共享资源的同步与互斥问题。合理使用互斥锁和信号量可以避免竞态条件和死锁,同时需要注意线程的生命周期管理和资源回收。在实际开发中,应根据具体需求选择合适的线程模型和同步机制。

2025-12-20 17:47:47 1034

原创 复习——进程

本文摘要:进程是操作系统资源分配和调度的基本单位,包含PCB控制块、内存分布和多种状态。进程与程序的区别在于动态执行与静态代码。Linux进程管理涉及fork创建、exec执行新程序、wait回收资源等系统调用,需注意僵尸/孤儿进程问题。关键命令包括ps、top、kill等,编程中要正确处理进程间关系和资源回收。典型应用包括父子进程协作、文件通信等并发场景,核心在于理解进程生命周期和并发控制机制。

2025-12-20 14:49:32 810

原创 学习笔记——Linux进程间通信(IPC)

本文系统介绍了Linux进程间通信(IPC)的三种主要方式:信号通信、管道通信和共享内存。信号通信采用异步通知机制,通过kill()发送信号和signal()处理信号;管道通信包括无名管道(pipe)和有名管道(mkfifo),前者用于亲缘进程,后者可用于任意进程;共享内存是最高效的IPC方式,通过shmget、shmat等函数实现内存共享。文章详细说明了每种方式的实现步骤、相关函数及特点,并强调了使用注意事项,包括信号处理简洁性、管道阻塞处理、共享内存同步机制等,为Linux进程间通信提供了全面的技术参考

2025-12-19 21:34:49 945

原创 应用——Linux进程通信与信号处理

本文详细介绍了Linux系统中的进程通信与信号处理机制。主要内容包括:1)命名管道(FIFO)通信实现双向聊天程序;2)共享内存通信作为最快的IPC方式及其操作流程;3)管道通信在父子进程间的应用;4)信号处理机制,包括信号发送、自定义处理、定时器、进程挂起恢复和子进程回收等。文章对比了不同通信方式的特点,总结了信号处理的重要函数和编程建议,为Linux系统编程提供了实用的技术参考。

2025-12-19 20:37:18 791

原创 应用——管道与文件描述符

本文详细介绍了Linux进程间通信中的管道机制。主要内容包括:1)无名管道(Pipe)的基本概念、创建方法及读写阻塞特性,通过代码示例展示了父子进程间通信的实现;2)命名管道(FIFO)的创建、阻塞特性和错误处理,演示了无亲缘关系进程间的通信方式;3)文件描述符与FILE*的相互转换方法(fileno和fdopen函数)。文章还总结了不同通信方式的特点和适用场景,并强调了使用时的注意事项,如及时关闭文件描述符、处理SIGPIPE信号等。这些机制为Linux系统编程提供了灵活的进程间通信解决方案。

2025-12-18 22:31:12 778

原创 学习笔记——IPC(进程间通信)

摘要:本文介绍了进程间通信(IPC)的主要方式,重点分析了管道机制。IPC主要用于解决进程间数据共享需求,分为无名管道、有名管道和Socket通信三类。无名管道适用于有亲缘关系的进程,采用队列数据结构实现半双工通信;有名管道通过文件系统可见,支持任意进程通信。文章详细阐述了管道的特性、底层实现、编程步骤及相关函数(pipe和mkfifo),并比较了两种管道的区别。最后提醒注意管道的半双工特性、读写阻塞现象以及SIGPIPE信号处理等问题。

2025-12-18 22:21:34 1159

原创 学习笔记——线程控制 - 互斥与同步

本文介绍了线程控制中的互斥与同步机制。互斥锁(Mutex)用于保护临界资源,确保同一时刻只有一个线程访问,通过pthread_mutex系列函数实现加锁、解锁操作。同步机制则进一步控制线程访问顺序,信号量(Semaphore)通过PV操作实现资源计数和线程协调。文章还分析了死锁产生的四个必要条件,并对比了互斥锁和信号量的特性差异。在实际应用中,建议优先使用更简单的互斥锁,保持临界区短小,避免耗时操作,并注意锁的申请顺序以防止死锁。

2025-12-17 20:38:40 1007

原创 应用——线程竞争资源模型

本文对比分析了三种多线程资源竞争模型:1)带ID的窗口计数器模型,使用单一互斥锁管理共享资源;2)简化版匿名线程模型,减少功能但保留核心竞争逻辑;3)多互斥锁模型,通过trylock实现分布式资源管理。三种模型在锁竞争、公平性和并发度上各有特点:计数器模型易扩展但并发低,多锁模型并发高但实现复杂。文章详细介绍了互斥锁的使用方法,指出了忙等待和饥饿问题,并提出了改进方案(随机尝试顺序+指数退避)。最后建议根据资源同质性选择模型,强调锁的配对释放和错误处理,并提及信号量、条件变量等扩展方案。这些模型适用于连接池

2025-12-17 14:17:13 489

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除