- 博客(25)
- 资源 (4)
- 收藏
- 关注
原创 c++多人聊天室-增加图片发送功能
点击按键后将InputTextEdit的内容进行处理,因为要发送文本消息和图片消息,所以对内容进行简单的处理,发送给服务器的消息由消息类型、消息长度、消息内容组成。使用QPixmap加载图片,然后将QPixmap转换为字节数组,按自定义TCP协议封装消息类型+消息长度+消息内容。另外最近也是秋招的高峰期了,有需要帮忙看简历的同学也可以在公众号中联系,可以针对简历提出一些修改建议。前两天忙着面试,所以断更了两天,这一集给聊天室搞个ui界面以及传输图片的功能。完整代码可在公众号中获取,关键词:QT客户端程序。
2025-10-14 15:12:24
322
原创 手搓多人聊天室项目
5.完成前面的初始化操作后,就可以通过accept实时接收客户端socket信息,在新进程中进行处理:接收到客户端的连接后,发送欢迎词,并询问客户端的昵称,接收客户端信息并广播给所有客户端。3.在主进程中发送消息给服务器,创建子进程接收服务器消息。(2)每个客户端连接后,服务器会要求客户端提供昵称。(3)服务器将每个客户端发送的消息广播给所有客户端。(1)发送消息给服务器,并接收来自其他客户端的消息。此时服务器监测到客户端连接,发送欢迎词,并问询昵称。(4)当客户端连接或断开时,通知所有客户端。
2025-10-11 22:14:28
346
原创 Linux的进程调度及内核实现
Linux进程调度机制分析:本文详细解析了Linux内核的进程调度实现,包括关键数据结构(task_struct、sched_class)、调度策略(CFS公平调度、RT实时调度)及触发机制。CFS采用红黑树管理进程,通过vruntime实现公平分配;RT调度器则通过优先级队列处理实时任务。调度过程分为主动/被动触发,最终通过schedule()完成上下文切换。文章还涉及进程状态转换、优先级规则及调度器核心算法的实现细节。
2025-09-18 21:17:54
672
原创 进程间通信之信号量内核实现
本文介绍了Linux系统中信号量的内核实现机制。信号量通过计数器控制共享资源访问,采用睡眠/唤醒机制管理进程等待。内核使用sem_array和sem结构体维护信号量状态,包含计数值、等待队列等信息。P/V操作通过semop系统调用实现,具有原子性保证。系统支持二进制和计数信号量,并提供了撤销机制防止进程异常终止导致的资源锁定。内核通过自旋锁、FIFO等待队列和性能优化等措施,确保信号量操作的高效性和公平性。该实现不仅管理资源计数,还涉及复杂的进程调度管理。
2025-09-14 22:35:00
730
1
原创 C语言实现c++容器
文章摘要:本文介绍了四种常见数据结构的C语言实现方案:1)栈(Stack)使用动态数组和栈顶指针实现,支持自动扩容;2)队列(Queue)采用循环数组设计,维护front/rear指针;3)向量(Vector)基于动态数组实现,支持随机访问;4)链表(List)采用双向链表结构,支持高效首尾操作。所有实现均包含内存管理功能,通过FreeFunction参数支持自定义释放逻辑,同时提供了完整的创建、增删查改和销毁接口。
2025-09-12 10:46:56
322
原创 一文读懂进程间通信方式之socket
Socket是内核中连接应用层与传输层的桥梁,其实现分为系统调用接口、协议无关层和协议特定层三个层次。通过socket、sock和sk_buff等数据结构管理连接状态和数据流。数据发送流程包括用户空间到内核空间的系统调用、协议无关层路由、传输层TCP处理、网络层IP封装,最终通过网卡发送。本地IPC通信则绕过网络协议栈,直接在内核交换数据。
2025-09-11 22:38:51
895
原创 WIFI无线通信的原理介绍
WiFi通过无线电波传输数据,遵循802.11协议和OSI模型。其工作流程包括:数据准备与分割成帧、信道监听避免冲突、编码调制将数据加载到载波上、采用OFDM和MIMO技术提升传输效率、最后通过射频发射接收。WiFi主要工作在2.4GHz、5GHz和6GHz频段,各有优缺点:2.4GHz穿透性好但干扰多,5GHz速度更快但覆盖小,6GHz信道多但需要新硬件支持。整个传输过程涉及复杂的信号处理和校验机制以确保数据准确送达。
2025-09-10 22:36:31
551
原创 一文读懂进程间通信之消息队列
消息队列是Linux内核实现的进程间通信机制,分为SystemV和POSIX两种实现。SystemV消息队列使用内核维护的链表结构,每个消息包含类型标识和数据内容,接收方可按类型筛选消息。POSIX消息队列基于虚拟文件系统实现,支持优先级排序和更简洁的接口。两种实现的核心功能相似,都通过内核缓冲区暂存消息,实现异步通信。SystemV采用IPC标识符管理队列,而POSIX使用文件描述符,并支持自动释放资源。消息队列以完整消息为单位传输数据,相比字节流更结构化,适合不相关进程间的异步通信。
2025-09-09 22:09:13
935
原创 一文读懂Linux进程间通信方式--管道
本文介绍了Linux系统中的进程间通信(IPC)机制之一——管道,重点分析了匿名管道和命名管道的实现原理。匿名管道通过pipe()系统调用创建,只能在父子进程间进行单向通信,其核心数据结构pipe_inode_info管理缓冲区、读写计数等状态。命名管道则通过mkfifo创建文件系统路径,允许无亲缘关系的进程通信。文章详细阐述了管道的创建、读写操作的内核实现,包括阻塞与非阻塞模式的处理逻辑,并解释了匿名管道只能用于亲缘进程通信的根本原因在于文件描述符继承机制。最后,文章还分析了命名管道打开时的同步处理机制。
2025-09-08 21:33:17
412
原创 c语言实现系列--如何用c语言实现栈数据结构
栈是一种先进后出的数据结构,主要操作有push--压栈pop--弹出top--查看栈顶元素isempty--检查栈是否为空c语言实现方案。
2025-09-07 11:06:52
231
原创 一文读懂FreeRTOS的中断管理机制
FreeRTOS的中断管理核心思想是中断服务程序尽可能的简短,只处理紧急的任务,将负责的工作交给任务去做。
2025-08-23 15:34:34
379
原创 FreeRTOS内核之任务详细介绍
本文介绍了FreeRTOS任务管理的核心内容:1)任务是系统最小执行单元,拥有独立栈空间和TCB(任务控制块);2)通过xTaskCreate函数创建任务,内核会分配栈空间、初始化TCB并加入就绪列表;3)调度机制采用抢占式调度(基于优先级)和时间片轮转(同优先级任务),通过系统节拍定时器触发PendSV异常实现任务切换。文章详细阐述了任务创建流程和两种调度策略的具体实现步骤。
2025-08-05 23:09:41
660
原创 CCS报错:option -l is missing its parameter ‘file‘
关于解决CCS报错:option -l is missing its parameter 'file'的方法
2023-09-10 09:00:00
547
1
原创 CCS导入工程文件时遇到汇编器版本号不匹配问题的解决方法
3.下滑找到C6000 Compiler Tools找到对应版本8.1,为了以后少出现此类问题可以将其他版本顺便一起安装。在导入其他工程文件时遇到以下问题,打开Details发现是没有汇编器C6000v8.1导致的,按以下步骤安装即可解决。2.work with中选择Code Generation……1.点击Help->install New Software。再将工程文件导入就不会出现之前的问题了。
2023-09-09 10:49:44
865
1
原创 TMS28027输出PWM波例程解析
PWM波模块由Time-Base(时基)、Counter-Compare(计数器比较)、Action-Qualifier(波形发生器)、Dead-Band(死区设置)、Trip-Zone(错误处理)、Event-Trigger(事件触发)、PWM-Chopper(PWM斩波器)、HRPWM(高分辨率脉宽调制器)、Digital Compare Event(数字比较事件)这些子模块组成例程中输出一个PWM波只需要用到TB(Time-Base)、CC(Counter-Compare)、AQ(Acti...
2021-07-23 15:44:45
2420
原创 TMS28027学习的踩坑经验总结:用延时函数使LED闪烁
为了参加今年的电赛,我专门学习了TI的这个开发板但网上对于这个开发板的资料很少,因此学习起来可以说是相当艰难,所以我想把遇到的困难以及解决的方法分享出来以便后面想学的同学能够避免踩坑。首先碰到的问题就是烧录程序,一开始我以为没有仿真器所以想通过usb线烧录程序,就下载了C2prog然后直接烧录,但是一直显示没有与开发板连接上,为了这个我搞了一下午,最后查了数据手册才发现这个板子有烧录的模式选择用C2prog烧录需要将第一个拨码拨上然后再把上面的拨码拨上如图:最终虽然显示了烧录..
2021-07-21 20:32:07
1186
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