2024年6月26日
摘要: 在EventLoopGroup事件循环组(线程组)继承体系对Netty线程池体系有了充分了解,本文继分析其启动过程。在Netty编程模型入门案例中无论客户端还是服务端都是先对ServerBootStrap进行配置,参考下面的类图: group返回的是BootStrap本身: 在进行channel,h 阅读全文
posted @ 2024-06-26 18:49 池塘里洗澡的鸭子 阅读(4) 评论(0) 推荐(0) 编辑
  2024年6月25日
摘要: 在Netty线程模型概述已知EventLoopGroup是Netty中线程池的封装,其继承体系参考下图: 绿框中的是JDK提供的,可以看到Netty中线程池实现与JDK提供的完全不搭界——即完全不同实现。具体为: 通过跟踪调试源码,其处理流程具体如下: 阅读全文
posted @ 2024-06-25 18:56 池塘里洗澡的鸭子 阅读(5) 评论(0) 推荐(0) 编辑
  2024年6月20日
摘要: 在JDK中实现线程同步等待闭环(FutureTask/Future)中已经涉及到了Future模式,相对与多线程设计模式之Worker Thread模式有何异同呢?在多线程设计模式之Worker Thread模式中client和worker之间没有任何直接联系,即worker执行的结果client是 阅读全文
posted @ 2024-06-20 10:23 池塘里洗澡的鸭子 阅读(12) 评论(0) 推荐(0) 编辑
  2024年6月19日
摘要: 以前用C/C++写进程池,要么一下子fork最大进程数,要么来一个任务fork一个进程。多线程也可以这样设计,并总结这种模式为Worker Thread模式。 类图如下: 具体实现参考如下代码(一次性开启足够多的线程): 1)Request Request角色表示工作。Request角色中保存了工作 阅读全文
posted @ 2024-06-19 12:31 池塘里洗澡的鸭子 阅读(15) 评论(0) 推荐(0) 编辑
  2024年6月4日
摘要: 在Netty编程模型入门案例中客户端和服务端通信底层如何实现的呢?先看客户端和服务端的类图: 两类图大致一样,区别在于ServerBootstrap与EventLoopGroup是组合关系,而Bootstrap与EventLoopGroup之间没有直接的关系。实际在操作过程中也是ServerBoot 阅读全文
posted @ 2024-06-04 14:54 池塘里洗澡的鸭子 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 在Socket编程模型可以看到发送数据和响应数据直接涉及到的是I/O模型,基于TCP/IP的socket编程使用的是流套接字。那什么是I/O模型呢?简单的理解就是用什么样的通道进行数据的发送和接收——这很大程度上决定了程序通信的性能。 下面介绍另一种编程模式——Netty框架的入门案例: 服务端实现 阅读全文
posted @ 2024-06-04 10:39 池塘里洗澡的鸭子 阅读(10) 评论(0) 推荐(0) 编辑
  2024年6月3日
摘要: Socket,套接字就是两台主机之间逻辑连接的端点,其属于TCP/IP协议中的传输层协议,主要解决数据如何在网络中传输。而HTTP是应用层协议,主要解决如何包装数据(数据的格式化)。 Socket是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行 阅读全文
posted @ 2024-06-03 12:45 池塘里洗澡的鸭子 阅读(4) 评论(0) 推荐(0) 编辑
  2024年5月30日
摘要: 不同的垃圾收集器(参考JVM 垃圾收集器分类),输出的日志格式各不相同,但也有一些相同的特征。熟悉各个常用垃圾收集器的GC日志,是进行JVM调优的必备一步。 解析GC日志,首先需要收集日志(参考https://docs.oracle.com/en/java/javase/17/docs/specs/ 阅读全文
posted @ 2024-05-30 15:41 池塘里洗澡的鸭子 阅读(133) 评论(0) 推荐(0) 编辑
  2024年5月29日
摘要: 参考官网https://docs.oracle.com/en/java/javase/17/gctuning/introduction-garbage-collection-tuning.html。垃圾收集器可以分为以下四类: 1、Serial收集器 这个收集器是一个单线程工作的收集器, 但它的“单 阅读全文
posted @ 2024-05-29 13:26 池塘里洗澡的鸭子 阅读(25) 评论(0) 推荐(0) 编辑
  2024年5月28日
摘要: VisualVM 是一个工具,它提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于Java 技术的应用程序(Java 应用程序)的详细信息。VisualVM 对 Java Development Kit (JDK) 工具所检索的 JV 阅读全文
posted @ 2024-05-28 20:42 池塘里洗澡的鸭子 阅读(76) 评论(0) 推荐(0) 编辑