如何学习开源框架

最近一段时间在学习SSH框架,学习的时候笔记是写在纸上的,估计只有自己能看懂,最近看了《Struts2技术内幕》,在读到如何学习开源框架时,感觉说的很对,很好,学习方法值得我们借鉴。

如何学习开源框架

正确的学习方法不仅能够事半功倍,也能够使我们更加接近真理。在这里为大家总结了一些学习方法和最佳实践,希望对正在为学习开源框架犯愁的朋友带来一些启示。

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

这是学习框架最为重要,也是最开始最需要做的事情。不幸的是,事实上,绝大多数程序员对此并不在意,并且总是以种种理由作为借口不仔细阅读Reference。

程序员常见的借口之一:英语水平跟不上,英文文档阅读起来太吃力。针对这样的借口,需要指出,阅读英文文档是每个程序员必须具备的基本素质之一,这就和调试程序需要耐心一样,对一个程序员来说非常重要。当然,阅读英文文档这一基本素质是一点一滴积累培养起来的,对于那些阅读起来实在吃力的朋友,建议结合中文的翻译版本一起看。国内有许多开源组织为大家做了许多有价值的翻译。但是大家必须注意,看中文文档,必须和英文文档对照,因为没有人可以确保翻译能够百分之百正确,语义的不匹配给你带来极大的误导,通过对照,才能够将误解降到最低。

程序员常见的借口之二:Reference太长,抓不住重点。在这里,建议是:耐心,耐心,还是耐心!从Reference的质量而言,其实大多数开源框架的Reference都是非常优秀的,基本包含了框架的方方面面。尤其是Struts2,由于历史原因,Struts2的Reference基本上都是一个一个的专题Wiki文章拼起来的文档,每篇文章都有一个固定的主题,不仅包含原理解析,注意事项,有的还包含源码解析和示例讲解。阅读Reference可能会非常枯燥,但是从价值的角度看,对Reference的阅读往往是对大家帮助最大的。因此,对阅读Reference的建议是,多看几遍。第一遍,你可以采取浏览的方式,目的是了解框架的整体架构的大致功能。第二遍,挑重点章节仔细阅读,并且辅以一定的代码实践,目的是彻底掌握某个分支领域的知识。第三遍,带着问题阅读,在文档中寻找答案。

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

权威性

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

正确性

自带的Reference几乎很少犯错,所以不会给你带来什么误导信息。不仅如此,许多Reference已经为你总结了框架使用过程中的许多最佳实践。所以我们没有理由不直接通过这些Reference来获得第一手的资料。

  • 带着问题调试(Debug)开源框架的源码

如果大家对某个开源框架的使用已经比较熟练,对其内部的原理也基本掌握,或许你就会对其中的某些设计原理和实际思想产生兴趣。这个时候,通过开源框架的源码来寻找问题的答案不失为一个很好的进一步学习的途径。

在学习开源框架的源码时,建议是程序运行在Debug模式的状态下,对源码进行调试,在Debug的过程中,查看在开源框架的内部到底运行了哪些类,他们的执行顺序是怎样的以及这些类中临时变量的执行状态。坚决反对逐个package地阅读源码,这毫无意义。因为程序本身是一个整体,程序之所以成为程序,其本质在于它是动态的、运行的。如果我们逐一去阅读源码,就相当于把一个完整的整体进行肢体分解,那么我们将永远无法看到一个完整的动态执行过程。学习源码,最重要的一点在于抓住一个程序在运行过程中某一时刻某个关键累的运行状态和最终状态,而这些都能通过调试源码来实现,这才是阅读源码的最佳实践。

时间: 2024-10-09 10:16:12

如何学习开源框架的相关文章

联邦学习开源框架FATE助力腾讯神盾沙箱,携手打造数据安全合作生态

