![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 70
lxlzhn
热爱技术,热爱互联网!
展开
-
Java的NIO实例——基于NIO的文件复制
JDK1.4中引入的NIO库,和传统IO最大的区别是:传统IO是基于Byte(字节)和Stream(流)的,而NIO是基于Buffer(缓冲)、Channel(通道)和Selector(选择器)的。下面就看下使用IO,BufferedIO和NIO分别实现的文件复制(本来想测试一下分别的性能,但是结果不是很稳定,希望有这方面数据的同学分享下):import java.io.BufferedI原创 2013-03-14 23:42:35 · 1097 阅读 · 0 评论 -
MINA 2.0 用户手册
MINA 2.0 用户手册,来自官网的User Guide,由于没有全部完成(有一部分是To be completed...),因此,现在只能给出目录和链接,也是方便自己随时查看,另外:1. 该文档最具权威性2. 该文档虽是英文的,但是比较简单易懂,借助google翻译等工具,完全可以进行快速学习3. 该文档的编排,每页的内容不是很多,有利于增强阅读者的阅读自信,像我这种不喜欢原创 2012-11-02 17:12:34 · 4770 阅读 · 1 评论 -
Java传统Socket实例——TimeServer
该实例是基于传统的ServerSocket和Socket来写的,因此使用的是也是传统的BIO(Blocking IO),并发的时候都是通过阻塞的方式来处理的,该实例是和MINA 2.0实例——TimeServer对应的,采用单线程通过循环来提供并发访问,以更好的反应BIO和NIO的区别,代码如下:import java.io.DataInputStream;import java.io.原创 2012-11-07 17:06:50 · 2614 阅读 · 0 评论 -
MINA2.0用户手册中文版--第六章 MINA中的传输 第一节 基于APR的传输
简介APR(Apache Protable Runtime Library,Apache可移植运行库)是可以提供很好的可拓展性、性能以及对底层操作系统一致性操作的技术。MINA中提供了APR的通信支持。在这部分,将通过使用一个时间服务器的例子,接触下如何基于APR通信使用MINA。必要前提APR通信依赖下面的组件:APR库 - 下载和安装相应平台的库http翻译 2012-12-30 19:22:15 · 2930 阅读 · 0 评论 -
MINA2.0用户手册中文版--第三章 第三节 服务端接口IoAcceptor
要构建一个服务端,你必须选择一个IoAcceptor接口的实现类。接口IoAcceptor基本上来说,该接口的命名是由于accpet()方法,它主要负责在一个客户端和该服务之间创建连接。然后,服务才能接受来自这些连接的请求。有时,我们会称之为“服务端”接口。因为我们需要提供处理多种传输协议(TCP/UDP/...),所以我们就提供了多种该接口的实现,我们已经提供了很翻译 2012-12-17 00:53:29 · 4814 阅读 · 0 评论 -
MINA2.0用户手册中文版--第三章 第四节 客户端接口IoConnector
要构建一个客户端,你必须选择一个IoConnector接口的实现类。IoConnector就像我们需要在服务器端实现IoAcceptor一样,我们需要在客户端中实现IoConnector。同样,我们提供了很多实现类:NioSocketConnector:非阻塞的基于TCP协议的IoConnector实现NioDatagramConector:非阻塞基于UDP协议的IoConne翻译 2012-12-17 00:59:59 · 2643 阅读 · 0 评论 -
MINA2.0用户手册中文版--第三章 第一节 IoService接口简介
(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-12-15,强烈建议看原文)在MINA中,IoService接口提供基础的I/O服务,并负责管理I/O的Sessoin。它是MINA架构中最核心的部分之一,实现IoService的子接口和类,负责了多数低级别I/O操作的处理。IoService的思维导图:我们将会来看IoService接口的职责,以及它翻译 2012-12-14 23:21:06 · 3075 阅读 · 0 评论 -
MINA2.0用户手册中文版--第三章 第二节 IoService接口详情
(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-12-15,强烈建议看原文)在MINA中,IoService接口是两个最重要的接口的父接口:IoAcceptorIoConnector要构建一个服务端,你必须选择一个IoAcceptor接口的实现类;而要构建一个客户端,你必须选择一个IoConnector接口的实现类。I翻译 2012-12-15 21:56:15 · 2310 阅读 · 0 评论 -
MINA2.0用户手册中文版--第七章 MINA中的处理程序Handler
处理程序Handler负责处理MINA触发的所有I/O事件,在事件穿越过滤器链之后,IoHandler接口将会接手所有的事件。它提供如下方法:sessionCreatedsessionOpenedsessionClosedsessionIdleexceptionCaughtmessageReceivedmessageSentsessionCreated方法方法sessionCr翻译 2012-12-28 16:49:07 · 5189 阅读 · 0 评论 -
MINA2.0用户手册中文版--第五章 MINA中的过滤器
过滤器IoFilter是MINA核心结构之一,它扮演着一个很重要的角色。它可以过滤所有在MINA服务和对应处理程序之间的I/O事件和请求。如果你有编写Java网络应用程序的经验,你可以放心的把他当做Servlet过滤器的一个远亲。MINA提供了很多现成的过滤器,它们通过简化典型的横切关注点,来加快网络应用程序的开发步伐,例如:日志过滤器LoggingFilter记录所有事件和请求协翻译 2012-12-23 21:39:55 · 7920 阅读 · 0 评论 -
MINA2.0用户手册中文版--第二章 第二节 TCP服务端实例
(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-11-20,强烈建议看原文) 本教程将引导创建一个基于MINA的程序实例,例子是一个时间服务器,需要以下先决条件:MINA 2.x CoreJDK 1.5 或 更高版本SLF4J 1.3.0 或 更高版本Log4J 1.2用户: slf4j-api.jar, slf4j-log4j12翻译 2012-11-20 22:59:15 · 5445 阅读 · 2 评论 -
MINA2.0用户手册中文版--第六章 MINA中的传输 第二节 基于串行传输
在MINA2.0中,你可以使用串行传输进行连接,就像使用TCP通信那样。获取MINA 2.0可以下载最新版本的的MINA版本。如果想获取其他版本的MINA,如果有什么疑问,可以查看开发者手册。必要前提提示信息:如果想要通过Java程序访问串行端口,需要一个本地库(.DLL 或者 .so 取决于你的操作系统). MINA使用的是RXTX.org这个 : f翻译 2013-01-01 22:08:13 · 2593 阅读 · 0 评论 -
MINA2.0用户手册中文版--第三章 MINA的IO服务接口IoService
在MINA的应用架构一章中,我们曾提到过服务接口IoService,它是MINA中包含客户端和服务端的所有服务接口(补:各种Acceptor和Connector)的最顶层父接口。 它用来处理所有与远端对等的程序端的交互(补:如果作为服务端,则指的是与需要连接的服务端的交互;如果作为服务端,则指跟远端对等的客户端交互):发送和接收消息,管理session和连接等。 它翻译 2012-12-19 17:09:15 · 2609 阅读 · 0 评论 -
tomcat启动时出现异常Exception loading sessions from persistent storage
Exception loading sessions from persistent storage java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2228) at java.io.ObjectInputStream$BlockData转载 2013-03-18 09:10:13 · 14839 阅读 · 5 评论 -
servlet/filter/listener/interceptor区别与联系
由于最近两个月工作比较清闲,个人也比较“上进”,利用工作空余时间,也继续学习了一下,某天突然想起struts2和struts1的区别的时候,发现为什么struts1要用servlet,而struts2要用filter呢?一时又发现,servlet和filter有什么区别呢?于是看了看web.xml,一时又发现,咦,servlet、filter、listener?还有个interceptor?对于这转载 2013-03-14 16:20:39 · 961 阅读 · 0 评论 -
Java常用工具类——字段验证工具ValidatorUtil
对字段进行判断的工具,每个项目必备吧,简单总结了一下,有优化的,或者更多的请提出,可以不断完善。import java.util.regex.Matcher;import java.util.regex.Pattern;/** * 字段验证工具 * @author lixinglei * */public class ValidatorUtil { /** * 判断是原创 2013-03-01 13:21:37 · 9481 阅读 · 1 评论 -
Java 理论与实践: 正确使用 Volatile 变量
对于volatile很好的讲解,不多说,来看吧:Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized的一部分。本文介绍了几种有效使用 volatile 变量的模式,并强调了几种转载 2013-03-11 21:17:51 · 722 阅读 · 0 评论 -
Java周边——应该被记住的 8 位 Java 人物
本文列举了8个Java人物,他们创建了对Java社区贡献很大的框架、产品、工具和图书,也因此改变了Java的编码方法。一起来认识下吧。8.Tomcat和Ant创办人James Duncan Davidson,1997年到2001年在Sun公司工作,他创建了Tomcat应用服务器,这是使用最为广泛的Java Web服务器,同时还创建了Ant构建工具,Ant使用XML来描述项目转载 2013-02-27 17:47:59 · 968 阅读 · 0 评论 -
Java多线程编程详解
线程的同步 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是 synchronized 关键字,它包括两种用法:synchronized 方转载 2013-03-11 22:47:56 · 857 阅读 · 0 评论 -
Java常用工具——几款性能分析工具的对比
在给客户进行应用程序维护的过程中,我注意到一些关于高负载条件下的性能问题。理论上,增加对应用程序的负载会使性能有所下降,但是我认为性能下降的比率远远高于负载的增加,同时我也发现,性能可以通过改变应用程序的逻辑来提升。为了更详细地了解这一点,我们需要做一些性能分析,这时,我们自然就要用到一些性能分析工具。Java有许多的性能分析工具,可以帮助我们弄清楚这个问题,但是我们应该使用哪一款工具呢?转载 2013-02-26 22:43:46 · 1013 阅读 · 0 评论 -
Java进阶-Java中的类装载器和命名空间
类装载器的功能及分类顾名思义,类装载器是用来把类(class)装载进JVM的。JVM规范定义了两种类型的类装载器:启动类装载器(bootstrap)和用户自定义装载器(user-defined class loader)。bootstrap是JVM自带的类装载器,用来装载核心类库,如java.lang.*等。如java.lang.Object是由bootstrap装载的。Java提供了转载 2013-03-06 23:33:25 · 1471 阅读 · 0 评论 -
Java常用工具类——获取本机正在使用的网卡的MAC地址
Java的原生代码,通过java.net.NetworkInterface获取本机正在使用的网卡中的第一个,各平台通用,winows和SUSE Linux下测试正常(如果想获取所有的网卡MAC——通过isUp()方法来区分是否正在运作,或想获取所有正在使用的网卡的MAC,稍作改动即可)的MAC地址:import java.net.NetworkInterface;import java.原创 2013-02-18 11:43:56 · 8314 阅读 · 2 评论 -
MINA2.0用户手册中文版--第四章 MINA中的Session
在MINA中,session处于核心地位:每当一个客户端连接到服务器上时,一个新的session就会被创建,它会被保存到内存中,直到客户端断开连接。Session被用来保存持久的连接信息,还会附加一些服务器在处理请求时可能需要的任何其他种类的信息,这些信息在session的整个生命周期中都是生效的。Session状态Session的状态会随着时间演变:已连接:ses翻译 2012-12-22 01:15:09 · 7428 阅读 · 1 评论 -
MINA2.0用户手册中文版--第一章 MINA2.0入门
(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-11-12,强烈建议看原文)1. NIO概述 NIO是Java New IO的简称,在JDK1.4版本中引入该API,从那时起,就被广泛的应用。通过使用她,可以通过非阻塞的方式进行IO操作。Java.nio.*包含了如下核心结构:Buffers - 用于基本类型数据的容器Cha翻译 2012-11-12 13:40:32 · 14419 阅读 · 1 评论 -
MINA2.0用户手册中文版--第二章 第五节 UDP客户端实例
(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-12-08,强烈建议看原文)这一节我们将看一下上一节中提到的UDP服务器的客户端代码:实现一个客户端需要做如下:创建一个Socket并连接到服务器设置操作处理器IoHandler收集可用内存发送数据到服务器我们来看下包org.apache.mina.example.udp.client中的代翻译 2012-12-08 09:10:59 · 3651 阅读 · 0 评论 -
MINA2.0用户手册中文版--第二章 第一节 MINA应用程序架构
(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-11-13,强烈建议看原文)简介 人们经常会问,基于MINA的应用程序的结构是什么样的呢?我们可以通过这篇文章来看一看。从MINA的简报中我们可以看到如下的一个MINA鸟瞰视图: 从这个图我们可以看到,MINA将你的应用(不管是客户端还是服务端)和基础网络层粘合起来,翻译 2012-11-13 16:36:56 · 6665 阅读 · 1 评论 -
request和ThreadLocal
1、ThreadLocal是什么: ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程转载 2012-05-24 20:44:44 · 3538 阅读 · 0 评论 -
正确理解ThreadLocal
首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作转载 2012-05-24 20:23:56 · 535 阅读 · 0 评论 -
ThreadLocal和NIO在Tomcat6中的使用
很早就听说tomcat6使用nio了,这几天突然想到一个问题,使用nio代替传统的bio,ThreadLocal岂不是会存在冲突? 首先,何谓nio? 如果读者有socket的编程基础,应该会接触过堵塞socket和非堵塞socket,堵塞socket就是在accept、read、write等IO操作的的时候,如果没有可用符合条件的资源,不马上返回,一直等待直到转载 2012-05-24 18:38:42 · 1873 阅读 · 0 评论 -
Servlet总结
index:1,什么是Servlet2,Servlet有什么作用3,Servlet的生命周期4,Servlet怎么处理一个请求5,Servlet与JSP有什么区别6,Servlet里的cookie技术7,Servlet里的过滤器8,Servlet里的监听器 一,什么是Servle转载 2011-07-28 19:54:15 · 588 阅读 · 0 评论 -
[强列推荐]关于java的hashCode方法(续)
为什么HashCode对于对象是如此的重要? 一个对象的HashCode就是一个简单的Hash算法的实现,虽然它和那些真正的复杂的Hash算法相比还不能叫真正的算法,它如何实现它,不仅仅是程序员的编程水平问题,而是关系到你的对象在存取是性能的非常重要的关系.有可能,不同的Ha转载 2011-07-27 17:20:22 · 771 阅读 · 0 评论 -
[强列推荐]关于java的hashCode方法
有许多人学了很长时间的Java,但一直不明白hashCode方法的作用,我来解释一下吧。 首先,想要明白hashCode的作用,你必须要先知道Java中的集合。 总的来说,Java中的集合(Collection)有两类,一类是List,再有一类是Set。你知道它们的区别吗?前转载 2011-07-27 16:33:50 · 436 阅读 · 0 评论 -
如何查看javacore和heapdump文件
如何查看javacore和heapdump文件转载 2011-01-28 21:45:00 · 4164 阅读 · 0 评论 -
javacore文件及heapdump文件分析
java程序运行时,有时会产生javacore及heapdump文件,为什么会产生这些文件呢?产生后应该如何分析呢?本文将回答上面的问题。转载 2011-01-28 21:35:00 · 1846 阅读 · 0 评论 -
了解构建高性能J2EE应用
构建高性能的J2EE应用不但需要了解常用的实施技巧。下面简介最常用的几种有效方法Java性能的基础—内存管理任何Java应用,单机的或J2EE的性能基础都可归结到你的应用是如何管理内存的问题。Java的内存管理包括两个重要任务:内存的分配和内存的回收。在内存的分配中,目标是要减少需要创建的对象。内存回收是导致性能下降的普遍原因。也就是说,内存中的对象越多,垃圾回收越困难。所以我们对转载 2009-11-04 22:39:00 · 729 阅读 · 0 评论 -
java tomcat与ant的环境变量配置
1. 配置Java环境变量: a. 在“系统变量”中添加变量名为“JAVA_HOME”,变量值为“D:/J2sdk5.0”的项,其中,变量值为jdk安装路径; b. 再添加变量为“CLASS_PATH”,变量值为“%JAVA_HOME%/lib”的项; c. 在“系统变量”中的变量名为path的变量值中添加“%JAVA_HOME%/bin”,其中以“;”分隔; 2. 配置Tom原创 2009-10-19 15:27:00 · 2180 阅读 · 0 评论 -
利于ThreadLocal模式管理hibernate的Session
在利用Hibernate开发DAO模块时,我们和Session打的交道最多,所以如何合理的管理Session,避免Session的频繁创建和销毁,对于提高系统的性能来说是非常重要的。我们知道Session是由SessionFactory负责创建的,而SessionFactory的实现是线程安全的,多个并发的线程可以同时访问一个SessionFactory并从中获取Session实例,那么Sessi转载 2012-05-24 20:13:56 · 598 阅读 · 0 评论 -
ThreadLocal源码分析
在阅读《Java Concurrency In Practice》时,书中提到ThreadLocal是一种更为规范常用的Thread Confine方式。于是想仔细分析一下ThreadLocal的实现方式。曾经转载了一篇关于ThreadLocal的文章:hi.baidu.com/gefforey520/blog/item/c3bb64fa4ad1779358ee902c.html,其中提到Thre转载 2012-05-24 14:35:34 · 682 阅读 · 0 评论 -
MINA2.0用户手册中文版--第二章 基础
(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-12-08,强烈建议看原文)在第一章,我们对MINA的了解如惊鸿一瞥。而在这一章,我们将要深入浅出的来看一下基于MINA的 C/S架构中的客户端和服务端。MINA应用程序架构服务端架构客户端架构TCP服务端实例TCP客户端实例UDP服务端实例UDP客户端实例小结这一章,我们介绍了MI翻译 2012-12-08 09:26:01 · 2388 阅读 · 0 评论 -
MINA2.0用户手册中文版--第二章 第四节 UDP服务端实例
(补充:由于该手册官方也在不断完善中,因此会有变化,最近一次更新时间为2012-12-08,强烈建议看原文)这一次,我们将以 org.apache.mina.example.udp包中的代码作为开始,为了保持简单,我们将只关注和MINA相关的部分。要构建一个UDP服务,我们要完成以下两点:1. 创建一个数据报Datagram Socket用来监听传入的客户端请求(参看包中的代码Memo翻译 2012-12-07 22:39:50 · 3383 阅读 · 0 评论