Netty4系列--实现简单的Http协议

利用netty4来实现http的服务器,代码如下: public class ApiServer { public static void main(String[] args) { int port = 8089; if (args !...

2017-08-13 14:10:08

阅读数 397

评论数 0

Netty线程模型及EventLoop和EventLoopGroup源码解析

1、netty线程模型

2017-06-19 15:29:20

阅读数 5290

评论数 0

netty实现webSocket协议

1、http协议现状          一直以来http协议一直都是请求/响应的模式,如果服务器有新的数据变化要推送给客户单,此时需要客户端发送一个请求由服务器进行响应。要想实现服务端立即推送到客户端,可以使用轮训的机制或Comet,但这里有一个共同的问题是:由于http协议的开销,导致他们不适用...

2017-06-13 16:38:40

阅读数 341

评论数 0

Netty使用google protobuf进行编解码

1、编解码技术    基于java提供的对象输入\输出流ObjectInputStream和ObjectOutputStream,可以直接把java对象作为存储的字节数组写入文件,也可以传输到网络上。基于Jdk的默认序列化机制可以避免操作底层数组,从而提升开发效率。     java序列化的目...

2017-06-12 14:37:15

阅读数 336

评论数 0

netty分割符和定长解码器的应用

tcp以流的方式进行数据传输,上层的应用协议为了对消息进行区分,往往采用如下4种方式:      1、消息固定长度,累计读取到长度一定的报文段后,就读取下一个报文段。      2、将回车换行符做为消息结束符,例如ftp协议,这种方式在文本协议中应用比较广泛。      3、将特殊的分割符作为消息...

2017-06-12 13:47:36

阅读数 186

评论数 0

netty中的粘包和拆包问题处理

1、tcp粘包和拆包问题说明 2、tcp粘包和拆包发生的原因 3、粘包问题的解决策略

2017-06-12 10:51:53

阅读数 802

评论数 0

Netty入门应用一

在本例子中使用的是netty5,以及后面的例子中也是。先去官网进下载5.0.0.Alphal,解压后要引用的jar包就是netty-5.0.0.Alphal.jar包。对于用netty进行编写TimeServer的nio程序如下: package zou; import io.netty.boo...

2017-06-11 22:53:28

阅读数 183

评论数 0

nio编

NIO,有人称为New IO这是相对于之前传统io的叫法。但是与之前传统的相比,New IO类库的目标是让java支持非阻塞IO,因此是指非阻塞IO。      NIO类库的简介      1、缓冲区buffer      在nio库中,所有的数据都是用缓冲去咧,在读取数据的时候,它是直接读到缓冲...

2017-06-09 15:43:34

阅读数 156

评论数 0

tcp超时重传

tcp提供了运输的可靠性,对数据的传输进行了确认机制,如果当发送的数据丢失,或是ack的发送丢失,或是网络延迟等,这是会触发tcp进行超时重传。 超时原理:在发送了一个数据报文后,会启动一个超时定时器,如果在超时定时器内还没有收到这个数据包的ack,那么就会进行重传,知道发送成功为止。 ...

2017-06-08 17:54:31

阅读数 367

评论数 0

tcp成块数据流交互

滑动窗口 滑动窗口协议是允许发送方发送多个未被确认的数据分组,每个分组不必等待确认后进行发送下一个分组,且接受方通过窗口协议可以对多个分组进行确认,可以加快数据的传输。 在滑动窗口协议中,ack的确认是可以累积的,可以一次确认多个分组。 当接收方确认数据...

2017-06-08 17:51:47

阅读数 177

评论数 0

tcp的关闭过程

tcp的关闭过程如下: 会经历4次的握手: 需要注意的是在一段发送了fin包后,收到了ack包,此时状态进入到TIME_WAIT状态,需要等2MSL才进入到closed状态,这为了防止ack包丢失进行超时重传。 在一段进行了关闭后,只是在这一段不能发送收据,但它可以接受另...

2017-06-08 17:47:32

阅读数 516

评论数 0

tcp连接建立于终止

tcp的连接建立: 在本机执行如下命令: sudo tcpdump -S port 8080 -vv -n -i lo0 tcpdump: listening on lo0, link-type NULL (BSD loopback), capture size 262144 bytes 00...

2017-06-08 17:42:23

阅读数 132

评论数 0

tcp传输控制协议

tcp服务: tcp是面向连接的,提供可靠的服务,对数据有校验机制。 tcp的首部: 其格式如下: 如上tcp的报文是tcp的首部和tcp的数据。 tcp的首部是有源端口和目的端口,这个值和ip首部的源ip和目的ip构成了tcp唯一确定的一个连...

2017-06-08 17:36:39

阅读数 303

评论数 0

linux io模型讲解

网络应用需要处理的无非两大类问题,网络io,数据计算。相对于后者,网络i/o的延迟,给应用带来的性能瓶颈大于后者。网络i/o模型大致有如下几种: 同步模型 (synchronous i/o) 阻塞i/o(blocking i/o) 非阻塞io(non-blocking i/o) 多...

2017-06-08 16:42:58

阅读数 165

评论数 0

jstack日志深入理解

在分析线上问题时常使用到jstack 命令将当时Java应用程序的线程堆栈dump出来。 面对jstack 日志,我们如何查看? 首先要清楚线程的状态 线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead 线程...

2016-08-06 17:11:36

阅读数 22125

评论数 1

jvm基础学习

1、jvm虚拟机内存模型 程序计数器:是线程的私有空间,每个线程都有一个独立的程序计数器,用于记录下一指令。 java虚拟机栈:和线程创建的时候一起创建的,也是线程的私有空间,它保存了线程的局部变量、执行结果、调用和返回的情况。 在虚拟机栈中会返回栈溢出的错误,如果一个线...

2016-08-06 17:09:52

阅读数 359

评论数 0

查看java堆栈信息

通过查看java堆栈的信息,我们可以kand

2014-06-17 19:47:39

阅读数 16088

评论数 0

java虚拟机加载机制

Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。 在加载阶段,java虚拟机需要完成以下3件事: a.通过一个类的全限定名来获取定义此类的二进制字节流。 b.将定义类的...

2014-06-05 14:47:57

阅读数 556

评论数 0

tcpdump命令

tcpdump抓包命令:

2014-05-21 11:11:02

阅读数 460

评论数 0

关于SimpleDateFormat安全的时间格式化线程安全问题

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在...

2014-02-18 16:19:40

阅读数 39476

评论数 14

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