1. 方法引用1.1. 一种引用方法的轻量级语法1.1.1. 提供了一种简短的语法1.1.2. 标准语法为Classname::methodName1.2. 凡是使用Lambda表达式的地方,就可以使用1.3. 自动支持多个参数1.3.1. 前提是选对了正确的函数接口2. 出现顺序2.1. 流是有序的2.1.1. 流中的元素都是按顺序处理的2.2. 依赖于数据源和对流的操作2.3. 在一个有序集合中创建一个流时,流中的元素就按出现顺序排列2.3.1. List2.4. 如果集合本身就是无序的,由此生成的流也是无序的2.4.1. HashSet2.5. 一些操作在有序的流上开销更大,调用unor
1. 方法引用1.1. 一种引用方法的轻量级语法1.1.1. 提供了一种简短的语法1.1.2. 标准语法为Classname::methodName1.2. 凡是使用Lambda表达式的地方,就可以使用1.3. 自动支持多个参数1.3.1. 前提是选对了正确的函数接口2. 出现顺序2.1. 流是有序的2.1.1. 流中的元素都是按顺序处理的2.2. 依赖于数据源和对流的操作2.3. 在一个有序集合中创建一个流时,流中的元素就按出现顺序排列2.3.1. List2.4. 如果集合本身就是无序的,由此生成的流也是无序的2.4.1. HashSet2.5. 一些操作在有序的流上开销更大,调用unor
1. 默认方法1.1. 接口中定义的包含方法体的方法,方法名有default关键字做前缀1.1.1. 在任何接口中,无论函数接口还是非函数接口,都可以使用该方法1.2. Collection接口1.2.1. stream方法1.3. Iterable接口1.3.1. forEach方法1.4. 虚方法1.5. 类中重写的方法优先级高于接口中定义的默认方法1.5.1. 能简化很多继承问题1.5.2. 任何时候,一旦与类中定义的方法产生冲突,都要优先选择类中定义的方法1.5.3. 如果类中重写的方法没有默认方法的优先级高,那么就会破坏已有的实现1.5.4. 为了在接口上向后兼容2. 接口的静态方法
1. 默认方法1.1. 接口中定义的包含方法体的方法,方法名有default关键字做前缀1.1.1. 在任何接口中,无论函数接口还是非函数接口,都可以使用该方法1.2. Collection接口1.2.1. stream方法1.3. Iterable接口1.3.1. forEach方法1.4. 虚方法1.5. 类中重写的方法优先级高于接口中定义的默认方法1.5.1. 能简化很多继承问题1.5.2. 任何时候,一旦与类中定义的方法产生冲突,都要优先选择类中定义的方法1.5.3. 如果类中重写的方法没有默认方法的优先级高,那么就会破坏已有的实现1.5.4. 为了在接口上向后兼容2. 接口的静态方法
1. 并发1.1. 两个任务共享时间段1.2. 一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发,而不是并行2. 并行2.1. 两个任务在同一时间发生2.2. 为缩短任务执行时间,将一个任务分解成几部分,然后并行执行2.3. 和顺序执行的任务量是一样的,区别就像用更多的马来拉车,花费的时间自然减少了2.4. 重要2.4.1. 不能再依赖提升CPU的时钟频率来提高现有代码的计算能力2.4.2. 需要利用现代CPU的架构,而这唯一的办法就是编写并行化的代码2.4.3. 阿姆达尔定律2.4.3.1. 一个简单规则,预测了搭载多核处理器的机器提升程序速度的理论最大值2
1. 并发1.1. 两个任务共享时间段1.2. 一个程序要运行两个任务,并且只有一个CPU给它们分配了不同的时间片,那么这就是并发,而不是并行2. 并行2.1. 两个任务在同一时间发生2.2. 为缩短任务执行时间,将一个任务分解成几部分,然后并行执行2.3. 和顺序执行的任务量是一样的,区别就像用更多的马来拉车,花费的时间自然减少了2.4. 重要2.4.1. 不能再依赖提升CPU的时钟频率来提高现有代码的计算能力2.4.2. 需要利用现代CPU的架构,而这唯一的办法就是编写并行化的代码2.4.3. 阿姆达尔定律2.4.3.1. 一个简单规则,预测了搭载多核处理器的机器提升程序速度的理论最大值2
1. 阻塞式I/O1.1. 一种通用且易于理解的方式,因为和程序用户的交互通常符合这样一种顺序执行的方式1.2. 将系统扩展至支持大量用户时,需要和服务器建立大量TCP连接,因此扩展性不是很好2. 非阻塞式I/O2.1. 异步I/O2.2. 可以处理大量并发网络连接,而且一个线程可以为多个连接服务2.3. 适用场景2.3.1. 业务逻辑本身就使用事件来描述2.3.1.1. Twitter2.3.1.2. 图形化展示股票价格2.3.2. 应用需要同时处理大量I/O操作2.3.2.1. 阻塞式I/O需要同时使用大量线程,这会导致大量锁之间的竞争和太多的上下文切换3. 消息传递架构3.1. Vert
1. 阻塞式I/O1.1. 一种通用且易于理解的方式,因为和程序用户的交互通常符合这样一种顺序执行的方式1.2. 将系统扩展至支持大量用户时,需要和服务器建立大量TCP连接,因此扩展性不是很好2. 非阻塞式I/O2.1. 异步I/O2.2. 可以处理大量并发网络连接,而且一个线程可以为多个连接服务2.3. 适用场景2.3.1. 业务逻辑本身就使用事件来描述2.3.1.1. Twitter2.3.1.2. 图形化展示股票价格2.3.2. 应用需要同时处理大量I/O操作2.3.2.1. 阻塞式I/O需要同时使用大量线程,这会导致大量锁之间的竞争和太多的上下文切换3. 消息传递架构3.1. Vert
1. SOLID原则1.1. 开发良好面向对象程序的准则1.2. Liskovsubstitution里氏替换1.3. Interfacesegregation接口隔离1.4. Singleresponsibility单一功能原则1.4.1. 程序中的类或方法只能有一个改变的理由1.4.2. 一个类不仅要功能单一,而且还需将功能封装好1.5. Open/closed开闭原则1.5.1. 软件应该对扩展开放,对修改闭合1.5.1.1. 让软件易于修改1.5.2. 高阶函数在用多态来实现开闭原则1.5.3. 使用不可变对象实现开闭原则1.6. Dependencyinversion依赖反转原则1.
1. SOLID原则1.1. 开发良好面向对象程序的准则1.2. Liskovsubstitution里氏替换1.3. Interfacesegregation接口隔离1.4. Singleresponsibility单一功能原则1.4.1. 程序中的类或方法只能有一个改变的理由1.4.2. 一个类不仅要功能单一,而且还需将功能封装好1.5. Open/closed开闭原则1.5.1. 软件应该对扩展开放,对修改闭合1.5.1.1. 让软件易于修改1.5.2. 高阶函数在用多态来实现开闭原则1.5.3. 使用不可变对象实现开闭原则1.6. Dependencyinversion依赖反转原则1.