盘点最受欢迎的十大技术文章

Posted by 陈树义 on 2021-05-31

前面写了一篇盘点三年来写过的原创文章 - 陈树义的博客,分享了三年来的原创文章。在这些原创文章中,技术文章占了一大半。今天我们就来盘点一下——最受欢迎的十大技术文章!

文章质量最高

要按照文章质量排名,那么就不能单纯取阅读量为依据。我将取博客园阅读数、赞同数为计算依据,根据赞同比排名。其中「赞同比=阅读数/赞同数」,数值越小,表示获取一个赞同需要的阅读数越小,越受欢迎。

根据赞同比进行排名计算,文章质量最高的十大文章如下图所示:

  1. 面对海量请求,缓存设计还应该考虑哪些问题? - 陈树义 - 博客园

这是一篇写于 2018 年 5 月份的文章,主要介绍了缓存穿透、缓存击穿、缓存雪崩这三个知识点。这篇文章篇幅不长,内容也并不出奇,但其结构清晰、讲解详细。此外,比起网上其他类似文章,有更多清晰的例子讲解,让读者看着感觉酣畅淋漓!

虽然这篇文章至今阅读量只有 4810 个阅读,但是其赞同数却有 64 个,平均 75 个人认为文章质量很好,可见其文章质量确实得到了读者的认可。

  1. 藏在正则表达式里的陷阱 - 陈树义 - 博客园

这是写于 2018 年 6 月份的文章,当时我还在唯品会工作,遇到了一个 CPU 100% 的问题,最后排查发现是正则表达式导致的。于是当时查阅了一些资料,深入原理弄懂了这个问题,将这个线上问题分享了出来。当时这篇文章也被许多大号转载,可以说是刷屏的一篇文章了!

这篇文章至今已有 2.5 万左右的阅读,赞同数也有 206 个,平均 121 个人就有一个人认为文章质量很好。其阅读量能够一路高涨,除了文章本身质量之外,文章本身知识点带有长尾效应也是其中一个原因。

  1. 浅谈重构中踩过的坑 - 陈树义 - 博客园

这是写于 2017 年的文章,起因是我在珍爱网重构了 10 多年的一个 IM 系统。十几年来的业务沉淀,加上各种人员流动,让我对这个系统的业务重构很是烦恼。再加上当时的我是第一次重构系统,没有丰富的经验,因此这一次重构让我直接抑郁了。

正因为有这么痛苦的经历,才迫使我写下了这篇文章。这篇文章虽然篇幅也不长,但是却字字珠玑,字字浓缩了我在重构这个系统的心酸泪。这篇文章从心态、技巧、技术层面去阐述如何重构一个系统,虽然简短,但是却是字字珠玑。当我写完之后,我一个在迅雷的朋友告诉我,他们公司的群里也在转发这篇文章。他说:他们同事看完之后觉得感同身受,觉得这就是重构的体验!太难了!

这篇文章至今有 1.9 万左右的阅读,赞同数也有 120 个,平均 158 个人就有一个人认为文章质量很好。整体来看,这是一篇不错的文章,让大家对重构有个粗略的认识。后续有机会,我还会写更多此类文章,把大家多多理解重构。

  1. 聊聊我的知识体系 - 陈树义 - 博客园

这是写于 2019 年 4 月份的文章,当时的我差不多也工作 5 年了,是时候对自己的知识做一个全面的整理了。于是乎,我写下来了这篇文章,梳理分享了我的知识体系。这篇文章分享了我所掌握的大致的知识点,包括:集合源码、并发包源码、Spring 源码、JVM 原理等等。

这篇文章至今有 8700 多阅读,赞同数 50 个左右,平均 175 个人中有一个人认为文章质量很好。这篇文章受到大家欢迎的原因在于:大家都是迷茫的,不知道自己应该往哪个方向学习,不知道应该学习哪些知识。而这篇文章的价值在于——他给大家看到了别人是怎么学的、学了哪些东西。它给那些迷茫、不知道方向的读者指明了一个方向,让他们知道应该往哪个方向努力。

  1. Java动态代理:一个面包店的动态代理帝国 - 陈树义 - 博客园

这篇文章其实奇怪,虽然阅读只有 1700 左右,但是却能挤进质量最高的十大文章。究其原因,一方面或许是标题其得不好,导致看的人不多;另一方面,应该说文章质量还是不错的,不然也不会有这个赞同比。

