学东西如何做到过目不忘

由于疫情的影响,最近在家办公盛行。有同学跟我抱怨,说他们公司某某员工穿着睡衣就开视频会议了。

image-20200213124914811

然后开完会议就躺在沙发上面办公,越躺越低,然后不小心睡着了。起来就发现到了下班的点了。心里那个虚呀,于是晚上加班继续完成任务。我觉得这是在家办公效率低的原因之一吧…

言归正传,今天我想分享一点关于学习方法的内容,顺便引出一些干货给大家。于是我早早的起来刷牙洗脸,换好帅气的衣服,梳好了赌神发哥同款帅气发型,端庄的做到了电脑前面,开始准备干活了。事实证明这个仪式感对效率的提升很有效果呀:

image-20200213124822268

这两天有位帅气的小哥哥跟我交流一些学习的方法。思索了一下,除了学习之外,记忆方法也是比较重要的,所以我今天重点跟大家分享下学习和记忆方法相关的内容。

1、高效学习方法

随着知识碎片化时代的来临,微博微信公众号,各个社交网站,视频教程,在线教育。看起来好像我们想要学的东西,网上都有,现在这个时代,对于学生来说真的是太友好了。

可是,内容多了,我们却迷茫了,不知道从什么时候开始感觉网上的内容自己都看过,但是就是不知道细节,也没动力去了解。我们的大脑被各种摄取成本低的信息流占据着(表情包,段子,视频),对于真正枯燥却有用的知识自动屏蔽了。

为什么?因为我们缺少一个学习计划,促使我们主动搜寻知识,有别于那种被动的灌输。

先来讲讲提升效率您不得不了解的一些秘密。

举个学习领域,谈到JVM,相信做Java开发的同事都有了解过,我们也可以看到网上的文章教程,视频教程,五花八门,各有特色,但是大部分看下来感觉并不能打通我的任督二脉,似乎少了点什么。我琢磨了好一会儿这个问题。

1.1、提升学习效率的秘密

1.1.1、图片胜于文字

正所谓一图胜千文,这不是没有科学依据的,肯尼思·希格比《如何高效记忆》一书中就做过类似实验证明图片交流的记忆有效性更好。

1.1.2、领悟透彻

学而不思则罔,思而不学则殆,只有在良好的了解了知识背后的含义之后,记忆的效果更好。

就比如说或,我的名字:arthinking你觉得很难记忆,那是因为不理解他,如果你知道这是我自创的词,意思是:

art + thinking(thinking artistically)

你就会恍然大悟,立刻记住了。

如果你是个代码界里面的音乐狠人,那么你可以给自己的知识编一个有押韵的曲子,那学习效果可是卓群的。

1.1.3、启发性学习

有目的性的学习效果会更好,所以,每篇文章开头或者文中,我都会写一些问题留给大家思考,带着问题去阅读,这样就可以有目的的记住内容了。设想一下,如果没有专门去留意,谁会记得交通信号灯最上面的那个是什么颜色呢?

有些小伙伴喜欢面试前临时抱佛脚拼命灌输知识,其实这种灌输产生的记忆是比较死板的。

个人建议在系统掌握了知识之后,定期通过思维导图或者其他有意义的图片回顾,与新的知识产生联结,这样除了能够更好记住所学知识,最重要的是能让知识活起来,真正让自己所用。

1.2、社交网络知识碎片化的与学习的冲突

现在随着社交网络的普及,产生了大量的碎片知识,贩卖焦虑的文章或者动态真的是太多了。

贩卖焦虑的标题:

  • 三十五岁后的那些人都去哪了?
  • 闺蜜买了三套房?
  • 工作一年深圳买房是一种怎样的体验?
  • 同龄人已经开始抛弃你了…

实验发现:事实上,焦虑会干扰记忆,你越是焦虑地去学习一些知识,你学习的记忆效果就越差,这真是一个负向循环的过程呢。

我大笔一挥,不禁想画个图来表达下,加深大家对这个理论的印象,不是说图像的记忆效果更佳嘛:

image-20200213204119999

也许你在社交网络上匆匆看完了文章,然后第二天就忘了前一天看到什么了,表面上看起来花了很多时间学习,但是这种碎片化的学习并不能够让你真正的吸收太多内容。

所以我一般在网络上面会花费比较多的时间去筛选知识,过滤掉信息噪音,真正让自己慢下来学习。

那么我们知道这些问题之后,如何做到不紧不慢地学习呢,下面我讲下我认为比较高效的学习法。

