精通并发与Netty(Netty 的Hello world 程序)

本文详细介绍如何在Eclipse中使用Gradle构建Netty项目,包括环境配置、依赖管理、项目搭建及首个实例运行过程,适合初学者快速上手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境安装配置:

     笔者使用的是eclipse  ,用的gradle 构建管理项目

     eclipse安装gradle 插件以及gradle 安装配置自行百度啦,这里不做过多的介绍

配置好之后,然后再新建一个gradle 项目,这里不做截图

然后在项目中build.gradle 文件,主要的依赖包管理在这个文件中写配置信息

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java Library project to get you started.
 * For more details take a look at the Java Libraries chapter in the Gradle
 * user guide available at https://docs.gradle.org/4.7/userguide/java_library_plugin.html
 */

plugins {
    // Apply the java-library plugin to add support for Java Library
    id 'java-library'
}

dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api 'org.apache.commons:commons-math3:3.6.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation 'com.google.guava:guava:23.0'

    // Use JUnit test framework
    testImplementation 'junit:junit:4.12'
    compile(
    	"io.netty:netty-all:4.1.10.Final"
    )
}

// In this section you declare where to find the dependencies of your project
repositories {
    // Use jcenter for resolving your dependencies.
    // You can declare any Maven/Ivy/file repository here.
    mavenCentral()
}

这里将仓库改为mavenCentral()

引入了 io.netty:netty-all:4.1.10.Final 这个包,这是一个完整的netty 4.1.10包,里面包含了该版本所有的依赖文件,详情可以去GitHub上或者去官网上下载该包查看里面的具体结构,不做过多的介绍,那么到此为止开始上代码

TestServer.class :这个类的作用主要是启动服务,接收链接,并监听处理自定义处理器

public class TestServer {
	
		public static void main(String[] args) throws Exception {
			
			//NIOEventGroup一个死循环  类似Tomcat  不断监听客户端的请求,然后给出响应
			//bossgroup负责接受连接,然后转发给workergroup进行连接的后续处理
			EventLoopGroup bossGroup = new NioEventLoopGroup(); 
			EventLoopGroup workerGroup = new NioEventLoopGroup();
			
			try{
				//用来启动服务
				ServerBootstrap serverBootStrap = new ServerBootstrap();
				//childHandle 是自己的处理器
				serverBootStrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).
				childHandler(new TestServerInitializar());
				//绑定端口
				ChannelFuture channelFuture = serverBootStrap.bind(8899).sync();
				//关闭连接
				channelFuture.channel().closeFuture().sync();
			}finally{
				//关闭
				bossGroup.shutdownGracefully();
				workerGroup.shutdownGracefully();
			}
		}
}

TestServerInitializar.class :初始化器类,初始化通道,在pipeline管道中添加系统的处理器或者自定义处理器,用以类似拦截器,调用处理器中的方法,实现具体的业务逻辑

//初始化器
public class TestServerInitializar extends ChannelInitializer<SocketChannel> {
		
	@Override
	protected void initChannel(SocketChannel ch) throws Exception {
		//pipeline 管道  相当于拦截器,针对不同的业务有不同的处理方法
		ChannelPipeline pipeline = ch.pipeline();
		pipeline.addLast("httpServerCodec" ,new HttpServerCodec());
		pipeline.addLast("testHttpServerHandler",new TestHttpServerHandle());
	}
}

TestHttpServerHandle.class :实现SimpleChannelInboundHandle 接口,用来实现自己业务逻辑代码,这里是给客户端返回一个Hello world

//自定义处理器
public class TestHttpServerHandle extends SimpleChannelInboundHandler<HttpObject> {
		@Override  
		//channelread0是实际获取到请求并给出真正响应的处理方法
		protected void channelRead0(ChannelHandlerContext ctx, HttpObject msg)
				throws Exception {
			// TODO Auto-generated method stub
			if(msg instanceof HttpRequest){
				//定义内容
				ByteBuf content  = Unpooled.copiedBuffer("Hello World", CharsetUtil.UTF_8);
				FullHttpResponse response = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1,
						HttpResponseStatus.OK,content);
				//定义头
				response.headers().set(HttpHeaderNames.CONTENT_TYPE,"text/plain");
				response.headers().set(HttpHeaderNames.CONTENT_LENGTH,content.readableBytes());
				//一定要用writeAndFlush  write方法内容会在缓冲区不会真正写入
				ctx.writeAndFlush(response);
			}
		}
}

自此,启动testServer类,浏览器中输入 http://localhost:8899

然后控制台没有抛出异常信息  OK了,第一个netty事例程序完美完成,后续再学习各个组件的详细内容及各种API的具体细节,bye!

 

 

 

 

 

