[置顶] netty实战-netty client连接池设计

概述最近有很多网友在咨询netty client中,netty的channel连接池应该如何设计。这其实是个稍微有些复杂的主题,牵扯到蛮多技术点,要想在网上找不到相关的有相对完整的参考文章,确实不太容易。在本篇文章中,会给出其中一种解决方案,并且附带完整的可运行的代码。如果网友有更好的方案,可以回复本文,我们一起讨论讨论,一起开阔思路和眼界。阅读本文之前需要具备一些基础知识 知道netty的一些基础...
阅读(4891) 评论(1)

[置顶] netty实战-自定义解码器处理半包消息

概述在李林锋的Netty系列之Netty编解码框架分析中介绍了各种解码器,也推荐组合LengthFieldBasedFrameDecoder ByteToMessageDecoder这两个解码器来处理业务消息。但是有时候为了灵活性,会直接选择继承ByteToMessageDecoder来处理业务消息,但是直接继承ByteToMessageDecoder,则需要自己处理半包问题。在李林锋的【netty...
阅读(2848) 评论(11)

<netty权威指南>笔记-分隔符解码器处理半包问题

概述在以回车换行结尾的消息如何处理半包问题 一文中介绍了如何处理以回车换行的消息的半包问题,如果消息用分隔符来切割的,那么如何处理半包问题呢?可以组合使用 DelimiterBasedFrameDecoder StringDecoder 来处理半包问题。netty分隔符解码器服务端代码package nettyguide.encode.delimiter.server;import i...
阅读(1249) 评论(0)

<netty权威指南>笔记-以回车换行结尾的消息如何处理半包问题

概述TCP底层会发生粘包和拆包,这个是TCP的一个特性。为了减少网络数据传输的次数,TCP总是希望让网络数据到达一定量级的时候才将数据发送出去,而不是缓存区一有数据就马上发送数据。TCP底层会根据缓冲区是否被填满了,来决定是否发送数据。但是从业务层面上看,这个是不合理的。因为一份业务数据可能很小,还不足以填满缓冲区,这样底层TCP就不会立刻把这份业务数据发送出去,而是等到好几份业务数据的大小填满缓冲...
阅读(1265) 评论(0)

netty实战之百万级流量NioEventLoopGroup线程数配置

编写netty服务端程序的时候,会使用到两个线程组 EventLoopGroup parentGroup = new NioEventLoopGroup(); EventLoopGroup childGroup = new NioEventLoopGroup(); 那么parentGroup和childGroup分别应该设置多少个线程呢?关于netty的线程组概念,李林锋的Netty系...
阅读(1048) 评论(0)

netty实战之ChannelOption配置

服务端ServerBootstrap之ChannelOption配置public static void main(String[] args) throws InterruptedException { EventLoopGroup parentGroup = new NioEventLoopGroup(); EventLoopGroup childGroup =...
阅读(687) 评论(0)

netty demo学习文章汇总

概述到目前为止,关于netty学习的文章一共写了13篇,里面没有介绍netty实战也没有介绍netty源码分析,都是一些小demo的演示,算是作为netty学习的入门篇章。接下来会开始编写关于netty实战以及netty源码分析的文章,逐渐的深入。下面先把之前编写的netty文章做个汇总。netty demo学习文章汇总 netty学习一:用netty构造http服务的小demo netty学习二:...
阅读(779) 评论(0)

[置顶] netty学习十三:零拷贝底层实现原理

零拷贝概述零拷贝可以避免无谓的copy动作,为了说清楚这一点,本文会先从传统的读写操作开始介绍。传统读操作当应用发起一个从磁盘读取文件的操作时,请求会先经过内核,由内核与磁盘进行交互。数据会从磁盘拷贝到内核的缓存区中。这个copy动作由DMA完成,整个过程中基本上不消耗CPU。DMA 硬件和软件的信息传输,可以使用DMA(direct memory access)来完成 如果应用想拿到信息,还得...
阅读(1279) 评论(2)

netty学习十二:了解NIO Buffer中的postion和capacity和limit

netty学习十二:了解NIO Buffer中的postion和capacity和limit...
阅读(727) 评论(4)

netty学习十一:NIO客户端服务端通讯demo

netty学习十一:NIO客户端服务端通讯demo...
阅读(752) 评论(0)

netty学习十:google grpc框架环境搭建以及第一个demo

概述 本文将会介绍两部分内容: 1、window 7 上搭建grpc环境; 2、构建关于grpc的java小demo. 下载grpc java依赖包 为了能生成针对java的grpc客户端和服务端代码(官方叫stub),需要下载一些java包和grpc编译器以及一些gradle 插件 java依赖包 compile ‘io.grpc:grpc-netty:1.4.0...
阅读(1068) 评论(0)

netty学习九:(window7上)python客户端通过thrift调用java服务端

概述本文简单介绍使用python编写客户端代码,通过thrift rpc框架,调用java端远程服务。在64位window 7上安装pythonpython对应的下载链接:python下载本文使用的版本是 python-2.7.9 下载完后文件名字是 python-2.7.9.amd64.msi 点击直接安装,一路next即可。下载JetBrains PyCharmpython最好的IDE当...
阅读(911) 评论(0)

netty学习八:在window上安装thrift以及第一个小demo

下载thrift window编译器 需要先下载编译器,本文用的版本是: thrift-0.10.0.exe 对应的下载链接:thrift编译器 将下载好后的thrift-0.10.0.exe重命名成thrift.exe,并配置到window path路径上,假设thrift.exe是放置在如下目录: D:\test\software\lib\thrift 那么直接...
阅读(816) 评论(0)

netty学习七:集成protobuf完成单个对象序列化以及在网络上传输

概述本文介绍使用netty集成google的protobuf框架,完成proto JAVA对象的序列化和反序列化。编写proto文件protobuf使用.proto文件来描述对象结构体的信息。 Person.proto文件的位置 src/main/java/protobuf/seconddemo/Person.proto syntax = "proto2"; package protobuf;...
阅读(869) 评论(0)

netty学习六:第一个protobuf小demo

概述本文介绍google的protobuf框架的环境搭建以及使用它编写一个小demo。配置proto编译器如果要在window上使用proto编译器,需要下载针对window的编译器,本文使用的是: protoc-3.3.0-win32.zip 解压完后,将protoc.exe编译器所在的路径设置到path路径上. C:\sam\software\protobuf\bin 这点使用windo...
阅读(380) 评论(0)
20条 共2页1 2 下一页 尾页
    个人资料
    • 访问:381299次
    • 积分:3959
    • 等级:
    • 排名:第8806名
    • 原创:119篇
    • 转载:5篇
    • 译文:0篇
    • 评论:183条
    博客专栏