tbox主要有三种流:
stream: 最常用的流,一般用于单路阻塞、非阻塞io的处理,接口简单易用
async_stream:异步流,基于asio的流,全程回调处理,可以在单个线程里支持多路流的并发,节省系统资源,提高效率
static_stream:静态流,用于对纯buffer的位流处理,一般用于各种解析器
不管是stream还是async_stream,都可以在其上挂接多路filter,实现流之间数据过滤和变换。目前支持以下几种filter:
zip_filter:gzip、zlib的压缩和解压缩过滤器
charset_filter:字符集编码的过滤器
chunked_filter:http chunked编码的解码过滤器
继续阅读 »
这里为了使代码更加简洁,直接用了transfer来挂接两路流的传输操作。
```c
// 初始化文件输入流
tb_stream_ref_t istream = tb_stream_init_from_url("/home/file.txt");
// 初始化文件输出流
tb_stream_ref_t ostream = tb_stream_init_from_file("/home/file.gz", TB_FILE_MODE_RW | TB_FILE_MODE_CREAT | TB_FILE_MODE_BINARY | TB_FILE_MODE_TRUNC);
// 初始化解压缩流,以istream作为输入
继续阅读 »
stream是tbox的最常用的流,一般用于单路io操作,既可以进行阻塞读写,也可以非阻塞的读写。
目前可以支持 数据、文件、套接字、http协议以及各种过滤器的读写操作,也可以很方便的自定义扩展自己的流模块。
之前已经在tbox数据位操作接口的使用一文中,简单介绍了下stream的位读写接口,这里继续详细介绍下stream的常用数据读写接口。
流的常用初始化操作
下面直接上代码吧,基本上看下注释就知道怎么使用了,嘿嘿。。。
继续阅读 »
在开发中我们可能会遇到接口访问频次过高,这时候就需要做流量限制,你可能是用的 Nginx 这种 Web Server 来控制也可能是用了一些流行的类库实现。在分布式系统中更是如此,限流是高并发系统的一大杀器,在设计限流算法之前我们先来了解一下它们是什么。
继续阅读 »
从限流谈到伪造 IP(nginx remote_addr)
remote_addr
很多流量大的网站会限流,比如一秒 1000 次访问即视为非法,会阻止 10 分钟的访问。
通常简单的做法,就是通过 nginx 时,nginx 设置
继续阅读 »
tbox中提供了常用的一些stream模块,例如:data、file、http、sock等,可以通过指定不同的url,使用相同的接口
进行数据流的读写,非常的方便。
例如:
```c
// init stream
tb_stream_ref_t stream = tb_stream_init_from_url("http://www.xxx.com/file.txt");
if (stream)
{
// open stream
if (tb_stream_open(stream))
{
// read line
继续阅读 »
本文是「Java 8 函数式编程」第三章的读书笔记,章名为流。本章主要介绍了外部迭代与内部迭代以及常用的高阶函数。
外部迭代与内部迭代
外部迭代
过去我们要对一个List进行迭代时,往往会采用如下方式:
java
int count = 0;
for (Artist artist : artists) {
if (artist.isFrom("London")) {
count++;
}
}
继续阅读 »
4. map/filter/reject
在async中,each系列的方法一共有12个:
each/forEach
eachOf/forEachOf
eachLimit/forEachLimit
eachOfLimit/forEachOfLimit
eachSeries/forEachSeries
eachOfSeries/forEachOfSeries
继续阅读 »
本系列文章使用的async版本为v1.5.0.
JS的异步函数执行,大致上可以分为以下几种:
所有异步任务并行执行
无最大并行数限制
有最大并行数限制
所有异步任务串行执行
串行执行与并行执行相结合
继续阅读 »
8. series/parallel/parallelLimit
async.eachOfSeries(arr, iterator, callback)是对arr中的每一项,调用iterator函数,最终调用callback。也就是说,所有的异步任务都是同一种类型,只是传入的参数不同。例如对于一个目录下的所有文件,统计每个文件的size。
继续阅读 »