【commons-pool2源码】写前思考
写作的初衷
工作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源码】写前思考的更多相关文章
- Apache Commons Pool2 源码分析 | Apache Commons Pool2 Source Code Analysis
Apache Commons Pool实现了对象池的功能.定义了对象的生成.销毁.激活.钝化等操作及其状态转换,并提供几个默认的对象池实现.在讲述其实现原理前,先提一下其中有几个重要的对象: Pool ...
- 温故而知新 Volley源码解读与思考
相比新的网络请求框架Volley真的很落后,一无是处吗,要知道Volley是由google官方推出的,虽然推出的时间很久了,但是其中依然有值得学习的地方. 从命名我们就能看出一些端倪,volley中 ...
- Netty 源码阅读的思考------耗时业务到底该如何处理
目录大纲: 前言 处理耗时业务的第一种方式-------handler 种加入线程池 处理耗时业务的第二种方式-------Context 中添加线程池 总结:两种方式的对比和思考 前言 熟悉 Net ...
- RequireJs 源码解读及思考
写在前面: 最近做的一个项目,用的require和backbone,对两者的使用已经很熟悉了,但是一直都有好奇他们怎么实现的,一直寻思着读读源码.现在项目结束,终于有机会好好研究一下. 本文重要解读r ...
- BackBone 源码解读及思考
说明 前段时间略忙,终于找到时间看看backbone代码. 正如知友们说的那样,backbone简单.随性. 代码简单的看一眼,就能知道作者的思路.因为简单,所以随性,可以很自由的和其他类库大搭配使用 ...
- 读 Kafka 源码写优雅业务代码:配置类
这个 Kafka 的专题,我会从系统整体架构,设计到代码落地.和大家一起杠源码,学技巧,涨知识.希望大家持续关注一起见证成长! 我相信:技术的道路,十年如一日!十年磨一剑! 往期文章 Kafka 探险 ...
- 第74讲:从Spark源码的角度思考Scala中的模式匹配
今天跟随王老师学习了从源码角度去分析scala中的模式匹配的功能.让我们看看源码中的这一段模式匹配: 从代码中我们可以看到,case RegisterWorker(id,workerHost,.... ...
- 手写Redux-Saga源码
上一篇文章我们分析了Redux-Thunk的源码,可以看到他的代码非常简单,只是让dispatch可以处理函数类型的action,其作者也承认对于复杂场景,Redux-Thunk并不适用,还推荐了Re ...
- 手写Express.js源码
上一篇文章我们讲了怎么用Node.js原生API来写一个web服务器,虽然代码比较丑,但是基本功能还是有的.但是一般我们不会直接用原生API来写,而是借助框架来做,比如本文要讲的Express.通过上 ...
随机推荐
- SparkStreaming与Kafka,SparkStreaming接收Kafka数据的两种方式
SparkStreaming接收Kafka数据的两种方式 SparkStreaming接收数据原理 一.SparkStreaming + Kafka Receiver模式 二.SparkStreami ...
- (23)gzip命令:压缩文件或目录&&gunzip命令:解压缩文件或目录
1.gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,通过此命令压缩得到的新文件,其扩展名通常标记为".gz". 再强调一下,gzip 命令只能用来压缩文件,不 ...
- (3)UNIX/Linux系统结构
UNIX/Linux 系统可以粗糙地抽象为 3 个层次,如图所示.底层是 UNIX/Linux 操作系统,即系统内核(Kernel):中间层是Shell层,即命令解释层:高层则是应用层. 1) 内核层 ...
- Python开发桌面微型计算器
开发Windows窗口需要用到tkinter库 所以上来的第一件事就是: import tkinter as t window = t.Tk()#创建了一个窗口 window.title('微型计算器 ...
- 封装打包Python脚本
1.前言 封装打包Python的好处,节省了安装各种各样包依赖的问题,同时可以加强我们代码隐私的安全性,这里我的演示环境是Python3.6 ,CentOS7的系统,同时打包工具采用pyinstall ...
- Dubbo官网实战使用技巧
原文链接:Dubbo官网实战使用技巧 1.启动时检查: 我们检查依赖的服务是否启动,可利用下面三个属性,优先级从左到右逐渐降低. 如果服务不是强依赖,或者说服务之间可能存在死循环依赖,我们应该将 ch ...
- WPF 之 MultiBinding(多路 Binding)(四)
一.前言 有时候 UI 需要显示的信息由不止一个数据来源决定,这时候就需要使用 MultiBinding ,即多路 Binding. MultiBinding 与 Binding 一样均以 B ...
- Watering Grass(贪心算法)
给定一条草坪.草坪上有n个喷水装置.草坪长l米宽w米..n个装置都有每个装置的位置和喷水半径..要求出最少需要几个喷水装置才能喷满草坪..喷水装置都是装在草坪中间一条水平线上的. n sprinkle ...
- POJ - 3376 Finding Palindromes(拓展kmp+trie)
传送门:POJ - 3376 题意:给你n个字符串,两两结合,问有多少个是回文的: 题解:这个题真的恶心,我直接经历了5种错误类型 : ) ... 因为卡内存,所以又把字典树改成了指针版本的. 字符串 ...
- CodeForces 1119D(差分+前缀和+二分)
题意:给你一个数组,数组每次每个数都+1,有q次查询每一查询+L到+R中出现的所有不重复的数字个数. +L到+R其实就相当于是0到+(R-L+1) 感觉自己写的好啰嗦,直接上代码加注释: 1 #inc ...