学习方法论
主要途径
文档/书籍
越往底层信息密度越大,准确性越高,参考价值越大
视频
视频对初学者来说帮助挺大的。
但到了一些阶段,视频讲解速度对于有基础的人来说过慢,而且进阶的免费视频也较少
到这个时候,看视频就不能再只关注视频本身的知识点,而是多关注诸如作者的编码,作者的思想等内容
源码
以思考为主,从设计者的角度来读源码
目的
读源码之前要确定目的,不然就是走马观花,没有收获
思路
- 从设计者的角度来读源码
- 先整体后局部
- 先手册后源码
- 如果连使用都不会就直接去学习源码,是一种非常不理智的行为
- 由易到难
- 带着问题读源码
- 了解项目的背景,项目的功能
- 写代码时遇到问题进行读源码
- 看issue
- 看错误堆栈信息
- 通过源码的单测来学习
- 通过demo
技巧
- 自己实现一个简易版的框架,跟着问题去探索源码
- 寻找源码的入口
- 阅读时重视变量、函数的命名
- 阅读时参考源码里的注释
- 关注类层次结构
调试
通过IDE的调试功能能清除地看到代码运行轨迹,从而更清楚地观察到整个代码
基本方法
- 设置断点
- 调试模式运行
- 单步调试
常见调试功能按钮
1 表示 Step Over 即跳过,执行到下一行;
2 表示 Step Into 即步入,可以进入自定义的函数;
3 表示 Force Step Into 即强制进入,可以进入到任何方法(包括第三方库或 JDK 源码);
4 表示 Step Out 即跳出,如果当前调试的方法没问题,可以使用此功能跳出当前函数;
5 表示 Drop frame 即移除帧,相当于回退到上一级;
6 表示 Run to Cursor 即执行到鼠标所在的代码行数。
高级技巧
- 多线程调试
- 条件断点
- 运行时修改变量值
- 对变量执行表达式
功能很强大,比如可以对集合添加数据
- watch表达式,可以让表达式显式在变量区
- memory查看对象数量
- 异常断点
设置自定义异常断点
- 远程调试
被调试代码添加启动参数
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
-Xdebug
IDEA配置远程主机信息
专栏
专栏相对于博客公众号的好处在于知识的系统性较强
公众号/博客
选择公众号或者博客需要注意甄别,抱着怀疑的态度
思维导图
通过思维导图,可以整理需求,梳理所学知识并构建知识体系
方法
推演验证
根据文档、使用体验来反推实现方式,然后与实际实现作对比
教
费曼学习法
PDAC循环
很多人学习时更喜欢 “做更多试卷” 给自己带来的虚假成就感,而不是珍惜错题给自己带来的价值