1
合集-读Java实战(第二版)
摘要:1. 基本信息 Java 实战(第二版)Modern Java in Action, 2nd Edition [英] 拉乌尔–加布里埃尔·乌尔玛(Raoul-Gabriel Urma),[意] 马里奥·富斯科(Mario Fusco),[英] 艾伦·米克罗夫特(Alan Mycroft) 著,陆明刚
阅读全文
摘要:1. 语言的演变 1.1. C和C++仍然是构建操作系统和各种嵌入式系统的流行工具 1.2. Java和C#等安全型语言在诸多运行资源不太紧张的应用中已经取代了C和C++ 1.3. Java可能会被同样运行在JVM上的竞争对手语言(如Scala或Groovy)取代 1.4. Ada、Algol、CO
阅读全文
摘要:1. 行为参数化 1.1. 处理频繁变更的需求的一种软件开发模式 1.1.1. 不管你做什么,用户的需求肯定会变 1.1.2. 可让代码更好地适应不断变化的要求,减轻未来的工作量 1.2. 一个方法接受多个不同的行为作为参数,并在内部使用它们,完成不同行为的能力 1.2.1. 类似于在内联“传递代码
阅读全文
摘要:1. 流 1.1. 以声明性方式处理数据集合 1.2. 通过查询语句来表达,而不是临时编写一个实现 1.3. 遍历数据集的高级迭代器 1.4. 透明地并行处理 1.5. 从支持数据处理操作的源生成的元素序列 1.5.1. 元素序列 1.5.1.1. 从有序集合生成流时会保留原有的顺序 1.5.2.
阅读全文
摘要:1. 方便程序员和可读性是头等大事! 1.1. 函数式API设计更易复合和重用 2. 归约和汇总为一个值 2.1. counting() 2.1.1. 计数 2.2. maxBy 2.2.1. 查找流中的最大值 2.3. minBy 2.3.1. 查找流中的最小值 2.4. summingInt 2
阅读全文
摘要:1. 集合工厂 1.1. Arrays.asList() 1.1.1. 创建了一个固定大小的列表 1.1.2. 列表的元素可以更新 1.1.3. 不能增加或者删除 1.1.4. 大小固定的可变数组 1.2. 没有Arrays.asSet() 1.2.1. 可以向HashSet的构造器传递一个列表实现
阅读全文
摘要:1. Java 8之前的库对日期和时间的支持非常不理想 2. TemporalField接口 2.1. 定义了如何访问temporal对象某个字段的值的接口 2.2. ChronoField枚举 2.2.1. 实现TemporalField接口 3. LocalDate类 3.1. 实例是一个不可变
阅读全文
摘要:1. null的由来 1.1. 历史上被引入到程序设计语言中,目的是为了表示变量值的缺失 1.2. 包括Java在内的大多数现代程序设计语言为了与更老的语言保持兼容 2. null带来的问题 2.1. 错误之源 2.1.1. NullPointerException是最典型的异常 2.2. 代码膨胀
阅读全文
摘要:1. 兼容性 1.1. 二进制级的兼容性 1.1.1. 只要不重新编译该类,即使不实现新的方法,现有类的实现依旧可以运行 1.1.2. 现有的二进制执行文件能无缝持续链接(包括验证、准备和解析)和运行 1.1.3. 如果新添加的方法不被调用,接口已经实现的方法就可以继续运行,不会出现错误 1.2.
阅读全文
摘要:1. 规则 1.1. 传递参数,返回结果 1.1.1. 异常和中断都不算返回结果 1.2. 减少共享的可变数据结构能帮助你降低维护和调试程序的代价 2. 耦合性 2.1. 软件系统中各组件之间是否相互独立 3. 内聚性 3.1. 系统的各相关部分之间如何协作 4. 无状态的行为 4.1. 流水线中的
阅读全文
摘要:1. 设计原则 1.1. 将所有你愿意接受的作为参数的函数可能带来的副作用以文档的方式记录下来 1.2. 最理想的情况下你接收的函数参数应该没有任何副作用 1.3. 延迟数据结构是强力武器 1.4. 所有使用持久化数据结构的用户都必须遵守“不修改”原则 2. 一等函数 2.1. first-clas
阅读全文
摘要:1. 注解 1.1. 一种使用附加信息装饰程序元素的机制 1.2. Java 8之前,只有声明可以被注解 1.3. 一种语法元数据(syntactic metadata) 1.4. 可以用于文档编制 1.4.1. @Deprecated注解被广泛应用于说明某个方法不再推荐使用 1.5. 依据注解检测
阅读全文
摘要:1. 设计模式 1.1. 对设计经验的归纳总结 1.2. 一种可重用的蓝图 1.3. Java 5引入了for-each循环 1.3.1. 替代了很多显式使用迭代器的情形 1.4. Java 7推出的菱形操作符(<>) 1.4.1. 帮助大家在创建实例时无须显式使用泛型 1.4.2. 推动了Java
阅读全文
摘要:1. Nicolai Parlog编写的The Java Module System 1.1. 推荐阅读 2. Jigsaw项目 2.1. 开发持续了将近十年 3. 关注点分离 3.1. separation of concern,SoC 3.2. 将单体的计算机程序分解为一个个相互独立的特性 4.
阅读全文
摘要:1. 潮流 1.1. 与应用程序运行的硬件平台相关 1.1.1. 编写能充分利用多核处理器能力的软件 1.2. 与应用程序的结构相关 1.2.1. 反映了互联网应用对可用性日益增长的需求 2. 聚合型应用(mashup) 2.1. 使用来自多个数据源的内容,将它们聚集在一起,从而简化我们的生活 3.
阅读全文
摘要:1. Stream 1.1. 允许你声明性地将顺序流转变成并行流 1.2. 能对这些集合执行操作流水线,可以充分利用计算机的多个核 2. 并行流 2.1. 把内容拆分成多个数据块,用不同线程分别处理每个数据块的流 2.2. 自动地把工作负荷分配到多核处理器的所有核 2.3. 内部迭代让你可以并行处理
阅读全文
摘要:1. 同步API 1.1. 阻塞式调用 1.2. 调用了某个方法,调用方在被调用方执行的过程中会等待,被调用方执行结束返回,调用方取得被调用方的返回值并继续运行 2. 异步API 2.1. 非阻塞式调用 2.2. 会直接返回,或者至少在被调用方计算完成之前,将它剩余的计算任务交由另一个线程去做 2.
阅读全文
摘要:1. 再次出现在聚光灯下的原因 1.1. 基本思想已经有二三十年的历史 1.2. 大数据 1.2.1. 以PB计量的大数据 1.2.2. 当前互联网中流量最大的部分是移动流量 1.2.3. 物联网(Internet of things, IoT)流量取代移动流量成为互联网流量的主流,这种情况还会进一
阅读全文
摘要:1. 编程语言 1.1. 仍然是一门语言 1.1.1. 以最清晰、最容易理解的方式传递信息 1.2. 代码的易读性和易理解性在软件中的重要性甚至更胜一筹 2. 领域特定语言DSL 2.1. 为了解决某个特定业务领域问题的一种自定义语言 2.1.1. 一种小型语言 2.1.2. 大多都不通用 2.1.
阅读全文
摘要:1. Scala 1.1. 混合了面向对象和函数式编程的语言 1.2. 直接使用任何一个Java类库 1.3. 声明非递归的方法时,不需要显式地返回类型 1.3.1. 会自动地替你推断生成一个 1.4. 字符串插值 1.4.1. 在字符串的字面量中内嵌变量和表达式 1.5. 以使用val关键字替换v
阅读全文
1