《Folly库代码赏析》8):IO

数据报
• 阅读 1368

IOBuf

IOBuf类似于linux中的sk_buf,是一个网络编程中的常见概念,用一个物理上的非连续空间虚拟出逻辑上的连续空间,同时利用引用计数避免拷贝复制。

空间布局如右所示:headRoom + data + tailRoom,因此可以prepend() && append()

同时通过多个IOBuf chain连接成逻辑上的连续空间,通过unlink释放。

同时兼容了iovec调用,充分利用多个小块读写。

EventBase

基于IOBufRequestCtx,引入了和libevent类似的事件循环模型。

经验

为了P99,一定要把CPU密集事件移动到专门的CPU密集操作池中,防止拖慢IO事件。

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java 复制Map对象(深拷贝与浅拷贝)
java复制Map对象(深拷贝与浅拷贝)CreationTime2018年6月4日10点00分Author:Marydon1.深拷贝与浅拷贝  浅拷贝:只复制对象的引用,两个引用仍然指向同一个对象
晴空闲云 晴空闲云
3年前
也谈JavaScript浅拷贝和深拷贝
网上关于这个话题,讨论有很多了,根据各路情况我自己整理了一下,最后还是能接近完美的实现深拷贝,欢迎大家讨论。javascript中的对象是引用类型,在复制对象的时候就要考虑是用浅拷贝还是用深拷贝。直接赋值对象是引用类型,如果直接赋值给另外一个对象,那么只是赋值一个引用,实际上两个变量指向的同一个数据对象,如果其中一个对象的属性变更,那么另外一个也会变更。示
Wesley13 Wesley13
3年前
java通过sina端口提取股票历史数据并存入MySQL
 1.提取股票代码代码见:http://www.oschina.net/code/snippet\_2688840\_55337(http://www.oschina.net/code/snippet_2688840_55337) 2抓取sina股票的json页面数据;代码见:http://www.oschina.net/code/snip
虾米大王 虾米大王
2年前
java代码073
code073.javapackagepack02;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.UUID;importjavax.servlet.ServletException;importjavax.servlet.annotation.Multip
Stella981 Stella981
3年前
Linux 内核 VS 内存碎片 (上)
(外部)内存碎片是一个历史悠久的Linux内核编程问题,随着系统的运行,页面被分配给各种任务,随着时间的推移内存会逐步碎片化,最终正常运行时间较长的繁忙系统可能只有很少的物理页面是连续的。由于Linux内核支持虚拟内存管理,物理内存碎片通常不是问题,因为在页表的帮助下,物理上分散的内存在虚拟地址空间仍然是连续的(除非使用大页),但对于需要从内核线性
Wesley13 Wesley13
3年前
mysql _01
\where中不可以使用别名,因为where先于select执行以下是错误的SQL:select    code,   continentcont,   name,   populationpop from    country where    cont'asia'
Stella981 Stella981
3年前
Code128条形码
如何看懂Code128条形码1.条形码种类很多,常见的大概有二十多种码制,其中包括:Code39码(标准39码)、Codabar码(库德巴码)、Code25码(标准25码)、ITF25码(交叉25码)、Matrix25码(矩阵25码)、UPCA码、UPCE码、EAN13码(EAN13国际商品条码)、EAN8码(EAN8国际商品
Stella981 Stella981
3年前
PowerDesigner列名、注释内容互换
在用PowerDesigner时,常常在NAME或Comment中写中文在Code中写英文,Name只会显示给我们看,Code会使用在代码中,但Comment中的文字会保存到数据库TABLE的Description中,有时候我们写好了Name再写一次Comment很麻烦,以下两段代码就可以解决这个问题。在PowerDesigner中PowerDesig
Stella981 Stella981
3年前
PHP 获取自增长字段数值 (MySQL的last_insert_id())
  最近和朋友打算搞个网站,试水阶段不想投入太多资金,同时要有现成的开源代码可参考,所以PHP是首选了,一个虚拟主机一年才400块,1G空间还和MySQL共享空间,真便宜啊~~~  以前一直用.net开发,习惯了强类型语言的严谨,突然使用动态的PHP,还有些不太适应,言归正传吧。  电商网站最核心的订单的处理,如何在大并发时候产生连续的订
Wesley13 Wesley13
3年前
C++ 中命名空间的 5 个常见用法
相信小伙伴们对C已经非常熟悉,但是对命名空间经常使用到的地方还不是很明白,这篇文章就针对命名空间这一块做了一个叙述。命名空间在1995年被引入到c标准中,通常是这样定义的:命名空间定义了新的作用域。它们提供了一种避免名称冲突的方法。c中的命名空间通常用于避免命名冲突。尽管命名空间在最近的c代码中广泛使用,但大多数较旧代码都
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
数据报
数据报
Lv1
我不躲不藏,等生活爱我。
文章
3
粉丝
0
获赞
0