Netty入门:HelloWorld示例与NIO框架详解

需积分: 50 13 下载量 41 浏览量 更新于2024-07-21 1 收藏 1.78MB PDF 举报
Java NIO框架Netty教程深入讲解了如何利用Netty这个强大的高性能网络编程框架来构建分布式Java应用程序。Netty是一款基于Java NIO(New I/O)的异步事件驱动的网络通信库,它特别适合处理大量的并发连接,并且被广泛用于服务器端应用,如Web服务器、RPC服务、游戏服务器等。 在开始教程之前,有必要了解Netty的基础概念。它是NIO(Non-blocking I/O)模式的应用,通过减少阻塞,提高系统的并发性能。Netty的核心优势包括事件驱动的模型、异步IO处理、易于扩展和模块化设计。对于初次接触Netty的新手,官方示例并未直接提供经典的“Hello World”案例,而是引导读者从编写一个简单的服务端服务器开始。 `HelloServer.java` 文件展示了如何使用Netty创建一个基础的服务器。首先,通过`ServerBootstrap` 创建一个服务启动器,这里使用了`NioServerSocketChannelFactory`,它基于两个线程池(一个用于I/O操作,另一个用于处理业务逻辑),确保了高效的并发处理能力。接下来,`bootstrap` 的`pipelineFactory` 方法设置了处理器(Handler),在这里是自定义的`HelloServerHandler`,负责接收和处理客户端的消息。 `HelloServerHandler` 是一个具体的处理器实现,它将接收到的消息传递给用户定义的方法进行处理。在这个例子中,没有详细展示处理器的具体逻辑,但我们可以推测它可能包含解析客户端请求、发送响应等功能。然后,服务器通过调用`bootstrap.bind()` 方法,指定监听的端口(这里是8000),以等待客户端连接。 这个简单的“Hello World”案例为学习者提供了一个良好的起点,后续的教程可能会逐步介绍Netty的事件循环机制、连接管理、数据帧处理、多路复用器、SSL支持、异步IO模型等高级特性。通过实践这些内容,开发者可以熟练掌握如何利用Netty构建高效、可扩展的网络服务,适应不断变化的分布式系统需求。
2012-01-05 上传
项目中有一个城市导航,导航上有一个城市搜索,即用户输入城市名、或拼音即可有匹配的提示,方便用户选择。于是乎下载了一个jquery.autocomplete-1.1.3,但引用到项目后,发现几个问题,并相应做了修改: 1.中文输入后,服务端不能正常获取ajax提交的数据(此处,当然可以用相应转码,本人试了n种方便仍改),细看代码发现, 是用 $.get(this.serviceUrl, me.options.params, function(txt) { me.processResponse(txt); }, 'text'); 提交的, 于是改成了我熟悉的提交方式。 $.ajax({url:this.serviceUrl,data:"query="+me.options.params.query,timeout: 5000,success: function(o){me.processResponse(o);}}); 问题立即解决。 猜想,是默认utf-8编码与我服务端过滤器中转码以及代码的转码发生了冲突。 2.当输入框值发生变化时,onchange事件不灵敏。 于是,添加了一个函数,输入值一但onchange就调用 。 onKeyProcessDefult: function(i) { var me, fn, s, d; me = this; s = me.suggestions[i]; d = me.data[i]; if(this.currentValue!=s || undefined==d){d="";s="";} this.selectedIndex=0; //输入时,一但有匹配的项,就默认选择第一项,这样,再按回车键,即可直接submit提交 jht添加 2011-07-20 $(".auto_selected_val").val(d); } 3. 当输入正确值,而不去选择相应提示项时,按回车键,不能完成自动提交。另外就是,当输入正确值,而不去选择相应提示项进,点击后面的提交按钮,也不能完成提交。(赶集网的城市切换也有这个小瑕疵哦)。 于是修改为,一但输入后只有可匹配的项时,就默认选中第一项(代码如上)。 这样,再提交就不是问题了。 4.输入值,当没有相应匹配项时,没有任何提示,不友好,影响用户体验。 5.服务服端注意返回json格式参数格试哦{ query:'c',suggestions:['北京','保定','包头','本溪'],data:['hr','cu','cy','cz'] } 项目应用实例:http://www.juyuan.com/members/city 参考实案例:http://www.ganji.com/index.htm