
Java-Netty专栏
文章平均质量分 76
Java异步通讯框架Netty的使用
猿来这样1
编程圈子,谢厂节的博客
展开
-
Netty学习笔记一 项目demo
Netty是一个由JBoss提供的异步的,事件驱动的网络应用程序框架工具,用来开发高性能 高可靠性的网络服务器和客户端程序。Netty 是一个基于NIO的客户/服务端编程框架,可以简化网络应用的编程开发过程。一^_^原创 2015-05-21 14:18:48 · 4836 阅读 · 2 评论 -
Netty 学习笔记二 ByteToMessageDecoder使用
服务端使用上节的 Netty Time服务端对客户端进行改写:package io.netty.example.time;import java.util.List;import io.netty.buffer.ByteBuf;import io.netty.channel.ChannelHandlerContext;import io.netty.handler.codec.原创 2015-05-21 14:37:48 · 12163 阅读 · 0 评论 -
Netty 学习笔记 三 使用Pojo代替Bytebuf
本节的客户端代码结构为:package io.netty.example.time;import io.netty.bootstrap.Bootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.Channe原创 2015-05-21 15:14:54 · 3223 阅读 · 0 评论 -
Netty 学习笔记四 了解缓冲区
了解缓冲区NIO核心对象1. Buffer 简介2. 一段简单的Buffer使用例子3. Buffer的重要属性positionlimitcapacitymark4. 缓冲区的分配5. 子缓冲区6. 只读缓冲区7. 直接缓冲区8. 内存映射NIO核心对象在NIO中,缓冲区、选择器、通道是三个核心的对象。本文重点介绍Buffer缓冲区。1. Buffer 简介缓冲区可以理解为了一个基于数组的容器对象,在NIO库中,所有数据都是在缓冲区处理的。当要读取数据时,就把数据读到缓冲区,要写入数据时,也是把数据原创 2021-08-09 22:55:56 · 449 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记1——Java的I/O演进之路
I/O基础入门Java1.4之前对I/O的支持并不完善。开发人员在开发高性能I/O程序的时候,会面临一些巨大的挑战和困难,主要问题:没有数据缓冲区,I/O性能存在问题没有C/C++的Channel概念,只有输入和输出流同步阻塞式I/O通信(BIO),通常会导致通信线程被长时间阻塞;支持的字符集有限,硬件可移植性不好 在Java支持异步I/O之前的很长一段时间里,高性能服务端开发领域一直被C原创 2016-12-31 23:36:43 · 894 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记2——NIO入门
传统的BIO编程网络编程的基本模型是Client/Server模型,通过三次扬建立连接,如果连接建立成功,双方就可以通过网络套接字进行通信。BIO通信模型图采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连接,它接收到客户端连接请求之后为每个客户端创建一个新的线程进行链路处理,处理完成之后,通过输出流返回应答给客户端,线程销毁。这是典型的一请求一应答通信模型。该模型最原创 2017-01-01 00:34:06 · 1103 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记3——Netty NIO开发指南
Netty入门应用Netty开发环境的搭建使用Eclipse创建普通Java项目从http://netty.io/下载TCP粘包/拆包问题的解决之道分隔符和定长解码器的应用原创 2017-01-01 22:00:05 · 2257 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记4——TCP粘包/拆包问题的解决之道
TCP粘包/拆包假设客户端分别发送了两个数据包D1 和D2给服务商厦 ,由于服务端一次读取到的字节数是不确定的,故可能存在4种情况:服务端分两次读取到了两个独立的数据包,分别是D1 和 D2,没有粘包和拆包服务端一次接收到了两个数据包,D1和D2粘合在一起,被称为TCP粘包服务端分两次读取到了两个数据包,第一次读取到了完整的D1包和D2包的部分内容,第二次读取到了D2包的剩余内容,这称为TCP原创 2017-01-02 11:41:01 · 1345 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记5——分隔符和定长解码器的应用
DelimiterBasedFrameDecoder以分隔符作为码流结束标识的消息的解码 * 示例:Echo服务,以$_作为分隔符EchoServer.java关键代码@Overridepublic void initChannel(SocketChannel ch) throws Exception{ //创建分隔符缓冲对象ByteBuf,以$_为分隔符 ByteBuf de原创 2017-01-02 14:54:42 · 759 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记6——常见序列化与反序列化框架
java.io.Serializable 实现了Java的序列化,但有无法跨语言、序列化后的码流太大、序列化性能太低等缺点业界主流的编解码框架Google的protobuf由谷歌开源而来,将数据结构以.proto文件进行描述,通过代码生成工具可以生成对应数据结构的POJO对象和Protobuf相关的方法和属性。 特点如下:结构化数据存储格式(XML、JSON等)高效的编解码性能语言无关、平台原创 2017-01-02 15:12:47 · 1356 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记7——MessagePack编解码及LengthFieldBasedFrameDecoder
MessagePack是一个高效的二进制序列化框架,像JSON一样支持不同语言间的数据交换,速度更快,序列化之后的码流更小MessagePack特点编解码高效,性能高序列化后的码流小支持跨语言其支持的语言有: Java、Python、Ruby、Haskell、C#、OCaml、Lua、Go、C、C++等。官网地址: http://msgpack.org/ Git地址: https:/原创 2017-01-02 21:55:05 · 4028 阅读 · 6 评论 -
Netty权威指南 第2版学习笔记8——Google Protobuf编解码(未完)
Protobuf入门环境搭建下载Protobuf的最新windows版本…本文占位暂空…原创 2017-01-06 23:32:31 · 674 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记9——Channel,Unsafe和 AttributeMap
Channel功能说明io.netty.channel.Channel是Netty网络操抽象类,它聚合了一组功能,包括但不限于网络的读、写,客户端发起连接,主动关闭连接,链路关闭,获取通信双方的网络地址等。它也包含了Netty框架相关的一些功能框架,包括获取该Channel的EventLoop,获取缓冲分配器ByteBufAllocator和pipeline等。Channel的工作原理Channel原创 2017-03-06 10:54:10 · 890 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记10——实现HTTP服务
HttpServerimport org.apache.log4j.Logger;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.netty.channel.Channel原创 2017-03-12 15:21:00 · 872 阅读 · 0 评论 -
Netty权威指南 第2版学习笔记11——实现WebSocket
WebSocket 入门WebSocket是HTML5开始提供的一种浏览器与服务间进行全双工通信的网络技术,WebSocket通信协议于2011年被IETF定为标准RFC6455,WebSocket API 被W3C定为标准。 在WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器间就形成了一条快速通道,两者就可以直接互相传送数据了。WebSocket基于原创 2017-03-12 16:41:29 · 1217 阅读 · 0 评论 -
Netty学习笔记12——编解码器框架
文本内容来自《Netty实战》学习笔记 一、解码器1.把字节解码为消息1) ByteToMessageDecoder方法: decode(ChannelHandlerContext ctx,ByteBuf in,List<Object> out)必须实现的抽象方法。调用时传入一个ByteBuf,以及一个用来添加解码消息的List。对这个方法的调用将会重复进行,直到确定没有新的元素被添加到该List原创 2017-08-02 09:50:34 · 725 阅读 · 0 评论 -
Netty学习笔记13——一些问题记录处理
java.io.IOException: Too many open files查看当前进程打开了多少个文件句柄呢脚本 :lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more修改linux的最大文件句柄数限制的方法:ulimit -n 65535在当前session有效,用户退出或者系统重新后恢复默认值修改profile文件:在profile文件原创 2017-12-18 15:37:12 · 551 阅读 · 0 评论 -
Netty学习笔记14 使用Netty-SocketIO 实现简单聊天室程序
Netty-SocketIO 网址: https://github.com/mrniko/netty-socketio。 Netty-SocketIO是一个开源的、基于Netty的、Java版的即时消息推送项目。Socket.IO除了支持WebSocket通讯协议外,还支持许多种轮询(Polling)机制以及其它实时通信方式,并封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码。So原创 2018-02-01 10:55:38 · 2558 阅读 · 0 评论 -
Netty学习笔记15 Netty Attribute使用
Attribute<?> 用来在channel上记录数据。操作写示例AttributeKey<byte[]> srcdataAttrKey = AttributeKey.valueOf("srcdata");byte[] mydata=new byte[msg.readableBytes()];Attribute<byte[]> srcd...原创 2018-02-24 12:25:39 · 10590 阅读 · 1 评论