7.6k7 分钟

# Stream 流式编程 # 分类 中间操作可分为: 无状态:指元素的处理不受之前元素的影响 有状态:指该操作只有拿到所有元素之后才能继续下去 终结操作可分为: 非短路操作:指必须处理所有元素才能得到最终结果 短路操作:指遇到某些符合条件的元素就可以得到最终结果 具体操作如图所示: # Stream API 使用 # 流的构成 使用流的时候,通常包括三个步骤: 获取一个数据源 数据转换 执行操作获取想要的结果,每次转换原有的 Stream 对象不变,返回一个新的 Stream 对象,这就允许对其操作可以像链条一样排列 # 流的创建 通过 java.util.
4.1k4 分钟

# 函数式编程 一种 语法优雅、简洁健壮、高并发、易于测试和调试 的编程方式,这就是函数式编程 (FP) 的意义所在。 OO (Object oriented, 面向对象) 是抽象数据 FP (Function programming, 函数式编程) 是抽象行为 两个关键概念: 函数是第一等公民 函数要满足以下约束 函数的返回值仅取决于传递给函数的输入参数 函数的执行没有副作用 # 函数是一等公民 在函数式编程范式中,函数是语言的第一等公民。这意味着可以创建函数的 “实例”,对函数实例的变量引用,就像对字符串、Map 或者任何其他对象的引用一样。函数也可以作为参数传递给
11k10 分钟

# 线程并发关键字详解 # synchronized # 使用 ​ 一把锁只能同时被一个线程获取,没有获取锁的线程只能等待。 每个实例都对应有自己的一把锁 (this),不同实例之间互不影响。例外:锁对象时 class 以及 synchronized 修饰的是 static 方法的时候,所有对象巩永固同一把锁。 synchronized 修饰的方法,无论方法正常执行还是抛出异常,都会释放锁。 # 对象锁 包括方法锁 (默认锁对象为 this, 当前实例对象) 和同步代码块锁 (自己指定锁对象) 代码块形式:手动指定锁定对象,也可是是 this, 也可以是自定义的锁 方法锁形式:synch