思维导图学《On Java》基础卷 + 进阶卷
说明
原来读过 《Java 编程思想(第 4 版)》,但是这个版本还是基于 Java 5 讲解。由于 Java 8 做出了非常大的改进(是 Java 变化最大的版本),且截止到 2022-07-22,Java 版本都更新到 18 了……原来那本书确实需要更新了。
原作者 Bruce Eckel
又重新出版了新书:《On Java 中文版 基础卷》 和 《On Java 中文版 进阶卷》。本文是对基础卷和进阶卷的思维导图笔记总结,略过了部分较为基础的章节,并未完全详尽书中所有知识点。
本文地址发布在 https://github.com/LjyYano/Thinking_in_Java_MindMapping 上,GitHub 地址:链接,请在转载时标明原文链接~
目录
有几个章节过于基础,没有放在思维导图上:
- 02 安装 Java 和本书示例
- 04 操作符
- 05 控制流
- 12 集合
- 16 代码校验
- 21 数组
思维导图
导读
我的语言之局限,即我的世界之局限。这句话不仅适用于我们日常读写的语言,也适用于编程语言。很微妙的一件事是,一门语言会悄然无息地引导你进入某种思维模式
,同时远离其他思维模式。Java 尤其如此。
如果你了解一门语言的不足之处和局限性,当你遇到某个语言特性不可用时,就不会被卡住,以致无法继续。同时,因为你已经知晓其局限性,所以就可以更好地进行程序设计。
Java 8 包含了许多基础和重要的改进,而由于 Java 一直严格遵守自己的向后兼容性承诺,做出这些改进无疑需要花费相当多的精力。
如果一开始就将你的项目“发展”成一个有机的、进化的生命体,而不是像建造玻璃墙的摩天大楼一样进行一次性施工,你将获得更大的成功和更直接的反馈。
相关链接:
- OpenJDK 官方版本计划及功能:JDK Project
- JDK 17 Features
第 1 章 什么是对象
工具已经越来越不像机器,而是越来越像思维的一部分。
所有编程语言都是一种抽象
。
如果我可以将问题从表象中抽取出来,那么什么样的对象可以马上解决我的问题呢?
第 3 章 一切都是对象
第 6 章 初始化和清理
第 7 章 实现隐藏
第 8 章 复用
第 9 章 多态
相关链接:
第 10 章 接口
任何抽象都应该由真正的需求来驱动。接口应该是在必要时用来重构的东西,而不是在任何地方都多加一个间接层级,进而带来额外的复杂性。这种额外的复杂性影响很大,如果你让某人在克服这种复杂性上花费时间,而他最终却发现你添加接口只不过是为了“以防万一”,而非出于什么令人信服的其他理由,他就会质疑你做过的其他所有设计。
相关链接:
第 11 章 内部类
第 13 章 函数式编程
lambda 表达式和方法引用远非完美,我们要永远承受 Java 设计者在语言诞生初期的草率决定所导致的代价
。lambda 在 Java 并非一等公民。这并不意味着 Java 8 没有大的改进,但确实意味着,像许多 Java 语法一样,最终会有一个让你感到不爽的临界点。
相关链接:
第 14 章 流
相关链接:
第 15 章 异常
异常处理的优点之一,就是它使得你可以在某处集中精力处理你要解决的问题,而在另一处处理你编写代码产生的错误。
Java 坚定地强调将所有的错误都以异常形式报告的这一事实,正是它远超过诸如 C++ 这类语言的长处之一。
相关链接:
第 17 章 文件
在非常难用的文件 I/O 编程存在多年之后,Java 终于简化了读写文件的基本操作。
第 18 章 字符串
相关链接:
第 19 章 反射
相关链接:
第 20 章 泛型
在 Java 中,泛型是在这门语言发布了几乎 10 年后才引入的,所以向泛型的迁移问题是必须要考虑的,也对泛型的设计产生了很大冲击。结果就是,作为程序员的你,将因为 Java 设计者在创建 1.0 版本时缺乏远见而承受痛苦。
有些语言对参数化类型采用了更简洁、影响更小的实现方法。不难想象,这样一种语言有可能成为 Java 的接班人,因为它完全采用了 C++ 对待 C 的方式:站在巨人的肩膀上,并看得更远。
进阶卷 第 01 章 枚举
进阶卷 第 05 章 并发编程
进阶卷 第 06 章 底层并发
结语
在不少讨论中能听到这样的声音:“C++ 是一门设计拙劣的语言。”我则认为理解 C++ 和 Java 做出的各种决策有助于站在更高的位置看待问题。
如同任何人类语言一样,Java 提供了一种表达概念的方式
。如果使用得当,随着问题变得更庞大更复杂,这种表达工具将会比别的可供选择的语言更为简单、灵活。
曾几何时,C++ 是编程语言界的“皇冠”,人们认为会永远如此。很多人也这么看 Java,但由于 JVM 的缘故,Java 已经使自己可以被轻而易举地替换掉了。现在,任何人都可以创建一门新的语言,并在短时间内使其像 Java 一样高效运行。但在以前,对于一门新的语言来说,大部分开发时间往往花在实现正确、高效的编译器上。
在我写作本书时,Java 是世界上首屈一指的编程语言。然而 Java 终将老去
,就像 C++ 那样,衰退到只会在某些特殊场合用到(甚至只用于支持遗留代码,因为 Java 不如 C++ 和硬件结合那么紧密)。但是 Java 无心插柳却已蔚然成荫的真正光辉之处是,它为自己的替代品创造了一条非常平坦的道路,即使 Java 本身已经到了无法再进化的地步。未来的所有语言都应该从中学习:要么创造一种可以不断重构的文化(如 Python 和 Ruby 做到的那样),要么让竞争者可以茁壮成长。
C 语言是低级语言,这会限制你的野心。这些限制使得扩展多线程库看起来合情合理。然而 Java 更宏大的雄心壮志,使得在将低级语言模型直接照搬到高级语言的过程中,很快就暴露出了根基上的问题。这些错配问题体现于 Thread 类中大量方法的弃用,在随后的为并发提供更好抽象的高级库的浪潮中也暴露了出来。
令人惊叹的是,尽管有这么多无法弥补的重大问题,Java 还是发展到了现在的程度。Java 的后续版本已经增加了库以提升并发的抽象水平。事实上,我之前绝没有想到 Java 8 会带来如此大的提升:并行流和 CompletableFuture——这是史诗般的魔法,我还将非常惊讶地看到更多魔法的诞生。
当面临多个可选方案时,先尝试需要最少假设的方案。
你很容易依赖一门语言,并且陷入一种想要用该语言解决一切问题的状态。
链接
由于思维导图中的链接没法截图,按照先后顺序贴在下面:
- OpenJDK 官方版本计划及功能:JDK Project
- JDK 17 Features
- 一文看懂 Java 对象的内存
- 新特性 JEP 409: Sealed Classes
- Java Lambda 表达式源码分析
- Java Stream 源码分析
- 新特性 JEP 358: Helpful NullPointerExceptions
- Java String 演进全解析
- 30 分钟玩转「正则表达式」
- 新特性 JEP 378: Text Blocks
- Java ClassLoader
- 新特性 JEP 394: Pattern Matching for instanceof
写在最后
思维导图是用亿图脑图 MindMaster
制作的,之前重度使用了 Xmind 和 WPS,感觉还是亿图这个思维导图软件比较适合我。
本文 GitHub 地址:链接。如果需要思维导图原件,请在 GitHub 私信获取~
思维导图学《On Java》基础卷 + 进阶卷的更多相关文章
- java基础思维导图,让java不再难懂
java基础思维导图,让java不再难懂 原文链接 https://my.oschina.net/u/3080373/blog/873056 最近看了一些文章的思维导图,发现思维导图真是个强大的工具 ...
- 思维导图学《On Java》基础卷
说明 原来读过 <Java 编程思想(第 4 版)>,但是这个版本还是基于 Java 5 讲解.由于 Java 8 做出了非常大的改进(是 Java 变化最大的版本),且截止到 2022- ...
- 跟着9张思维导图学JavaScript
思维导图小tips 思维导图又叫心智图,是表达发射性思维的有效的图形思维工具 ,它简单却又极其有效,是一种革命性的思维工具.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级图表现出来 ...
- Python思维导图(一)—— 基础
前言 思维导图并不能涵盖所有知识点,只是梳理某个知识点下我们需要重点关注的分支:根据自己的情况可以进行拓展学习 计算机基础 博主认为需要重点掌握的有 编译型语言和解释型语言的区别?分别有什么编程语言? ...
- 思维导图学 Kotlin
前言 最近做了<Kotlin实战>的思维导图笔记,Kotlin真香-- 目录 基础 函数 类.对象 λ表达式 类型 约定 高阶函数.泛型 公众号 coding 笔记.点滴记录,以后的文章也 ...
- 思维导图学《JVM 虚拟机规范》
目录 工具 虚拟机实现 class 文件结构 字节码指令 其他 虚拟机结构 公众号 coding 笔记.点滴记录,以后的文章也会同步到公众号(Coding Insight)中,希望大家关注_ 公众号 ...
- Java知识汇总——思维导图
转载:https://www.cnblogs.com/java1024/p/8757952.html Java知识点汇总,从基础到常用的API.还有常用的集合类,总结的很详细.图片是从论坛里面找到的, ...
- [原创]Java性能优化权威指南读书思维导图
[原创]Java性能优化权威指南读书思维导图 书名:Java性能优化权威指南 原书名:Java performance 作者: (美)Charlie Hunt Binu John 译者: 柳飞 ...
- Elasticsearch 思维导图集锦(持续更新...)
目录 引言 思维导图 全文搜索 Elastic 基础 Query DSL Multi Match Query 系列文章列表 参考 引言 本文主要是对 elasticsearch 的一些知识点使用思维导 ...
随机推荐
- idea 查看 类所有方法的快捷键
idea 查看 类 所有方法的快捷键 Idea:ctrl+F12 Eclipse:Ctrl+O
- 数据结构-二叉树(Binary Tree)
1.二叉树(Binary Tree) 是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根节点和两棵互不相交的,分别称为根节点的左子树和右子树的二叉树组成. 2.特数二 ...
- Effective Java 3 读后感
Effective Java 3 读后感 最近学习了一下Effectvie Java,这是一本非常适合有一定经验的Java后端人员阅读的书.书中总结许多编码经验对开发很有帮助,比如其中总结的对于流和L ...
- Ubuntu出现视频无法正常播放的问题
原因是没有安装相关的解码包,参考这个方法: ubuntu下B站(bilibili)视频无法播放 一条命令解决 sudo apt install ubuntu-restricted-extras 要是有 ...
- macOS Monterey 12.5 (21G72) 正式版 ISO、IPSW、PKG 下载
今日(2022-07-21)凌晨,Apple 终于发布了 macOS Monterey 12.5,包括功能增强.错误修复和安全性更新.macOS Monterey 12.5 自 2022 年 5 月 ...
- typescript关于postgres数据库的API封装
文章结构 1 新建 postgres.ts 文件 2 配置文件说明 3 依赖引用说明 4 API使用示例 1 新建 postgres.ts 文件,代码如下: imp ...
- Codeforces Round #792 (Div. 1 + Div. 2) // C ~ E
比赛链接:Dashboard - Codeforces Round #792 (Div. 1 + Div. 2) - Codeforces C. Column Swapping 题意: 给定一个n*m ...
- 多态的好处和instanceof关键字
多态的好处: 可替换性:多态对已经存在的代码具有可替换性 可扩展性:多态对待吗具有可扩展性,增加新的子类不影响已经存在类的多态性,继承性,以及其他特征的运行和操作.实际上新家子类更容易获得多态功能 接 ...
- redux和dva
实习的时候,公司使用的是react,react说实话生态学的还不是很完善,就暂时先不做跟react相关的博客,等以后学好了react全家桶之后,专门再总结一下react的内容 这两天看了公司的alit ...
- python 操作pdf文档
简介 在实际项目中,我们有可能需要提取当中的部分内容并导出,给PDF文件添加水印,合并多份PDF文件等等,而本文会着重用到PyPDF2模块来玩转PDF文档,以及tabula模块来对PDF文档中的表格数 ...