学习方法论

主要途径

文档/书籍

202002210931

越往底层信息密度越大,准确性越高,参考价值越大

视频

视频对初学者来说帮助挺大的。

但到了一些阶段,视频讲解速度对于有基础的人来说过慢,而且进阶的免费视频也较少

到这个时候,看视频就不能再只关注视频本身的知识点,而是多关注诸如作者的编码,作者的思想等内容

源码

以思考为主,从设计者的角度来读源码

目的

读源码之前要确定目的,不然就是走马观花,没有收获

思路

  • 从设计者的角度来读源码
  • 先整体后局部
  • 先手册后源码
    • 如果连使用都不会就直接去学习源码,是一种非常不理智的行为
  • 由易到难
  • 带着问题读源码
    • 了解项目的背景,项目的功能
    • 写代码时遇到问题进行读源码
    • 看issue
    • 看错误堆栈信息
  • 通过源码的单测来学习
  • 通过demo

技巧

  • 自己实现一个简易版的框架,跟着问题去探索源码
  • 寻找源码的入口
  • 阅读时重视变量、函数的命名
  • 阅读时参考源码里的注释
  • 关注类层次结构

调试

通过IDE的调试功能能清除地看到代码运行轨迹,从而更清楚地观察到整个代码

基本方法

  • 设置断点
  • 调试模式运行
  • 单步调试

常见调试功能按钮

1 表示 Step Over 即跳过,执行到下一行;

2 表示 Step Into 即步入,可以进入自定义的函数;

3 表示 Force Step Into 即强制进入,可以进入到任何方法(包括第三方库或 JDK 源码);

4 表示 Step Out 即跳出,如果当前调试的方法没问题,可以使用此功能跳出当前函数;

5 表示 Drop frame 即移除帧,相当于回退到上一级;

6 表示 Run to Cursor 即执行到鼠标所在的代码行数。

高级技巧

  • 多线程调试

202002211026

  • 条件断点

202002211028

  • 运行时修改变量值

202002211037

  • 对变量执行表达式

202002211039

功能很强大,比如可以对集合添加数据

  • watch表达式,可以让表达式显式在变量区

202002211040

  • memory查看对象数量

202002211314

  • 异常断点

设置自定义异常断点

202002211315

  • 远程调试

被调试代码添加启动参数

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

-Xdebug

IDEA配置远程主机信息

批注 2020-02-21 131710

专栏

专栏相对于博客公众号的好处在于知识的系统性较强

公众号/博客

选择公众号或者博客需要注意甄别,抱着怀疑的态度

思维导图

通过思维导图,可以整理需求,梳理所学知识并构建知识体系

方法

推演验证

根据文档、使用体验来反推实现方式,然后与实际实现作对比

费曼学习法

PDAC循环

202002210945

很多人学习时更喜欢 “做更多试卷” 给自己带来的虚假成就感,而不是珍惜错题给自己带来的价值

results matching " "

No results matching " "

results matching " "

No results matching " "