
Java
文章平均质量分 68
mortimer_c
人称陈老师,早期一直从事Java企业级应用研发与项目管理工作,亦有带团队经历。目前做技术顾问,著有JavaScript从入门到精通清华大学出版社WebSphereChina第14期主编,并负责撰写云计算相关文章,对SOA云计算有自己独到的见解。
展开
-
Java -D参数
近日,碰到时区问题!Java下貌似总会出现一些不是什么大问题的问题。了解到可以使用-Duser.timezone来指定当前的时区,从而解决常见的差8小时的问题。这种问题最常见的是在Linux环境下,尤其系统在安装时使用的是英文,时区也没有正确设定造成。索性把-D参数全都晒出来,以原创 2011-08-03 11:10:19 · 9966 阅读 · 0 评论 -
使用HashSet获取两个List的并集
近日在做项目的过程中,需要将两个List(ArrayList)中的值,按照某个属性值是否相等进行获取并集的操作。而两个List中存放的数据类型完全不相同(一个自定义的类,一个Stirng数组),并且两个List中的元素数量都较多,两层嵌套循环判断是一个效率比较低的办法,即使在搜索值是否相等时,使用折半算法,也会有较大的效率损失。考虑到Java中的Set是一种不包含重复元素的collection原创 2011-11-01 16:57:49 · 6787 阅读 · 1 评论 -
jstl中定义String数组
有人提出了个这个问题,想了半天可以使用fn函数实现http://java.sun.com/jsp/jstl/core" prefix="c" %>http://java.sun.com/jsp/jstl/functions" %> AB 如果不能使用fn函数就麻烦了http://java.sun.com/jsp/jstl/cor转载 2011-11-01 16:59:01 · 8622 阅读 · 0 评论 -
ArrayList的使用
问题的提出给出了两个时间点(例如,20060321,20080402),要求计算出中间的所有日期,并显示出来。在调用的时候需要拿一个容器将这些日期存放起来。但是,由于时间点是随机给出,不能确定数组元素个数。于是,使用ArrayList。ArrayList的使用zz1、什么是ArrayListArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本转载 2011-11-01 17:10:17 · 1981 阅读 · 0 评论 -
深入了解ApusicAS服务器配置系列之——配置Web上下文根
虽然AAS是最常见也是实施最多的产品,但是,实际中使用到的往往是最常见的一些配置内容,遇到某些特殊情况,往往有些不知所措。针对这一状况,决定将AAS的配置文件做一个较深入的研究,从而能在最大程度上了解AAS各种配置文件及其参数的实际意义。如果可能的话,本系列会慢慢持续,直至基本介绍完成所有的配置为止。实际应用中,配置应用的上下文根是最常见也是看起来信手拈来的操作与配置(需求往往是设置默认应用,原创 2011-11-02 19:52:06 · 3390 阅读 · 2 评论 -
Java中莫名其妙的时区错误
前一阵子更新了系统,鸟枪换炮地装上了WIN7,可是项目却出现了莫名其妙的问题。我这个项目的客户端启动之后会从服务端获取系统时间,然后更新本地时间。但我发现每次启动客户端后,本地时间都会被改为8小时之前。起初我以为是服务器上系统时间错了,也就没管,一直以8小时前的本地时间进行调试。但是当这影响了我的作息时间,导致下班延后给人一种主动加班的表象时,我无法容忍了,决定到服务器上一看究竟。这一看让我大跌眼转载 2011-11-24 19:38:58 · 2377 阅读 · 0 评论 -
深入了解ApusicAS服务器配置系列之——配置虚拟主机
虚拟主机的用处不再赘述。但是简单介绍一下虚拟主机的用处:某个Apusic AS上部署了一个名为app1的Web应用,当客户端通过浏览器发出对名为www.hostname.com的域名的请求时,由app1应用提供响应。这种需求在Apusic AS中,为某个应用配置虚拟主机是非常方便的。只需要在应用所在的%APUSIC_DOMAIN_APP_CONFIG%下的server.xml文件的内容进行简单修改原创 2011-11-07 19:37:11 · 2090 阅读 · 0 评论 -
Eclipse下Java compiler level does not match the version of the installed Java project facet的问题
问题现象:项目图标报错“Java compiler level does not match the version of the installed Java project facet.”。分析原因:根据错误信息的字面意思,应该是Java版本设定不一致的问题。而且这个Java版本跟Project安装的有关系。解决办法:既然是project出的问题,自然要从项目属性入手。其实很简单,右键项目“P原创 2011-11-10 11:24:45 · 25328 阅读 · 6 评论 -
深入了解ApusicAS服务器配置系列之——AAS集群:使用Apusic Loadbalancer相关配置
集群是解决应用的高性能与高可用的一种技术,就目前的常规Java EE应用中,最常见最常用的就是Web集群。更规范一些说,web集群就是解决两个问题:客户请求的负载均衡和Session的高可用。客户请求的负载均衡是指客户的请求依赖特定算法被合理地分配给多台Web Server来处理。Session的高可用性是指当某台Web Server失效,这台Web Server服务的客户的请求会被透明地转发给其原创 2011-12-18 16:23:48 · 5909 阅读 · 0 评论 -
JS实现当前编辑行自动滚动至div显示区域
最近在正在做的会计系统实施过程中,客户要求在录入凭证分录时,实现每次录入的分录自动选中,并且如果分录在其所在的div隐藏区域时,将其滚动至显示区域。由于先前已经实现JS控制的当前行高亮显示的功能,因此,只需实现当前行的自动滚动。考虑到所有的凭证分录信息都放在div内,因此可以借助JavaScript控制div的某些属性实现,google的结果表明,将scrollTop与offsetTop、offs原创 2011-11-01 16:56:36 · 2401 阅读 · 0 评论 -
strtus2.1.6+spring2.5.5+hibernate3框架
近几日,使用Struts2.1.6+Spring2.5.5+Hibernate3搭建一个开发平台,Web服务器使用JBoss5.0,在搭建过程中遇到一些问题,再次记录以备后来者需要。1、关于Hibernate版本问题查看hibernate网站,目前hibernate-core最新版本为3.3.4,annotations、entityManager、Validator、search、shar原创 2011-11-01 16:35:23 · 1566 阅读 · 0 评论 -
Apusic AS下如何正确设置solr
Apache Solr是一个基于Apache Lucene的企业级开源全文检索服务器,它支持层面搜索、命中醒目显示和多种输出格式。Solr需要运行在一个servlet 容器里(因此目前几乎所有常见的Servlet容器都可以满足Solr的运行需要)。solr在lucene的上层原创 2011-08-06 00:17:50 · 2135 阅读 · 0 评论 -
深入探究java.lang.OutOfMemoryError: PermGen space
近日,tomcat6下,同时发布多个app(实际上就两个app,这两个app之间通过WebService互相访问,另外有三个Socket服务端监听),系统启动的时候No problem。but系统运行时总是抛出java.lang.OutOfMemoryError: PermGen space。根据以往经验,调大java的-Xss参数,可是增大至16M时,仍然一如既往的throw Excepti原创 2011-11-01 16:31:49 · 2077 阅读 · 2 评论 -
ThreadLocal与synchronized
1.区别ThreadLocal 与 synchronizedThreadLocal是一个线程隔离(或者说是线程安全)的变量存储的管理实体(注意:不是存储用的),它以Java类方式表现; synchronized是Java的一个保留字,只是一个代码标识符,它依靠JVM的锁机制来实现临界区的函数、变量在CPU运行访问中的原子性。 两者的性质、表现及设计初衷不同,因此没有可比较性。转载 2011-11-01 16:33:46 · 3498 阅读 · 1 评论 -
关于Project facet Java 6.0 is not supported的问题解决方案
今天在Eclipse下发布使用java6.0的项目时遇到了“Project facet Java 6.0 is not supported”的问题(由于我的系统使用java5.0,并且暂时不想使用6.0)。重新安装了Eclipse还是没法解决问题,在一篇老外(又是老外)的BBS(http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=g原创 2011-11-01 16:56:01 · 2023 阅读 · 0 评论 -
HashSet和TreeSet
Set是java中一个不包含重复元素的collection。更正式地说,set 不包含满足 e1.equals(e2) 的元素对e1 和 e2,并且最多包含一个 null 元素。正如其名称所暗示的,此接口模仿了数学上的set 抽象。HashSet与TreeSet都是基于Set接口的实现类。其中TreeSet是Set的子接口SortedSet的实现类。Set接口及其子接口、实现类的结构如原创 2011-11-01 16:58:27 · 15921 阅读 · 0 评论 -
java的List、Set等分析
线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。 Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hash原创 2011-11-01 17:07:44 · 3164 阅读 · 0 评论 -
Java对象的序列化和反序列化
1.定义:序列化--将对象写到一个输出流中。反序列化则是从一个输入流中读取一个对象。类中的成员必须是可序列化的,而且要实现Serializable接口,这样的类的对象才能被序列化和反序列化。这个接口是一个表示型的接口。serialVersionUID是一个串行化类的通用标示符,反串行化就是使用这个标示符确保一个加载的类对应一个可串行化的对象。自己指定了serialVersionUID,就可转载 2011-11-01 16:34:27 · 1860 阅读 · 0 评论 -
AAS 7.0下一个Error content type错误的处理
近日,合作伙伴在使用AAS 7.0的时候,碰到一个后台抛异常,前端没问题的现象:一点击应用中的“导出Excel”,后台即抛出如下异常:2011-12-07 09:55:06 错误 [apusic.web.response] Error content type: application/x-msdownload;java.lang.StringIndexOutOfBoundsException:原创 2011-12-14 16:16:41 · 2581 阅读 · 0 评论 -
深入了解ApusicAS服务器配置系列之——AAS集群:使用第三方负载均衡器相关配置
ApusicAS集群对第三方的负载均衡(如:硬件负载均衡器F5,软件负载均衡器Apache Server,微软的IIS等)提供良好的支持。当使用第三方的负载均衡器时,AAS的Session复制同样采用内存复制技术,及AAS的Session复制不会调整,但是由于Apusic Loadbalancer原生提供对Session的状态备份,而第三方负载均衡器则无法提供相应的功能。因此,AAS采用了使用IP原创 2011-12-21 11:06:19 · 3903 阅读 · 1 评论 -
深入了解ApusicAS服务器配置系列之——SSL配置
近日,随着铁路客服中心网上购票系统中逐步可以购买大部分车次的列车,12306网站的种种问题便暴露出来,估计现在信息中心及系统开发商正在紧锣密鼓关注系统运行状态,并绞尽脑汁查找一切可以优化的地方进行优化,来满足数量惊人的火车票订票需求。先撇开性能问题不谈,使用过12306的朋友可能都注意到了,在使用12306进行网上购票之前,需要下载一个根证书到本地,然后,按照相关文件的说明,将证书导入IE浏览器,原创 2012-01-12 17:13:11 · 3752 阅读 · 0 评论 -
甲骨文改变 Java 版本号命名方式
为了避免混淆,甲骨文宣布改 变Java版本号命名方式:自JDK 5.0起,Java以两种方式发布更新——Limited Update包含新功能和非安全修正,Critical Patch Updates(CPUs)只包含安全修正。甲骨文将继续以这两种方式发布更新,但其版本号将有所改变: Limited Update更新使用的版本号将是20的倍数,而CPU更新采用的版本号将是上一个Limited Up转载 2013-05-21 22:04:43 · 1896 阅读 · 0 评论 -
在 JSF Portlets 中使用 CDI
随着CDI的portlet集成库的放出,我们可以在JSF portlet中通过Portlet桥,利用CDI带来的巨大优点。 怎么使用? 除了通常的Portlet桥依赖以外,在portlet中使用CDI还需要: 在项目中添加以下依赖包: org.gatein cdi-portlet-integration 1.0.2.Final在WAR包的WEB-INF目录下,新增翻译 2013-07-23 14:32:29 · 2879 阅读 · 0 评论 -
AAS如何禁止自动重启应用
之前曾经有客户将文件上传的目录放在应用目录下,而AAS默认会自动部署变化的应用,导致用户一上传文件,便会发生session丢失的问题。同时,经过几次上传便会内存溢出:java.lang.OutOfMemoryError: Java perm space最终,客户应用将文件上传目录移出应用目录,系统便不再发生异常。此问题,如果不允许将目录移出,可以调整AAS的参数,从而禁用自动部署,防止文件变化后的原创 2013-08-02 23:46:03 · 2954 阅读 · 0 评论 -
关于为什么AAS默认编码是ISO-8859-1的说明
曾经在项目中发现客户的某些页面存在乱码,但是是个别情况,并不是全部,于是很奇怪,直接把相关页面拿过来看,结果发现,此页面中没有任何关于页面编码的声明。比如:或者等等,没有任何声明,只有最简单的基本html,甚至这几个页面除了基本html以外,没有什么其他jsp相关的内容,只是被命名为jsp文件。但是,在aas默认环境下运行时,乱码!但是,在aas运行过程的日志中可以看出,页面在解析时使用的是ISO原创 2013-08-20 10:04:04 · 2974 阅读 · 2 评论 -
c3p0的相关配置说明
Hibernate推荐使用c3p0作为数据库连接池,管理数据库连接的资源。如果使用的应用服务器为非商业版本(比如:tomcat等),建议使用c3p0作为数据库连接池。但是,如果使用的是商业应用服务器,建议使用应用服务器内置的数据库连接池。因为,商业产品一般都会提供连接池的运行情况监控信息,从而便于未来应用的调优等操作。但是,对于c3p0的配置,由于之前一直没有时间仔细研究,因此,也就暂且搁置。目前原创 2013-09-23 16:04:30 · 6029 阅读 · 0 评论 -
eclipse maven plugin 插件 安装 和 配置
环境准备:eclipse(Helios) 3.6maven 3.0.4注:我用的eclipse 3.5 也通用maven3 安装: 安装 Maven 之前要求先确定你的 JDK 已经安装配置完成。Maven是 Apache 下的一个项目,目前最新版本是 3.0.4,我用的也是这个。 首先去官网下载 Maven:http://www.apache.org/dyn/closer.cgi/m转载 2013-11-06 11:29:09 · 4462 阅读 · 0 评论 -
String、StringBuffer、StringBuilder
任何一个系统在开发的过程中, 相信都不会缺少对字符串的处理。在 java 语言中, 用来处理字符串的的类常用的有 3 个: String、StringBuffer、StringBuilder。 它们的异同点:1) 都是 final 类, 都不允许被继承;2) String 长度是不可变的, StringBuffer、StringBuilder 长度是可变的;3) StringBuffer 是线程安转载 2013-12-06 10:32:08 · 3483 阅读 · 0 评论 -
.net调用java生成的ws R2718的问题
java工程,使用easywsdl生成发布的WebService的wsdl。并使用SDO的服务数据对象模型,对数据进行描述。生成的wsdl使用vs2010的visual studio命令提示行,使用wsdl out命令生成C#相关的调用文件,发现后台会抛出如下信息:警告: 此 Web 引用不符合 WS-I Basic Profile v1.1。R2718: 说明中的 wsdl:binding 必须原创 2013-12-04 16:19:38 · 5557 阅读 · 2 评论 -
JBoss Seam与Apache DeltaSpike的未来
今年初,JBoss发布了Seam Web Framework 3.1版。然而,这并非仅仅是Seam的另一个小版本号升级,与之相反,该版本将是Seam的最后一个“打包”发布,也是一个重要的里程碑。未来的开发将会以不同的方式进行,因为现在JBoss的精力已经开始放在了Apache DeltaSpike上。Apache DeltaSpike(目前还处于孵化器中)是一套Java CDI(Contexts转载 2013-03-22 15:52:13 · 2307 阅读 · 1 评论 -
WSDLToJava Error: Rpc/encoded wsdls are not supported with CXF
近日,正在折腾系统整合类项目,需要与某ERP系统进行整合,整合方式为调用其WS,但是,此WS输入参数为xml字符串,使用soapUI调用总是会出现问题,于是想到改用java代码直接调用,想到cxf对于调用ws的方便性,于是想用cxf的wsdl2java工具,来生成java调用的客户端。然后,再调用。可是,在使用wsdl2java的时候,出现了WSDLToJava Error: Rpc/encode原创 2012-12-23 14:35:15 · 14763 阅读 · 2 评论 -
Linux下AAS启动时的java.net.UnknownHostException异常
127.0.0.1 localhost服务器操作系统:Red Hat Enterprise Linux Server release 5.3JDK:1.6.0_31AAS:7.0直接在linux命令行运行./startapusic,运行时,发生如下异常:2012-03-12 11:04:09 错误 [apusic.service.Muxer] 启动失败java.net.UnknownHostEx原创 2012-03-12 11:23:26 · 5190 阅读 · 0 评论 -
使用derby数据库首次连接时的ERROR 42Y07问题
近日,使用某产品安装部署,在首次运行时,后台抛出以下异常:Caused by: java.sql.SQLException: Schema 'ROOT' does not exist at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) at org.apache.derby.原创 2012-08-03 17:19:20 · 7392 阅读 · 0 评论 -
在SSH框架下使用基于配置的Spring3的调度任务每次执行2次的问题
近日,在项目中使用Strtus1.2+Spring 3.0.6+Hibernate 3.3.2,搭建一个小业务系统,有定时执行某些任务的需要,并且涉及到数据库操作,不经意间发现spring3.0新增了一个内置的调度任务,使用方式与quartz类似,而且功能也差不多,所以尝试着使用此功能。刚开始,使用间隔的形式,每次任务都执行2次,一开始以为是这个间隔不是很精确造成的,后来在上线前的测试中发现,要求原创 2012-07-20 15:14:11 · 3166 阅读 · 0 评论 -
卸载CentOS 5.4自带的OpenJDK,配置新的Java环境
本文CentOS版本为5.4 final,使用图形界面与命令结合的操作方式由于CentOS 5.4在默认情况下,会安装OpenOffice之类的软件,而这些软件需要Java支持,因此系统会默认安装一个JDK环境,如果需要使用特定的Java环境,最好将这些默认安装的JDK卸载或者彻底删除。在安装完成CentOS 5.4之后,直接在终端中输入“java -version”,系统会显示当前的jdk版本号原创 2010-07-22 12:08:00 · 15426 阅读 · 2 评论 -
JDBC连接mysql处理中文时乱码的一种解决办法
近日,整合的项目需要跟一个比较老版本的mysql服务器连接,使用navicat查看,发现此mysql服务器貌似没有设置默认编码,而且从操作此mysql的部分php文件看,应该是使用的gb2312的编码,但是,直接使用jdbc操作,从库中读取出来的中文全都是乱码。一开始,使用类似entity.setDepartName(new String(rs.getString("hg").getBytes("原创 2012-08-14 20:20:46 · 8366 阅读 · 0 评论 -
基于cookie验证的php应用的一种SSO解决方案
近日,项目中需要接入一个“年久失修”的PHP应用,由于系统已经建设多年,并且是信息中心自己的人通过某些工具弄出来的,而且是本人未真正接触过的PHP写的,而且跟我们的系统不在同一服务器上也就是存在跨域的问题,想通过客户端模拟登录的方式来实现,但是总是不成功。没办法,只好想尽一切办法查看页面源代码,然后,找服务器的php文件,分析。由于对php不熟悉,加上没有仔细看,因此,对于找到的登录页面的php文原创 2012-08-17 09:20:31 · 3425 阅读 · 0 评论 -
64位windows操作系统下尽量不要使用32位JDK
新产品发布,拿来试用。由于本机是win7_x64,但是为方便工作,机器安装了从32位的JDK1.5一直到64位的JDK1.6的4个JDK。为保证运行时能与大多数人的运行状况相同,依然采用了32位的jdk1.6来运行产品。结果,我第一次碰到应用服务器刚起来就crash的问题。生成的JVM的错误日志如下:## There is insufficient memory for the Java Run原创 2012-08-28 13:52:39 · 44398 阅读 · 2 评论 -
正确理解ThreadLocal
原文地址:http://www.iteye.com/topic/103804转载 2014-06-05 14:13:42 · 3719 阅读 · 2 评论 -
Java常见的内存溢出异常及解决方法
<br />Java的内存溢出,主要是两方面的异常:堆内存溢出、非堆内存溢出。<br /> <br />一、 java.lang.OutOfMemoryError: Java heap space。 Heap size 设置 JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可进行原创 2011-05-04 23:32:00 · 3671 阅读 · 0 评论