文章转自:http://jinnianshilongnian.iteye.com/blog/1709268(转载)
我的学习方法
目的
目的就是这个技术完成什么功能,解决哪类问题。拿JSON举个例子:
http://www.json.org/ 写道
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.
即
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
从定义我们可以总结出几个关键点:
轻量级
数据交换格式
易于编写和阅读
基于JavaScript的一个子集
纯文本独立于语言和平台
重点是它以纯文本存储,可以独立于任何语言和平台,且主要用于数据交换。
再比如Spring:
Spring Framework 是一个开源的Java/Java EE全功能栈(full-stack)的应用程序框架,以Apache许可证形式发布,也有.NET平台上的移植版本。该框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一书中的代码,最初由 Rod Johnson 和 Juergen Hoeller等开发。Spring Framework 提供了一个简易的开发方式,这种开发方式,将避免那些可能致使底层代码变得繁杂混乱的大量的属性文件和帮助类。
Spring 中包含的关键特性:
……请前往
http://www.oschina.net/p/spring/浏览
Spring Framework官网 http://www.springsource.org/spring-framework
从定义我们可以总结几个关键点:
Java/JavaEE一站式解决方案(即不管是开发普通Java应用还是JavaEE企业应用都能提供解决方案)
框架基于 Expert One-on-One Java EE Design and Development(告诉我们需要去读这本书 这本书介绍了Spring设计思想)
IoC容器(此时我们需要问什么是IoC容器)
数据库事务的一般化抽象层(此时需要问自己怎么个一般化抽象)
JDBC 抽象层(怎么个抽象法,比普通JDBC调用有哪些好处)
等等……
再比如Jsoup:
http://jsoup.org/ 写道
jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。
从定义上可以总结几个关键点:
Java版的HTML解析器
提供了类似于DOM、CSS及类似于Jquery的操作方法来取出和操作数据(重点是DOM、CSS、Jquery我们都有所了解,再学这个应该不难)
从一个技术的定义上,找关键词,我们能总结出它的核心目的。而且能提出一系列问题,有了这一系列问题我们能知道我们接下来要学习什么,只有了解了这些功能才能真正理解设计的目的和是什么。
适用场景
就是我们这个技术的适应的环境,可以在哪些场景中使用。
比如JSON适用于:
数据交换,尤其跨平台的数据交换
表示JavaScript对象
比如Spring:
在Java/JavaEE开发的整个过程中都有帮助。此时需要问有哪些帮助?为什么?
比如Jsoup:
只要我们想在Java里解析HTML就可以考虑使用它。
如何使用
到这一步其实是最简单的,可以按照如下步骤学习:
1、根据官网的hello world进行简单入门,了解最基本的使用,到此我们入门了;
2、如果官网提供了单元测试用例,最好的学习方式就是跟着单元测试挨着试,到此该技术的所有特性就有所了解了;
3、写自己的功能,根据之前学的知识开始开发自己需要的功能;
4、如果需要经常使用/涉及项目核心技术,一定要读读官方文档,有时间读读API做到心中有数。
此处就不给例子了。
类似的技术
每当我们学习完一个新技术的时候,都要留一手,防止一个技术有bug/性能问题造成后续无替代方案。
比如Jsoup类似的技术有:
HTMLParser
NekoHTML
这两个解析工具功能十分强大,但是使用上没有Jsoup简单。
比如我要实现论坛内容过滤功能:
过滤掉所有的事件注册,如<a onclick="……"> 需要删除onclick
删除form相关的表单元素,防止恶意用户注入表单窃取用户数据
这个功能我使用Jsoup实现的。
比如我要抓取iteye的论坛内容(主题、内容、发布人、发布时间)等,使用Jsoup十分方便,因为它的选择器语法类似于Jquery语法,十分方便,而且学习成本很低,基本上只要会Jquery,10几分钟就能上手。
优缺点
我们应该对我们经常使用的核心技术做到心中有数,即了解优缺点,对于普通的技术只要基本会用即可(有时间可以做对比)。
比如hibernate和ibatis,springMVC和struts2等等,做个对比,总结不出来几点说明自己对这个玩意还是了解不深,需要继续学习和研究。
为什么
对于一些项目中使用的核心技术,需要掌握:
做好了解为什么,即为什么有这个东西,即了解发展历史和产生的背景
如何实现的,读源码,知其所以然
重复发明个轮子,这样可以更好的了解原理,而且学习效果更佳,这样比读N遍源码效果更好
有朋友会说我看不到咋办?不会写啊!
告诉你个笨办法:
之前我学习CGLIB,是照着人家单元测试挨着敲和试的;
还有学习源码建议从低版本开始,因为功能少都是核心,好研究。
在此学习过程中一定要把握度:
有些东西只需了解目的和怎么如何即可;
有些需要理解到为什么,像spring、junit、slf4j/logback、ehcache、proxool、tomcat、ibatis等等,有时间多读点源代码或者自己造个轮子;尽量做到每一个方面都有涉及(出问题我不怕),但要专一,如spring。
我的学习历程
写自己的代码
代码量非常重要,前期要写足一定量代码,再看一些书籍/读一些源码才有感觉。我是如何写代码的:
1、项目代码,这个没得说,在写的过程中思考我们在读书时遇到的一些问题;
2、在写项目的时候我们可能发现我们经常重复做一些事情,此时就需要考虑建立自己的代码工具库,如通用代码库、代码生成工具、常用工具类等; 不要重复自己,遇到重复的就考虑往自己工具箱添加可复用的组件;
3、按照自己兴趣发展一个方向,此时可以考虑写一些相关的轮子;通过轮子再反过来深入学习其他相关的技术。
4、如果有能力就考虑构建自己的平台,简化重复劳动,提升开发效率。
发明轮子我觉得是很有必要的,光看不练没什么多大效果,发明个轮子可以帮助我们更好的理解,轮子不一定非得用到我们的项目,此时的轮子是帮助我们学习的。
阅经典的书籍
读大师经典著作,如
《国外程序员推荐:每个程序员都应读的书》
《一些经典的计算机书籍》
或者关注如iteye等网站,推荐的一些好书。 我经常到 互动 itpub 图灵社区 等看一些新书。
读书不是到用的时候再读,而是按照自己的方向和兴趣选择相关的书籍进行阅读,学习前人经验和思想,开阔自己思路。
读书不是只读一遍,有些好书如《Effective Java》、《设计模式——可复用面向对象软件的基础》、《企业应用架构模式》、《敏捷软件开发:原则、模式与实践》、《面向对象软件构造》等需要重复读,因为时间段不同积累的经验不同,理解会产生改变,每次读都有不同的收获。
读书读不懂没关系,先放一放,过一段时间再来看,经验到了自然就明白,不要刻意去背,刻意去记,一定要理解着记,记住要理论指导实践,实践检验理论,不可脱节。
不能心急,一下子啃N页,像看小说似的,这样什么都学不到,记不住,即使今天记住了过了几天就忘了,所以要温故而知新。
读书要思考自己之前遇到过类似的场景吗?对比着记更容易,而且记忆的成本会很低。
不要光看自己使用的技术相关的,其他方面的如产品,测试,数据库等相关书籍也建议阅读。在此推荐一本产品入门书:
《Don't Make Me Think》
尤其在学习Java技术时,建议大家有时间把JDK的核心API(如java.lang/java.util等这些我们经常用的)读一下/还有相关的规范(规范是最权威的指南)。
读优秀的代码
阅读优秀的源代码可以帮助我们消化书籍中学到的理论,更好的去使用它,而且能开阔我们的思路,完善我们的思想。
读源代码思路:
1、从使用进行阅读,按照调用关系深入到源代码中,不要一口吃胖子;
2、跟着单元测试走;
3、只需读最核心部分即可,无需读所有代码;
4、从简单的源码入手,刚开始放低难度,如阅读junit、slf4j、ehcache等相对简单的源码,再深入阅读如spring等源代码;
5、阅读源代码要分而治之,一次读一块,不要混读,不要杂读。
记自己的博客
记博客可以思维缜密,完善知识体系,扎实技术;而且可以分享自己的经验想法,如果有错误会有朋友指正,非常好的学习方式。
记博客思路:
1、记录自己工作中遇到的问题及解决方案;自己既然遇到了别人也可能遇到;
2、不要怕写的简单,没面子,我觉得要厚脸皮 ;
3、任何东西都可以记,留作回忆。
向同事的学习
既然能作为同事,说明大家水平差不多,学习同事的优点。
向同事学习思路:
1、没事聊聊技术,听听它的想法;
2、看他的源代码,从中学习;
3、如果你的老大/同事都不上进,你又是很上进的,建议物以类聚,人以群分,换个环境好好发展自己。
善于观察细节
善于观察细节,比如从最基本的同事怎么操作的那么快(观察他是如何进行操作的,如发现自己不会的快捷键)?
观察细节思路:
1、眼要尖,善于发现自己不会的;
2、嘴要勤,善于问自己不了解的(此处不是没事就去问,而是自己思考过,实在不会的,不要憋在肚子里,问一下又不会怀孕);
3、没事读同事的源代码,这个可是免费的,从中能学到好的编码习惯和好的解决问题思路。
学习没有捷径,我不聪明,但我刻苦;刻苦还是不够,得善于思考和总结。
学习不要怕丢人,学到手是自己的,学会厚脸皮。
希望对需要的人有所帮助,每个人都有自己的学习方法,可以借鉴学习,但不要临摹,适合自己的才是最好的。
分享到:
相关推荐
### 考研英语词汇学习方法:词根与联想记忆法 #### 一、引言 随着考研竞争的日益激烈,高效的学习方法成为了广大考生关注的焦点。在众多备考策略中,利用词根与联想记忆法来提高英语词汇量是一种非常有效的方法。...
(如果我是你,我会更加努力学习。) 2. **与过去事实相反**: - 条件从句:If + 主语 + had done - 主句:主语 + should, would, might, could + have done 例如:If I had known his telephone number, I would...
+ 努力的重要性:升旗手需要努力争取这个位置,通过学习和练习,终于当上了升旗手。 + 自豪感:升旗手感到自豪,因为他们终于实现了自己的梦想。 + 责任感:升旗手需要承担着代表学校和班级的责任感,完成了一个...
1. 学习英语需重视方法、兴趣和努力。寻找适合自己的学习方式,培养对英语的兴趣,保持持续学习的动力。 2. 阅读方面,应坚持每日朗读、背诵、速读和精读,逐步提升阅读速度和理解力。泛读英文报纸可提高阅读兴趣和...
2. **勤奋学习的传统美德**:海伦·凯勒的故事展示了即使面临生理上的巨大障碍,通过不懈努力和创新的学习方法,也能实现自我超越。这表明勤奋好学的精神可以超越身体的限制,创造生命的奇迹。 3. **责任与道义的...
这将激励你继续努力,并调整学习策略以适应个人需求。 通过遵循这些方法论,你可以更系统地进行英语学习,逐步提高你的听说读写能力,最终达到流利使用英语的目标。记住,持之以恒和灵活调整方法是取得成功的关键。
"初学者怎样学好Java-【育儿知识】" 在学习 Java 之前,需要了解 Java 的基本思想和概念。Java 是一门面向对象编程语言,掌握面向对象编程的思想是学习...学习 Java 需要具备良好的学习方法、努力和坚持下去的一颗心。
这份资料主要围绕学习的重要性、学习方法以及克服学习困难的主题展开,通过讲述古今中外的勤学故事,激励学生珍视学习的权利,努力克服困难,享受学习的过程。以下是详细的知识点解析: 1. **学习的重要性**: - ...
【日语学习方法详解】 日语学习是个系统的过程,需要遵循一定的原则来提高效率和效果。以下是基于给定内容的几个关键原则: 1. **“三皮”原则**: - **头皮要硬**:意味着面对挑战时要有坚韧不拔的精神,不要...
本PPT课件主要讲述了学习成功的基本条件、心态问题、方法和成功的要素。下面是对这四个方面的详细解释。 学习成功的基本条件:心态 + 实力 在学习的过程中,心态和实力是两个不可或缺的要素。心态是学习的前提和...
5. 自主学习:强调自我驱动,老师只是引导者,关键在于自我调整和努力。 6. 培养兴趣:通过提升成绩,逐渐对原本无兴趣的科目产生兴趣。 三、学习方法分享 1. 理解能力培养:理科学习重在理解,数学作为代表,深入...
6. 成长与学习过程:大学四年的学习不仅是技能的积累,更是个人品格的塑造,学会了坚持、努力、接受和放弃,这些经验和教训对人生有着深远的影响。 7. 感恩与怀念的意义:适度的怀念能让人保持对过去的尊重,而无限...
11. 在苦与乐中寻找平衡:珍惜学习机会,努力学习,同时也要注意调整心态,提高学习质量。 12. 培养学习兴趣的重要性:热爱学习比了解学习和喜欢学习更重要,兴趣能帮助我们更好地享受学习的过程。 13. 图片启示:...
作者明确了自己的目标——在中考体育中取得好成绩,然后通过跑步等训练方式坚持努力。这个过程展示了目标设置与坚持执行之间的关系。 知识点三:坚持与团队精神 在坚持的过程中,主人公得到了老师和同学们的支持和...
但是,只要保持积极的态度,坚持努力,最终一定能够取得理想的成绩。 总之,无论是面对沙漠中的困境,还是高三的挑战,坚持不懈的精神都是非常宝贵的。通过不断的努力和尝试,我们可以克服一切困难,实现自己的梦想...
作者强调了尝试、努力和坚持对于学习的重要性,认为只有付出才能收获,这种理念贯穿了整个总结。 在第一篇学习小结中,作者通过自身在统计学上的失败经验,反思了自己对课程投入不足的问题。他认识到每门课程间的...
对于大多数人而言,通过正确的方法和足够的努力,完全可以提升学习效率。已有的知识结构对于新知识的吸收至关重要,一个完善的知识框架能让学习更为顺畅。同时,高质量的学习资料是保障学习效果的基础,而健康的身体...
4. 学习方法与个人努力的关系:即使是最聪明的人和最好的学习方法,也需要个人的努力和坚持才能取得成功。学习不仅仅是方法的选择,更需要毅力和恒心。 5. 养成良好学习习惯:良好的学习习惯是在长期学习中逐渐形成...
5. **老师寄语**:老师提醒同学们,学习成绩的差异并不决定个人能力,而是学习方法和努力程度的体现。暂时落后者应调整方法,向优秀同学学习,每天进步一点点,就能逐渐靠近卓越。任何困难都有解决的方法,关键在于...
5. 勤学与善学:勤学强调持续努力的学习态度,而善学则关乎学习方法的掌握和运用。有效学习方法能使学习事半功倍,反之则可能导致事倍功半。 6. 科学的学习方法:包括专心致志的学习、合理规划时间、劳逸结合以及...