写作的初衷

工作4年多, 一直没有系统的阅读过优秀的开源代码, 所以从今年开始做一些尝试, 阅读源码并且试着将自己的理解以文章的形式输出, 从而达到以下目的:

  • 通过阅读源码提升自身的技术水准, 通过写作来巩固和加深理解.
  • 希望给工作1-2年的同学带来一些启发.
  • 希望遇到同频的人.

文章标准

在写作初期, 给文章制定了以下几项准标:

  • 逻辑清晰, 并用大白话表达, 文章最重要的就是让人看懂.
  • 分主次. 每篇文章应该有主要表达的观点, 以及文章所处的上下文环境, 做好必要的克制.
  • 举例论证严谨, 丰富, 辅助理解.

第一个系列文章

【源码】系列的第一部作品选择了讲解Apache开源的commons-pool2. 开源库的选择上, 需要满足两点, 一是开源项目需要足够大牌, 注释够多, 被使用的够多. 二是该项目的依赖项足够少, 减少阅读初期带来的难度. 所以最终选择了commons-pool2.

但是执行过程遇到的问题. 源码类的文章写的太浅就变成了Javadoc. 首先写之前就得完整的阅读并理解项目, 写作之前就需要花很多时间整理, 然后才能动笔写, 再获得反馈进行调整, 整个闭环周期太长, 无法阶段性的获得正反馈, 导致焦虑的产生, 甚至导致最后放弃写作. 所以我就需要一个更具可行性的执行逻辑.

我将【源码】系列文章划分为4种状态.

  • 思考状态. 用于记录在写作时遇到问题的思考或者根据反馈来的复盘.例如: 【commons-pool2源码】写前思考.
  • 准备状态. 记录一些在阅读源码过程中遇到的不了解的知识点. 但只是停留在对知识点的认识以及使用, 如果要深入则另开系列文章. 例如: 【commons-pool2源码】_pre JMX.
  • 进行状态. 系统性的写对源码的理解.例如: 【commons-pool2源码】_ing 对象状态详解.
  • 拓展状态. 主要看下当前项目在其他知名项目中的应用.例如: 【commons-pool2源码】_ex commons-pool2在Jedis中的应用.

按四种状态的方式执行写作, 在阅读源码初期遇到一些知识点就可以写, 不至于从开始阅读源码到进行状态之间都没有文章产出, 既可以锻炼写作的熟练度, 也能为真正写源码解析做更充足的准备.

感谢阅读!

【commons-pool2源码】写前思考的更多相关文章

  1. Apache Commons Pool2 源码分析 | Apache Commons Pool2 Source Code Analysis

    Apache Commons Pool实现了对象池的功能.定义了对象的生成.销毁.激活.钝化等操作及其状态转换,并提供几个默认的对象池实现.在讲述其实现原理前,先提一下其中有几个重要的对象: Pool ...

  2. 温故而知新 Volley源码解读与思考

    相比新的网络请求框架Volley真的很落后,一无是处吗,要知道Volley是由google官方推出的,虽然推出的时间很久了,但是其中依然有值得学习的地方.  从命名我们就能看出一些端倪,volley中 ...

  3. Netty 源码阅读的思考------耗时业务到底该如何处理

    目录大纲: 前言 处理耗时业务的第一种方式-------handler 种加入线程池 处理耗时业务的第二种方式-------Context 中添加线程池 总结:两种方式的对比和思考 前言 熟悉 Net ...

  4. RequireJs 源码解读及思考

    写在前面: 最近做的一个项目,用的require和backbone,对两者的使用已经很熟悉了,但是一直都有好奇他们怎么实现的,一直寻思着读读源码.现在项目结束,终于有机会好好研究一下. 本文重要解读r ...

  5. BackBone 源码解读及思考

    说明 前段时间略忙,终于找到时间看看backbone代码. 正如知友们说的那样,backbone简单.随性. 代码简单的看一眼,就能知道作者的思路.因为简单,所以随性,可以很自由的和其他类库大搭配使用 ...

  6. 读 Kafka 源码写优雅业务代码:配置类

    这个 Kafka 的专题,我会从系统整体架构,设计到代码落地.和大家一起杠源码,学技巧,涨知识.希望大家持续关注一起见证成长! 我相信:技术的道路,十年如一日!十年磨一剑! 往期文章 Kafka 探险 ...

  7. 第74讲:从Spark源码的角度思考Scala中的模式匹配

    今天跟随王老师学习了从源码角度去分析scala中的模式匹配的功能.让我们看看源码中的这一段模式匹配: 从代码中我们可以看到,case RegisterWorker(id,workerHost,.... ...

  8. 手写Redux-Saga源码

    上一篇文章我们分析了Redux-Thunk的源码,可以看到他的代码非常简单,只是让dispatch可以处理函数类型的action,其作者也承认对于复杂场景,Redux-Thunk并不适用,还推荐了Re ...

  9. 手写Express.js源码

    上一篇文章我们讲了怎么用Node.js原生API来写一个web服务器,虽然代码比较丑,但是基本功能还是有的.但是一般我们不会直接用原生API来写,而是借助框架来做,比如本文要讲的Express.通过上 ...

随机推荐

  1. 大数据体系概览Spark、Spark核心原理、架构原理、Spark特点

    大数据体系概览Spark.Spark核心原理.架构原理.Spark特点 大数据体系概览(Spark的地位) 什么是Spark? Spark整体架构 Spark的特点 Spark核心原理 Spark架构 ...

  2. CVE-2020-1472 域内提权

    攻击者通过NetLogon(MS-NRPC),建立与域控间易受攻击的安全通道时,可利用此漏洞获取域管访问权限.成功利用此漏洞的攻击者可以在该网络中的设备上运行经特殊设计的应用程序. 影响版本 Wind ...

  3. mysql高级day4

    Mysql高级-day04 1. MySql中常用工具 1.1 mysql 该mysql不是指mysql服务,而是指mysql的客户端工具. 语法 : mysql [options] [databas ...

  4. UI自动化实战进阶PO设计模式

    前言 经过前面的实战我们已经编写了几个测试用例,下面我们要用PO设计模式来调整我们的代码,让页面元素和测试业务进行分离,这样看起来直观而且后期的维护也方便. python有一个第三方的PO设计的库,既 ...

  5. UI和3D物体的堆叠响应

    一.问题:当3D物体和UI元素重叠显示时一般UI元素会遮挡物体,这时点击UI元素响应时UI后方的物体也会响应. private void OnMouseDown() { ChangeColor(); ...

  6. springmvc url-pattern配置/*报错

    问题:springmvc 中dispatcherServlet配置url-pattern  "/*"时提示找不到controllercontroller RequestMappin ...

  7. 神奇C语言的字串处理库函数

    头文件:#incldue<string.h> 定义:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串.如果是,则该函数返回str2在str1中首次出现的地 ...

  8. Detect the Virus ZOJ - 3430 AC自动机

    One day, Nobita found that his computer is extremely slow. After several hours' work, he finally fou ...

  9. 国产网络损伤仪SandStorm -- 如何连接设备

    国产网络损伤仪SandStorm可以模拟出带宽限制.时延.时延抖动.丢包.乱序.重复报文.误码.拥塞等网络状况,在实验室条件下准确可靠地测试出网络应用在真实网络环境中的性能,以帮助应用程序在上线部署前 ...

  10. [Golang]-8 工作池、速率限制、原子计数器、互斥锁

    目录 工作池 速率限制 原子计数器 互斥锁 工作池 在这个例子中,我们将看到如何使用 Go 协程和通道实现一个工作池 . func worker(id int, jobs <-chan int, ...