这篇其实其实讲的是静态代理与动态代理两个技术点,但是使用了面包店的例子,帮助大家去理解。在讲清楚了基本概念之后,我并没有止步于此,而是更深入到源码层面,讲解了常见的 Java 动态代理与 CGLib 动态代理的原理。这使得文章整体内容丰满,不会显得过于简单空洞。

  1. 面对枯燥的源码,如何才能坚持看下去? - 陈树义 - 博客园

我想这是一个所有程序员都会遇到的问题,所以引起了大家的共鸣。面对枯燥的源码,很多情况下我们确实很难坚持下去。这篇文章完稿于我在唯品会上班期间,当时我在看内部的网关框架源码。当时我看源码并不是很多,看得也是比较吃力,但是看了一段时间之后,发现还是有一些套路可循的,于是写下了这篇文章。

这篇文章简单分享了我看源码的步骤,以及自己的一些经验,整体来说对于源码初学者很有借鉴意义。目前这篇文章阅读量 1.2 万左右,赞同数 54 个,平均 225 个人就会有一个人觉得文章写得很好!值得一提的是,文章引起了许多读者的共鸣,大家都在留言区留言,讨论氛围非常活跃。

  1. 我是SPI,我让框架更加优雅了! - 陈树义 - 博客园

这篇文章写于我学习 Dubbo 框架源码时期,当时对于 Dubbo 的 SPI 还不是很理解,于是花了一些时间去弄清楚它。弄清楚之后总想着如何更简单、有趣地表达出来,于是乎写了这篇文章。

这篇文章从构思到写,还是花了两个星期,主要是有相关的代码项目,这真的很费时间。这篇文章很大的价值在于——其通过小黑的工作例子,让大家对 SPI 的应用场景有了理性的认识,知道什么时候应该用 SPI,什么时候不该用。此外,文章还带着大家去写了一个 SPI 的例子,让读者更深刻地理解 SPI。

  1. 两道面试题,带你解析Java类加载机制 - 陈树义 - 博客园

这篇文章同样是很经典、干货非常多的一篇!文章从两道常见的 Java 面试题开始,引出了其考核的重点内容——JVM 类加载机制。接着详细介绍了 JVM 类加载机制,接着又回到了题目本身,剖析面试题考核的重点,最后针对此类问题给出了解题方法论。这样的思路,真的是非常犀利,让人看了直呼过瘾!

这篇文章目前阅读量在 1.3 万左右,赞同数有 48 个,平均 264 个人就有一个人认为文章质量很好!文章评论区的讨论非常热烈,大家都动手去试了试我的方法,都发现方法非常棒!

  1. JVM基础系列第5讲:字节码文件结构 - 陈树义 - 博客园

这篇文章是「JVM 基础入门系列」中的一篇文章,主要将的是字节码的文件结构。这篇文章长达 2 万字,图片 50 多张,花费了大量的时间和精力来写这篇文章。写这篇文章的时候,我花了非常大的精力,从头到尾分析了两次字节码的每一个二进制数据。有分析过的朋友应该清楚,这得是多大的工作量呀!

不过正是由于文章讲解得非常细节,文章也收获了不少朋友的认可。目前为止文章阅读 1.4 万左右,赞同数 37 个,评论 21 个,整体而言算是一篇写得很不错的文章。

  1. 大白话说Java反射:入门、使用、原理 - 陈树义 - 博客园

这篇文章虽然排名第十,但是其阅读量却是所有文章中最高的,阅读量达到了惊人的 11 万!究其原因,主要是搜索引擎带来的长尾效应。我从百度统计中可以看到,几乎每天都有 500 个人通过「Java反射」关键字进入我的博客。而这篇文章在百度、谷歌的「Java反射」关键字搜索结果上,都是名列前三的。

搜索引擎能带来不少的流量,但文章本身也是质量非常高的。与其他文章直接介绍反射的 API 使用不同,我率先提出「正射」的概念,以此让大家更好地明白什么是反射!从评论区的反馈来看,许多人对于这个思路啧啧称赞!提出「正射」概念之后,我延伸介绍了「反射」的概念,顺路介绍了反射的基础使用 API,最后深入反射的源码层面讲解。整体思路一气呵成,简单清晰,这或许是大家喜欢看的原因吧!

阅读量最高

赞同比最能体现文章的质量,而阅读量则能在某种程度上体现文章的受欢迎程度。

从上图的排名可以看到,《大白话说Java反射:入门、使用、原理》这篇文章独领风骚,达到了惊人的 11 万阅读,而第二名的《藏在正则表达式里的陷阱》则只有 2.5 万阅读左右。这期间的差距,更多的是搜索引擎带来的长尾流量差距。

其他优秀文章

