我们在编写网络程序的时候,经常会进行如下操作: 申请一个缓冲区 从数据源中读入数据至缓冲区 解析缓冲区的数据 重复第2步 表面上看来这是一个很常规而简单的操作,但实际使用过程中往往存在如下痛点: 数据读不全: 可能不能在一次read操作中读入所有需要的数据,因此需要在缓冲区中维护一个游标,记录下次读取操作的起始位置,这个游标带了了不小的复杂度: 从缓冲区读数据时,要根据游标计算缓冲区起始写位置,以及剩余空间大小.增加了读数据的复杂度. 解析数据也是复用这个缓冲区的,解析的时候也要判断游标起始位置…