自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 QT:计算器的功能实现

本文介绍了基于Qt框架开发的带语音播报功能的计算器实现过程。项目采用Widget界面设计,包含数字按钮、运算符按钮、行编辑器等组件,实现了加减乘除模运算、按位删除和清空功能。重点讲解了语音播报功能的实现方法,通过QTextToSpeech类实时播报按键内容。文章详细说明了按钮样式设置(包括悬停效果)以及各类按钮的槽函数编写逻辑,特别是运算表达式的解析与计算过程。该计算器项目结构简单,适合作为Qt入门练习,能帮助开发者熟悉Qt的信号槽机制和UI设计。

2025-11-10 19:28:01 466

原创 I/O模型:用epoll实现多路复用I/O(linux下C语言版)

本文介绍了Linux下的I/O多路复用技术,重点讲解了epoll系列函数的使用方法。文章首先分析了传统阻塞I/O、非阻塞I/O和进程方式的局限性,指出多路复用I/O是高效处理多路I/O的最佳方案。接着详细介绍了epoll_create、epoll_ctl和epoll_wait三个核心函数的功能及参数,并通过两个完整示例(监测键盘鼠标输入和C/S模型通信)演示了epoll的具体实现。最后总结了epoll的特点:高效返回就绪描述符(O(1)复杂度)、无文件描述符数量限制,特别适合大规模并发场景。

2025-10-13 19:23:42 736

原创 创建一个顺序栈,并实现基础的“出栈入栈”功能(C++模板实现)

本文介绍了使用C++模板实现顺序栈的方法。栈是一种先进后出的线性数据结构,分为顺序栈和链式栈。通过模板类实现了栈的基本操作(入栈、出栈)和辅助功能(判空、判满等)。重点讲解了模板类必须将声明和实现都放在头文件中的原因:模板是编译时生成代码的机制,需要完整定义才能实例化。文章还展示了主程序测试代码和运行结果,说明了模板编程的优势在于编写与数据类型无关的通用代码。最后总结了栈的特点及其在编程中的应用价值。

2025-10-10 19:15:29 721

原创 I/O模型:用poll实现多路复用I/O(linux下C语言版)

本文介绍了UNIX/Linux下的I/O多路复用技术,重点讲解了poll函数的使用。文章首先分析了四种I/O模型的优缺点,说明多路复用I/O能有效解决多路输入输出流处理的效率问题。详细介绍了poll函数的参数、返回值和使用步骤,包括创建文件描述符集合、事件监测和处理流程。通过两个实例演示了poll函数的实际应用:监测键盘鼠标输入和服务器端同时处理多个客户端连接。最后总结了poll函数的优势(无数量限制、高效)和不足(仍需遍历检查),并提到select、epoll等其他多路复用方法。

2025-10-04 20:00:18 1267

原创 创建一个顺序栈,并实现基础的“出栈入栈”功能(C++版)

本文介绍了栈(Stack)的基本概念和C++实现方法。栈是一种先进后出的线性数据结构,分为顺序栈和链式栈。文章详细展示了如何使用C++类实现顺序栈,包括三个关键文件:stack.h定义栈类和成员函数,stack.cpp实现栈操作(如入栈、出栈、判空判满等),main.cpp测试栈功能。代码示例演示了完成10次入栈操作后,进行出栈和获取栈顶元素的操作。最后指出栈的特点和应用场景,如使用递归和elman表达式求值等。实现过程体现了栈先进后出的特性,为理解和使用栈这种数据结构提供了实用参考。

2025-10-03 19:52:40 716

原创 I/O模型:用select实现多路复用I/O(linux下C语言版)

本文介绍了UNIX/Linux下的I/O多路复用技术,重点讲解了select函数的实现原理和应用。文章首先分析了阻塞I/O、非阻塞I/O等不同I/O模型的优缺点,指出多路复用I/O能有效解决多输入输出流处理问题。详细说明了select函数的使用方法,包括参数设置和辅助功能函数,并通过键盘/鼠标监测和客户端/服务器通信两个示例演示了具体实现。最后总结了select函数的特点:支持多种事件监控但存在文件描述符数量限制,并建议进一步了解poll和epoll等其他多路复用技术。

2025-10-02 19:51:15 1282

原创 Linux下网络通信中的超时设置(C语言 客户端/服务器实现)

本文介绍了两种网络超时检测方法:1)使用setsockopt()函数设置套接字接收超时,通过SO_RCVTIMEO选项指定超时时间,超时后recv()返回-1但不终止进程;2)使用sigaction()结合SIGALRM信号处理,通过alarm()设置定时器,超时触发信号处理函数使阻塞调用返回。两种方法均通过客户端/服务器示例代码展示实现过程,并讨论了超时机制的必要性:避免无限阻塞、及时释放资源、提升系统健壮性。文章还提供了完整的编译执行指导,强调超时设置是网络编程中的重要机制。

2025-09-28 20:22:43 1669

