1. 阻塞式I/O

1.1. 一种通用且易于理解的方式,因为和程序用户的交互通常符合这样一种顺序执行的方式

1.2. 将系统扩展至支持大量用户时,需要和服务器建立大量TCP连接,因此扩展性不是很好

2. 非阻塞式I/O

2.1. 异步I/O

2.2. 可以处理大量并发网络连接,而且一个线程可以为多个连接服务

2.3. 适用场景

2.3.1. 业务逻辑本身就使用事件来描述

2.3.1.1. Twitter

2.3.1.2. 图形化展示股票价格

2.3.2. 应用需要同时处理大量I/O操作

2.3.2.1. 阻塞式I/O需要同时使用大量线程,这会导致大量锁之间的竞争和太多的上下文切换

3. 消息传递架构

3.1. Vert.x

3.1.1. 没有限制只能使用字符串传递消息

3.1.2. 可以使用更复杂的JSON对

3.1.3. 使用Buffer类构建自己的消息

3.2. 确保消息不会共享状态是最重要的

3.2.1. 不可变消息是最简单的解决方式

3.2.2. 通过复制消息也能解决该问题

4. 末日金字塔问题

4.1. 使用with方法

4.1.1. 不再是一个方法只能有一个功能,我们将一个功能分散在了多个方法里

4.2. 不使用try-with-resources的方式

5. Future

5.1. 方法不是返回一个值,而是返回一个Future对象,该对象第一次创建时没有值,但以后能拿它“换回”一个值

6. CompletableFuture

6.1. 延迟对象或约定

6.2. 从单一的返回值推广到数据流

6.2.1. 来处理一个值

6.2.2. 可以组合不同的实例,而不用担心末日金字塔问题

6.2.3. 注册Lambda表达式,并且把高阶函数链接起来

6.2.4. 结合了Future对象打欠条的主意和使用回调处理事件驱动的任务

6.3. 如果你想在链的末端执行一些代码而不返回任何值,比如Consumer和Runnable,就thenAccept和thenRun方法

6.4. 可使用thenApply方法转换CompletableFuture对象的值,有点像使用Stream的map方法

6.5. 在CompletableFuture对象出现异常时,可使用exceptionally方法恢复,可以将一个函数注册到该方法,返回一个替代值

6.6. 如果你想有一个map,包含异常情况和正常情况,请使用handle方法

6.7. 要找出CompletableFuture对象到底出了什么问题,可使用isDone和isCompleted-Exceptionally方法辅助调查

6.8. 常用情境是异步执行一段代码,该段代码计算并返回一个值

7. 响应式编程

7.1. 一种声明式编程方法,它让程序员以自动流动的变化和数据流来编程

7.2. RxJava

7.2.1. 为了组合异步和基于事件的系统流程而设计的

7.2.2. 处理一组值

7.3. 使用基于Lambda表达式的回调,很容易实现事件驱动架构

8. Stream是为构建内存中集合的计算流程而设计的

最新文章

  1. C#动态编译引擎-CS-Script
  2. jQuery拉开关闭帷幕
  3. JdbcUtils
  4. getConnection 区别
  5. hdu 4731
  6. linux常用命令详解 (一) 安装和登录命令
  7. 蜗牛爱课- iOS中定时器NSTimer使用
  8. java对象的比较分析
  9. Qt多线程(有详细例子)
  10. block存储区域——怎样验证block在栈上,还是堆上
  11. swift中的AnyHashable
  12. 用VS2017进行移动开发(C#、VB.NET)——Progress控件,Smobiler移动开发
  13. 【原创 深度学习与TensorFlow 动手实践系列 - 2】第二课:传统神经网络
  14. [No0000156]天干地支-狗年我懂,戊戌二字怎么来的?
  15. crm 理解
  16. python框架---->APScheduler的使用
  17. Java基础语法(基本语句)
  18. js 文件上传
  19. Django在admin模块中显示auto_now_add=True或auto_now=True的时间类型列
  20. ubuntu安装TexturePicker

热门文章

  1. Angular SSR 探究
  2. Appscan安全扫描问题-会话检测失败
  3. 关于Redis的,你了解多少?来看看我的笔记
  4. DevExpress窗体加载等待
  5. 27、求解n阶多项式的值,多项式公式如下
  6. dd格式化硬盘
  7. AWS启示录:创新作帆,云计算的征途是汪洋大海
  8. mac连接mysql出现Access denied for user ‘root‘@‘localhost‘
  9. websockets的原理
  10. Django框架路由层-无名有名分组-无名有名分组反向解析