`

学习技巧(转载)

 
阅读更多

正确的学习方法不仅能够让你事半功倍,也能够让你更加接近真理。在这一系列的文章之初,我想首先说说学习一个开源框架的途径。这些学习方法,不仅适用于Struts2,我想同样适用于许多其他的开源框架,比如说SpringHibernate等等。而这些学习方法,也是我个人的一些心得体会,希望对初学者或者正在为学习开源框架犯愁的朋友带来一些启示。

目 录 [ - ]

  1. 少读、精读网络教程,坚决不读有价书籍
  2. 阅读、仔细阅读、反复阅读每个开源框架自带的reference
  3. 搭建环境运行每个开源框架自带的sample项目
  4. 自己写一个sample项目亲身体验
  5. 带着问题debug开源框架的源码

少读、精读网络教程,坚决不读有价书籍

对于很多初学者来说,看reference这种方式他们的接受程度很低。相反的,他们反而会去转向一些书籍和网络教程。针对这些学习材料,我就不得不带着有色眼镜去看待了。

目前市场上任何的有价书籍,我认为完全没有阅读的必要。这些书籍的一大特点是贵,将花费你大量的银子。而且这些书籍错误繁多,所挑出的示例也基本上毫无实践意义。更加可悲的是,这些书籍中的很多示例,作者在写的时候根本不动脑筋,也不会包含程序开发中的一些最佳实践,甚至会给很多读者以:程序就是这么写的这样的误导。

网络上还有很多原版的教程,例如《XXX in Action》系列。《XXX in Action》系列的书籍在市场上深受好评。这些系列的书籍我很多都读过,我并不认为这一系列的丛书相对于框架自带的reference有什么过人之处,有某些地方的理解也带有一些作者个人的感情色彩。其实每个人写书或者写文章都会带上自己的感情色彩,这本不是什么坏事,不过既然已经有了 reference,为什么我们要舍近求远呢?当然,不得不说,这个系列的书籍还是写得相当不错的,只是相对reference而言,不如 reference来的好了。

同时,网友也提到了很多网络教程。网络教程,尤其是中文的网络教程,基本上都是网友的经验之谈,也有写成系列文章的。对于网络教程,我的意见是:少读,精读。因为网络教程是网友自发的,而我不得不说,许多网友写的网络教程是一塌糊涂,误导世人的。同时,也有很多网络写的网络教程相当不错,可以作为入门级别的参考资料。但是对于初学者来说,根本很难分辨其中的好坏真伪。完全凭借运气去赌大小,押宝押对了就对了,押错了就自认倒霉。所以,针对网络教程,最好是带着问题去读,去搜索你的答案,而不是当作核心文档来阅读。

阅读、仔细阅读、反复阅读每个开源框架自带的reference

这一点是学习一个框架最最重要,也是最最一开始需要做的事情。不过事实上,无数的程序员对此并不在意。程序员总是以种种理由不仔细阅读reference

1.
看英文文档太吃力

应该说阅读英文文档是每个程序员的基本素质之一,这就跟调程序需要耐心一样。如果你连调试程序的耐心都没有,那么趁早放弃程序员这个行当吧。其实阅读文档,尤其是英文文档,也是程序员的基本素质,这个素质是一点一点积累培养起来的。所以,对于那些实在觉得吃力的朋友,我的建议是结合中文文档一起看。好在满江红的开源支持者为你精心做了许多很有价值的翻译,例如SpringHibernate等都有对应的中文文档。但是我依旧认为,看中文文档,必须和英文文档对照,否则你就可能迷失在许多的语义不匹配上。

2. reference
实在太厚而抓不住思路

耐心,耐心,还是耐心。从reference的质量而言,其实多数的开源框架的reference都是相当优秀的。尤其是Struts2,基本上都是一个一个的专题wiki文章拼起来的文档。至于说到Spring,那只能培养你的耐心了。


我之所以强烈推荐大家仔细阅读开源框架自带的reference,主要基于以下的两个原因:

1.
这些自带的reference多数出自这些开源框架的作者之手。你说还有谁能够比他们自己更了解他们自己的产品呢?自己写的程序,到底有哪些优点,如何使用,自己肯定是最最清楚的,所以要说到权威,不可能有任何的文档比自带的reference更加权威。

2.
自带的reference几乎很少犯错,所以不会给你带来什么的误导信息。不仅如此,许多的reference已经为你总结了许多框架使用过程中的最佳实践。有那么好的事情,为什么我们不直接去看这些reference来获得第一手的资料呢?

当然,很多人看reference会觉得很枯燥。没关系,我的建议是,多看几遍。第一遍,你可以采取scan的方式,目的是了解框架的大概。第二遍,挑重点的章节仔细阅读,并且辅以一定的代码实践。第三遍,带着碰到的问题阅读,在文档中寻找答案。

搭建环境运行每个开源框架自带的sample项目

我不知道有多少初学者真正的去跑过每个开源框架自带的sample项目。按照我的经验来说,这绝对是一个学习的最佳途径。

Struts2为例,Struts2的根目录下有一个apps的目录,里面有struts2-blank-2.0.11.warstruts2-showcase-2.0.11.warstruts2-portlet-2.0.11.warwar包。你只要把这些war包放到任何的application server的运行环境下即可运行。比如,你可以放到Tomcatwebapps目录下,启动Tomcat,你就可以直接访问到一个内置了众多Struts特性的项目了。

其实你可以从这些项目中获得许许多多有用的信息。不仅如此,一旦你在使用Struts2的某些特性的时候发生了无法解决的困难,你往往也能从这些项目中找到一些解决问题的方案。更加能让你放心的是,至少这些项目表达了Struts2的作者原本的意思,你只要按照它的sample来写代码,总不会错到哪里去。

在这里,我简单举例来说明你可以从这些项目中学到些什么:

1.
如果你仔细学习struts2-blank-2.0.11.war这个项目,它可以告诉你如何搭建一个最最简单的Struts2的项目;它还会告诉你,Struts2至少需要依赖哪些jar(请以后不要再为jar包错误而苦恼);同时,也给你做出了一些范例,web.xml怎么写,struts.xml又怎么写。

2. struts2-showcase-2.0.11.war
这个项目,你则可以看到Struts2的特性的大杂烩,这对于你看reference是相当有帮助的。比如说,你在看文档时看到了"文件上传"的章节,那么你就可以参考项目中的upload子目录。相当于你一边看文档,一边已经有一个现成的跑得通的例子在这里提供给你。这是不是要比那些所谓的网络教程更实际呢?

3. struts2-portlet-2.0.11.war
则给出了在Portal环境下的Struts2的应用。

所以,综合来说,框架自带的项目绝对是你学习的第一手资料,你基本上不需要舍近求远得去找网络上别人写的例子,原生态,不好嘛?

自己写一个sample项目亲身体验

这一点其实不用我说,大家也应该明白。不过我还是见过不少的程序员,眼高手低。成天能够和人吹牛说这个框架怎么怎么好,那个框架怎么怎么方便。让他自己动手来用这些框架写一段程序出来,手足无措,搞了半天,就是无法跑通。

所以,实践是检验真理的唯一标准。只有自己亲自动手去实践,才能说你真正掌握了某个技术,理解了某个框架。在编写自己的sample项目时,你不妨就以最简单的User的增删改查作为你的业务场景,在实践中不断的重构你的代码,从而提升自己的水平。

带着问题debug开源框架的源码

如果你对某个开源框架的使用已经比较熟练,对其内部的原理也基本清晰了。你或许会对其中的某些设计原理产生一些问题(或许仅对勤于思考的人有效)。这个时候,我认为你可以试图去看一看开源框架的源码。

我看开源框架的源码的方式有些特殊,我喜欢在程序里做debug,来看看在开源框架的内部,到底运行了哪些类,他们是如何执行的。我坚决反对逐个包逐个包的去看源码,这毫无意义。因为这相当于把一个肢体进行了分解,一个运行状态良好的程序,你把它割裂开来,显然什么都读不懂。在程序中debug源码,你不仅可以浏览到程序执行过程中的每个类,还能查看这些类的运行状态。这才是阅读源码之道。

 

分享到:
评论

相关推荐

    Laneser MSRS学习日志转载

    这个“Laneser MSRS学习日志转载”是一系列关于MSRS的入门教程,通过每日一篇的形式,详细讲解了MSRS的基础知识和实践技巧,旨在帮助初学者快速掌握该系统。 1. **MSRS概述**:MSRS是SQL Server的一部分,提供了一...

    电脑基本操作技巧(转载)

    ### 电脑基本操作技巧知识点概览 #### 一、Windows XP 基本操作与问题解决 **1....- **描述**:介绍了如何在 Windows XP 操作系统中进行基本...希望通过对这些知识点的学习,能够帮助用户更高效地管理自己的计算机系统。

    电脑技巧学习

    主要为一些电脑技巧学习,,转载至网络,,例如一些快捷键的学习

    转载牛人文章学习

    【标题】:“转载牛人文章学习” 这篇标题表明我们即将探讨的是某位业内专家或博主的文章,关于IT行业的某个主题,特别是与Android相关的技术。在IT领域,"牛人"通常指的是那些在某一技术领域有深厚造诣的人,他们...

    FPGA学习心得(转载)

    ### FPGA学习心得精炼知识点 ...通过上述总结,可以看出FPGA技术的学习不仅涵盖了基础知识和编程技巧,还包括了对不同可编程逻辑器件的理解与比较。这对于初学者而言,是构建扎实理论基础与实践经验的关键步骤。

    【RPA之家转载视频教程4】RPA招聘人员-我的最佳技巧和技巧(面试).rar

    RPA之家转载的RPA全套视频教程,想系统学习RPA的,可以下载该资源学习。在学习的过程中,如果碰到任何问题,也可以在评论区里面交流。

    网页设计中的一些技巧(转载)

    网页设计是构建互联网内容的关键部分,它涉及到布局、色彩、字体、交互性和用户体验等多个方面。在网页设计中,活动字幕是一种常见的...同时,不断学习和探索新的网页设计工具和方法,是保持设计作品与时俱进的关键。

    [转载] Clustering经典范文学习

    【标题】:“[转载] Clustering经典范文学习” 这篇博文主要围绕着Clustering(集群)这一主题展开,作者分享了一篇经典的学习资料——"J2EEClustering.pdf"。Clustering在IT领域,特别是Java EE(现在称为Jakarta ...

    ARM汇编嵌入式学习博客转载.pdf

    通过理解这些基本概念,你可以开始深入学习ARM汇编语言,掌握其编程技巧,进而开发高效、低级别的嵌入式系统代码。在实际应用中,汇编语言常常与高级语言如C或C++结合使用,形成混合编程,以利用两者的优点。

    db2学习代码例子(代码为转载网上)

    3. `DB2 存储过程开发最佳实践.mht`:这是一个关于DB2存储过程开发的重要资源,可能包含了如何编写高效、可维护的存储过程的建议和技巧。最佳实践可能包括参数化、异常处理、性能优化、日志记录等方面。 4. `DB2 ...

    转载的很好的英语学习方法

    译言网(www.yeeyan.com)也是提高翻译技巧的好地方。 总结来说,英语学习需要耐心与毅力,精听、跟读、广泛阅读和写作练习是关键。选择适合自己的资源,避免贪多嚼不烂,持之以恒,英语水平自然会稳步提升。每个人...

    linux学习的几点建议(转载感觉不错)

    只有通过实际操作才能真正掌握Linux的各项功能和技巧。例如,你可以设置一个小型的服务器环境,体验Web服务、DNS服务等功能。 #### 九、保持持续学习的心态 技术领域日新月异,Linux系统也在不断发展变化。因此,...

    转载ARM学习心得,ARM9260,我也是从别人处下的

    从标题来看,“转载ARM学习心得, ARM9260, 我也是从别人处下的”这句话传递出一种分享和传承的精神,同时也反映了学习ARM过程中的艰辛与收获。 在学习ARM的过程中,从开始到真正理解并能够独立完成项目,可能需要一...

    向谁学课件【转载】.ppt

    例如,可以从导师那里学习专业知识,从同事那里学习团队协作和项目管理技巧,从朋友那里了解不同领域的见解。 其次,向书本和媒体学习是另一个广泛且高效的学习方式。书籍是人类智慧的结晶,涵盖了各种领域的知识,...

    [转载]中学数学教师实习工作总结实习学习总结.doc

    这次实习经历让作者深刻认识到教学工作的复杂性和重要性,不仅要有扎实的专业知识,还要具备良好的沟通能力和班级管理技巧。同时,作者也体会到教师在塑造学生个性、激发学习兴趣和维护班级和谐氛围方面所扮演的关键...

    VISUAL C++应用技巧

    转载别人的,供大家学习

    转载调光灯电路连接与调试PPT学习教案.pptx

    5. **应用实例**:调光灯在日常生活中的广泛应用,如调光台灯,通过理解和分析调光灯电路的工作原理,可以更好地掌握电路分析和故障排查技巧。 综上所述,该PPT学习教案主要涵盖了晶闸管的基础知识,包括结构、工作...

    [转载]Android学习笔记(三):Andriod程序框架.doc

    此外,笔记还提到了Eclipse中的一些实用技巧,比如通过`Shift+Ctrl+O`快速导入所需的包。这在编写代码时非常方便,可以自动添加未声明的包引用。 关于Javadoc注释,它是一种特殊的注释格式,用于生成API文档。`/** ...

    Mcafee(咖啡)规则设置技巧——提高篇

    在网上我们经常能看到一些咖啡的规则设置文章,里面所提及的所谓什么高级技巧,以现在的角度来看,那些设置方法已经十分落后了。但是这样的文章还在被到处转载,继续误导他人。例如竟然有人说防 范网页病毒只要把js...

    网站一些关于学习的网站

    学习单片机开发,不仅可以了解硬件工作原理,还能掌握嵌入式系统的编程技巧,对于电子工程、自动化控制等领域的人来说非常重要。单片机学习资源包括但不限于教程、实验指南、电路设计文档等,很多专业网站提供了丰富...

Global site tag (gtag.js) - Google Analytics