由于工作中的需要,最近在研究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. 日积月累系列之国籍控件(js源码)

    一直苦于没有好的国籍控件可以用,于是抽空写了一个国籍控件,现分享给大家. 主要功能和界面介绍 国籍控件主要支持中文.英文过滤以及键盘上下事件. 源码介绍 国籍控件核心是两个文件,navtionalit ...

  2. How to:installshield安装包怎样才能出现选择路径的界面?

    原文:How to:installshield安装包怎样才能出现选择路径的界面? 这个问题新手问的很多,installshield的安装包默认设置下选择路径的界面藏在Custom安装类型下.在做完安装 ...

  3. 使用JavaCompiler编译java源文件

    从1.6版本的JDK开始,JDK提供了标准的包可以方便的调用JVM的编译器,可以方便的使用JVM的编译器来编译java源文件.JDK提供的调用接口是JavaCompiler类,该类在JDK的tools ...

  4. 阐述 QUEST CENTRAL FOR DB2 八罪

    作为一个从事oracle plsql发展2猿 - 年计划,现在,在退出DB2数据仓库项目. 同PL/SQL Developer参考,下文PLSQL,阐述QUEST CENTRAL FOR DB2 5. ...

  5. 苹果iOS苹果公司的手机用户都有权索赔

    大家知道.手机中的操作系统(基础软件)存储在手机固(firm,ware)之中,一般而言,手机用户自己是不能修改的. 苹果iOS手机的系统后门(服务程序)也存储在手机固件之中.手机用户自己是无法删除的. ...

  6. sql 中如何取出指定行: Row_Number

    原文:sql 中如何取出指定行: Row_Number ROW_NUMBER (Transact-SQL) USE AdventureWorks2008R2;GOWITH OrderedOrders ...

  7. 告别alert,拥抱console

    记得学习javascript的第一个demo就是alert("Hello  World");可是学习接触javascript这么长时间了还是在alert,因为javascript调 ...

  8. less 命令

    每天一个linux命令(13):less 命令 less 工 具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有 ...

  9. iOS基础 - 数据库-SQLite

    一.iOS应用数据存取的常用方式 XML属性列表 —— PList NSKeyedArchiver 归档 Preference(偏好设置) SQLite3 Core Data(以面向对象的方式操作数据 ...

  10. iOS基础 - 触摸事件与手势识别

    一.iOS的输入事件 UIKit可识别三种类型的输入事件: 触摸事件 运动(加速计)事件 远程控制事件 二.UIEvent iOS中许多事件对象都是UIEvent类的实例,记录事件产生的时刻和类型 U ...