精通并发netty视频教程(2018)视频教程 netty视频教程 Java视频教程目录: 1_学习的要义 2_Netty宏观理解 3_Netty课程大纲深度解读 4_项目环境搭建Gradle配置 5_Netty执行流程分析重要组件介绍 6_Netty回调Channel执行流程分析 7_Netty的Socket编程详解 8_Netty多客户端连接通信 9_Netty读写检测机制长连接要素 10_Netty对WebSocket的支援 11_Netty实现服务器端客户端的长连接通信 12_Google Protobuf详解 13_定义Protobuf文件及消息详解 14_Protobuf完整实例详解 15_Protobuf集成Netty多协议消息传递 16_Protobuf多协议消息支援工程最佳实践 17_Protobuf使用最佳实践Apache Thrift介绍 18_Apache Thrift应用详解实例剖析 19_Apache Thrift原理架构解析 20_通过Apache Thrift实现JavaPython的RPC调用 21_gRPC深入详解 22_gRPC实践 23_Gradle Wrapper在Gradle项目构建中的最佳实践 24_gRPC整合Gradle代码生成 25_gRPC通信示例JVM回调钩子 26_gRPC服务器流式调用实现 27_gRPC双向流式数据通信详解 28_gRPCGradle流畅整合及问题解决的完整过程思考 29_Gradle插件问题解决方案Nodejs环境搭建 30_通过gRPC实现JavaNodejs异构平台的RPC调用 31_gRPC在Nodejs领域中的静态代码生成及Java之间的RPC通信 32_IO体系架构系统回顾装饰模式的具体应用 33_Java NIO深入详解体系分析 34_Buffer中各重要状态属性的含义关系图解 35_Java NIO核心类源码解读分析 36_文件通道用法详解 37_Buffer深入详解 38_NIO堆外内存零拷贝深入讲解 39_NIO中ScatteringGathering深度解析 40_Selector源码深入分析 41_NIO网络访问模式分析 42_NIO网络编程实例剖析 43_NIO网络编程深度解析 44_NIO网络客户端编写详解 45_深入探索Java字符集编解码 46_字符集编解码全方位解析 47_Netty服务器客户端编码模式回顾及源码分析准备 48_NettyNIO系统总结及NIONetty之间的关联关系分析 49_零拷贝深入剖析及用户空间内核空间切换方式 50_零拷贝实例深度剖析 51_NIO零拷贝彻底分析Gather操作在零拷贝中的作用详解 52_NioEventLoopGroup源码分析线程数设定 53_Netty对Executor的实现机制源码分析 54_Netty服务端初始化过程反射在其中的应用分析 55_Netty提供的FutureChannelFuture优势分析源码讲解 56_Netty服务器地址绑定底层源码分析 57_Reactor模式透彻理解及其在Netty中的应用 58_Reactor模式Netty之间的关系详解 59_AcceptorDispatcher角色分析 60_Netty的自适应缓冲区分配策略堆外内存创建方式 61_Reactor模式5大角色彻底分析 62_Reactor模式组件调用关系全景分析 63_Reactor模式Netty组件对比及Acceptor组件的作用分析 64_ChannelChannelPipeline关联关系及模式运用 65_ChannelPipeline创建时机高级拦截过滤器模式的运用 66_Netty常量池实现及ChannelOptionAttribute作用分析 67_ChannelChannelHandler及ChannelHandlerContext之间的关系分析 68_Netty核心四大组件关系构建方式深度解读 69_Netty初始化流程总结及ChannelChannelHandlerContext作用域分析 70_Channel注册流程深度解读 71_Channel选择器工厂轮询算法及注册底层实现 72_Netty线程模型深度解读架构设计原则 73_Netty底层架构系统总结应用实践 74_Netty对于异步读写操作的架构思想观察者模式的重要应用 75_适配器模式模板方法模式在入站处理器中的应用 76_Netty项目开发过程中常见且重要事项分析 77_Java NIO Buffer总结回顾难点拓展 78_Netty数据容器ByteBuf底层数据结构深度剖析 79_Netty的ByteBuf底层实现大揭秘 80_Netty复合缓冲区详解3种缓冲区适用场景分析 81_Netty引用计数的实现机制自旋锁的使用技巧 82_Netty引用计数原子更新揭秘AtomicIntegerFieldUpdater深度剖析 83_AtomicIntegerFieldUpdater实例演练volatile关键字分析 84_Netty引用计数注意事项内存泄露检测方式 85_Netty编解码器剖析入站出站处理器详解 86_Netty自定义编解码器TCP粘包拆包问题 87_Netty编解码器执行流程深入分析 88_ReplayingDecoder源码分析特性解读 89_Netty常见且重要编解码器详解 90_TCP粘包拆包实例演示及分析 91_Netty自定义协议TCP粘包拆包问题解决之道 92_精通并发Netty课程总结展望
1讲:学习的要义 第2讲:Netty宏观理解 第3讲:Netty课程大纲深度解读 第4讲:项目环境搭建Gradle配置 第5讲:Netty执行流程分析重要组件介绍 第6讲:Netty回调Channel执行流程分析 第7讲:Netty的Socket编程详解 第8讲:Netty多客户端连接通信 第9讲:Netty读写检测机制长连接要素 第10讲:Netty对WebSocket的支援 第11讲:Netty实现服务器端客户端的长连接通信 第12讲:Google Protobuf详解 第13讲:定义Protobuf文件及消息详解 第14讲:Protobuf完整实例详解 第15讲:Protobuf集成Netty多协议消息传递 第16讲:Protobuf多协议消息支援工程最佳实践 第17讲:Protobuf使用最佳实践Apache Thrift介绍 第18讲:Apache Thrift应用详解实例剖析 第19讲:Apache Thrift原理架构解析 第20讲:通过Apache Thrift实现JavaPython的RPC调用 第21讲:gRPC深入详解 第22讲:gRPC实践 第23讲:Gradle Wrapper在Gradle项目构建中的最佳实践 第24讲:gRPC整合Gradle代码生成 第25讲:gRPC通信示例JVM回调钩子 第26讲:gRPC服务器流式调用实现 第27讲:gRPC双向流式数据通信详解 第28讲:gRPCGradle流畅整合及问题解决的完整过程思考 第29讲:Gradle插件问题解决方案Nodejs环境搭建 第30讲:通过gRPC实现JavaNodejs异构平台的RPC调用 第31讲:gRPC在Nodejs领域中的静态代码生成及Java之间的RPC调用 第32讲:IO体系架构系统回顾装饰模式的具体应用 第33讲:Java NIO深入详解体系分析 第34讲:Buffer中各重要状态属性的含义关系图解 第35讲:Java NIO核心类源码解读分析 第36讲:文件通道用法详解 第37讲:Buffer深入详解 第38讲:NIO堆外内存零拷贝深入讲解 第39讲:NIO中ScatteringGathering深度解析 第40讲:Selector源码深入分析 第41讲:NIO网络访问模式分析 第42讲:NIO网络编程实例剖析 第43讲:NIO网络编程深度解析 第44讲:NIO网络客户端编写详解 第45讲:深入探索Java字符集编解码 第46讲:字符集编解码全方位解析 第47讲:Netty服务器客户端编码模式回顾及源码分析准备 第48讲:NettyNIO系统总结及NIONetty之间的关联关系分析 第49讲:零拷贝深入剖析及用户空间内核空间切换方式 第50讲:零拷贝实例深度剖析 第51讲:NIO零拷贝彻底分析Gather操作在零拷贝中的作用详解 第52讲:NioEventLoopGroup源码分析线程数设定 第53讲:Netty对Executor的实现机制源码分析 第54讲:Netty服务端初始化过程反射在其中的应用分析 第55讲:Netty提供的FutureChannelFuture优势分析源码讲解 第56讲:Netty服务器地址绑定底层源码分析 第57讲:Reactor模式透彻理解及其在Netty中的应用 第58讲:Reactor模式Netty之间的关系详解 第59讲:AcceptorDispatcher角色分析 第60讲:Netty的自适应缓冲区分配策略堆外内存创建方式 第61讲:Reactor模式5大角色彻底分析 第62讲:Reactor模式组件调用关系全景分析 第63讲:Reactor模式Netty组件对比及Acceptor组件的作用分析 第64讲:ChannelChannelPipeline关联关系及模式运用 第65讲:ChannelPipeline创建时机高级拦截过滤器模式的运用 第66讲:Netty常量池实现及ChannelOptionAttribute作用分析 第67讲:ChannelChannelHandler及ChannelHandlerContext之间的关系分析 第68讲:Netty核心四大组件关系构建方式深度解读 第69讲:Netty初始化流程总结及ChannelChannelHandlerContext作用域分析 第70讲:Channel注册流程深度解读 第71讲:Channel选择器工厂轮询算法及注册底层实现 第72讲:Netty线程模型深度解读架构设计原则 第73讲:Netty底层架构系统总结应用实践 第74讲:Netty对于异步读写操作的架构思想观察者模式的重要应用 第75讲:适配器模式模板方法模式在入站处理器中的应用 第76讲:Netty项目开发过程中常见且重要事项分析 第77讲:Java NIO Buffer总结回顾难点拓展 第78讲:Netty数据容器ByteBuf底层数据结构深度剖析 第79讲:Netty的ByteBuf底层实现大揭秘 第80讲:Netty复合缓冲区详解3种缓冲区适用场景分析 第81讲:Netty引用计数的实现机制自旋锁的使用技巧 第82讲:Netty引用计数原子更新揭秘AtomicIntegerFieldUpdater深度剖析 第83讲:AtomicIntegerFieldUpdater实例演练volatile关键字分析 第84讲:Netty引用计数注意事项内存泄露检测方式 第85讲:Netty编解码器剖析入站出站处理器详解 第86讲:Netty自定义编解码器TCP粘包拆包问题 第87讲:Netty编解码器执行流程深入分析 第88讲:ReplayingDecoder源码分析特性解读 第89讲:Netty常见且重要编解码器详解 第90讲:TCP粘包拆包实例演示及分析 第91讲:Netty自定义协议TCP粘包拆包问题解决之道 第92讲:精通并发Netty课程总结展望
精通并发 netty 视频教程(2018)视频教程。 精通并发netty视频教程(2018)视频教程 netty视频教程 Java视频教程目录: 1_学习的要义 2_Netty宏观理解 3_Netty课程大纲深度解读 4_项目环境搭建Gradle配置 5_Netty执行流程分析重要组件介绍 6_Netty回调Channel执行流程分析 7_Netty的Socket编程详解 8_Netty多客户端连接通信 9_Netty读写检测机制长连接要素 10_Netty对WebSocket的支援 11_Netty实现服务器端客户端的长连接通信 12_Google Protobuf详解 13_定义Protobuf文件及消息详解 14_Protobuf完整实例详解 15_Protobuf集成Netty多协议消息传 递 16_Protobuf多协议消息支援工程最佳实践 17_Protobuf使用最佳实践Apache Thrift介绍 18_Apache Thrift应用详解实例剖析 19_Apache Thrift原理架构解析 20_通过Apache Thrift实现JavaPython的RPC调用 21_gRPC深入详解 22_gRPC实践 23_Gradle Wrapper在Gradle项目构建中的最佳实践 24_gRPC整合Gradle代码生成 25_gRPC通信示例JVM回调钩子 26_gRPC服务器流式调用实现 27_gRPC双向流式数据通信详解 28_gRPCGradle流畅整合及问题解决的完整过程思考 29_Gradle插件问题解决方案Nodejs环境搭建 30_通过gRPC实现JavaNodejs异构平台的RPC调用 31_gRPC在Nodejs领域中的静态代码生成及Java之间的RPC通信 32_IO体系架构系统回顾装饰模式的具体应用 33_Java NIO深入详解体系分析 34_Buffer中各重要状态属性的含义关系图解 35_Java NIO核心类源码解读分析 36_文件通道用法详解 37_Buffer深入详解 38_NIO堆外内存零拷贝深入讲解 39_NIO中ScatteringGathering深度解析 40_Selector源码深入分析 41_NIO网络访问模式分析 42_NIO网络编程实例剖析 43_NIO网络编程深度解析 44_NIO网络客户端编写详解 45_深入探索Java字符集编解码 46_字符集编解码全方位解析 47_Netty服务器客户端编码模式回顾及源码分析准备 48_NettyNIO系统总结及NIONetty之间的关联关系分析 49_零拷贝深入剖析及用户空间内核空间切换方式 50_零拷贝实例深度剖析 51_NIO零拷贝彻底分析Gather操作在零拷贝中的作用详解 52_NioEventLoopGroup源码分析线程数设定 53_Netty对Executor的实现机制源码分析 54_Netty服务端初始化过程反射在其中的应用分析 55_Netty提供的FutureChannelFuture优势分析源码讲解 56_Netty服务器地址绑定底层源码分析 57_Reactor模式透彻理解及其在Netty中的应用 58_Reactor模式Netty之间的关系详解 59_AcceptorDispatcher角色分析 60_Netty的自适应缓冲区分配策略堆外内存创建方式 61_Reactor模式5大角色彻底分析 62_Reactor模式组件调用关系全景分析 63_Reactor模式Netty组件对比及Acceptor组件的作用分析 64_ChannelChannelPipeline关联关系及模式运用 65_ChannelPipeline创建时机高级拦截过滤器模式的运用 66_Netty常量池实现及ChannelOptionAttribute作用分析 67_ChannelChannelHandler及ChannelHandlerContext之间的关系分析 68_Netty核心四大组件关系构建方式深度解读 69_Netty初始化流程总结及ChannelChannelHandlerContext作用域分析 70_Channel注册流程深度解读 71_Channel选择器工厂轮询算法及注册底层实现 72_Netty线程模型深度解读架构设计原则 73_Netty底层架构系统总结应用实践 74_Netty对于异步读写操作的架构思想观察者模式的重要应用 75_适配器模式模板方法模式在入站处理器中的应用 76_Netty项目开发过程中常见且重要事项分析 77_Java NIO Buffer总结回顾难点拓展 78_Netty
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值