上一小节我们总结了Reactor模型,Netty基于主从Reactor模型设计了自己的模型结构,使得Netty在不同的场景下都有非常亮眼的性能和可用性表现。进入到这一小节,我又想到了那句话”Talk is cheap, show me code”。虽然上一小节我们简单写了一个“快速开始”,但是这对于要达到快速使用Netty进行网络开发的目的还远远不够。在一小节中我们会通过一系列的Demo示例熟悉Netty的开发,从代码中感受他们的特性。最后我们会通过一个简单的聊天加深我们对Netty各个核心组件的理解。最后我们动手设计实践一个API网关,认识网关的功能和结构,同时也进入提升我们使用Netty进行网络开发的熟练度,同时为后续深入源码打下基础。这一小节代码比较多,不要害怕耐心看完并付诸实践,一定会收获满满。
在前一篇中简单介绍了Java 字节码中有关方法调用的一些操作码,但是 java 方法的调用往深了讲又有很多的门道,简单的有方法的重写和重载,深入也有方法的动态绑定和静态绑定,那JVM是如果识别和选定方法的呢?还有有些时候我们并不能直接调用某个目标方法,而是要使用一些特别的手段去调用,也就是我们会经常用到的反射,反射不同于常规的方法调用,这货一上来就不走寻常路,一般方法调用都是先 new 一个对象,就像是朋友来家里做客从正门进来,反射是先通过 class 对象找到目标方法然后传入调用实例,这更像是翻墙进来。那这个翻墙进来的它背后的原理又是怎样的呢?假如这个世界是美好的,但一个方法的执行可能没那么顺利,万一发生了异常这个异常又是怎么捕获的呢?