Netty

netty系列之:netty中的核心MessageToMessage编码器

简介 在netty中我们需要传递各种类型的消息,这些message可以是字符串,可以是数组,也可以是自定义的对象。不同的对象之间可能需要互相转换,这样就需要一个可以自由进行转换的转换器,为了统一编码规则和方便用户的扩展,netty提供了一套消息之间进行转换的框架。本文将会讲解这个框架的具体实现。 框 ... »

java高级用法之:在JNA中使用类型映射

简介 JNA中有很多种映射,library的映射,函数的映射还有函数参数和返回值的映射,libary和函数的映射比较简单,我们在之前的文章中已经讲解过了,对于类型映射来说,因为JAVA中的类型种类比较多,所以这里我们将JNA的类型映射提取出来单独讲解。 类型映射的本质 我们之前提到在JNA中有两种方 ... »

java高级用法之:在JNA中将本地方法映射到JAVA代码中

简介 不管是JNI还是JNA,最终调用的都是native的方法,但是对于JAVA程序来说,一定需要一个调用native方法的入口,也就是说我们需要在JAVA方法中定义需要调用的native方法。 对于JNI来说,我们可以使用native关键字来定义本地方法。那么在JNA中有那些在JAVA代码中定义本 ... »

flydean java

计算机编码规则之:Base64编码

简介 我们知道计算机中的文件可以分为两种,一种是人肉眼可读的文本类文件,一种是肉眼不可读的二进制文件。一般来说二进制文件如果用文本编辑器打开的话会显示乱码,并且二进制文件和文本文件的存储和传输方式是不一样的,那么有没有什么办法将二进制文件转换成为文本文件进行传输或者存储呢?答案是肯定的。 这种编码方 ... »

netty系列之:java中的base64编码器

简介 什么是Base64编码呢?在回答这个问题之前,我们需要了解一下计算机中文件的分类,对于计算机来说文件可以分为两类,一类是文本文件,一类是二进制文件。 对于二进制文件来说,其内容是用二进制来表示的,对于人类是不可立马理解的。如果你尝试用文本编辑器打开二进制文件,可能会看到乱码。这是因为二进制文件 ... »

网络协议之:socket协议详解之Unix domain Socket

简介 之前的文章我们讲到了Socket中的Stream Socket和Datagram Socket,这两种Socket通常分别是基于tcp和udp协议来进行数据的传输。这两种Socket都有一个共同的特点,那就是需要一个IP地址和端口来建立客户端和服务器端的连接。 那么今天我们会来讲解一个特殊的s ... »

Netty之非阻塞处理

Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。 一、异步模型 同步I/O : 需要进程去真正的去操作I/O; 异步I/O:内核在I/O操作完成后再通知应用进程操作结果。 怎么去理解同步和异步? 同步:比如服务端发送数据给客户端,客户端中的处理器 ... »

fyphome netty

网络协议之:socket协议详解之Socket和Stream Socket

简介 不管是在普通的网络编程中还是在netty中,都经常会提到一个词叫做socket,好像socket是一个神奇的东西,使用socket我们可以建立客户端到服务器端的连接,并且和进行客户端和服务器端的通讯,那么socket到底是什么呢?它有哪些分类呢?一起来看看吧。 Socket是什么 socket ... »

java高级用法之:调用本地方法的利器JNA

简介 JAVA是可以调用本地方法的,官方提供的调用方式叫做JNI,全称叫做java native interface。要想使用JNI,我们需要在JAVA代码中定义native方法,然后通过javah命令创建C语言的头文件,接着使用C或者C++语言来实现这个头文件中的方法,编译源代码,最后将编译后的文 ... »

Netty之DefaultAttributeMap与AttributeKey的机制和原理

一、介绍和原理分析 1.什么是 DefaultAttributeMap? DefaultAttributeMap 是一个 数组 + 链表 结构的线程安全Map。 2.什么是 AttributeKey? AttributeKey可以想象成一个缓存set,存放了一组key的集合,与DefaultAttr ... »

fyphome netty

netty通信

学习netty之前,要先了解操作系统中的IO、零拷贝(已经附上链接了) 一、netty的简单介绍 Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github 上的独立项目。 Netty 是一个异步的、基于事件驱动的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。 ... »

Netty学习一 HelloWorld

> 1、创建线程组,指定负责连接客户端的通道 > 2、初始化通道,该类继承ChannelInitializer类,并指定各种Handler > 3、添加自定义Handler,需要继承ChannelInboundHandlerAdapter 2、maven依赖 ``` io.nettynetty-all4.1.6.Final ``` 3、服务端 入口 public class He »

netty入门demo(一)

目录 前言 正文 代码部分 服务端 1. DiscardServer类,netty的服务端 2. ChildChannelHandler类: 3. DiscardServerHandler类 客服端 1.TimeClient类 2.TimeClientHandler 类 测试结果一: 解决粘包,拆包的问题测试结果 总结 最近做一个项目: 大概需求: 多个温度传感 »

Netty构建分布式消息队列实现原理浅析

  在本人的上一篇博客文章:Netty构建分布式消息队列(AvatarMQ)设计指南之架构篇 中,重点向大家介绍了AvatarMQ主要构成模块以及目前存在的优缺点。最后以一个生产者、消费者传递消息的例子,具体演示了AvatarMQ所具备的基本消息路由功能。而本文的写作目的,是想从开发、设计的角度,简单的对如何使用Netty,构建分布式消息队列背后的技术细节、原理,进行一下简单的分析和说明。   首 »

netty发送和接收数据handler处理器

  netty发送和接收数据handler处理器 主要是继承 SimpleChannelInboundHandler 和 ChannelInboundHandlerAdapter   一般用netty来发送和接收数据都会继承SimpleChannelInboundHandler和ChannelInboundHandlerAdapter这两个抽象类,那么这两个到底有什么区别呢?   其实用这两个抽象 »

Netty4.x中文教程系列(四) ChannelHandler

这篇文章用以解释ChannelHandler。笔者本身在以前写过文章ChannelHandler改动及影响 和 ChannelInitializer 学习 对Netty的.ChannelHandler做过阐述。里面主要描述了4.x版本相对于3.x版本的改动以及影响。并引用了一些文章。为大家详细的解释了ChannelHandler里面涉及架构。        1.在4.x版本中的ChannelHan »

netty4.0 Server和Client的通信

创建一个maven项目 添加Netty依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.16.Final</version> & »

netty篇-数据传输方式

为什么要使用netty的传输方式? 这里举一个例子,例子使用经典的OIO来创建一个服务器。 public class PlainOioServer { public void server(int port) throws IOException { final ServerSocket socket = new ServerSocket(port); tr »