摘要:
我们需要了解下在真正项目应用中如何去考虑Netty的使用,大体上对于一些参数设置都是根据服务器性能决定的。这个不是最主要的。 我们需要考虑的问题是两台机器(甚至多台)使用Netty的怎样进行通信,大体上分为三种: 第一种,使用长连接通道不断开的形式进行通信,也就是服务器和客户端的通道一直处于开启状态
阅读全文
posted @ 2017-07-12 17:28
小~虎
阅读(505)
推荐(0)
摘要:
import java.io.*;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;/** * User : Jixiaohu * Date : 2017-07-03. * Time : 16:18.
阅读全文
posted @ 2017-07-07 11:25
小~虎
阅读(250)
推荐(0)
摘要:
编解码技术,说白了就是java序列化技术,序列化目的就两个,第一进行网络传输,第二对象持久化。 虽然我们可以使用java进行对象序列化,netty去传输,但是java序列化的硬伤比较多,比如java序列化没办法跨语言,序列化后码流太大,序列化性能太低等等。。 主流的编解码框架: JBoss的Mars
阅读全文
posted @ 2017-07-03 15:34
小~虎
阅读(200)
推荐(0)
摘要:
TCP粘包、拆包 熟悉tcp编程的可能都知道,无论是服务端还是客户端,当我们读取或发送数据的时候,都需要考虑TCP底层的粘包/拆包机制。 TCP是一个“流”协议,所谓流就是没有界限的遗传数据。可以想象下,如果河里的水就是数据,他们是连成一片的,没有分界线。TCP底层并不了解上层的业务数据具体的含义,
阅读全文
posted @ 2017-06-29 15:19
小~虎
阅读(262)
推荐(0)
摘要:
我们已经了解了Socket通信/IO/NIO/AIO编程,对于通信模型已经有了一个初步的认识,其实我们之前所学习的仅仅是一个模型,如果想把这些真正的用于实际工作中去,其实我们之前所学习的仅仅是一个模型,如果想把这些真正的用于实际工作中去,那么还需要不断的完善、扩展和优化。比如很经典的TCP读包写包问
阅读全文
posted @ 2017-06-07 11:58
小~虎
阅读(316)
推荐(0)
摘要:
AIO编程,在NIO基础之上引入了异步通道的概念,并提供了异步文件和异步套接字通道的实现,从而在真正意义上实现了异步非阻塞,之前我们学习的NIO只是非阻塞而并非异步。而AIO它不需要通过多路复用器对注册的通道进行轮询操作即可实现异步读写,从而简化了NIO编程模型。也可以称之为NIO2.0,这种模式才
阅读全文
posted @ 2017-04-05 13:41
小~虎
阅读(946)
推荐(0)
摘要:
IO(BIO)和NIO的区别:其本质就是阻塞和非阻塞的区别。 阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,那么程序就一直等着,直到传输完毕为止。 非阻塞概念:应用程序直接可以获取已经准备就许好的数据,无需等待。 IO为同步阻塞形式,NIO为同步非阻塞形式。NIO并没有实现异步,在J
阅读全文
posted @ 2017-04-01 11:56
小~虎
阅读(1174)
推荐(0)
摘要:
针对传统的BIO编程,当客户端数量一直增加的情况下,可能会导致服务器直接奔溃掉,进而出现了一种伪异步IO的线程方式。 先看一下代码: 看一下server端的代码: 其中使用了自定义的一个线程池HandlerExecutorPool,下面看一下这个线程池的实现 代码很简单,是一个有界队列的自定义线程池
阅读全文
posted @ 2017-03-28 13:52
小~虎
阅读(168)
推荐(0)
摘要:
Socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。 Socket和ServerSocket类库位置java.net包中,ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,
阅读全文
posted @ 2017-03-27 17:14
小~虎
阅读(181)
推荐(0)
摘要:
下面看一下多生产多消费者的模式,下面的代码是模拟100个生产者,每个生产者生产100个事件,然后有3个消费者,同时进行消费,共消费1W个事件, 下面看一下代码: 这边new出了3个消费者,并把消费者数组放入workPool这个消息队列中,然后在RingBuffer中获取事件,进行消费: 看一下eve
阅读全文
posted @ 2017-03-13 17:06
小~虎
阅读(416)
推荐(0)