Easy Netty 系列(七):EventLoop

EventLoop

EventLoop 是 Netty 的工作线程,EventLoop 是单线程的,每一个 EventLoop 永远只和一个 Java 线程绑定,这使得 EventLoop 处理读写事件是线程安全的(非共享 Handler)。

Netty 版本:4.1.70.Final

Netty 技术分享

这是实习期间在团队的第三次技术分享。

Easy Netty 系列(六):异常处理详解

异常处理

摘要:异常处理在任何系统中都是重要的组成部分,Netty 的异常处理是通过在 ChannelHandler 中重写 exceptionCaught 方法来实现,这篇文章聚焦于此。

Netty 版本:4.1.70.Final

Easy Netty 系列(五):ChannelHandlerContext详解

ChannelHandlerContext 的主要功能是关联 ChannelPipeline 与 ChannelHandler 然后管理 ChannelHandler,另一方面是管理和同一个 Pipeline 中的其他 Handler 的交互,也就是 Handler 之间的事件传递。

Easy Netty 系列(四):ChannelPipeline

ChannelPipeline 是 ChannelHandler 链的容器,可以说是业务逻辑处理的大动脉,所有的 IO 事件都在这里流转。

ChannelPipeline 负责 ChannelHandler 的编排,其次是传递 Channel 的事件通知。

通过图说明 ChannelPipeline 的要点

1、每一个 ChannelPipeline 和 Channel 唯一绑定

2、ChannelPipeline 是一个带有头和尾的双向管道,事件可以从头到尾流动,也可以从尾到头流动。

3、写 ChannelPipeline 的事件会是从 Pipeline 的头部开始流动事件

4、通常,如果事件从头到尾流动我们称为入站,从尾到头称为出站,入站的第一个 ChannelHandler 的序号是 1,出站的第一个 ChannelHandler 是序号 4。

Easy Netty 系列(三):ChannelHandler详解

Handler 是处理器,那它处理什么呢?网络中有什么它就做那些处理,常见的有连接的建立,响应读写事件,网络中数据的处理如编码、解码等,这些都输处理器做的,Netty 中的处理器是ChannelHandler接口,所有的处理器都是这个接口的实现。

首先说下 Netty 处理器的定位,它是 Netty 架构网络处理业务逻辑的解耦,处理器代表了与用户相关的业务逻辑,如数据读取后端计算和发送,而网络连接管理、线程控制、网络事件监听处理都由 Netty 接管,使我们可以更加专注业务逻辑,站在开发的角度使用 Netty 开发接触最多的就是ChannelHandler

Easy Netty 系列(二):Echo程序详解

摘要:这是一个简单的 echo 程序,它将接收你发过来的数据然后返回给你,通过这个 echo 程序能了解 netty 程序如何进行引导、基本组件情况。

程序清单

  • EchoServer
  • EchoServerHandler
  • EchoClient
  • EchoClientHandler

嵌入式数据库介绍

摘要:我准备写个小程序,需要简单用一下数据库,不准备用 MySQL 了(一是没有多余服务器,二是懒的装了),经过一番调研后决定尝试一下嵌入式数据库。

SpringBoot 启动时实现自动执行

摘要:有时启动 springboot 项目后需要执行一些方法初始化,如资源加载、数据准备等,首先不能放在 main 方法中 SpringApplication.run()之前,因为此时 bean 还未初始化,除非你不使用 bean,当然也不能放其后,因为 run 方法执行后启动 tomcat 会阻塞在端口监听,run 方法后的代码不会执行。

MIME 媒体类型介绍

这篇文章主要回答这些内容:

  • 如何思考解决这个问题?

  • 如何获取文件的 MIME?

  • 如何实现 MIME 类型获取的工具?

起因:我准备实现一个 HTTP 服务器,在 Response 的 Content-Type 要设置文件类型,这种类型也是有规范的,那就是 MIME,我现在需要一个工具获取文件的类型。

首先想到的是看能不能用 jdk 的工具,查了下 jdk8 有个 MimetypesFileTypeMap 类可以用,但我用的是 jdk11,在这个版本已经剔除了这个类,如果用就需要增加一个依赖。这种方式的