- 博客(14)
- 收藏
- 关注
原创 高级 IO
这种说法是不准确的. 我们定义的struct epoll_event是我们在用户空间中分配好的内存. 势必还是需要将内核的数据拷贝到这个用户空间的内存中的.非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符, 这个过程称为轮询. 这对CPU来说是较大的浪费, 一般只有特定场景下才使用.其实这个结构就是一个整数数组, 更严格的说, 是一个 “位图”. 使用位图中对应的位来表示要监视的文件描述符.请同学们对比总结select, poll, epoll之间的优点和缺点(重要, 面试中常见).
2025-08-12 16:42:17
950
原创 网络基础3
数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据以太网是一种技术标准;既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑 结构, 访问控制方式, 传输速率等;以太网帧格式理解mac地址理解arp协议理解MTU。
2025-08-04 17:01:26
922
原创 网络基础2
无论我们采用方案一, 还是方案二, 还是其他的方案, 只要保证, 一端发送时构造的数据, 在另一端能够正确的进行解析, 就是ok的. 这种约定, 就是 应用层协议。协议是一种 “约定”. socket api的接口, 在读写数据时, 都是按 “字符串” 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢?但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一.虽然我们说, 应用层协议是我们程序猿自己定的.
2025-07-19 16:34:39
853
原创 C++ 多线程
thread类创建线程,底层就是用pthread_create创建线程然后用thread类的成员变量保存tid,管理起来;在类中通过解析参数包传的是形参,左值引用会报错,就算引用引的也不是你实际传的;空线程就是没有用pthread_create创建实际的线程,tid也是0;锁不支持拷贝构造所以得传引用。可以传地址代替ref();原理:判断是不是当前线程;构造用了参数包,随便传。可以跟时间互斥锁配合。
2025-07-07 18:21:51
261
原创 Linux 网络编程套接字
我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 那么如何定义网络数据流的地址呢?虽然socket api的接口是sockaddr, 但是我们真正在基于IPv4编程时, 使用的数据结构是sockaddr_in;socket API是一层抽象的网络编程接口,适用于各种底层网络协议,如IPv4、IPv6,以及后面的UNIX DomainSocket. 然而, 各种网络协议的地址格式并不相同.
2025-06-29 21:40:03
901
原创 Qt 窗口
QMainWindow 是⼀个为⽤⼾提供主窗⼝程序的类,继承⾃ QWidget 类,并且提供了⼀个预定义的布局。QMainWindow 包含 ⼀个菜单栏(menu bar)、多个⼯具栏(tool bars)、多个浮动窗⼝(铆接部件)(dock widgets)、⼀个状态栏(status bar) 和⼀个 中⼼部件(central widget),它是许多应⽤程序的基础,如⽂本编辑器,图⽚编辑器等。在 Qt 中,并没有专⻔的菜单项类,可以通过 QAction 类,抽象出公共的动作。QMenu:创建菜单。
2025-06-09 20:28:43
440
原创 Linux多线程
在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序 列”一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线程 执行流。
2025-05-24 20:06:25
556
原创 Qt常⽤控件
如果 widget 作为⼀个窗⼝ (带有标题栏, 最⼩化, 最⼤化, 关闭按钮), 那么在计算尺⼨和坐标的时候就有两种算法. 包含 window frame 和 不包含 window frame.其中 geometry(), width(), height(), rect(), size() 则是按照不包含 window frame 的⽅式来计算的.其中 x(), y(), frameGeometry(), pos(), move() 都是按照包含 window frame 的⽅式来计算的.
2025-05-05 19:28:11
316
原创 Qt信号与槽
1、⾃定义信号函数书写规范⾃定义信号函数必须写到 “signals” 下;返回值为 void,只需要声明,不需要实现;可以有参数,也可以发⽣重载;2、⾃定义槽函数书写规范早期的 Qt 版本要求槽函数必须写到 “public slots” 下,但是现在⾼级版本的 Qt 允许写到类的“public” 作⽤域中或者全局下;返回值为 void,需要声明,也需要实现;可以有参数,可以发⽣重载;3、发送信号使⽤ “emit” 关键字发送信号。“emit” 是⼀个空的宏。
2025-05-03 15:50:54
259
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