如何学习开源项目

google大法好

如果google大法有现成的实践,集成的技术帖子,跟着技术帖子学无疑是最好的。(注意点:要和技术贴处于同环境去学(依赖同版本,环境同环境)。it行业很有意思,凡是牛逼的东西,只要出来一段时间,马上就有人总结最佳实践的博客。分享,这是it这行业最吸引我的地方。)

好奇心太重,google大法都救不了我

如果google大法没有现成。那么如何学习就比较讲究了。这里我仅能提供我现有的策略(戏称:七星明术术)。绝非最佳实践,甚至可能称不上好。但亲测可用,如有更好或是改进方式,还请告知。万分感谢。 以mycat为例:         第一星(天枢):了解mycat的功能。既mycat能用来干嘛。(如果你都不知道一个开源项目是干啥用的,你为什么要去学习它?)

第二星(天璇):了解mycat的特性。或者说在竞品中的优势。(如果你不知道一个开源项目的优点,你为什么要选择它?)

第三星(天玑):环境搭建。(既然你要用这个开源项目,那你必须要能把它跑起来。“将一个开源项目跑起来,就会了一半”这话在docker出来前不夸张,因为你可以能需要先了解这个开源项目的“项目目录结构,启动配置,基础环境”,了解这些,几乎也等同了解了mycat的部分技术选型和技术实现。而有了docker后,一键部署,几乎0成本跑起了项目,可以快速进入学习如何使用的阶段。我个人偏向于采用docker的方式,因为这降低了我试错的成本。毕竟当我决定要在项目中去使用这个开源项目,再深入研究也不迟)

第四星(天权):从demo入手,最小系统启动。一般开源项目都会有quick start的demo。照着做,切记要最小系统启动,既仅仅依赖该开源项目必须依赖的包去启动。(在你还不了解一个开源项目的时候,查错成本很大,所以尽量保持学习环境纯净,能有效规避这部分时间开销)

第五星(玉衡):站在巨人的肩膀上学习。我是菜鸡,当我到第五星时,虽然还没完善的技术文章,但在github和gitee的海洋里面已经有好多大佬写了实验的demo了。clone下来,看看人家怎么用的,然后自己结合mycat的配置文档自己改改配置摸索下。(自己看配置文档去学,效率比较低,毕竟只有自己一个人,而且碰到问题会比较多,这样的时间开销是比较大的。而多看几个大佬的使用demo,就可以提前了解各种实践现象,最后在结合配置文档去test,事半功倍)

第六星(开阳):抓重点,知优劣。通过前面五星的实践,我们对该开源项目的基本使用已经没有问题了。接下来就该考虑怎么去引入这个项目。抓重点,抽象出mycat的核心域,摸索其基本实现原理,考虑存在哪些弊端或者说隐患(用一个项目,主要都是它的核心功能。所以引入mycat有何风险,最主要的还是考虑清楚它的核心域实现有什么缺陷)。知优劣,思考、测试mycat在我们会用到的场景中,不同的配置方案会有什么样的现象,从而针对不同的场景,采用不同的配置方案去使用mycat(现在是分布式微服务的时代,而这个时代有一个贯穿的方案便是因地制宜,想要万金油往往会出现顾此失彼的情况,所以分而论之,因地制宜才是最好的选择)。这里强调下,知优劣是非常重要的,只有清楚掌握不同实现的优缺点后才算真正的掌握这个项目,也只有掌握不同实现的优缺点后才能在架构设计的时候做出合理的选择。到这里,可算掌握。

第七星(摇光):源码研究。源码研究的主要目的是学习原理背后的代码实现。这里我觉得更多的是提高自己的技术水平,附带的好处是能在mycat线上出bug后定位到问题,并自己或者联系mycat官方,快速去修复bug。(不建议通读所有源码,不建议通读所有源码,不建议通读所有源码。重要的事情说三遍。看源码实现是一件极度低效的事情 ,一个项目往往是多人长时间开发,所以各中代码实现诡异,通读成本极高。带着明确目的去研究源码,做到有的放矢,才能事半功倍,这也是深入源码放最后的原因。带着目的去看,带着目的去看,带着目的去看,重要的事情说三遍。最后补充个:看源码时,可以尝试着自己写一下test去验证自己的理解,这样做除了巩固理解外,还能降低理解错误的风险和花费时间去思考的成本),到这里可论深入。

贯穿七星:明确时间。开会不定时间,演讲不定时间都难有所成。学习也是一样的。七星明术术虽是学习方法,但不难看出,无时无刻不贯穿着节约时间的理念。学习前,先确定自己能分出多少时间,然后再考虑怎么去学习。如果项目需求吃紧,那么除了核心实现,其他方面都蜻蜓点水即可,业务上做好后备措施,在后续开发中慢慢去调整就是。如果项目时间充足(既提早做的预案),那不妨多了解几个竞品的实现,从中选个最适合或自己用起来最顺手的去深入了解下。

