自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 资源 (1)
  • 收藏
  • 关注

原创 netty系列

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

2021-11-26 01:06:22 174

原创 netty的ChannelPipeline是如何工作的?

netty 中每个 channel 都会绑定了一个 pipeline,当有入站事件或出站操作时,会由 pipeline 中的 handler 进行拦截处理。事件处理流程如上图所示,入站事件产生后,通过调用ChannelHandlerContext.fireXXXAPI 在Inbound Handler链上向后传播,每个 handler 只处理自己关心的逻辑。同样地,出站事件经Outbound Handler处理并向前传播,最终调用 socket 的 API 将数据发送出去...

2021-11-26 00:44:42 581

原创 netty中ChannelFuture.sync()的作用是什么?

如果你使用过 netty,你一定见过下面两行代码,它们可以说是创建一个 netty server 的标配代码 12 ChannelFuture future = bootstrap.bind(port).sync();future.channel().closeFuture().sync(); 不知道你有没想过这里面的sync()的作用是什么,如果去掉会有什么问题?bootstrap.bind(port).sync() 分析先来一步一步..

2021-11-26 00:38:16 6033 3

原创 如何查找 jdk 中的 native 实现

jdk 中有很多 native 方法,比如 Object 类的 registerNatives 方法、String 类的 intern 方法等。这些方法在 java 层面只有接口定义,具体的方法实现则是在 jdk 中,采用 c/c++ 实现。本文主要讲下如何找到 native 方法的实现。查找的思路在 java 中,为了实现特定的功能,有时需要调用非 java 代码实现的函数(比如 c/c++ 函数),JNI(Java Native Interface)提供了这个能力。JNI 规定在 java

2021-11-26 00:34:03 1672

原创 netty的direct memory大小设置

最近遇到一个 netty 的 OutOfDirectMemoryError 报错,是在分配 direct memory 时内存不足导致的,看了下报错提示,要分配的内存大小为 16M,剩余的空间不足。这里 max direct memory 大约有 7G,于是就有一个疑问,这个值是怎么设置的?代码分析这里使用的 netty 版本是 4.1.14.Final,如下是报错时的调用栈信息,主要关注下PlatformDependent这个类。复制 1234567891..

2021-11-26 00:29:01 3565

原创 git常用命令

git常用命令

2016-09-04 17:33:29 807

原创 cygwin下VIM配置

最近用cygwin代替虚拟机做一些日常

2014-04-18 10:56:46 2054

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除