网络的基础知识包括一些网络模型和协议。我们常说Talk is cheap, show me code.这一小节我们将解锁Socket网络编程,通过Socket来编写简单一些简单的网络小程序。我很早之前就接触过Socket网络编程,也能写一些简单的程序,但是始终感觉socket离我很遥远,不清楚socket到底是什么以及socket是如何工作的。如果你也有和我一样的疑问,通过这一小节的梳理让我们一起搞懂socket,解锁socket技能点。在编写完socket程序之后,我们还会思考如何提高我们socket网络程序的处理吞吐量连接数,并且引入我们的IO模型,深入理解几种常见的IO模型。
在前一篇中简单介绍了Java 字节码中有关方法调用的一些操作码,但是 java 方法的调用往深了讲又有很多的门道,简单的有方法的重写和重载,深入也有方法的动态绑定和静态绑定,那JVM是如果识别和选定方法的呢?还有有些时候我们并不能直接调用某个目标方法,而是要使用一些特别的手段去调用,也就是我们会经常用到的反射,反射不同于常规的方法调用,这货一上来就不走寻常路,一般方法调用都是先 new 一个对象,就像是朋友来家里做客从正门进来,反射是先通过 class 对象找到目标方法然后传入调用实例,这更像是翻墙进来。那这个翻墙进来的它背后的原理又是怎样的呢?假如这个世界是美好的,但一个方法的执行可能没那么顺利,万一发生了异常这个异常又是怎么捕获的呢?