转载于:https://my.oschina.net/u/4075510/blog/3008334

如何学习一个开源项目相关推荐

  1. 如何学习一个开源项目源码

    你有个任务,需要用到某个开源项目;或者老大交代你一个事情,让你去了解某个东西.怎么下手呢?如何开始呢?我的习惯是这样: 首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博 ...

  2. 开源项目贡献者_我如何从一名贡献者转变为一个开源项目维护者

    开源项目贡献者 by Dhanraj Acharya 通过Dhanraj Acharya 我如何从一名贡献者转变为一个开源项目维护者 (How I went from being a contribu ...

  3. 学习Coding-iOS开源项目日志(二)

    继续前篇:<学习Coding-iOS开源项目日志(一)>,接着本第二篇<学习Coding-iOS开源项目日志(二)>讲解Coding-iOS开源项目. 前言:作为初级程序员,想 ...

  4. 准备启动一个开源项目 - 技术族谱 - 先期利用Goolge云计算平台

    准备启动一个开源项目:技术族谱 . 是什么? 技术族谱 ,该项目提供一种手段,描述技术领域中的概念和知识点的关系,并以此关系网为基础,扩展相关应用. 为什么? 我是做计算机行业的,就先从我看到的现象说 ...

  5. Spring Boot学习案例开源项目

    为了更好的学习并使用springboot进行开发,维护了一个springboot学习案例开源项目,涉及springboot从基础开发到企业实战,涵盖不同场景的开发案例.公司内部所有的服务都基于spri ...

  6. 独立开发变现周刊(第41期):一个开源项目一个人每月收入8万美金

    分享独立开发.产品变现相关内容,每周五发布. 目录 1.Budibase: 开源的低代码平台 2.沃尔玛通过SEO每月获得2.5亿流量的秘密 3.DesignJoy: 一个人的设计团队,月收入9万美金 ...

  7. 如何开始做一个开源项目?他的亲身经历值得参考

    (点击上方公众号,可快速关注) 英文:Vincent Voyer,翻译:Linux爱好者 - nEoYe [导读]:作者 Vincent Voyer 用亲身经历鼓励大家从事开源活动:他在 Nodejs ...

  8. 怎样加入一个开源项目?

    1.应用场景/目的 主要用于如何加入一个开源项目,以及为自己实现一个开源项目做铺垫. 2.学习/参考 1. 文档 怎样加入一个开源项目? - 知乎 如何参与一个开源项目! - 云+社区 - 腾讯云 如 ...

  9. osmocom-bb 国外的一个开源项目, c118

    最近在学习无线安全方面的知识,了解到了  OsmocomB , 拿来研究下 . 以下知识,仅用作研究探讨,请勿用作非法用途  !!!! 理论:   osmocom-bb 国外的一个开源项目, 针对 G ...

最新文章

  1. 自己写的web标准教程,帮你走进web标准设计的世界——第三讲(html终结篇)
  2. mac安装brew(亲测有效)
  3. java的内省有用么_JAVA中的内省使用
  4. 打包后放在服务器上二级目录找不到解决办法
  5. Visual Studio Code高效开发----自动保存设置方法
  6. memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论
  7. acquireSharedInterruptibly
  8. 各种服务常用端口号的含义
  9. Magento教程 22:如何确认订单报表?
  10. Elasticsearch Scale Out
  11. 【Scala】使用Scala语言定义函数和函数使用(比较两个数的大小代码)
  12. Oracle 备份与恢复学习笔记(14)
  13. 孙鑫VC学习笔记:第十五讲 (三) 增加互斥条件实现线程同步
  14. android 时间大小排序,android collection.sort()根据时间排序list
  15. 数理统计——AQI预测
  16. valid ready协议学习
  17. css 背景颜色 background属性
  18. 对于手写签名生成图片储存和回显的实现
  19. 《计算机网络(第七版)-谢希仁》重点知识 - 数据链路层
  20. 文件或目录windows/temp/explorer.exe损坏且无法读取 请运行chkdsk工具

热门文章

  1. 个人图床Chevereto搭建
  2. 清理windows的弹窗的办法
  3. Word文档自定义键盘快捷键——以字体颜色快捷键为例
  4. Android转车载难不难?一文揭秘Android车载操作系统开发
  5. RADAR:RNA编辑位点的数据库
  6. 唐山市高中计算机考试,2010唐山中考信息技术科目模拟考试题库(操作题)
  7. 硬件电路入门---电阻2
  8. 同城即时配送赛道,哈啰出行大有可为!
  9. Java--JDK动态代理(AOP)
  10. 4个可以写进简历的京东NLP项目:医疗分诊、营销文案生成、商品图谱、对话系统...