zoukankan      html  css  js  c++  java
  • 学习开源项目的方法论

    观点

    1. 无论读者水平如何,在开源项目中一定能学到很多东西,包括不限于:思想、设计、架构、代码
    2. 数据结构和算法不是特别重要。尤其是复杂的数据结构,知道原理即可,修改不是一件容易的事情。
    3. 自顶向下,按照功能-->安装-->配置-->原理-->测试-->源码的顺序学习

    具体实施

    1.安装

    1. 按照官方文档(即使是英文文档,也最好要看)一步一步进行。
    2. 根据安装依赖的库文件、或者其他组件,猜想推测项目的功能。例如nginx需要openssl、zlib,那可能和https和压缩有关
    3. 安装完成后,根据安装后的目录结构,查看系统提供了哪些工具,进一步推测具有哪些功能

    2.运行

    1. 根据官方手册,跑起来看下效果
    2. 通过--help或者-h参数查看哪些参数是可配置的,或者如何修改配置文件的不同参数或选项来改变系统的行为

    3.深入原理

    1. 研究开源项目的重点功能 特性是如何做到的?例如redis的单进程相比mysql为什么这么快?redis相比memcached又为什么更受欢迎?
    2. 对比同一类别的其他开源项目,优缺点是什么?以后在做技术选型的时候要结合自身的业务,选择不同的项目;而不是大家都这么用,大家都用并不一定适合自己,还是要知其然,知其所以然
    3. 具体步骤:挑选重点研究部分,1.阅读官方文档 2.阅读知名权威文档 3.对于模糊的点,按照demo,调试系统

    4.使用项目,做各种测试

    1. 对于打算在生产环境使用的项目,一定要做压力测试、契合自身业务场景测试

    5.阅读源代码

    1. 查看源代码的目的是学习和借鉴,考虑自己实现该如何做?代码里的技巧、思想、框架等等,能否用在自身项目里面?
    2. 通读源码是不可取的做法,收益和成本比率较低,得不偿失
    3. 通过demo调试,观察具体的调用栈帧和参数,理解系统的行为

    时间分配

    在短时间内研究所有的项目的做法不可取,就是说,时间分配路线不能是广度-->深度,这样得到的是每个系统的皮毛,遇到疑难杂症,依然无法解决。应该是一段时间内掌握一个项目的90%,吃透一个项目后,再去学习下一个,当学习四五个的时候,学习的速度就很快,质量也会更高了

    来源:
    从0开始学架构

  • 相关阅读:
    程序数据集算地数据库
    使用属性升级mybank
    第一个C#程序
    CSS3动画
    定位网页元素的解析
    CSS3中的浮动
    CSS中的盒子模型
    (十三)mybatis 整合 ehcache
    (十二)mybatis 查询缓存
    (十一)延迟加载
  • 原文地址:https://www.cnblogs.com/boboshenqi/p/10778352.html
Copyright © 2011-2022 走看看