除了赞同比最高、阅读量最高的文章之外,其实也有非常多我觉得写得很不错的文章。但因为各种原因,可能它们表现出来的数据不怎么惊艳,但是干货还是满满的,这里再次推荐给大家。

从字节码层面,解析 Java 布尔型的实现原理

我们经常接触到的 Java Boolean 类型,其在底层是怎么实现的,也是同样适用 Boolean 类型存储吗?这篇文章从零到一,深入 JVM 字节码层面,告诉你答案!

要学习一个技术框架,最重要的是先弄清楚全局,不然就会只见树木不见森林。这篇文章用非常简短的篇幅,简单清晰地介绍了 Kafka 的技术架构,让你对 Kafka 有个全面的认识。

策略模式与 SPI 机制很像,那什么时候用策略模式,什么时候用 SPI 模式呢?这篇文章对比了这两者的异同点,并且给出了自己的使用建议。

我们都认为:唯一确定一个类就是类的全路径,但事实上并不是如此。这篇文章用一个很简单的例子,带你剖析这个问题,最后深入到 JVM 字节码层面解析背后的真相。

对于硬件、内核,作为软件工程师的我们,几乎都是黑盒一般的存在。我们一直游荡在操作系统的上一层,而对操作系统之下的内容一无所示。这篇文章带领我们打开这个神秘的潘多拉盒子,有层次地介绍了操作系统下的神秘世界,看完之后会对操作系统的底层结构有更深刻的认识。

学过 JVM 的同学都知道,我们的对象都是在堆上分配的,但真的所有对象都是在堆上分配的吗?这篇文章带我们认识了一种新技术:栈上分配——对于那些线程私有的对象,可以将其分配在线程的栈上空间,而不是分配在堆中。

JDK8 发布以来,Lambda 表达式的流操作就成为了主流。但对于还没转过头来的朋友们,弄清楚这个 Lambda 表达式真的是头疼。这篇文章清晰地介绍了 Lambda 表达式的流操作,详细介绍了日常使用中涉及到的各种操作,建议收藏作为手册备用,忘记的时候拿出来查一查!

这是好朋友田小波写的一篇文章,这篇文章以故事的写作分隔,介绍了 Spring MVC 是如何处理用户请求的。文章提出非常生动有趣,让你能更好地理解 Spring MVC 的底层原理实现。

对于工作几年的朋友,软件设计的 SOLID 原则不可能没听说过。但网上那些说 SOLID 原则的文章,质量层次不齐,没有一点自己的见解。这篇文章则是我搜集了无数的资料,再加上了自己的一些理解,写出的一篇有逻辑结构的 SOLID 原则文章。

Kafka 发生 rebalance 异常,这是经常碰到的事情。这篇文章从 rebalance 异常的背景知识开始讲起,接着分析发生 rebalance 异常可能的几种情况,最后介绍了解决 rebalance 异常的方法论。整体来看思路清晰,例子简单明了,不失为一篇好文章!

当我们输入网址的时候,DNS 是如何为域名找到 IP 地址的?这中间经历了多少个步骤,跑过多少个地方?这篇文章详细介绍了这一过程,让大家对 DNS 解析原理有深刻的认识。

总结

回顾过去三年写的技术文章,没想到我还写了这么多优秀的文章。这次盘点给了我很大的信息,让我有更大的动力继续输出更多原创的技术文章和想法。写原创技术文章这件事情,短期来看很辛苦很累,但长期来看会发现是一种积累,是一种成长。

盘点过去三年来写的文章,我们不难发现一篇好的文章,基本上需要满足下面其中几点:

  1. 切中读者的需求
  2. 写作思路清晰
  3. 例子简单明了
  4. 有独到的思考角度
  5. 内容有料、有干货

如果能满足其中的一点或者几点,那么这篇文章就算是一篇优秀的文章了。例如:

  • 《聊聊我的知识体系》这篇文章,就切中了读者关于「学习方向」的需求。
  • 《面对枯燥的源码,如何才能坚持看下去?》这篇文章,就切中了众多读者阅读源码困难、枯燥的共鸣点,引起了大家的情感共鸣。
  • 《大白话说Java反射:入门、使用、原理》以独到的「正射」思考角度,带着大家理解反射概念。
  • 等等

这次的回顾,也重新让我明白了我应该写什么样的文章,让我更坚定了未来的写作方向。希望在未来的日子里,能产出更多受大家欢迎的技术文章!

谢谢大家的阅读。如果文章对你有帮助,点个 「在看」 ,或者分享到朋友圈 吧。