Java函数式编程
translation
Symbols count in article: 0 Reading time ≈ 1 mins.
How to reactor
Symbols count in article: 2.9k Reading time ≈ 3 mins.
What’s Reactive
Why’s Reactive
How to reactive
What
基于事件驱动/订阅模型
Servlet3.0之前,线程会Block到业务处理完并返回后结束Servlet(单线程)
Servlet3.0规范中一个新特性:异步处理支持;在接收到请求之后,Servlet线程可以将耗时的task委派给另一个线程来完成,在不生成响应的情况下返回至容器(Master/Worker模型)
在传统的编程范式中,一般通过Iterator
模式来遍历一个序列,这种遍历方式是由调用者来控制节奏的,采用pull
方式。每次通过next()
方法来获取序列中的下一个值。
Reactive Stream采用push
方式,当publisher有新的数据产生时,这些数据会被push
到subcriber来进行处理;在Stream中可以添加各种不同的操作来处理数据,形成数据链。这种以声明式添加的处理链只有在订阅操作时才会真正执行。
到一个重要的概念是backpressure
,在基本的消息推送模式中,当消息发布者产生数据的速度过快时,会使得消息订阅的处理速度无法跟上产生的速度,从而给订阅者造成很大的压力。当压力过大时,有可能造成订阅者本身的奔溃,所产生的及联效应甚至
可能造成整个系统的瘫痪。backpressure
的作用在于提供一种从订阅到生产者的反馈渠道。订阅者可以通过request()
方法来声明其一次所能处理的消息request()
方法调用
//TODO 反应式流规范???
Reactor完全基于反应式流规范设计和实现的库,Reactor也是Spring5中反应式编程的基础。
design-patterns
Symbols count in article: 0 Reading time ≈ 1 mins.
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1 | $ hexo new "My New Post" |
More info: Writing
Run server
1 | $ hexo server |
More info: Server
Generate static files
1 | $ hexo generate |
More info: Generating
Deploy to remote sites
1 | $ hexo deploy |
1 | $ hexo generate (hexo g) 生成静态文件 |
More info: Deployment
post title with whitespace
Symbols count in article: 0 Reading time ≈ 1 mins.