- 博客(6)
- 收藏
- 关注
原创 Scalaz(51)- scalaz-stream: 资源使用安全-Resource Safety
scalaz-stream是一个数据流处理工具库,对资源使用,包括:开启文件、连接网络、连接数据库等这些公共资源使用方面都必须确定使用过程的安全:要保证在作业终止时能进行事后处理程序来释放相关的文件、网络链接、数据库连接等。所谓作业终止包括正常的作业完成(End)、人工强行终止(Kill)及出现异常中断(Exception)。scalaz-stream并且保证了无论在数据产生的上游Process或
2016-07-26 13:47:23 643
原创 Scalaz(50)- scalaz-stream: 安全的无穷运算-running infinite stream freely
scalaz-stream支持无穷数据流(infinite stream),这本身是它强大的功能之一,试想有多少系统需要通过无穷运算才能得以实现。这是因为外界的输入是不可预料的,对于系统本身就是无穷的,比如键盘鼠标输入什么时候终止、网站上有多少网页、数据库中还有多少条记录等等。但对无穷数据流的运算又引发了新的挑战。我们知道,fp程序的主要运算方式是递归算法,这是个问题产生的源泉:极容易掉入Stac
2016-07-25 13:28:51 680
原创 Scalaz(49)- scalaz-stream: 深入了解-Sink/Channel
一个完整的scalar-stream有以下几个部分组成:Source -> Transducer -> Sink,用直白文字来描述就是:“输入 -> 传换 -> 输出”。我们已经在前面几篇讨论中介绍了Source和Transducer的基本情况,这篇讨论我们探讨一下Sink。scalaz-stream最基本的功能就是从Source接收一串元素,经过处理然后输出。毕竟我们从外部获取了数据、处理完毕后
2016-07-21 10:25:54 477
原创 Scalaz(48)- scalaz-stream: 深入了解-Transducer: Process1-tee-wye
在上一篇讨论里我们介绍了Source,它的类型款式是这样的:Process[F[_],O]。Source是通过await函数来产生数据流。await函数款式如下:def await[F[_], A, O](req: F[A])(rcv: A => Process[F, O]): Process[F, O] await函数的作用是:运算F从外界数据源获取数据A,如:从数据库读取记录
2016-07-19 11:11:11 1452
原创 Scalaz(47)- scalaz-stream: 深入了解-Source
scalaz-stream库的主要设计目标是实现函数式I/O编程(functional I/O),让用户能从细小功能单一的I/O函数组合成为完整的I/O程序。还有一个目标就是对资源的安全使用(resource safety),希望用户使用scalaz-stream编写的I/O程序能确保资源的安全使用,特别是在完成一项I/O任务后自动释放所有占用的资源包括file handle、memory等等。
2016-07-15 17:39:22 1009
原创 Scalaz(46)- scalaz-stream 基础介绍
scalaz-stream是一个泛函数据流配件库(functional stream combinator library),特别适用于函数式编程。scalar-stream是由一个以上各种状态的Process串联组成。Process在的类型款式如下:sealed trait Process[+F[_], +O]其中F是个高级类,一种算法,O是Process的运算值。Process由一些
2016-07-07 17:49:21 438
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人