前端开发之函数式编程实践
函数式编程是一种编程范式,它将程序抽象为函数和数据结构,通过函数调用来实现程序的功能,并且函数可以作为参数传递给其他函数。 ...
读Java实战(第二版)笔记10_函数式编程的技巧
1. 设计原则 1.1. 将所有你愿意接受的作为参数的函数可能带来的副作用以文档的方式记录下来 1.2. 最理想的情况下你接收的函数参数应该没有任何副作用 1.3. 延迟数据结构是强力武器 1.4. 所有使用持久化数据结构的用户都必须遵守“不修改”原则 2. 一等函数 2.1. first-clas ...
Java8函数式编程读后总结与感想
1. 基本信息 Java 8函数式编程 Java 8 Lambdas: Functional Programming for the Masses [英] Richard Warburton 著 ; 王群锋 译 人民邮电出版社,2015年3月出版 1.1. 读薄率 书籍总字数191千字,笔记总字数8 ...
读Java8函数式编程笔记08_测试、调试和重构
1. Lambda表达式的单元测试 1.1. 单元测试是测试一段代码的行为是否符合预期的方式 1.2. Lambda表达式没有名字,无法直接在测试代码中调用 1.2.1. 将Lambda表达式放入一个方法测试,这种方式要测那个方法,而不是Lambda表达式本身 1.2.2. 请用方法引用。任何Lam ...
读Java8函数式编程笔记07_设计和架构的原则
1. SOLID原则 1.1. 开发良好面向对象程序的准则 1.2. Liskov substitution里氏替换 1.3. Interface segregation接口隔离 1.4. Single responsibility单一功能原则 1.4.1. 程序中的类或方法只能有一个改变的理由 1 ...
读Java8函数式编程笔记06_Lambda表达式编写并发程序
1. 阻塞式I/O 1.1. 一种通用且易于理解的方式,因为和程序用户的交互通常符合这样一种顺序执行的方式 1.2. 将系统扩展至支持大量用户时,需要和服务器建立大量TCP连接,因此扩展性不是很好 2. 非阻塞式I/O 2.1. 异步I/O 2.2. 可以处理大量并发网络连接,而且一个线程可以为多个 ...
读Java8函数式编程笔记05_数据并行化
1. 并发 1.1. 两个任务共享时间段 1.2. 一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发,而不是并行 2. 并行 2.1. 两个任务在同一时间发生 2.2. 为缩短任务执行时间,将一个任务分解成几部分,然后并行执行 2.3. 和顺序执行的任务量是一样的, ...
读Java8函数式编程笔记04_类库
1. 默认方法 1.1. 接口中定义的包含方法体的方法,方法名有default关键字做前缀 1.1.1. 在任何接口中,无论函数接口还是非函数接口,都可以使用该方法 1.2. Collection接口 1.2.1. stream方法 1.3. Iterable接口 1.3.1. forEach方法 ...
读Java8函数式编程笔记03_高级集合类和收集器
1. 方法引用 1.1. 一种引用方法的轻量级语法 1.1.1. 提供了一种简短的语法 1.1.2. 标准语法为Classname::methodName 1.2. 凡是使用Lambda表达式的地方,就可以使用 1.3. 自动支持多个参数 1.3.1. 前提是选对了正确的函数接口 2. 出现顺序 2 ...
读Java8函数式编程笔记02_流
1. 外部迭代 1.1. for循环是一个封装了迭代的语法糖 1.1.1. 本质上来讲是一种串行化操作 1.2. 很难抽象出不同操作 2. 内部迭代 2.1. 内部迭代中的相应接口:Stream 2.2. 和Iterator类似,Stream是一种内部迭代方式 2.3. 内部迭代将更多控制权交给了集 ...
读Java8函数式编程笔记01_Lambda表达式
1. Java 8函数式编程 1.1. 没有单子 1.2. 没有语言层面的惰性求值 1.3. 没有为不可变性提供额外支持 1.4. 集合类可以拥有一些额外的方法:default方法 2. 现实世界中,数据和行为并存 2.1. 面向对象编程是对数据进行抽象 2.2. 函数式编程是对行为进行抽象 3. ...
读函数式编程思维笔记05_现实应用
1. Java 8 1.1. 除了增加函数式特性,还增加了一些配合使用的语法糖衣 1.2. 函数式接口 1.2.1. SAM(Single Abstract Method,单抽象方法)接口 1.2.1.1. 含有单一方法的接口是Java的一种习惯用法 1.2.1.2. Runnable和Callab ...