和大家聊一聊学习 (二)- 如何去模仿学习

本贴最后更新于 1528 天前,其中的信息可能已经渤澥桑田

前文回顾

     在上一篇文章中,我们提到了学习最主要的思路就是模仿,并且总结了模仿的三大步:实践,通过反馈获取经验,再实践.回顾上篇文章请点击:
https://www.lixiang.red/articles/2020/09/14/1600092798524.html
本篇文章我们来详细讨论下这三个阶段.

模仿总述

总体来说,这三个阶段是一个循环,并不是单独孤立的,我们可以用下面这个图来表示
image.png

图中,我们用了三个节点,这里先解释一下,为什么把实践和再实践分成了两个节点,因为两个实践是必然不一样的,要保留前一次实践中正确的地方,要新增通过反馈积累经验后新的实践点.下面我们再一起探讨一下在这三个节点中要怎么学习.下面我们会提前涉及到后面的一些知识点,看不完全懂没有关系,可以先做大致理解,后面到对应章节时,再细致理解.

模仿-知己知彼

      在我们正式分析模仿之前,先要做一些准备工作,即要梳理好我们现在有什么,为了达到这个模仿目标,我们要怎么做。 明确了自己的问题之后,再开始模仿。如,我现在有两只能动的手,有两条能动的腿,那我要怎么跳广场舞?然后不断的重复下面模仿的过程,不断增加自己现有的已知的,那么离目标就会越来越近!

模仿-实践

      现实世界是一个物质世界,在物质世界中,我们可以去听到实在的声音,可以看到正在发生的事,可以触摸到某一实在的物体.如,面试时有一问,如何判断 CPU 满负载了,如果是在自己的电脑上,那风扇转的飞起,不用打开资源管理器也知道 CPU 满了. (要定位是哪个应用的话,还是要打开一下资源管理器的)
      在模仿之前,肯定是要先观察,这时候,并非一开始就是看细节,去看组成等,而是先看整体,如果我们在复制粘贴一个东西的时候,开始并没有细看,网页一拖到底,感觉可行,然后就选中,复制,粘贴. 成不成不管,先拷过来运行了再说.但是这里就出现了一个问题,怎么去评定这个整体行还是不行.

实践-整体

      我们常说,计算机世界是对现实世界的模拟,如在 java 中,万物皆是对象.现实世界中,在不扣细节的情况下,我们也可以认为世间万物皆对象,而且这世间的万物比 Java 要简单的多,都是已经实例化的类,没有接口,没有抽象类,如果一定要找的话,应该就是哲学了.即是对象,那就肯定有属性和方法了.
      这里以去网上查找一个问题为例.我们打开了百度,然后搜索:启动 XXX 出现 YYY。 注意,这里就有两个属性(XXX,YYY)还有一个方法(启动)。 那么我们的搜索内容中必须要出现这个才行,但是网上有很多标题党,需要点开之后细看一下才知道是不是我们想要的。
      在点开网页之后,我们就要从网页内容中寻找我们需要的属性和方法。如果没有,可以关掉,再打开下一个了。如果有,这可能是我们的目标网页,然后再开始细看。细看要看以下两点,1.是不是和我们出现问题的操作是不是一样的。2.看有没有解决方案。 如果和我们出现问题的操作不一样的话,大多数情况下,解决方案也不是通用的。 如果和我们出现问题的操作一样,且又有解决方案,那就可以进行下一步了。

模仿-经验

      真正的模仿其实就一步,复制-粘贴。复制上面的解决方案然后在我们的场景下,如果能解决问题,那肯定是最好了。如若没有成功,这时候提示信息(属性)应该会有更改,如从 XXX 变成了 ZZZ,或者从 YYY 变成了 AAA。这时候,就是我们获得的一上经验,但经验有正误,就是这个经验不一定是正确的。得拿着变化的信息,走到下一步,然后再验证。

      其实经验这一步是最关键的,也是最为能将老手/新手区别开来的一个分水岭。关键在于,如何寻找到有效关键的属性。这里有很多经验之谈,也有很多技巧性的东西,这里我先大致总结列了一些点,后面还会有一章专门讲这个。
1.从日志中寻找错误信息
2.从 Exception 中找到错误信息
3.idea 用断点进行调试
4.idea 设置条件断点
5.idea 在运行时修改变量的值
6.idea 在断点暂停时运行表达式
7.idea 重新进入方法
8.截图给小刀
如果按以上 8 点走下来还是没个头绪的话,我个人建议,算了吧,放手吧

模仿-再实践

     在总述中已讲过再实践和实践的区别,在这里,其实可以再做一个细致的区分,所谓之再实践,1 是再在网上找一些关键性的信息。2 是根据上一步经验中得到的信息,直接调整复制下来的内容,使之可以正常运行。

举一反三

     在上文中,我们都是在以查找问题为例,但我想在这里写的是一种通用的学习方法,所以这里,我们再以学习一个新知识点为便,简述一下要怎样学习。

     即是一个新的知识点,我相信还没有新到那种无人研究的地步,那网上一定有关于这个知识点的信息。我们参照上面查找问题的方式来梳理一下:
1.明确模仿目标
要先知道这个知识点是做什么的,用什么做的。比如说登录,用 spring-security/web-Filter 两种都可以做,你想要的是哪种呢?
2.整体提取属性和方法
以上述登录为例,属性就是 spring-security,方法就是登录
3.实践获取经验
把别人的代码下载下来或者是集成到项目中,然后本地启动,看能不能满足我们的需求,能满足则最好,不能满足则再对不满足的点按上段中 8 个方法再寻找属性和方法再实践。

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...