反向Ajax之基于IFrame的Comet
Tomcat提供了一种高级IO,可以实现Comet的功能。Servlet需要实现 CometProcessor接口,并且设置Tomcat连接器为org.apache.coyote.http11.Http11NioProtocol下面代码实现的功能还是获取服务器JVM信息。import java.io.IOException;import java.io.PrintWriter;import java.util.Dat...
反向Ajax之异步Servlet
实现反向Ajax功能,除了WebSocket之外,还有Servlet3.0提供的异步Servlet.实验通过Servlet3.0的异步Servlet实现获取服务器端JVM信息的功能。http://blog.itpub.net/29254281/viewspace-1064838/1.异步Servlet程序设置asyncSupported为true,并返回组装的JS代码。import java.io.IOException;imp...
反向Ajax之WebSocket
WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。反向Ajax在观察者模型、聊天系统中应用的越来越多。如股票,监控等系统。以聊天系统为例,如果没有服务器推的技术,Web聊天系统只能以固定的时间间隔轮询服务器。这会产生大量的无用的连接,对服务器造成巨大压力。在单位写过一个IM聊天系...
连接池优化之启用PoolPreparedStatements
DBCP连接池可以缓存PreparedStatement,本质上就是缓存游标。 一个SQL语句,无论是Insert,Update,Delete还是Select都是游标操作,只不过Select游标指向查询结果,而其余的指向修改的目标。 除了连接可以缓存,游标也是可以缓存的,主要是避免游标的反复创建。虽然Oracle对完全相...
JAVA多态特性的实验
1.对象的数据成员没有多态特性一下实验证明了数据成员不存在多态的特性。如果是Base指针,就指向Base的数据成员;如果是Derived的指针,就指向Derived的数据成员。class Base { protected int i = 47;}class Derived extends Base {...
JAVA对象的初始化顺序
JAVA对象初始化顺序,实验代码如下:class Base{ private int i=Test.print("Base 数据成员i"); private static int I=Test.print("Base 静态成员I"); private static int J=Test.print("Base ...
JAVA与编码
JAVA很容易出现乱码...具体分析以下几个环节的编码。1.编译 JAVA源文件可能是GBK编码也可能是UTF8编码,使用javac命令编译的时候,会使用操作系统默认的编码编译文件。 如果平台是windows,而源文件是UTF8编码,则遇到了第一个乱码问题。 这时候可以使用javac命令的...
JDBC优化之Batch、Fetch
Batch和Fetch两个特性非常重要。Batch相当于JDBC的写缓冲,Fetch相当于读缓冲。import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util....
EHCache集群
实验配置两个EHCache环境(Master、Slave)在Master端不断变更数据,Slave端可以收到变更的缓存数据。1.手工指定方式 Master监听40000,Slave监听40001 Master配置,监听40000。如果缓存变化,则使用RMI方式通知127.0.0.1:40001的同名缓存。<?xml version=...
HttpServletRequestWrapper模拟实现分布式Session
HttpSession的内容都放在一个单独的Map中,模拟远程分布式Session。1.使用HttpServletRequestWrapper创建自定义Request2.使用动态代理包装自定义Request返回的HttpSession对象3.创建过滤器,使用自定义Request替换原有的Request对象。4.在Servlet中得到的HttpSession对象,写入和读取内容都假设通过远程Session服务器...
JSONP的例子
JSONP技术可以解决AJAX跨域请求的问题。 主要是使用script标签,请求一段JS脚本执行。
程序在Tomcat中的启动顺序
众所周知Tomcat有三种方式加载程序, 1.配置在Tomcat/conf/server.xml中 2.配置在Tomcat/conf/Catalina/localhost/下 3.将程序放置在Tomcat/webapps下 为了进行测试,新建一个War包,并创建一个监听器,这个监听器打印Con...
JAVA IO性能比较
JAVA常用IO方式包括流,通道和MappedByteBuffer。试验通过复制一个大文件(eclipse-jee-juno-SR2-win32.rar 237M),并选择不同的缓冲区大小,记录复制的时间。影响IO的因素有很多,同样的方式复制时间可能差异很大。所以需要排除一些最大和最小的数据,保证样本的正确性。import java.io.BufferedInputStream;...
动态代理限制缓存容器的容量
在Java Web中经常使用缓存,但是如果缓存数据量非常大,则容易出现OOM的情况。可以使用动态代理,限制缓存容器的容量。如果达到容量上限,则可以移除过期的缓存数据。import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;...