0%

对于程序员来说,这个时代是最好的时代。随着软硬件的快速发展,电脑变得越来越便宜,获取一台用于编程的电脑不再是大问题。更重要的是,当你拥有了电脑后,获取编程知识的途径相比以往也更加丰富,有各种在线课程手把手地带你一步一步学习,有各种专栏把总结好的知识教给你。当然这些都是被动地接受知识,要想真正地掌握还是离不开实践,而研究开源项目就是一种好的实践方式。

阅读全文 »

通过 netstat 命令查看网络状态,其中有一列展示的是 socket 的状态,熟练掌握这些状态的含义有助于连接状态的分析与问题排查。

阅读全文 »

tcpdump 是一个强大的抓包工具,它可以用于抓取指定网络端口上的数据,这在某些场景下会非常有用。tcpdump 的命令参数相当复杂,打开它的 man page,你会发现有好多页内容,真让人头大。此外它的日志输出格式也比较独特,如果不了解规则的话将很难读懂。

阅读全文 »

学习一门新的语言,通常是以 HelloWorld 开始的。类似地,学习一个网络框架,通常是以 EchoServer 开始的。接下来我们就来看下如何通过 netty 实现一个 EchoServer。

阅读全文 »

fastjson 提供了一个全局的修改序列化配置的方式。如果你对某个类型的默认序列化方式不满意,或者想指定自定义类型的序列化方式,那么你可以通过修改全局配置的方式实现。

阅读全文 »

当多个线程使用同时同一个 PoolArena 分配内存时,因为存在竞争关系,所以会导致内存分配性能下降。为了减少冲突,PooledByteBufAllocator 会提供多个 PoolArena,并通过 PoolThreadCache 分配给每个 FastThread 线程,同一个线程多次分配释放的过程中,还会使用到缓存,以降低多次内存分配的压力。

阅读全文 »

最近花时间研究了下 Netty 的内存管理实现,感觉挺有意思的,但也明显地感觉到,这部分功能要比其他功能模块更难理解。在这个过程中,我一直在想,如果能有这么一张图,能够说明内存管理的模块组成、各个模块之间的关系以及其实现原理,那么我就可以以更短的时间读懂相关源码了。因此,我将自己的一些理解画成了图。如果你也对这块内容感兴趣,兴许这篇文章能有所帮助。

阅读全文 »

Unpooled 是 netty 提供的一个工具类,通过它可以方便地创建各种类型的 ByteBuf。需要注意的是,通过 Unpooled 创建的是非池化的 ByteBuf,在注重性能的场景需要使用各种 PooledByteBuf。接下来我们就来看下 Unpooled 类是如何使用的。

阅读全文 »