Java网络编程
网络编程是Java的一大难点,在接触了一些Java框架,比如Netty,Akka之后。发现这些网络框架的设计都非常精妙。因此有必要对Java的网络知识进行总结。
hxcaifly
这个作者很懒,什么都没留下…
展开
-
【Java网络编程】:Netty原理总结
最近在研究Flink源码时,才第一次听到Netty这个框架,因为flink的内部数据通信和传输是基于Netty来实现的。后来查了下,spark内部的数据传输也是基于Netty。所以不得不对Netty做番认识。主要是方便以后定位问题。原创 2019-01-03 15:48:16 · 1492 阅读 · 0 评论 -
【Java网络编程】:BIO,NIO和AIO的区别。
1. IO方式的分类 1.1. 基本的概念 首先我们要先搞清楚几个概念。什么是阻塞和非阻塞。什么是同步和异步。 同步和异步:是针对应用程序和内核的交互而言的。同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪;而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。 阻塞和非阻塞:阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作...原创 2019-01-03 12:36:34 · 662 阅读 · 0 评论 -
【Java网络编程】:JDK API实现OIO和NIO
前言 网络编程是Java的一大难点,JDK自带的api可以实现网络编程。 我们将从一个应用程序开始我们对传输的学习,这个应用程序只简单地接受连接,然后向客户端写“Hi!”,然后关闭连接。 1. OIO实现 应用程序的阻塞(OIO)版代码如下: package chx.demo; import java.io.IOException; import java.io.OutputStream; im...原创 2018-12-27 11:29:54 · 396 阅读 · 0 评论 -
【Java网络编程】:Netty实现OIO和NIO
承接上文:https://blog.csdn.net/hxcaifly/article/details/85274664 前言 单纯地使用Java JDK来实现网络NIO是一件开发成本非常高的事情。然而,Netty 为它所有的传输实现提供了一个通用API,这使得这种转换比你直接使用JDK所能够达到的简单得多。所产生的代码不会被实现的细节所污染,而你也不需要在你的整个代码库上进行广泛的重构。简而...原创 2018-12-27 11:52:20 · 691 阅读 · 3 评论 -
【Java网络编程】:为什么Netty使用的是NIO而不是AIO
1. 前言 AIO是异步非阻塞的,NIO是同步非阻塞的。理论上讲,AIO的吞吐量肯定比NIO的要大。两种IO的概念如下: NIO模型: 同步非阻塞。NIO有同步阻塞和同步非阻塞两种模式,一般讲的是同步非阻塞。服务器实现模式为一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。 AIO模型: 异步非阻塞。服务器实现模式为一个有效...原创 2019-01-03 11:14:31 · 2347 阅读 · 0 评论