近日,微众银行联邦学习FATE开源社区迎来了两位新贡献者——来自腾讯的刘洋及秦姝琦,作为云计算安全领域的专家,两位为FATE构造了新的功能点,并在Github上提交修复了相关漏洞.(Github项目地址:https://github.com/FederatedAI/FATE )从FATE的面世,到贡献者激励制度的推出,参与开源社区建设的数据安全行业从业者不断踊现,FATE在业内的关注度.价值认可度逐步提升,联邦学习生态正进一步深化及拓展. AI时代数据安全问题严峻,联邦学习是必经解决路径 人工智

Google深度学习开源框架TenseorFlow安装

Google近期发布了TensorFlow,考录到Google出品,必属精品,估计这玩意会火,不过火钳刘明已经来不及了 今天才想着安装来试试 TensorFlow官网:https://www.tensorflow.org/ 安装的话最简单的是pip安装: $ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl 一句话搞定,当然,在天朝

值得我们深度学习的十大开源框架

本周早些时候 Google 开源了 TensorFlow(GitHub),此举在深度学习领域影响巨大,因为 Google 在人工智能领域的研发成绩斐然,有着雄厚的人才储备,而且 Google 自己的 Gmail 和搜索引擎都在使用自行研发的深度学习工具. 无疑,来自 Google 军火库的 TensorFlow 必然是开源深度学习软件中的明星产品,登陆 GitHub 当天就成为最受关注的项目,当周获得评星数就轻松超过 1 万个. 对于希望在应用中整合深度学习功能的开发者来说,GitHub 上其实

值得学习的C/C++开源框架(转)

值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力.Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行. 下载链接:http://home.tiscali.cz/~cz210552/webbench.html - 2. Tinyhttpd tinyhttpd是一个超轻量型Ht

C++的一些不错开源框架,可以学习和借鉴

larryjiang 我的文章 我的文档 我的文集 我的收藏 我的草稿 我的微博 我的投票 我的活动 我的相册 我的日历 退出登录 × 查看26条@我的微博 查看1条系统消息 查看44条@我的微博 创建文章 创建活动 创建相册 创建投票 创建文集 创建定时短信 手机KM 频道 研发月报 腾讯月刊 Q益平台 微爱益起来 职业发展 总办交流 KM周刊 乐问周刊 应用 活动 投票 相册 文集 幻灯片 祝福卡 定时短信 达人堂 实验室 期刊 工作圈 我的K吧 K吧排序 浏览K吧 | 创建K吧 KM平台组

NodeJS几个值得学习的开源框架

1.Primus Primus,是Transformer的创造者,并且也被称为通用包装器实时框架.Primus里包含了大量的用于Node.js的实时框架,并 且它们都拥有各种不同的实时功能.此外,Primus还提供了通用的低级别接口用于各个实时框架之间进行通信.Primus开源,并且托管在Github上. 2.Geddy Geddy是一个非常简单的基于Node.js的结构化MVC框架.你可以使用它快速的构建Web应用和JSON API.如果你使用过Ruby on Rails或者PHP的codel

iOS超全开源框架、项目和学习资料汇总(5)AppleWatch、经典博客、三方开源总结篇

完整项目 v2ex – v2ex 的客户端,新闻.论坛.apps-ios-wikipedia – apps-ios-wikipedia 客户端.jetstream-ios – 一款 Uber 的 MVC 框架.它同时提供了多用户实时通讯支持,一旦启动 JetStream 后端服务,通过 WebSocket 协议可以分分钟建立多用户实时通讯应用.DeckRocket – 在相同 WiFi 网络环境内,通过iPhone 控制并播放 Mac 中的 PDF 文档.ScanBook – 扫扫图书:可以扫描

Android 学习笔记之Volley开源框架解析(一)

PS:看完了LGD的六场比赛...让人心酸... 学习内容: 1.Http请求的过程... 2.Volley的简单介绍...   1.Http请求...   这里只是简单的说一下Http请求的过程...非常的简单...首先是发送Request..然后服务器在获取到Request请求后会对其进行相应的处理,然后以Response的形式进行返回,然后分配Response,即谁发送的请求,那么响应就分配给谁... 2.Volley简单介绍...   这里只是先简单的说一下Volley,Volley框架

SunSonic 3.0 ORM开源框架的学习

SubSonic 3.0简介 接触到SubSonic3.0 ORM框架是看了AllEmpty大神的从零开始编写自己的C#框架(链接在此)系列的随笔接触到的,本文章学习内容源于AllEmpty大神. SubSonic就是一个ORM开源框架.作者是Robe Conery,用C#语言写的.其中包含了T4模板可以快速生成数据层实体类,这是一个实用的快速开发框架.让开发人员原理SQL语句的拼接,专注于业务逻辑的实现.SubSonic 3.0支持MsSql.MySql与SQLite三种数据库,对数据库操作灵