09 January 2014

目标

从大方向上来看,有两种学习方式。一种是TopDown,也就是先看架构实现,从宏观上掌握问题,这样做的好处就是一旦掌握了核心思想,就能够在未来迅速上手。还有一种是BottomUp,就是先学习样例,保证能够迅速上手,把手头工作搞定;然后再去学习架构,以备不时之需。当然更多的时候,我们选择的是后者,因为时间紧任务重 :)

措施

评估

优化

理论算法 实例运行 代码分层 核心逻辑 各个击破 归纳总结 调整优化 持续迭代

回到具体的问题上来,我一般按照如下步骤进行:

先初步有个印象,后面讲到时会再次提及。先讲整体,看看悟性,不懂的话后面会再讲到细节代码时会再谈到。

TopDown 比较适合有一定经验的,如果万一和自己产生共鸣,会起到很好地效果。

  1. 如果该框架相对使用的人比较多,可以直接google,一般能够解决问题;如果你是探路者,第一批吃螃蟹的人,那么需要自己阅读完UserGuide。
  2. 完成第1个步骤时,此时心中已经初步形成该项目的核心架构和重要的领域概念。
  3. 阅读DevelopGuide以及其他人分享的分析过程,根据自己的背景不断补充其他知识点。比如设计模式,有些类名就是设计模式的名称。再比如再阅读Netty项目的代码时,需要熟悉多线程,NIO Socket,注解等;再比如在读ZooKeeper源码时,需要弄懂PAXOS算法的过程
  4. DEBUG代码,并记录关键调用路径和方法,并不断尝试与自己的已有经验进行融汇贯通。可以一开始,新进行粗的debug,知道一些大概,看看自己是否缺一些基础知识,然后再去补充。 然后针对关键的细节,再深入研究。 但是需要注意的是,不要在细节中迷失。因为细节太多,会容易消耗很多时间。即使你当时理解了这些细节,如果不记下来,那么过些时日又会忘记:(
  5. Fork源代码,添加注释;尽量不要添加代码,方便以后比较。
  6. 开启debug日志,把相关的日志都打印出来,对打印日志进行归类分析,找到关键类的入口.然后打上断点,连接各个层.
  7. 根据自己的需要,可以调整先后顺序 :) 然后,不断重复上述步骤。

tag1,tag1.1 ,从dapper演化而来。 时间树 注意承上启下,大的出栈。

武学里面的见招拆招,没有非得傻傻地第一招,第二招下去。 归纳,演绎 一般和特殊,整体和局部 不完全归纳 其他一些注意事项

  1. 学会一些入门级示例和 user guide ,注意简单和高级
  2. 网上看看其他的人分享
  3. 尽量集中一段时间内完成代码
  4. 要理解框架的主线,这个很重要.但是主线一般比较难获取,要多注意核心代码类里面的注释以及关联图,并把它们画出来,说明其类职责和重要方法.

系统设计 静态架构,动态架构,类图,时序图

结合mindmanger写作或者 叔度那个画图工具?

在阅读的过程中,往nio的本质上靠,新增了哪些东西。有点像看ORM源码。如何对JDBC封装。

重复阅读

每次过程都有烦躁,浮躁,痛苦,不淡定,纠结,摔鼠标不看了。可是看完后还是收获颇丰。

太笨了,只能先飞,且往正确的方向飞,还要飞得高效。



blog comments powered by Disqus