摘要:
Java NIO中的SocketChannel是一个连接到TCP网络套接字的通道。可以通过以下2种方式创建SocketChannel:打开一个SocketChannel并连接到互联网上的某台服务器。一个新连接到达ServerSocketChannel时,会创建一个SocketChannel。打开 SocketChannel下面是SocketChannel的打开方式:1SocketChannel socketChannel = SocketChannel.open();2socketChannel.connect(newInetSocketAddress("http://jenkov. 阅读全文
摘要:
1主要流程read in data:IO读入(IoProcessor)---日志记录、解码、threadPool(IoFilter)---业务逻辑处理(IoHandler)write out data:业务逻辑处理(IoHandler)---日志记录、编码、threadPool(IoFilter)---IO写出(IoProcessor)由以上可以看出,IO读入和IO写出的过程是相反的。2线程这里主要讨论一下Mina中的线程,使用线程,线程池可以提高性能,Mina中就使用了几种线程:IoAcceptor/IoConnector线程IoProcessor线程IoHandler线程2.1IoAcce 阅读全文
摘要:
Mina是Apache社区维护的一个开源的高性能IO框架,在业界内久经考验,广为使用。Mina与后来兴起的高性能IO新贵Netty一样,都是韩国人Trustin Lee的大作,二者的设计理念是极为相似的。在作为一个强大的开发工具的同时,这两个框架的优雅设计和不俗的表现,有很多地方是值得学习和借鉴的。本文将从Mina工作原理的角度出发,对其结构进行分析。总体结构Mina的底层依赖的主要是Java NIO库,上层提供的是基于事件的异步接口。其整体的结构如下:IoService最底层的是IOService,负责具体的IO相关工作。这一层的典型代表有IOSocketAcceptor和IOSocketC 阅读全文
摘要:
MINA架构这里,我借用了一张Trustin Lee在Asia 2006的ppt里面的图片来介绍MINA的架构。Remote Peer就是客户端,而下方的框是MINA的主要结构,各个框之间的箭头代表数据流向。大家可以对比刚刚的例子来看这个架构图,IoService就是整个MINA的入口,负责底层的IO操作,客户端发过来的消息就是由它处理。刚刚我们使用的IoAcceptor就是一个IoService,之所以抽象成IoService,是因为MINA用同样的架构来处理服务器和客户端编程,IoService的另一个子类就是IoConnector,用于客户端。不过根据笔者的使用经验,使用非阻塞的模型进行 阅读全文
摘要:
要想把java并发包学好,并明白其底层的设计原理,Unsafe类你不能不去研究一下。下面介绍一下Unsafe类的功能以及它在JDK中的应用。一、分配内存和释放内存 功能:类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩... 阅读全文
摘要:
注:此文章只是对如何学习java加密解密技术做一个讲解。并不涉及具体的知识介绍,如果有需要请留言,有时间我补冲长。个人觉着学习一个学习方法比学习一个知识点更有价值的多。首先,对于加密解密知识体系没有了解的同学,不建议去看什么《java加密与解密的艺术》。因为此书大多是对关于加密解密的java API的讲解,即使硬着头皮看完,也会是水里雾里的一片模糊。所以初学者还不建议直接阅读这类型书。但是初学者如何学习呢?首先,应该先搞清一些加密、解密的概念,比如AES、RSA、MD5等是什么东西,以及相关的数字签名、数字摘要还有数字证书。对于搞清楚这些概念,一定要与实际应用相结合,那样才会更容易理解。知道了 阅读全文
摘要:
一直都是在博客园看别人的博文,确实从中学到了不少。但自己从未试着写过,今天自己就突破自己这一点,将自己最近的烦恼记录下来。这是三月份,在北京IT行业算是比较好找工作的月份。我也一直在纠结中要不要跳槽,由于也没干多久,一直没有决心跳槽。但心里还是十分纠结。现在在公司没有说是真正自己开发,都是在之前的程序的基础上进行修改,为了不影响以前的代码,自己就尽可能不去重构之前的代码,但前辈留的代码确实让我痛苦,一个方法能写到五百多行。自己毕竟对系统不了解,加功能就是修改,无法将自己的编程思想用进去,感觉自己只是打补丁,一点也没得到锻炼,再就是如果调一下槽,自己可能工资再涨一下。所以萌生了跳槽的念头。其二我 阅读全文