原创 linux系统中广播和组播的实现(C语言基础版)

本文介绍了广播和组播两种网络通信方式。广播通过UDP协议将数据包发送给局域网内所有主机,使用广播地址实现,包含完整的发送和接收代码示例。组播则只向特定组播组(D类IP地址)发送数据,避免了广播风暴问题,文中提供了组播的实现流程和代码。广播适合简单场景如设备发现,组播更适合大规模一对多通信。两种方式各具特点,都是重要的网络编程技术。

2025-09-26 19:37:53 1321

原创 服务器模型:并发服务器(C语言基础版)

本文介绍了两种常见的服务器模型:循环服务器和并发服务器。循环服务器同一时刻只能处理一个客户端请求,而并发服务器能同时响应多个客户端。重点阐述了TCP并发服务器的两种实现方式:多进程方式通过fork()为每个客户端创建子进程;多线程方式则通过pthread_create()创建线程处理请求。文章提供了完整的代码示例,包括服务器端和客户端的实现,并说明了编译注意事项。并发服务器的优势在于能同时服务多个客户端,提高响应速度和用户体验,适用于多用户在线场景。两种服务器模型各有所长,开发者可根据需求选择合适方案。

2025-09-21 19:55:08 1214

原创 服务器模型:循环服务器(C语言基础版)

本文介绍了两种常见的服务器模型:循环服务器和并发服务器。循环服务器通过顺序处理客户端请求实现简单功能,但无法并发处理多个请求;并发服务器则能同时响应多个客户端。重点分析了循环服务器的TCP实现方式,包括套接字创建、绑定监听等步骤,并通过代码对比展示了循环服务器与普通服务器的区别——将通信套接字生成置于循环体内以实现多客户端处理。文章指出循环服务器适用于简单请求场景,但存在并发能力差、响应延迟等问题,可通过并发服务器有效解决这些问题。

2025-09-20 21:38:06 1124

原创 进程间通信:有名管道(C语言基础版)

本文介绍了进程间通信(IPC)中的有名管道(NamedPipe)机制。有名管道是Linux/Unix系统中通过FIFO(先进先出)文件实现的一种IPC方式,允许无关进程通过文件路径进行通信。文章通过fifo_send.c和fifo_recv.c两个示例程序演示了如何实现进程间文件内容传输:一个进程读取文本文件内容写入管道,另一个进程从管道读取并打印。与无名管道不同,有名管道适用于无亲缘关系的进程,但仍限于本地单向通信。C语言代码基础易懂,适合新手学习。

2025-09-19 19:26:57 1233

原创 进程间通信:无名管道(C语言基础版)

本文介绍了进程间通信(IPC)中的无名管道机制。无名管道是Linux/Unix系统特有的IPC方式,只能用于具有亲缘关系的进程间通信,采用半双工模式,通过pipe()函数创建,包含固定的读端(fd[0])和写端(fd[1])。文章详细说明了读写端的关系及使用注意事项,并给出了一个父子进程通过无名管道传递文件内容的完整示例代码。最后总结了无名管道的优缺点:操作简单高效但只能用于亲缘进程间单向通信,适合小数据流传输。C语言代码基础易懂,适合新手学习。

2025-09-18 19:28:05 1098

原创 线程同步:用信号量解决生产者、消费者问题(C语言基础版)

本文介绍了线程同步的概念及其在生产者-消费者问题中的应用。线程同步通过信号量机制解决多线程共享资源时的竞态问题,二值信号量(0表示资源不可用,1表示可用)是实现同步的关键。文章详细讲解了信号量的初始化、P操作(申请资源)和V操作(释放资源)等核心函数,并给出了一个温湿度传感器数据采集的C语言实现案例:生产者线程生成随机温湿度数据存入全局变量,消费者线程将数据写入日志文件。通过两个信号量控制生产消费节奏,确保缓冲区不满不空,最终在终端和日志文件中成功输出同步数据。该案例验证了信号量机制能有效实现线程同步。

2025-09-17 19:18:46 787

原创 怎样创建一个守护进程(C语言基础版)

本文介绍了Linux系统中守护进程的概念与创建方法。守护进程(Daemon)是运行在后台的服务进程,独立于控制终端,通常在系统启动时运行直至系统关闭。创建守护进程需完成五个关键步骤:1)创建子进程并退出父进程;2)在子进程中创建新会话;3)切换工作目录到根目录;4)重设文件权限掩码;5)关闭继承的文件描述符。文中通过C语言示例演示了创建守护进程的完整代码实现,该示例会在/tmp目录下创建日志文件并定时写入数据。守护进程机制有效解决了终端关闭导致进程终止的问题,是构建稳定后台服务的基础技术。

2025-09-06 19:15:00 1609

原创 如何用C语言创建一个二叉树,并实现先序、中序、后序、层次遍历

