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