摘要:Java的程序要运行需要将编译好的class文件加载到JVM运行时数据区。 在了解类的加载机制之前,我们需要了解一下类的生命周期。Java类从被加载到JVM内存开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading),验证(Verification),准备(Preparation),解 阅读全文
posted @ 2019-10-15 20:22 CodingDiary 阅读 (44) 评论 (0) 编辑
摘要:粘包和拆包是TCP网络编程中不可避免的,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制。 TCP粘包和拆包 TCP是个“流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业 阅读全文
posted @ 2019-10-10 21:26 CodingDiary 阅读 (43) 评论 (0) 编辑
摘要:由于JDK中提供的ByteBuffer无法动态扩容,并且API使用复杂等原因,Netty中提供了ByteBuf。Bytebuf的API操作更加便捷,可以动态扩容,提供了多种ByteBuf的实现,以及高效的零拷贝机制。 ByteBuf的操作 ByteBuf有三个重要的属性:capacity容量,rea 阅读全文
posted @ 2019-10-06 20:51 CodingDiary 阅读 (27) 评论 (0) 编辑
摘要:Netty中的责任链 设计模式 - 责任链模式 责任链模式(Chain of Responsibility Pattern)是一种是行为型设计模式,它为请求创建了一个处理对象的链。其链中每一个节点都看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时 阅读全文
posted @ 2019-09-26 20:55 CodingDiary 阅读 (46) 评论 (0) 编辑
摘要:Netty简介 Netty是一个高性能,高可扩展性的异步事件驱动的网络应用程序框架,它极大的简化了TCP和UDP客户端和服务器端网络开发。它是一个NIO框架,对Java NIO进行了良好的封装。作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制, 阅读全文
posted @ 2019-09-10 21:45 CodingDiary 阅读 (63) 评论 (0) 编辑
摘要:什么是Reactor模式 Reactor模式是一种设计模式,它是基于事件驱动的,可以并发的处理多个服务请求,当请求抵达后,依据多路复用策略,同步的派发这些请求至相关的请求处理程序。 Reactor模式角色构成 在早先的论文An Object Behavioral Pattern forDemulti 阅读全文
posted @ 2019-09-08 09:59 CodingDiary 阅读 (149) 评论 (0) 编辑
摘要:AIO中的A即Asynchronous,AIO即异步IO。它是异步非阻塞的,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,一般我们的业务处理逻辑会变成一个回调函数,等待IO操作完成后,由系统自动触发。 在进行读写操作时,只需直接调用API的read/write方法即可。这两 阅读全文
posted @ 2019-08-28 21:18 CodingDiary 阅读 (42) 评论 (0) 编辑
摘要:从Java1.4开始,为了替代Java IO和网络相关的API,提高程序的运行速度,Java提供了新的IO操作非阻塞的API即Java NIO。NIO中有三大核心组件:Buffer(缓冲区),Channel(通道),Selector(选择器)。NIO基于Channel(通道)和Buffer(缓冲区) 阅读全文
posted @ 2019-08-26 21:52 CodingDiary 阅读 (191) 评论 (0) 编辑
摘要:阻塞IO的含义 阻塞(blocking)IO :阻塞是指结果返回之前,线程会被挂起,函数只有在得到结果之后(或超时)才会返回 非阻塞(non-blocking)IO :非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回 同步(synchronous)IO :应用 阅读全文
posted @ 2019-08-22 20:15 CodingDiary 阅读 (119) 评论 (0) 编辑
摘要:OSI网络七层协议 为使不同计算机厂家的计算机能够互相通信,以便在更大的范围内建立计算机网络,有必要建立一个国际范围的网络体系结构标准。OSI网络七层协议就是在这个基础上制定出来的,其从最底层开始依次是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。 各层主要功能 物理层:使原始的数据比 阅读全文
posted @ 2019-08-14 20:11 CodingDiary 阅读 (116) 评论 (0) 编辑