explorer

万丈高楼平地起,勿在浮沙筑高台

0%

我们在编写一段代码时,在需要其频繁运行或处理一大堆数据时,总会有一些疑问:

  1. 这段代码的单次运行时间有多长,能否再优化?
  2. 这段代码会占用多少内存,是否会触发 Stack overflow 或 Out of memory?

如果仅仅是凭感觉来估算,真实解决往往是大相径庭,我们需要科学方法来量化代码的时间及空间复杂度。

阅读全文 »

Qt 5.15 是 Qt5 系列的最后一个 LTS,但是在 Qt 5.15.2 之后,需要付费用户才能获取其官方源码了。

而 KDE 是基于 Qt5 开发的,所以他们宣布以开源的方式继续维护 5.15 分支,直到 KDE 切换到 Qt6 分支。

这对于我们普通用户来讲就是福音了,我们可以编译 KDE 维护的 5.15 。

阅读全文 »

理解在用户空间中使用定时器。

Linux 提供了 3 种定时方法:

  1. socket 选项 SO_RECVTIMEO 和 SO_SNDTIMEO
  2. SIGALRM 信号
  3. I/O 复用系统调用的超时参数
阅读全文 »

理解进程可能会收到的信号,以及捕捉该信号。

阅读全文 »

I/O 复用虽然能同时监听多个文件描述符, 但它本身是阻塞的 。并且当多个文件描述符同时就绪时,如果不采取额外的措施,程序就只能按顺序依次处理其中的每个文件描述符,这使得服务器程序看起来像是串行工作的。要实现并发,只能使用多进程或多线程等编程手段。

阅读全文 »