聊聊整体性学习方法

「整体性学习方法」是在一本叫做《如何高效学习》的书中看到的。这本书的作者是个老外,他用一年就学完了四年的麻省理工课程。而这本书正是其这一年来的学习心得,书中介绍了他的学习方法。

一开始看到这本书,我是很抗拒的,感觉就是一本鸡汤书。再加上这本书理论居多,很多时候都得自己去摸索,所以我刚开始读也不怎么在意。一直到最近一段时间,我才慢慢地体会到了他说的「整体性」学习方法是什么。

什么是整体性学习方法

在聊我的体会之前,我先简单介绍一下整体性学习方法。整体性学习方法有 5 个步骤,但是并非按部就班,只是按此顺序进行,不用拘泥于这种顺序。

  1. 获取 —— 通过感官获取信息。在这个阶段我们获取到的信息还只是信息,没有联系起来。例如我们知道了二叉搜索树这个概念、二叉平衡树这个概念等。
  2. 理解 —— 明白信息的表面意思。对应本例就是理解了红黑树的概念。
  3. 扩展 —— 与其他信息建立联系。扩展有三种方式:第一,深度扩展,扩展知识的背景。例如红黑树是怎么出现的,为什么要出现红黑树等。第二,横向扩展,探究知识的联系。例如AVL树和红黑树有什么联系和区别?第三,纵向扩展,与其他结构联系后,从其他结构的角度探究知识。纵向扩展指的是我们将树结构形成一个知识体系后,与其他知识体系再联系,例如与算法中的知识体系联系,看看树结构在哪些算法中得到应用。
  4. 纠错 —— 删除错误联系。在我们理解和扩展过程中,总会出现一些错误的理解。这时候我们需要将这些错误的理解剔出,有必要的话再次梳理知识结构。通过不断的理解、扩展、纠结,知识结构会趋向于稳定。
  5. 应用 —— 将知识应用到各种情景中去,包括现实生活。当我们形成知识体系,并对知识点有了相对深刻的理解之后,就需要去应用了。例如树结构这个知识点,我们可以在实际工作中去寻找合适的应用场景。例如:B树适合于海量数据的排序,而B+树则适合海量数据的范围查询。

一个简单的例子

为了让大家理解整体性学习方法的应用,我们这里用树结构的学习做一个例子。

我们知道树是一种最基本的数据结构,其中树又有:二叉树、二叉搜索树、AVL树、红黑树等等。如果我们不适用整体性学习方法,那么我们的学习步骤是这样的:

  • 什么是二叉树?二叉树的属性是什么?
  • 什么是二叉搜索树?二叉搜索树的属性是什么?
  • ……
  • ……

可以看到我们学习的时候,知识点之间是分散的,没有联系的。但如果我们有意识地去使用整体性学习方法,那么我们的学习路线是这样的:

  • 弄懂什么是二叉树、二叉搜索树、AVL树、红黑树等。
  • 理解并扩展这些概念,例如:二叉树与二叉搜索树的区别?二叉搜索树与AVL树的区别?
  • 纠正之前对于这些概念的错误理解
  • 思考这些树结构在实际工作中的应用

经过一段时间的整理,我会形成下面这样的思维导图。

上面的思维导图基本上把我们所有的树结构都涵括了。但单单是思维导图还不够,你还必须弄清楚它们的内在联系。在我的记忆中,上面列出的 5 个树结构都是有联系的。

  • 二叉树,这是最基本的树结构,是我记忆的起点。
  • 二叉搜索树,在二叉树的基础上对元素进行排序。
  • 二叉平衡树,二叉搜索树在极端情况下退化成链表,所以就要对子树高度做限制,那么二叉平衡树就诞生了。而二叉平衡树有两种,一种是 AVL 树,它是高度平衡的自平衡二叉树,每个子树的高度差不能超过1。而红黑树则是近似平衡的平衡二叉树,最长路径不会超过最短路径的两倍。
  • B树:是在二叉树的基础上进化而成的,其主要用于解决大数据量的数据搜索问题(IO问题)。例如我们的文件系统搜索文件,不可能把所有文件信息加载到内存,这时候就需要B树来实现这一操作。
  • B+树:B树只能解决单一记录的搜索问题,但如果我们要查询某个范围的数据呢?例如查询数据库年龄在20-30的用户,这时候B树就无能为力了。这时候B+树就能发挥其功能。B+树在B树的基础上在叶子节点增加了向后的引用,从而可以快速地查找某一范围的数据。

