select 函数

提供 select 函数的用意在于解决一个进程同时需要处理多个描述符的读, 这时候不能在任何一个描述符上阻塞读, 否则可能因为在一个描述符上的读操作被阻塞了, 而其它的描述符上的数据无法处理. 开始讨论时提供了两个不那么好的方法, 一种是轮询(poll)每个描述符, 每隔一段时间遍历所有的描述符,

阅读全文 “select 函数”

C 预处理器文本转换过程

C 预处理器(CPP)是 C 编译器自带的在编译之前执行的宏处理器(macro processor). 当遇到类似于 #define 后边带有行注释时不免会疑惑, 这个行注释会不会影响到替换后的代码行. 带着这个问题查阅了一下 CPP 的文档, 并找到了相应的解释.

在 CPP 执行宏处理之前,

阅读全文 “C 预处理器文本转换过程”

写简单的函数

在工作的项目中总是可以见到不少非常长的函数, 这种函数一看到就会觉得烦躁, 往往读起来也花费相当多的时间, 阅读和修改都是相当的痛苦. 导致产生的因素会有很多, 私下归结了一下大致会有两种原因: 程序员本身没有良好的设计函数的思想、工期太赶; 市面上大多数的语言入门教程是不会教授如何编写好的函数,

阅读全文 “写简单的函数”

编程笔记

上周本来打算用 RabbitMq 的方式来实现日志信息记录, 但在装完 Erlang 的时候就后悔了, 平白的引入 Erlang 和 RabbitMq 到系统中给原来已经繁杂而且要到处部署的系统增加了复杂度, 万一这种方式出错了要排查起来也不是那么容易. 随即采用了简单的 expire 方式, 但在

阅读全文 “编程笔记”