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

嵌入式数据库介绍

刘启春

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

SpringBoot 启动时实现自动执行

刘启春

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

MIME 媒体类型介绍

刘启春

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

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

  • 如何获取文件的 MIME?

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

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

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

Easy Netty 系列(一):netty 入门

刘启春

摘要:这是最近学习的一些成果,预计会有十几篇文章,我准备用通俗有趣的语言把它分享给你,让你学习 Neety 变的 Easy,敬请期待。

当我们打开 Netty 官网,会看到一个赫然的标题。

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.

译文:Netty 是一个异步事件驱动网络编程框架,用于快速开发可维护的高性能协议服务器和客户端。

从中我们提取一些重点:异步、事件驱动、协议、服务器和客户端。

没错,这就是 Netty 的特点,基于 Reactor 线程模型异步能力,基于 epoll 处理 IO 的能力,内置了许多协议处理器和编解码器,只需要简单配置,就能实现高性能的服务器-客户端应用。

Netty 发展十几年,Java 生态许多高性能的中间件都是用了它,例如:Apache Flink、Apache Spark、Elastic Search 等,这说明 Netty 是优良网络编程框架。

开源|一个操作日志工具

开源|一个操作日志工具

刘启春

摘要:业务系统中难免要记录敏感操作,可以通过硬编码或者简单注解实现,但是都不够优雅,今天分享一个自己写的日志工具。

这是参考美团的一篇文章所实现的日志工具,能够灵活地记录操作日志,并且具有较好的扩展性,欢迎尝鲜。下面是这个工具的介绍和使用教程。

代码仓库:https://github.com/elltor/oplog

今天1024节日快乐

刘启春

去年过了第一个 1024 在实验室的创客中心,今天在外地。去年 1024 写了一篇文章,记录了属于程序员的仪式感,今年也应该写篇文章记录一下,毕竟每年都是一个特别的 1024。

实验室今年也举办了 1024 活动,群里发了些照片,保存了一些图片留念。