Java NIO框架Netty教程(三)- 字符串消息收发
了解了Netty的基本概念,开发起来应该会顺手很多。在“Hello World”代码中,我们只是在完成绑定的时候,在各自的本地打印了简单的信息,并没有客户端和服务端的消息传递。这个肯定是最基本的功能。在上代码之前,先补充一个Netty中重要的概念,ChannelBuffer。 ChannelBuffer Netty中的消息传递,都必须以字节的形式,以ChannelBuffer为载体传...
了解了Netty的基本概念,开发起来应该会顺手很多。在“Hello World”代码中,我们只是在完成绑定的时候,在各自的本地打印了简单的信息,并没有客户端和服务端的消息传递。这个肯定是最基本的功能。在上代码之前,先补充一个Netty中重要的概念,ChannelBuffer。 ChannelBuffer Netty中的消息传递,都必须以字节的形式,以ChannelBuffer为载体传...
“Hello World”的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩展。 声明,笔者一介码农,不会那么多专业的词汇和缩写,只能以最简单苍白的话来形容个人的感受和体会。如果您觉得这太不专业,笔者首先只能抱歉。 ChannelEvent 先说这个ChannelEvent,因为Netty是基于...
先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。 Netty的简介和下载可参考:开源Java高性能NIO框架推荐。注意,此时的最新版已经为3.5.2.Final。 如果你已经万事具备,那么我们先从一段代码开始。程...
转眼间工作两年有余。这两年多,很充实,收获很多。感谢一切帮助我的人。 一直非常喜欢钻研和学习,但是一直觉得自己需要一个明确的方向。否则,会事倍功半。有一本署名是自己的书,一直是我的理想。 昨天,有幸和《Java加密与解密的艺术》的作者snowolf,讨教了一下他出书的经过,很是认可,坚持总结+伯乐认可。不知道,我自己总结的这八个字,wolf兄是否认可。我开博的时候,也考虑过这些,也确实经...
一个小问题,却让我感觉到,现在真正动脑的人很少。。我来说说吧。 今天遇到一个小问题,log4j输出到文件乱码,控制台正常。显然是编码问题导致。Google一搜,几乎一水的说: 项目中log4j在英文版linux下输出中文日志为乱码。由于log4j配置文件中没有设置编码格式(encoding),所以log4j就使用系统默认编码。导致乱码。解决方法是设置编码格式UTF-8,方法为: ...
使用Netty开发分布式框架,对象的传输是基本的需求。但是,在开发中却总遇到服务端接受不到客户端的对象发送数据。遂动手解决。 如果看到最后,你可能会发现,笔者的问题是那么的二,不适合你。。所以,你可以决定不看,或者只看样例代码。笔者记录的是,个人的解决过程。 先看一下官方提供的,对象传输的样例代码:(核心部分) public void run() { // Co...
今天有人提出了代码中一个的NullPointException问题。这类问题,很好解决,找到所在行,一看便知。 但是这次,有点意外。抛异常的行,只是一个简单的Pojo的get、set方法。出错的行在 a.setSize(b.getSize()); 很自然的想到b会为null。但是前面的代码已经用过b了,也就是说,如果b是null。早就抛出空指针了。a是新new的。不会是null。se...
今天遇到一个小问题。在使用apache-commons-codec包进行编码/解码的时候,用到了Base64类的decodeBase64(String base64String)方法,这个方法在1.4版中才提供。而我们的工程中对codec存在两个间接的依赖,一个依赖1.2版本,一个依赖1.4版本,打包后,只有1.2版本,所以会报找不到该方法的错误。 这个问题其实很好解决。在依赖1.2版本的...
本文讲述的是Java中try finally代码块执行顺序,和当其存在于循环中的时候的跳出和执行问题。白话,也要简化,一段代码,来说明问题。 /** * @author OneCoder * @date 2012-6-8 下午9:21:22 * @blog http://www.coderli.com */ public static void main(String[] args...
今天处理一个关于Double.NaN的异常。 Unknown column 'NaN' in 'field list' NaN = Not a Number。就是不是数字。我们用0/0.0打印出来的结果就是NaN。 Double d = 0/0.0; System.out.println(d); JDK的Double类里,提供的NaN的实现是: public static fi...