Java
文章平均质量分 86
千与
系统架构设计,分布式系统,海量数据处理,机器学习。
展开
-
基于BIO的Java Socket通信
BIO,即阻塞IO,在基于Socket的消息通信过程中,Socket服务端向外部提供服务,而Socket客户端可以建立到Socket服务端的连接,进而发送请求数据,然后等待Socket服务端处理,并返回处理结果(响应)。基于BIO的通信,Socket服务端会发生阻塞,即在监听过程中每次accept到一个客户端的Socket连接,就要处理这个请求,而此时其他连接过来的客户端只能阻塞等待。可见,这种模式下Socket服务端的处理能力是非常有限的,客户端也只能等待,直到服务端空闲时进行请求的处理。下面基于BIO模原创 2011-03-16 22:23:00 · 10819 阅读 · 2 评论 -
数据库连接池应用中数据库服务器断开超时连接的问题
数据库应用开发过程中,我们可能会遇到一个问题:应用使用了数据库连接池,每经过指定时间后,发出到数据库服务器的任何请求都会失败,而且有且仅有一次失败,之后的正常访问都没有问题。尤其是在Web应用中,如果晚上时段没有访问,而第二天第一个访客的经历就是碰到一个数据库访问错误,如果开发系统的程序员没有注意这个问题的话,可能终端用户访问会看到抛出的一堆数据库异常信息。其实,这个问题的主要原因是,应用中数原创 2012-12-02 17:38:14 · 16162 阅读 · 1 评论 -
基于Java NIO的Socket通信
Java NIO模式的Socket通信,是一种同步非阻塞IO设计模式,它为Reactor模式实现提供了基础。下面看看,Java实现的一个服务端和客户端通信的例子。NIO模式的基本原理描述如下:服务端打开一个通道(ServerSocketChannel),并向通道中注册一个选择器(Selector),这个选择器是与一些感兴趣的操作的标识(SelectionKey,即通过这个标识可以定位到原创 2011-03-20 23:40:00 · 29569 阅读 · 5 评论 -
JProfiler 6.0.2 (Build 6053)监控本地服务程序性能
在Java开发的项目中,可以使用JProfiler来检查和跟踪所开发系统的性能,该工具能够实时的监控系统运行过程中的内存使用情况,监视垃圾回收,以及线程运行状况等手段,从而很好的监视JVM运行情况及其性能,保证我们开发的系统在投入到生产之前,即使发现可能出现的一些低级错误而导致系统性能不稳定,或者直接就中断服务,甚至系统上线就面临着下线的危险。 下面,我们通过整合安装在本地机器的Resin原创 2010-08-31 18:18:00 · 4082 阅读 · 0 评论 -
Spring+JMS+ActiveMQ+Tomcat实现消息服务
<br />基于Spring+JMS+ActiveMQ+Tomcat,我使用的版本情况如下所示:Spring 2.5ActiveMQ 5.4.0Tomcat 6.0.30<br />下面通过学习与配置,实现消息服务的基本功能:发送与接收。Spring对JMS提供了很好的支持,可以通过JmsTemplate来方便地实现消息服务。这里,我们的消息服务不涉及事务管理。下面简单说明实现过程:<br />先看一下,我们最终的Spring配置文件applicationContext.xml的内容,如下所示:<br />原创 2011-04-25 22:25:00 · 23094 阅读 · 9 评论 -
基于Spring实现定时调度
<br />比较常用的是,Spring对Quartz的支持,可以非常容易地进行定时任务的调度。一般,具有两种方式实现定时调度:<br />一种是通过继承Spring的org.springframework.scheduling.quartz.QuartzJobBean来定义定时任务,这种情况下与Spring代码有一定耦合。下面,通过例子来说明:<br />实现一个定时任务类,代码如下所示:<br />package org.shirdrn.spring.scheduler.quartz;import原创 2011-04-24 23:41:00 · 5277 阅读 · 0 评论 -
Spring基于JMS实现远程访问
<br />使用JMS作为底层通信协议,Spring提供了很好的支持。我们可以基于JMS将服务暴露给外部,这一切对于外部完全透明。这里我们基于开源消息中间件ActiveMQ作为中间代理,通过在服务端将服务以消息的形式发布到代理服务器上,然后客户端通过代理服务器实现对服务的远程调用。<br />ActiveMQ的BrokerService可以非常容易地实现服务端与客户端进行通信的中间代理,Spring配置broker.xml内容如下所示:<br /><?xml version="1.0" encoding="原创 2011-04-24 20:47:00 · 7996 阅读 · 0 评论 -
JMX技术基础
<br />JMX在J2SE 5和J2SE 6平台略有不同,我们基于J2SE 6来学习JMX。JMX已经成功Java 2平台的一部分,它的目标是动态管理和监控你所感兴趣的资源,例如应用程序、设备、服务、JVM等。JMX能够支持通过本地和远程访问的方式,来实现对相关资源的管理和监控。JMX只是对应用程序管理的扩展,而非必选,那么,如果我们选择为系统实现JMX管理功能,能够带来哪些好处呢?<br />第一、基于JMX来管理现有的Java应用程序,可以非常容易的基于Java技术实现,而无需更大的投入;<br />原创 2011-04-24 01:12:00 · 4163 阅读 · 0 评论 -
Spring与JMX集成
Spring与JMX集成,实现方式灵活而且简单,主要体现在:1、可以自动探测实现MBean接口的MBean对象,而且可以将一个普通的Spring Bean注册为MBean;2、定制管理MBean的接口,根据需要暴露特定管理MBean的操作;3、使用注解定义MBean管理接口;4、可以实现对本地和远程MBean的代理。标准MBean管理对于实现标准MBean接口MBean资源,在Spring中可以设置不同的探测模式,主要是通过MBeanExporter来实现。例如,定义MBean管理接口:package o原创 2011-04-24 13:00:00 · 32675 阅读 · 5 评论 -
Spring与RMI集成实现远程访问
<br />使用Spring对RMI的支持,可以非常容易地构建你的分布式应用。在服务端,可以通过Spring的org.springframework.remoting.rmi.RmiServiceExporter可以暴露你的服务;在客户端,通过org.springframework.remoting.rmi.RmiProxyFactoryBean可以使用服务端暴露的服务,非常方便。这种C/S模型的访问方式,可以屏蔽掉RMI本身的复杂性,如服务端Skeleton和客户端Stub等的处理细节,这些对于服务开发和原创 2011-04-24 19:43:00 · 36912 阅读 · 7 评论 -
Spring与MX4J集成实现JMX管理
<br />MX4J是一个开源JMX管理框架,支持JSR3 (JMX) 和JSR160 (JMX Remote API)。通过Spring将MX4J集成到我们的应用系统中,可以通过HTTP协议适配,能够基于Web的方式来实现对应用系统的监控和管理。这里,使用的版本分别为:Spring 2.5<br />MX4J 3.0.2<br />MX4J对应的几个JAR文件,加入到CLASSPATH:mx4j.jarmx4j-impl.jarmx4j-jmx.jarmx4j-remote.jarmx4j-rimpl.j原创 2011-05-10 00:52:00 · 7896 阅读 · 0 评论 -
使用iBatis作为持久层实现快速开发
可能大家对iBatis的开发使用已经能够耳熟能详了,但是我们这里并非是对一个新的持久层方案做推广式的介绍,我想说的是,使用任何一个持久层解决方案,都应该能很好地将屏蔽物理数据库的复杂性,iBatis也一样。然而,对于开发人员来说,甚至是经历比较资深的程序员,在选择持久层方案与JDBC直连的时候,往往都会觉得iBatis配置比较复杂,而直接使用JDBC可以非常游刃有余地写出复杂容易理解的SQL语句,原创 2012-12-02 16:52:59 · 4295 阅读 · 0 评论