摘要:Java 内存运行时区域中的程序计数器、虚拟机栈、本地方法栈随线程而生灭,栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由 JIT 编译器进行一些优化),因此这几个区域的内存分配和回收都具备确定性,不需要过多 阅读全文
posted @ 2019-10-22 20:24 CodingDiary 阅读 (184) 评论 (0) 编辑
摘要:Java的程序要运行需要将编译好的class文件加载到JVM运行时数据区。 在了解类的加载机制之前,我们需要了解一下类的生命周期。Java类从被加载到JVM内存开始,到卸载出内存为止,它的整个生命周期包括了:加载(Loading),验证(Verification),准备(Preparation),解 阅读全文
posted @ 2019-10-15 20:22 CodingDiary 阅读 (138) 评论 (0) 编辑
摘要:粘包和拆包是TCP网络编程中不可避免的,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制。 TCP粘包和拆包 TCP是个“流”协议,所谓流,就是没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业 阅读全文
posted @ 2019-10-10 21:26 CodingDiary 阅读 (377) 评论 (0) 编辑
摘要:由于JDK中提供的ByteBuffer无法动态扩容,并且API使用复杂等原因,Netty中提供了ByteBuf。Bytebuf的API操作更加便捷,可以动态扩容,提供了多种ByteBuf的实现,以及高效的零拷贝机制。 ByteBuf的操作 ByteBuf有三个重要的属性:capacity容量,rea 阅读全文
posted @ 2019-10-06 20:51 CodingDiary 阅读 (166) 评论 (0) 编辑
摘要:Netty中的责任链 设计模式 - 责任链模式 责任链模式(Chain of Responsibility Pattern)是一种是行为型设计模式,它为请求创建了一个处理对象的链。其链中每一个节点都看作是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一节点对象。当一个请求从链式的首端发出时 阅读全文
posted @ 2019-09-26 20:55 CodingDiary 阅读 (189) 评论 (0) 编辑
摘要:Netty简介 Netty是一个高性能,高可扩展性的异步事件驱动的网络应用程序框架,它极大的简化了TCP和UDP客户端和服务器端网络开发。它是一个NIO框架,对Java NIO进行了良好的封装。作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制, 阅读全文
posted @ 2019-09-10 21:45 CodingDiary 阅读 (488) 评论 (0) 编辑
摘要:什么是Reactor模式 Reactor模式是一种设计模式,它是基于事件驱动的,可以并发的处理多个服务请求,当请求抵达后,依据多路复用策略,同步的派发这些请求至相关的请求处理程序。 Reactor模式角色构成 在早先的论文An Object Behavioral Pattern forDemulti 阅读全文
posted @ 2019-09-08 09:59 CodingDiary 阅读 (227) 评论 (0) 编辑
摘要:AIO中的A即Asynchronous,AIO即异步IO。它是异步非阻塞的,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,一般我们的业务处理逻辑会变成一个回调函数,等待IO操作完成后,由系统自动触发。 在进行读写操作时,只需直接调用API的read/write方法即可。这两 阅读全文
posted @ 2019-08-28 21:18 CodingDiary 阅读 (113) 评论 (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 阅读 (289) 评论 (2) 编辑
摘要:阻塞IO的含义 阻塞(blocking)IO :阻塞是指结果返回之前,线程会被挂起,函数只有在得到结果之后(或超时)才会返回 非阻塞(non-blocking)IO :非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回 同步(synchronous)IO :应用 阅读全文
posted @ 2019-08-22 20:15 CodingDiary 阅读 (189) 评论 (0) 编辑