由于工作中的需要,最近在研究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. C# 之 托付

    托付(delegate)     托付是一种能够把引用存储为函数的类型.托付也能够看成是一种数据类型,能够用于定义变量,但它是一种特殊的数据类型,它所定义的变量能接受的数值仅仅能是一个函数,更确切的说 ...

  2. Android超炫日期日历控件:TimesSquare

    先看效果图: 使用说明: 在布局文件里: <com.squareup.timessquare.CalendarPickerView android:id="@+id/calendar_ ...

  3. zoj 3665 数论 二分法 两个参数

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4888 标题两个参数,途径:小参数的枚举,然后二分法大参数 想想两个点.以后就不 ...

  4. Java 设计模式 -- 示例指南

    设计模式在软件开发者中非常受欢迎的.每个设计模式都是对常见软件问题的通用的描述解决方案. 我们使用设计模式的好处有: 1.设计模式已经对于一个重复出现的问题进行了定义并且提供了工业标准的解决方案,因为 ...

  5. xfire集成spring构建webservice

    前言:xfire.spring都是比较流行的技术,这里就不再赘述他们各自的优点:本文着重介绍xfire和spring的整合,不会做太深入的探究. 服务端 1. web.xml配置 spring配置部分 ...

  6. 大批量烧写openwrt系统

    http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd OEM mass flashing Flashing hundreds of devices using ...

  7. Ubuntu下编译程序是出现pthread_create未定义错误

    gcc -c node_list.c -o node_list.o gcc -lpthread sim.o cli.o list.o node_list.o -o sim.exe sim.o: In ...

  8. Android 获取截图 并将其保存到本地sd在卡路径

    /** * 获取当前屏幕和保存截图 */ private void GetandSaveCurrentImage() { //1.构建Bitmap WindowManager windowManage ...

  9. linux find命令之exec

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了. exec解释: -exec  参数后面跟的是command ...

  10. 使用POI导出excel

    引言:对于excel的导出,首先是将数据写到WorkBook中,然后将book以流的形式写出即可,看代码: public void exportResultInfo(String fileName,S ...