
javaEE
文章平均质量分 73
uohzoaix
这个作者很懒,什么都没留下…
展开
-
清空tomcat缓存
有时候需要将部署之后的项目的缓存清空以使得下次重新部署的时候不会有cache出现在项目当中,这时我们可以在server.xml文件中Context path中间加上reloadable=true,我们也可以直接删除work目录下的缓存文件可以把Catalina目录删除,这里要注意:不能把work整个目录删除,不然重启tomcat时,会把web.xml删除掉,这样在启动时,日志会提示:No Defa原创 2011-12-29 13:17:13 · 6351 阅读 · 2 评论 -
jmacick生成不同尺寸图片的应用
为了能使应用分层,首先写了一个javabean,主要是存储图片的基本信息,比如源图片的尺寸和源图片文件,我们这里是要实现多种不同尺寸的图片生成功能,所以我们还需要对要缩放的图片的属性信息进行封装。主要代码如下:public class ImageCompressInfo { /** 源图片的尺寸。 */ private Dimension srcDim; /** 源图片文件。 *原创 2011-12-30 16:20:56 · 1041 阅读 · 0 评论 -
使用Jmagick将图片压缩成各种不同大小的图片
由于项目需要处理图片的质量,在将图片上传到网站或从网站下载图片的时候需要处理图片的大小水印等,经过网上查找和朋友的推荐使用Jmagick来处理会效果会比较好,下面就记录使用Jmagick过程当中遇到的问题。首先我从官网http://downloads.jmagick.org/下载了最新版本的jmagick,我在window下使用的是jmagick-win-6.3.9-Q8.zip和ImageM原创 2011-12-30 15:45:19 · 2378 阅读 · 0 评论 -
由泛型到切面编程
昨天利用泛型写了个泛型工具类,这个类使用反射能够得到泛型参数,比如有一个泛型为Type,那么我们使用这个工具类就能得到Student这个类的实例对象,代码如下:public abstract class TypeClass {/** * 返回给定子类类型的直接父类的参数类型。 * * @param subclass 给定的子类。 * @retur原创 2012-01-05 11:43:53 · 1478 阅读 · 0 评论 -
ActionSupport.getText()方法
下面略述com.opensymphony.xwork2.ActionSupport.getText()方法public String getText(String aTextName)说明:Gets a messages based on a message key,or null if no message is found Parameters:aTextName-t转载 2012-02-19 14:06:04 · 9346 阅读 · 2 评论 -
缓存系统MemCached的Java客户端优化历程
是什么?Memcached是一种集中式Cache,支持分布式横向扩展。这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键做分区存储,而这个区就是Memcached服务端的一个或者多个实例,如果将客户端也囊括到Memcached中,那么可以部分概念上说是集中式的。其实回顾一下集中式的转载 2012-03-01 11:33:50 · 544 阅读 · 0 评论 -
从struts1到struts2的跳转
struts2原理1.Struts 2的基本流程 Struts 2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。在这3个部分里,Struts 2框架提供了核心控制器FilterDispatcher,而用户需要实现业务控制器和业务逻辑组件。 2.核心控制器:FilterDispatcher FilterDi原创 2012-02-29 21:11:38 · 1151 阅读 · 0 评论 -
简单获得给定后缀和前缀的文件名
public static String[] getFiles(String filepath, String filefix) { File rootDir = new File(filepath); FilenameFilter filefilter = new SuffixFileFilter(filefix); String[] txtFil原创 2012-03-23 14:45:51 · 849 阅读 · 0 评论 -
apache common mail包相关类解析
在common mail包中总共有8各类,主要是那个Email类,这个类里面包括了发送邮件的几乎全部方法。它的子类MultiPartEmail扩展了几个简单的方法,主要的是扩展一个邮件附件的方法,MultiPartEmail的子类HtmlEmail定义了几个重载的embed方法,这几个方法我觉得在平常工作当中用到的机会不是很多。其他的几个类都是在这三个类当中作为方法参数或者变量出现。所以我们在原创 2012-01-16 15:23:05 · 1263 阅读 · 0 评论 -
详解contextConfigLocation
spring的应用初始化流程一直没有搞明白,刚刚又碰到了相关的问题。决定得好好看看这个流程。我们在开发spring的项目当中基本上都会在web.xml通过: contextConfigLocation /WEB-INF/conf/application-*.xml 来初始化各个spring的配置文件,但是我们只是知道这原创 2012-01-12 13:19:48 · 10792 阅读 · 3 评论 -
支付宝登录接口解析
昨天看了支付宝的登录接口代码,觉得有些东西还是对以后的开发有帮助的。下面就记录自己的感想。首先是AlipayCore.java这个类,该类是请求、通知返回两个文件所调用的公用函数核心处理文件,不需要修改。方法主要是对签名和请求参数进行拼接:/** * 生成签名结果 * @param sArray 要签名的数组 * @return 签名结果字符串原创 2012-01-09 13:13:42 · 7012 阅读 · 0 评论 -
jwchat
JWChat是一个全功能的,基于Web 的 Jabber™客户端 。使用AJAX技术编写的并且依赖只有在客户端的JavaScript和HTML 。它支持基本的Jabber即时消息,名册管理和基于groupchats MUC的协议 。JWChat是一个先进的即时信使(IM),就像AIM,MSN信使,雅虎Messenger或ICQ 。这意味着,您可以管理您的联系人,与其他用户沟通,以1翻译 2012-01-09 15:54:34 · 1659 阅读 · 0 评论 -
openfire插件入门学习
openfire 版本3.6.4关于插件开发的基本信息,可以参考其自带的文档页plugin-dev-guide.html中文翻译传送门http://www.360doc.com/content/10/0707/15/1332348_37445649.shtml Java代码 实现功能,客户端发送一个IQ包含内容的节给服务器,服务器取得内容,转载 2012-01-09 17:15:12 · 2020 阅读 · 1 评论 -
用开源软件搭建企业内部协作平台, Kill QQ MSN
作为公司的一分子, 您可能忧心忡忡于通过 MSN, QQ 流入的各种名目繁多的病毒, 木马, 例如熊猫烧香, 以及通过 MSN 传播的导致公司网络瘫痪的蠕虫病毒. 换句话说, 我们需要企业内部协作平台, 来保证信息安全和减少依赖外网办公所带来的高风险. 例如: 地震了, 外网断了, 同事们再也不能通过MSN/QQ交流了. 自然, QQ/MSN 有它的用途, 但是主要用途就是和私人的朋友交流,转载 2012-01-09 16:07:02 · 1971 阅读 · 0 评论 -
smack api学习
=============================================================== 主动发送信息给某个用户 ------------------------------------ XMPPConnection.DEBUG_ENABLED = true; //设置服务器地址 XMPPConnection conn = new XMPP转载 2012-01-09 16:29:34 · 1452 阅读 · 0 评论 -
使用smack API开发聊天系统
昨天学习了smack的相关代码和API是因为在项目当中要使用聊天功能,今天早上一到公司就开始写相关的代码了。这里就将我写代码时的感想写一下。聊天功能无非就是人与人互相之间进行信息的传送,我首先写了一个UserShip类用来对聊天状态和聊天列表进行封装。private static final long serialVersionUID = 1L; boolean status =原创 2012-01-10 12:48:01 · 4096 阅读 · 2 评论 -
Calendar的add()方法介绍
由于项目当中要统计指定日期的日志记录,是使用Calendar的add方法来进行对日期参数进行相关的动态改变。但是看了java doc上面介绍的不是很清楚,只是说了一下add能够做什么事,并没有介绍如何具体实现。看了网上的一些资料大部分都是在讲add和roll两个方法的区别,其实我们只需要使用add方法就可以解决大部分的功能。比如我们需要得到当前年,月,日,小时,分钟,秒,毫秒的前面时间或者后面时间原创 2012-01-11 11:01:06 · 5622 阅读 · 4 评论 -
Spring的InitializingBean和init-method
Spring在设置完一个bean所有的属性后,会检查bean是否实现了InitializingBean接口,如果实现就调用bean的afterPropertiesSet方法。另外,如果bean是单例的,则afterPropertiesSet方法只会被调用一次;否则每次创建bean时afterPropertiesSet方法都会被重新调用.Spring虽然可以通过InitializingBea原创 2012-01-11 09:12:46 · 3062 阅读 · 0 评论 -
CallableStatement,ResultSet,ResultSetMetaData
CallableStatement是在存储过程调用过程中使用的,方法是prepareCall。当自定义的存储过程包含参数,我们需要在执行前对参数进行设置:private void setStatement(PreparedStatement stmt, Object... params) throws SQLException { if (params == null) {原创 2012-01-13 14:44:19 · 1694 阅读 · 0 评论 -
获得用户请求的URL全路径
public static String getAppURL(HttpServletRequest request) { StringBuilder buf = new StringBuilder(); int port = request.getServerPort(); if(port < 0) port = 80;原创 2012-03-09 14:29:55 · 1172 阅读 · 0 评论 -
Arrays.asList()方法介绍
Arrays和Collections包含的都是static方法,可以将其视为工具类。Arrays.asList()这个方法有点特殊,这里记录一下。 首先,Arrays.asList()返回的是一个List (List是一个接口,返回List实际是返回List接口的一个实现),这个List在底层是有数组实现的,所以size是fixed的。所以,下面的代码是不可以的:Java转载 2012-03-26 21:09:02 · 6820 阅读 · 1 评论 -
淘宝技术发展(Java时代:坚若磐石)
淘宝技术发展(Java时代:坚若磐石)(2012-03-30 11:22:10)转载▼标签:杂谈 已经有读者在迫不及待的问怎么去掉了IOE,别急,在去掉IOE之前还有很长的路要走。行癫他们买回来小型机之后,我们用上了Oracle,七公带着一帮DBA在优化SQL和存储,行癫带着几个架构师在研究数据库的扩展性。Oracle本身是一转载 2012-03-30 11:58:45 · 1313 阅读 · 0 评论 -
项目感想(存储过程)
项目基本已经完成了,这个项目和之前使用SSH开发基本上是不一样的,这个项目不再使用hibernate来处理数据库操作了,而是使用jdbc+存储过程。一开始做这个项目觉得使用干嘛要存储过程呢,到现在算是有点明白了。使用存储过程的好处就是我们在处理一些业务逻辑时可以不必放在java代码里进行,而可以直接在存储过程中实现。这样如果下次需要修改已经部署在服务器上的项目功能时,我们就可以不用修改源代码了,而原创 2012-03-23 11:03:32 · 1397 阅读 · 3 评论 -
eclipse各种常用插件在线安装
一,反编译插件:A、Jadclipse1、打开eclipse增加站点:http://jadclipse.sf.net/update,在线安装好JDT Decompiler 3.4.02、http://nchc.dl.sourceforge.net/sourceforge/jadclipse/net.sf.jadclipse_3.3.0.jar将 jad原创 2012-04-30 22:47:46 · 4548 阅读 · 2 评论 -
开始使用nutz
Nutz 的使用非常简单,这里Nutz.Dao做一下说明: 1. 首先,你必须安装 JDK1.5 或者以上版本。 如果你直接使用编译好的 jar 包,请保证你的 JDK是1.6 的,因为 Nutz 的jar包是在 1.6.0_11 上编译的。 JDK1.5 的需要重新从源码编译。 好在 Nutz 的源码不依赖任何第三方jar 文件,你拿下来就能编译。 2. 其次,为了运行 Nut原创 2012-05-29 20:08:32 · 1708 阅读 · 0 评论 -
java direct buffer VS non-direct buffer
在java NIO中,有两种不同的buffer:direct buffer和non-direct buffer。所谓direct buffer,就是指直接在底层分配的缓存(比如操作系统内核缓存),而non-direct buffer就是在java堆中分配的缓存,即heap buffer。1、 劣势:创建和释放Direct Buffer的代价比Heap Buffer得要高2、 区别:Dire转载 2012-06-02 20:45:07 · 1652 阅读 · 0 评论 -
netty初步使用2
Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序[官方定义],整体来看其包含了以下内容:1.提供了丰富的协议编解码支持,2.实现自有的buffer系统,减少复制所带来的消耗,3.整套channel的实现,4.基于事件的过程流转以及完整的网络事件响应与扩展,5.丰富的example。本文并不对Netty实际使用中可能出现的问题做分析,只是从原创 2012-06-02 22:02:49 · 1920 阅读 · 0 评论 -
htmlparser lexer解析网页源代码
有时候我们在解析网页源代码时需要的不是整个页面的源代码,而是其中的文本内容,这时可以使用htmlparser这个开源工具来进行相应的操作。下面是一个例子,这个例子比较简单,主要是理解这个工具中的一些类的作用:public static String html2Text() { ConnectionManager manager; Lexer lexer; Node node;原创 2012-07-11 10:03:16 · 1204 阅读 · 0 评论 -
截取字符串(处理汉字一半情况)
Web应用程序在浏览器中显示字符串时,由于显示长度的限制,常常需要将字符串截取后再进行显示。 但目前很多流行的语言,如C#、Java内部采用的都是 Unicode 16(UCS2)编码,在这种编码中所有的字符都是两个字转载 2012-07-13 15:04:42 · 1999 阅读 · 0 评论 -
防止用户恶意刷新过滤器
为了防止用户对网站页面刷新过于频繁,需要对这种恶意操作进行判断并且屏蔽.虽然公司要有这样的一个功能,但是我觉得太没有必要了.只要你服务器够好,你何必需要这样的功能呢?下面是全部代码(仅供大家参考,我觉得实际意义不是很大):import java.io.IOException;import java.util.Map;import java.util.concurrent.Concurren原创 2012-08-14 16:23:07 · 1641 阅读 · 0 评论 -
重构http请求
下午对公司中http请求的代码进行了重构,之前的每个请求都需要写一个post方法,不相同的只是请求的参数.而且代码中有很多累赘的代码,比如每次请求都需要重新new一个DefaultHttpClient,在finally中每次都需要shutdown一下.之前看过的一本重构书籍中也提到了对于这样的代码存在的臭味.所以下午就对之前的代码进行了重构并根据apache httpclient官网重新写了一个单原创 2012-08-24 17:02:55 · 2976 阅读 · 1 评论 -
复制Iterator元素给数组并保证数组长度等于Iterator元素个数
需求如题,iterator没有size()方法,获取不到元素的个数,所以就想无论你有多少个元素就按你有10个元素来处理,放了10个元素之后发现还有元素没有放入,这时候就想对数组进行扩容并将旧数组复制给新数组。但是扩容之后可能会有很多空位置出现,所以在iterator.hasNext()时我们需要使用临时变量来记录iterator循环了多少次,这个临时变量就是iterator的元素个数,有了这个个数原创 2013-02-28 17:23:04 · 1932 阅读 · 0 评论 -
hibernate缓存4
八、二级缓存在项目中的集成和使用1.将echcache.xml文件拷贝到src下, 二级缓存hibernate默认是关闭的,手动开启 2.开启二级缓存,修改hibernate.cfg.xml文件, true 3.指定缓存产品提供商 org.hibernate.cache.EhCacheProvider4.指定那些实体类使用二级缓存(两种方法,推荐使用第二种) 第一种:在转载 2012-03-21 16:33:35 · 533 阅读 · 0 评论 -
hibernate缓存3
七、哪些方法支持缓存*get() *load() *iterate() (查询实体对象)save()查询缓存只对query.list()起作用一级缓存测试:1.Load测试: 在同一个session中发出两次load查询(1)2.Get测试: 在同一个session中发出两次get查询(1)3.iterate测试: 在同一个session中发出两次iterat转载 2012-03-21 16:33:12 · 589 阅读 · 0 评论 -
java.lang.String.regionMatches方法使用
regionMatches(boolean ignoreCase,int toffset,String other,int ooffset,int len);regionMatches(int toffset,String other,int ooffset,int len); 上述两个方法用来比较两个字符串中指定区域的子串。入口参数中,用toffset和ooffset分别指出当前字符串中的原创 2012-03-16 13:42:38 · 4107 阅读 · 0 评论 -
java调用存储过程(output和return)
package callProcedure;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Type原创 2012-03-15 15:59:52 · 3243 阅读 · 1 评论 -
dhtml tree的使用
项目当中需要使用dhtml这个控件来进行将区域以树的形式显示。数据表结构为:知道dhtml的都知道,dhtml有很多种方法来生成树,这里我使用的是将从数据库取出的数据以xml的方式来进行拼串,然后通过ajax请求将xml发送到客户端让dhtml处理即可。这里的主要工作是拼串的工作,下面介绍两种方式。两种方式的不同之处在于判断每个省的结束标签何时加。第一种(在while循环内部就加省原创 2012-03-19 16:26:58 · 1308 阅读 · 0 评论 -
hibernate处理批量更新和批量删除
9.4 批量处理数据通常,在一个Session对象的缓存中只存放数量有限的持久化对象,等到Session对象处理事务完毕,还要关闭Session对象,从而及时释放Session的缓存占用的内存。批量处理数据是指在一个事务中处理大量数据。以下程序在一个事务中批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段:Transaction tx = session.beginTr转载 2012-03-20 11:13:06 · 52763 阅读 · 1 评论 -
JMockit使用:mock一个类的方法
关键词:如何mock一个类的方法、Expectations源类清单 Java代码 /** * 演示如何mock一个类的方法 * @sina weibo:regbin@tom.com */ public class DateUtil { private int type; public转载 2012-03-20 13:54:37 · 7254 阅读 · 0 评论 -
安装tomcat native library提升Tomcat的吞吐性能
1、安装APRhttp://apr.apache.org下载apr-1.4.2.tar.gz。tar –xvf apr-1.4.2.tar.gz./configure --prefix=/{Tomcat根目录}/aprmakemake instal2、安装APR-UTILhttp://apr.apache.org下载apr-util-1.3.9.tar.gz。tar原创 2012-04-06 14:15:53 · 2932 阅读 · 0 评论