自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【60.MFC基础——单文档界面应用程序】

MFC的单文档应用程序的数据保存在文档对象中,数据的可视表示保存在视图中。框架窗口类是从CFrameWnd派生来的,文档类是从CDocument派生的,而视图类是从CView或相关类如CScrollView派生来的。

2024-04-12 21:09:41 2057

原创 【50.qt基础——QObject类】

QObject类是所有使用元对象系统的基类,也就是说,一个类如果直接或间接继承于QObject,它就可以使用信号与槽、属性等特性。

2024-03-21 20:38:03 1583

原创 【43.堆】

堆又称完全二叉堆,逻辑上基于完全二叉树,物理上为线性结构(可以理解为按树的层序遍历输出)分为大根堆(根节点值大于等于子节点)与小根堆(根节点值小于等于子节点)以下以大根堆用连续数组构造为例。

2023-06-21 21:51:23 45

原创 【42.进程间通信】

消息队列是消息的链接表,存储在内核中,由消息队列标识符标识。标识符是其内部名,与文件描述符不同,因此不能用文件系统相关函数,需要使用匹配的系统调用,msgsnd添加消息,msgrcv取消息,可以按先进先出顺序,也可以按消息类型取消息。信号量为0,进程休眠,直到信号量大于0,唤醒后访问资源;进程使用完资源后信号量加一。有命名与未命名两种,未命名信号量存在内存中,因此需要能访问同一内存,一般用于同一进程中的线程中。网络套接字用于进程间通信,不仅可以应用于同一主机的进程通信,也可以用于不同主机间的通信。

2023-06-16 17:35:01 61 1

原创 【41.设计模式】

组成:抽象工厂类(提供创建产品对象的接口,具体工厂实现)、具体工厂类(实现创建产品对象)、产品类(具体产品)、抽象类(用于派生产品类)工厂模式创建对象时不会对用户暴露创建逻辑,而是通过一个共同的接口来指向新创建的对象。组成:工厂类(定义一个创建产品对象的方法)、产品类(具体产品)、抽象类(用于派生产品类)单例模式保证一个类只有一个实例化对象,对外提供访问其对象的接口。里氏替换:父类可替换为子类,但子类不可替换为父类(子类有自己的个性)特点:工厂类集中创建对象,新增产品需要修改工厂类。

2023-06-13 20:33:05 50 1

原创 【11.简单聊天室实现】

服务器无界面,主要功能是接收客户端消息,广播给每个客户端,以及访问数据库实现客户端登录、注册客户端采用单线程,包括主界面、登录界面与注册界面主界面与登录界面通过信号槽进行通信,注册界面作为登录界面的成员通过信号槽进行通信Login l;l . show();类之间的通信数据类型使用自定义结构体,方法之一为使用Q_DECLARE_METATYPE,将结构体注册为元对象,使用QVariant打包数据并发送,在槽函数中将QVariant解包成自定义的结构体UIMSG() {} }

2023-05-26 22:52:44 46

原创 【08.QT网络通信多线程】

一、写一个类继承QThread类,并重写run()函数,并在主线程中生成一个ChildThread的实例,并调用对象的start()函数。二、定义一个普通的QObject派生类Worker,然后将其对象move到创建的QThread类中,调用线程的start()函数。每次新建一个线程都需要继承QThread,实现一个新类,要自己进行资源管理,线程释放和删除。主线程如果要在子线程中运行计算必须通过发信号的方式调用,或者通过控件的信号。Qt多线程网络通信–b站,爱编程的大丙。子线程连接服务器,发送文件。

2023-05-23 21:22:48 641 2

原创 【07.QT网络通信基础】

QT是一个跨平台的C++图形用户界面应用程序框架,支持多平台开发创建时能够使用的基类有三种,QMainWindow、QWidget、QDialog,分别对应带菜单栏的窗口、空白窗口以及对话框窗口注意VS中要添加相应模块才能使用相应头文件,比如套接字相关类在network模块中。

2023-05-23 16:41:52 210

原创 【05.多线程网络服务器底层架构(一)】

本文主要为基于非阻塞IO、事件驱动、IO复用,基于"one loop per thread"+线程池的编程模式(muduo)的服务器底层架构one loop per thread就是每个线程运行一个事件循环(每个线程只有一个EventLoop对象),线程通常阻塞在IO复用的系统调用函数上,当有IO事件触发时返回,并处理该事件线程池本质上是一个EventLoop池,当有新连接到来时,从池子中选出一个EventLoop传入新连接中,进一步执行IO事件架构主要包括以下类:EventLoop类、Server

2023-05-15 09:58:54 107

原创 【04.智能指针】

在多线程环境下,当一个对象能被多个线程同时看到时,而程序员需要自己管理对象生命期时,对象的析构时机就会模糊不清,而智能指针可以帮助解决这类问题,想要了解智能指针就先要了解RAIIRAII即资源获取即初始化。简单来讲就是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,最后在对象析构的时候,释放构造时获取的资源。它可以用来管理资源、避免资源泄漏。智能指针就是RAII的一种应用智能指针主要讲三种:shared_ptr、unique_ptr、weak_ptr。

2023-05-14 15:30:21 24

原创 【03.多线程】

通常的作法是所有线程通过一个共享的工作队列来同步,当工作队列为空时,工作线程都阻塞在该工作队列上。当有新的任务时,主线程将任务添加进工作队列,唤醒工作线程,某个工作线程处理任务,其他工作线程将继续等待。但当一个进程可以修改变量且其他线程也可以读取或修改,就需要线程同步,使用锁,可以保证同一时间只允许一个线程访问该变量。线程池是服务器预先创建好的一组线程,当有请求到来时,主线程选择线程池的某一个线程来为之服务,这样可以提高效率。UNIX网络编程 卷1:套接字联网API 第3版。

2023-05-13 19:08:26 21

原创 【02.服务器编程模型】

ET模式(需要设置,EPOLLET):ET在发现有我们感兴趣的事件发生后,立即返回,并且sleep这一事件的epoll_wait,不管该事件有没有结束。例如读事件,有数据要读到空,errno返回EAGAIN或EWOULDBLOCK为止,否则下次epoll_wait返回不会有上一次IO事件,会导致数据不完整。LT模式(默认):LT会去遍历在epoll事件表中每个文件描述符,只要文件描述符还有感兴趣的事件,每次epoll_wait都会返回。简单来讲两者区别就是:内核通知可以启动IO操作,为同步IO;

2023-05-13 12:38:02 28

原创 【01.Socket网络编程基础】

本文主要为socket服务端通信流程。

2023-05-13 08:19:36 25

【11.简单聊天室实现】

【11.简单聊天室实现】

2023-05-26

空空如也

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

TA关注的人

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