1.3、高效学习法

天才真的是太少了,如果你想学完一项技能就马上达到巅峰水平,那么,兄弟,请你醒一醒(使劲儿摇)。

一般我的学习过程是这样的:

1、定义学习目标

学什么,什么时间内完成。

2、学习内容 + 做笔记 + 分享

把学到的内容表述出来,表述的方式可以是:

  • 做笔记,记录下任何你想记住的东西。另外,为了方便你随时记录遇到的知识或想法,可以使用云笔记随时分类记录知识,定期去整理分类目录里面的内容;
  • 写博客结构化知识(根据自己定制的各种维度去收集信息,思考,总结,系统化);
  • 团队分享,这个是我最推荐的,你可以与更多人交流,思想碰撞可能会让你发现自己的一些认知盲点;

这个过程中,需要尽量总结出自己的领悟到的内容,最好通过图片,动画,或者思维导图的方式列出来,加强记忆。

3、二次复习:简化知识,融汇贯通

以高度概括的方式总结你所学知识,把相关知识点串起来,可以整理相关思维导图,对所有笔记复习一遍。

整理思维导图的目的就是让自己的知识结构网状化,形成自己的私人知识库。

这一点很重要,有了这个知识结构网,并且有这种结构化整理知识的能力后。那么你就不会被网上各种碎片化知识迷惑了。

梳理除了结构网并不意味着你就万事大吉了,你可能还会进一步深入了解各个知识点,有一个升华的认识,或者想到两个领域的知识原来可以联结起来,所以你需要不断的去反思总结,进一步归纳知识,让知识库更加丰富,联结的更加紧密,就像那种什么来的:高内聚

4、反复复习,实际应用,产生更多知识联结

在实际工作中,多发掘应用场景,结合其他技术一起思考,挖掘相似与关联之处。在实际场景中使用技术。让自己的知识组成一张网。这个过程中,你应该经常性的去复习学过的内容。

如果用思维导图去总结,你的这张网应该是越来越大的。

image-20200214150032719

2、高效记忆法

根据艾宾浩斯遗忘曲线[^2]规律,我们的知识点久久不用或者不回顾是会逐渐遗忘的。所以现在我们弄懂了,并不代表将来也懂。所以需要我们对照着思维导图,或者概览图,问题列表逐个去回顾知识点,努力回顾知识细节。如果有发现遗忘的,那么可以重新学习巩固下。 遗忘曲线[^1] 这篇文章跟我们介绍了知识遗忘的规律。下面是文中提供的一个遗忘曲线图:

image-20200214111526993

也就是说,在学习完之后,你需要定期的进行复习,加深印象,复习时间点:学完10分钟24小时1周1个月

总的来说就是:学习+笔记 -> 总结 -> 回顾-> 延伸 -> 串联 -> 回顾 -> 回顾…

遗忘曲线由德国心理学家艾宾浩斯(H.Ebbinghaus)研究发现,描述了人类大脑对新事物遗忘的规律。人体大脑对新事物遗忘的循序渐进的直观描述,人们可以从遗忘曲线中掌握遗忘规律并加以利用,从而提升自我记忆能力。

另外如果有发现知识点有新的认识,或者其他领域知识可以交织起来,可以重新整理,把我们的知识梳理成一个体系。

3、JVM速成手册

无论你是跟同事、同学、上下级、同行、或者面试官讨论技术问题的时候,很容易卷入JVM大型撕逼现场。为了能够让大家从大型撕逼现场中脱颖而出,最近我xxx想着如何把知识点尽可能呈现的容易理解,方便记忆。于是就开启了这一系列文章的编写。为了让JVM相关知识点能够形成一个体系,arthinking将编写整理一系列的专题,以尽量以图片的方式描述相关知识点,并且最终把所有相关知识点串成了一张图。

点击查看大图

image-20200214154250907

另外把文章列表和关键信息写到表格里面去了。

