自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除