函数式编程

与面向对象、过程式编程并列的编程范式

  • 函数是一等公民
  • 强调将计算过程分解成可复用的函数,典型例子:mapreduce组合的MapReduce算法
  • 函数是一种数学运算,要求必须是纯粹的,

函数式编程的起源是一门叫做范畴论(Category Theory)的数学分支

Read more »

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有新的数据产生时,这些数据会被pushsubcriber来进行处理;在Stream中可以添加各种不同的操作来处理数据,形成数据链。这种以声明式添加的处理链只有在订阅操作时才会真正执行。

到一个重要的概念是backpressure,在基本的消息推送模式中,当消息发布者产生数据的速度过快时,会使得消息订阅的处理速度无法跟上产生的速度,从而给订阅者造成很大的压力。当压力过大时,有可能造成订阅者本身的奔溃,所产生的及联效应甚至
可能造成整个系统的瘫痪。backpressure的作用在于提供一种从订阅到生产者的反馈渠道。订阅者可以通过request()方法来声明其一次所能处理的消息request()方法调用

//TODO 反应式流规范???
Reactor完全基于反应式流规范设计和实现的库,Reactor也是Spring5中反应式编程的基础。

Read more »

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
2
3
4
5
6
7
8
$ hexo generate (hexo g) 生成静态文件
$ hexo server (hexo s) 启动本地服务
$ hexo deploy (hexo d) 提交到远程仓库
$ hexo new page "xx"(hexo n page) 创建页面
$ hexo new "xx" (hexo n "") 创建文章
$ hexo d -g 生成静态并提交到远程仓库
$ hexo s -g 生成静态文件并启动本地预览
$ hexo clean 清除本地 public 文件

More info: Deployment

闲言碎语

人是很奇怪的,每日想的并不一定是做的,思想与实践是独立又有关联的两个状态。想的并不是做的,做的也不一定是想的。总是抱怨这那,与其有时间抱怨其实是现实自己的无能,你想了但是未做,也许想做但是没有做或者没时间、没法做,但结果都是没做。同样都是没做,有何资格对人说三道四。用自己坐的去让人产生思想这是很滑稽,想的做了足矣。

思考的层面

更高的视野

做事的心态

学会规划,不规划就在别人的规划里

思考的方式

知道如何做事