章节 关键词 相关思考
Java运行时数据区域是如何工作的 JVM内存布局 对象访问定位 1. JVM内存布局是怎么划分的?
2. JVM里面各个区直接是怎么配合工作的?
3. 对象在内存中是如何布局的?
4. 什么是操作数栈和局部变量表?可否在class文件中展示下?
5. 运行时常量和字符串常量有什么区别?
6. 对象访问定位方式有哪些?各有什么优点
Java垃圾回收机制 可达性分析 垃圾收集算法 垃圾收集器 1. 一个对象的一生经历了什么?
2. 如何判断对象是否可用?
3. 引用计数法和可达性分析算法各有什么优缺点?
4. 哪些对象可以作为GC ROOT?
5. 垃圾回收的时候如何快速寻找到根节点?(安全点和OopMap)
6. 垃圾回收算法有哪些?各有什么优缺点?
7. 有哪些垃圾手气,各有什么优缺点,适用什么场景
8. 何时触发MinorGC和MajorGC
9. 什么是空间分配担保
Java对象历险记 分配担保 空间分配 1. Java对象进入堆之后,它的一生都经历了什么?
Class文件十六进制背后的秘密 Class文件 反汇编 堆栈原理 1. 运行时常量池和静态常量池有什么区别?
2. Class文件里面都有什么内容?
3. Class文件反汇编之后的格式里面分别有什么,尝试解读里面方法中的汇编指令
4. 本地变量表和操作数栈是如何工作的
一篇图文彻底弄懂Class文件是如何被加载进JVM的 类加载器 加载 连接 初始化 1. Class.forName究竟是怎么获取Class对象的Class对象又是什么?
2. Class文件是如何被加载到JVM里面的?
3. 类变量是存在堆中还是存在方法区中?
4. 类构造器<clinit>方法什么时候执行?
一篇图文彻底弄懂类加载器与双亲委派机制 类加载器 双亲委派机制 1. 类加载器是怎么背创建出来的?
2. 什么是双亲委派机制?为什么要有这种机制?
3. Class实例和类加载器究竟是在Java Heap中,还是在方法区中?
4. 为何要有线程上下文类加载器
Java最大栈深度有多大 堆栈 1. Java最大栈深度多大
2. 程序中如何调优
Java代码编译方式和JVM三种执行模式 JIT javac 1. Java代码编译方式有哪些?
2. JVM执行方式有哪些?
JVM是如何进行方法调用的 静态分派 动态分派 1. JVM里面是如何进行方法调用的?
2. 什么是静态分派?
3. 什么是动态分派?
4. 怎么保证动态分派的执行效率?
5. 重写和重载的执行原理?
10分钟教你如何hack掉Java编译器 编译流程 javac JIT 注解处理器 1. 编译器一般编译流程
2. javac的编译流程是怎样的
3. 如何hack掉Java编译器
4. 运行时DI和编译期DI的区别
深入探索Java泛型的本质 泛型 1. 为什么需要泛型
2. Java代码在编译后是如何保存泛型信息的
3. Java泛型与C++、Python中的有何区别
4. 如何动态获取泛型类型
Java界的性能优化高手 编译器 解释器 JIT 1. javac做了什么优化
2. Java后端编译器的发展史
3. JIT是如何工作的
4. 效率与质量的衡量

也可以从这里查看JVM系列文章:JVM速成手册^3

4、记忆之外

其实记忆知识帮助我们更好的学习知识。我们学习知识的本质是要把它用起来,如果只是记下来了,并没有经常去使用,那么对知识的理解深度肯定是不会增加的。

所以我们最重要要做的就是:应用

使用过程中本身就是在不断帮我们复习加深记忆的过程,期间可能会引入一些新的东西,不断加强加深我们对知识点认知。为了加深认知,你可以:

  • 多阅览大神们的相关博客文章
  • 项目中思考使用场景并进行实际运用
  • 跟进相关开源项目,查看业界最新进展
  • 某一天兴致来了,pull下源码,debug看看代码。

好了关于高效学习方法就介绍到这里了。

其实不管目前经济大环境如何,我们目前处境是艰难还是如往常一样,我们都应该保持持续学习,不断提升自己的竞争力。JVM高效记忆专题是我整理的一个为了帮助大家学习JVM相关内容的而输出的,后续我将输出更多其他方面的技术专题。希望大家早日成为自己心目中的大牛,不管到哪里都可以实现自己的编程梦

“消除胜利的最好办法就是坚持恐惧!!!” —— 奥利给

大家一起加油,也请大神们看到有错漏之处高抬贵手帮忙指点一二。

一些研究表明,人们在学习之后马上去睡觉,相比同时间段内保持清醒,能够记住更多的内容。这不是睡觉的借口,好了,我该去休息了。

image-20200213231701497

References

[^1]: The Forgetting Curve

[^2]: Forgetting curve

arthinking wechat
欢迎关注itzhai公众号,获取更多最新的文章