经过我这么一套说下来,你是不是觉得它们都是有联系的呢?通过这样的记忆,我们能记得更牢固。因为知识点之间都是有关联的,只有我们找到它们之间的关联,我们才能记得更牢固。

另外一个例子

上面关于树结构的总结是一个例子,其最重要的是找到知识点之间的联系,从而将他们从独立的知识组织成一个网络。这样我们不需要记住所有的知识点,而只需要记住单独一个入口,从这个入口我们可以推出其他所有知识点。

例如:在树结构这个例子中,我记住了二叉树。那么二叉树+排序,就变成了二叉搜索树。二叉搜索树+解决链表问题,就是二叉平衡树。为了提高修改效率,就有了 AVL 树和红黑树。

不同知识点的关联可能不太一样,这就需要自己去学习寻找联系了。例如我们经常用到的 Java 虚拟机知识点,你能形成一个知识网络么?还是只有零星的一点记忆?对于我来说,我对于 Java 虚拟机的记忆是这样的:

  • Java源文件到Class文件,对应编译器和字节码规则。
  • 从Class文件到内存,对应类加载机制和内存结构。
  • 从内存到运行阶段,对应垃圾回收、垃圾回收器、双亲委托加载机制。

简单地说,我使用 Java 文件的运行过程来记忆 JVM 的所有知识点。一个 Java 文件从源文件到字节码文件、再到内存、再到运行、再到类加载机制、再到垃圾回收,基本上涵括了 JVM 的所有知识点。

总结

整体性学习方法看着比较鸡汤,但你尝试过一次之后就觉得很不错,再也停不下来了。整体性学习方法不但让你记住知识点,还让你对比、分析他们之间的区别,让你在知识点之间建立联系,从而让你记得更加深刻。

整体性学习方法需要我们吸取大量的信息,并在这些信息中建立联系,并且应用起来。对于初学者来说,这样其实是很有难度的。但如果你已经入门了,使用这种方法去学习效率会高许多。

本文分享自微信公众号 - 高性能服务器开发(easyserverdev)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号【Java技术江湖】

Spring 常犯的十大错误,打死都不要犯!

我们正在解决这个常见错误,是因为 “非我所创” 综合症在软件开发领域很是常见。症状包括经常重写一些常见的代码,很多开发人员都有这种症状。

8620
来自专栏微信公众号【Java技术江湖】

我说我精通字符串,面试官竟然问我Java中的String有没有长度限制!?

String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西容易被忽略的。

8030
来自专栏Java那些事

460道Java后端面试高频题

转自公众号:码农求职小助手

17920
来自专栏前端自习课

【CSS】357- 坚定地使用 CSS Custom Properties

  自定义属性(Custom Properties)是一个很有魅力的 CSS 新特性,现代浏览器广泛 支持。但是遇到那些不支持 CSS Custom Prope...

7630
来自专栏前端自习课

【TS】358- 浅析 TypeScript 设计模式

设计模式就是软件开发过程中形成的套路,就如同你在玩lol中的“正方形打野”,“四一分推”,又或者篮球运动中的“二夹一”,“高位单打”一样,属于经验的总结。

9140
来自专栏bigsai

java开发者linux入门

在入门linux的时候感觉大部分很糟糕的,尤其是java开发者来说,对于非运维人员可能刚开始会对linux有很大的抵触性,可能还是更多喜欢桌面操作。或者在之前...

12720
来自专栏好好学java的技术栈

你真的了解 i++, ++i 和 i+++++i 以及 i+++i++ 吗?

答案分别为 1,2。对于这个答案我猜大多数人都能答出来。不过 i++ 和 ++i 这两个操作,在内部是如何实现的呢?

12020
来自专栏微信公众号【Java技术江湖】

JDK13快来了,JDK8的这几点应该再看看!

jdk8虽然出现很久了,但是可能我们还是有很多人并不太熟悉,本文主要就是介绍说明一些jdk8相关的内容。

19330
来自专栏微信公众号【Java技术江湖】

如何在 Java8 中风骚走位避开空指针异常

要说 Java 编程中哪个异常是你印象最深刻的,那 NullPointerException 空指针可以说是臭名昭著的。不要说初级程序员会碰到,即使是中级,专家...

8020
来自专栏微信公众号【Java技术江湖】

面试题:你简历中写到熟悉Spring源码,那你给我说说它用到了那些设计模式?

Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行内典范。好了,话不多说,开始今天的内容。

7730

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励