本文介绍了二叉树在C语言中的实现与应用。首先阐述了树的基本概念和二叉树的特点,重点讲解了使用链式结构实现二叉树的创建与回收方法。详细描述了四种遍历算法:先序、中序、后序(递归实现)和层次遍历(队列实现),并提供了完整的代码示例。通过三个文件(tree.h、tree.c、main.c),清晰地呈现了二叉树的完整实现过程。文章还展示了主函数测试程序及运行结果,最后总结了二叉树的特点及其广泛应用。

2025-08-31 19:33:00 1002

原创 如何用C语言创建一个链式队列,并实现基础的“ 出队入队 ” 功能

本文介绍了链式队列的实现方法。主要内容包括:1)队列的基本概念和特点(先进先出);2)核心功能实现:创建队列、判空、判满、清空、回收等辅助函数,入队和出队操作的具体实现;3)通过main.c验证队列功能,展示运行结果。文中代码注释详细,适合初学者理解链式队列的基本原理和实现方法。

2025-08-30 20:26:09 628

原创 如何用C语言创建一个顺序队列,并实现基础的“ 出队入队 ” 功能

本文介绍了顺序队列的实现方法。队列是一种先进先出的线性数据结构,分为顺序队列和链式队列两种形式。文章详细讲解了顺序队列的结构定义、创建、判空判满、清空回收等基本操作函数,解决了循环队列中判空与判满的条件冲突问题。通过代码示例展示了入队、出队等核心功能的实现,并给出了完整的主函数测试案例。文中代码注释详细,适合初学者理解顺序队列的基本原理和实现方法。

2025-08-29 19:20:02 662

原创 如何用C语言创建一个链式栈,并实现基础的 “ 出栈入栈 ” 功能

本文介绍了链式栈的实现方法。栈是一种先进后出的线性数据结构,分为顺序栈和链式栈。文章详细讲解了链式栈的实现过程,包括头文件和功能函数的定义、入栈出栈操作、获取栈顶元素等核心功能,以及判空、判满、清空等辅助函数。特别说明了链式栈选择链头作为栈顶的操作优势,并提供了完整的代码示例和运行结果展示。最后强调了栈在递归、表达式求值等场景的应用价值。

2025-08-28 19:16:54 510

原创 如何用C语言创建一个顺序栈,并实现基础的 “ 出栈入栈 ” 功能

本文介绍了顺序栈的实现原理及C语言代码实现。1.详细讲解了顺序栈的结构体定义、创建、判空/满、清空、回收等基本操作函数;2.重点实现了入栈、出栈、获取栈顶元素等核心功能;3.通过主函数演示了栈的基本操作流程,并强调了内存回收的重要性。文章还比较了出栈和获取栈顶元素的区别,指出栈在递归、表达式求值等场景的应用价值。

2025-08-27 09:04:45 592

原创 如何用C语言创建一个双向链表,并实现基础的 插入、删除 功能

双向链表是一种每个节点包含前驱和后继指针的线性数据结构,支持双向遍历。相比单向链表,它在插入和删除操作时更灵活,但需要更多存储空间。实现过程包括定义节点结构体(数据域、前驱指针、后继指针)、创建/销毁链表、清空/显示链表、求长度等基本操作,以及按位置插入和删除节点的核心功能。双向链表适用于需要双向遍历的场景,如音乐播放器的上一首/下一首功能。其特点是插入删除高效但访问元素较慢,是线性结构中链表的一种重要实现方式。

2025-08-26 16:57:43 381

原创 如何用C语言创建单向循环链表,并实现基本的 “ 增删改查 ” 功能

本文介绍了有头节点的单向循环链表的实现及使用方法。与单向链表不同,循环链表的尾节点指向头节点形成闭环。文章详细展示了用三个文件(头文件、功能文件、主文件)实现循环链表的完整代码,包括创建、判空、增删改查等核心功能。通过主函数测试验证了循环链表的各项操作。

2025-08-25 20:38:31 441

原创 如何用C语言创建一个链表,并实现基础的 “ 增删改查 ” 功能

本文介绍了链表的基本概念和实现方法。链表采用链式存储,由数据域和指针域组成节点,通过指针连接形成链表。文章详细讲解了有头链表的实现,包括创建、判空、清空、显示等基本操作函数,以及增删改查等核心功能的代码实现。全文通过头文件、功能文件和主程序三部分清晰地呈现了链表的完整实现过程。

2025-08-25 10:28:16 902

原创 如何用C语言创建一个顺序表,并实现基础的 “ 增删改查 ” 功能

本文介绍了顺序表的实现方法,主要包括创建顺序表、基础操作和增删改查功能。顺序表采用连续内存存储,通过结构体管理数据和表尾指针。文章详细说明了如何通过三个文件(sqlist.h、sqlist.c、main.c)实现顺序表,包括判空/判满、清空、求长度等基础功能,以及按位置/元素值进行插入、删除、修改和查找的操作。

2025-08-24 09:37:25 737

空空如也

空空如也

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

TA关注的人

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