- 博客(5)
- 收藏
- 关注
原创 QT中QGraphics的view,scene,items的关系
前面讲到的是信号如何从前台传递到后面,然后实现要进行的操作,那么,操作完成之后,变化的呈现是从后向前倒回去的,事物的改变导致场景的改变,而观察场景的view就回呈现出不同的结果,要使view能够实时观察到变化,就是不停地刷新update,这样一个实时交互的场景就呈现出来了。view即为视窗,你可以理解为一个摄像机,把摄像机放在scene前,摄像机的取景框是有边界的,所以从view看到的scene只是scene的一部分,我们转动摄像机的镜头就可以看到scene的其他地方。
2024-05-12 20:01:58 209
原创 c++webserver: EventLoop模块设计
EventLoop是一个事件循环,功能是进行事件监控和事件处理。我们添加需要监听的事务到这个事件循环内,每次有事件发生就会通知,然后根据不同的描述符、事件类型进行处理。有了EventLoop模块,服务器的所有事件都由EventLoop模块来完成。每当有一个连接,都会绑定一个EventLoop模块和线程。
2023-12-26 18:01:21 331 1
原创 数据类型uint8_t / uint16_t / uint32_t / uint64_t
uint8_t / uint16_t / uint32_t / uint64_t 这些数据类型中都带_t ,表示这些数据类型是通过typedef定义的,也就是我们已知的数据类型的别名。主要原因是方便代码的维护。比如,在C中没有bool型,于是在一个软件中,一个程序员使用int,一个程序员使用short,会比较混乱。最好用一个typedef来定义一个统一的bool。为什么要用 typedef 重新定义?在C99标准中定义了这些数据类型。
2023-12-24 11:36:24 343 1
原创 理解和运用epoll
相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。这是一张epoll工作原理的汇总图。
2023-12-20 19:24:46 736
原创 设置文件描述符为非阻塞状态
在非阻塞状态下,当某个操作无法立即完成时,该操作会立即返回一个错误码,而不会暂停程序的执行。F_SETFL 设置文件描述符状态flags,参数arg为新flags,但只允许O_APPEND、O_NONBLOCK和O_ASYNC位的改变,其他位的改变将不受影响。在编程中,阻塞是指当一个操作无法立即完成时,程序会暂停执行,直到操作完成为止。在以上代码段中还包含了另一个函数fcntl, fcntl 函数可以用来改变文件描述符的属性。F_GETFL 取得文件描述符状态flags,此flags为open()的参数。
2023-12-19 19:01:23 454
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人