由于工作中的需要,最近在研究SNMP协议和利用snmp4j和snmp4j.agent(   http://www.snmp4j.org/ ),实现snmp的南向和北向功能。 结合以前看过的一些开源代码,就如何去研究开源代码做如下总结:

1、研究要联系理论
       要有一定的目标和一定的基础知识后再去研究。比如研究snmp4j和snmp4j.agent,那首先得弄清楚什么是SNMP协议,
它包括哪些组成要素等;
又比如,研究tomcat源码,事先了解一下服务器的原理,多线程,web,servlet等知识,研究
起来会更轻松些。
     
2、获取可用实例
首先下载可用源码以及依赖文件,然后导入到所用的IDE中。
获取实例方式有如下:
         
2.1 从源码有类似“example”,"test",“sample”等包或者类中获取
             
如下图所示:
                  
                        
              
       
2.2 网上查找
             这个不用多说了,网上的资源很多,关键的一点是要懂得去甄别和取舍,有些例子是会误导人的,建议到一些比较
有名的网站上查找;
然后,例子也不在于多,关键在于质量。

3、运行实例,了解运行机制
      首先,将代码运行起来,往往是改一些输入参数即可。这就要求明白为什么需要改这个参数;
      其次,调试模式下,结合
打断点,日志,console方式查看运行输出,遇到不明白地方,做一些标识,多去看看注释,必
要时要
结合理论知识来理解或者解释;已经理解的地方也要及时标识。
      最后,利用一些辅助工具进行调试,如snmp调试工具有“MIBBrowser”(
http://www.mibexplorer.com/),
               “ireasoningMib”(
http://ireasoning.com/
)。

4、动手修改实例
      对运行机制有一定的了解之后,就要自己动动手,改造一下实例,明白运行原理。 比如,某个方法的输入值改变之后会

什么效果,某个方法调用去掉后,运行后又会报什么错误。
 一定要动手改造,才有可能更深入理解。

5、整合信息,进行二次开发
      在3、4步骤进行到一定程度的时候,可以进行比较粗糙的二次开发或者封装了(不用等到完全了解和构思好了才进行,这
样就
很难下手了)。二次开发的起始点就是在实例的基础上进行抽象或者改造,
同时
边进行二次开发,边重     复3、4步骤,有助于进
一步理解源码,也有利于促进二次开发;
不断重构,进行更加适度的数据模型,控制流等抽象(切勿过于追求细,否则得不偿失)。

6、向“高手”请教
      如果你周围或者通过网络能找到“高手”,多向他们请教,这个可以节省很大精力,所谓站在巨人的肩膀上嘛。至于如何请
教,这
里不做详细讨论,只简单说几点:
       1) 对于研究过程中严重阻塞进行下一步的研究问题要多问;
       2) 向他们“索取”一些有用的资料,如一些可用实例或者背景资料等;
       3) 共同探讨业务问题,反过来会对进行二次开发有所启发;


          
                    

[置顶] Java开源代码研究总结的更多相关文章

  1. CWMP开源代码研究——git代码工程

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...

  2. CWMP开源代码研究5——CWMP程序设计思想

    声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...

  3. CWMP开源代码研究2——easycwmp安装和学习

    声明:本文是对开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文所有笔记和代码可以到csdn下载:http://download.csdn.n ...

  4. CWMP开源代码研究1——开篇之作

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...

  5. CWMP开源代码研究3——ACS介绍

    声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...

  6. [置顶] Java 8全面解析!不知道的来看看那!

    java8的面世惊动了不少业界人员,让我们一起来看看吧! 函数式接口 函数式接口是只定义了一个抽象方法的接口.Java 8引入了FunctionalInterface注解来表明一个接口打算成为一个函数 ...

  7. CWMP开源代码研究——cwmp移植

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 声明:本系列涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅 ...

  8. CWMP开源代码研究6——libcwmp动态库开发

    原创作品,转载请注明出处,严禁非法转载.如有错误,请留言! email:40879506@qq.com 为了使程序具有通用性,便于扩展和维护.采用了"模块"插入的思想.将设备业务相 ...

  9. [置顶] Java Web学习总结(24)——SSM(Spring+SpringMVC+MyBatis)框架快速整合入门教程

    1.基本概念 1.1.Spring Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One  ...

随机推荐

  1. Caused by: java.lang.ClassNotFoundException: org.dom4j.DocumentException

    1.错误描写叙述 信息: Initializing c3p0-0.9.2.1 [built 20-March-2013 10:47:27 +0000; debug? true; trace: 10] ...

  2. C#yield return和yield break

    C#yield return和yield break 晚上好,各位.今天结合书中所讲和MSDN所查,聊下yield关键字,它是我们简化迭代器的关键. 如果你在语句中使用了yield关键字,则意味着它在 ...

  3. PE文件结构(五岁以下儿童)基地搬迁

    PE文件结构(五岁以下儿童) 參考 书:<加密与解密> 视频:小甲鱼 解密系列 视频 基址重定位 链接器生成一个PE文件时,它会如果程序被装入时使用的默认ImageBase基地址(VC默认 ...

  4. 增加 Java 有几个好习惯表现

    以下是一些参考网络资源中的摘要Java编程在一些地方尽可能做. 1. 尝试使用单个例如在合适的场合 使用单例可以减轻负荷的负担,缩短加载时间.提高装载效率,但并不是所有的地方都适合一个案例.简单的说, ...

  5. ECharts图表系统 特性总览

    最近在玩ECharts,感觉真心不错,在这里把官方的资料收集收集,给大家推荐一下下~ Architecture ECharts (Enterprise Charts 商业产品图表库) 提供商业产品常用 ...

  6. [翻译]在Django项目中添加谷歌统计(Google Analytics)

    原文:<Google Analytics tracking code into Django projects, the easy way> 对我来说,制作一个可扩展的Django应用随时 ...

  7. Web学习-apache视图log刊物

    视图apache刊物 apache日志位置 不同的系统位置不同. widnows 假如是windows的话,xampp下应该是都存在的,直接去找apache的folder/log/access.log ...

  8. 31、Thinking in Java

  9. Android项目----dispathTouchEvent

    说到dispathTouchEvent,就不得不说一个最贱的屏幕触摸动作触发的一些列Touch事件: ACTION_DOWN->ACTION_MOVE->ACTION_MOVE->A ...

  10. DSP TMS320C6000基础学习(7)—— Bootloader与VectorTable

    本文主要简单记录C6000在启动装载过程和中断向量表的配置. 1. Bootloader 如上图, (1)在Device Reset阶段: 设备初始化为默认状态,大部分三态输出都配置为高阻态. (2) ...