java
文章平均质量分 79
rj042
软件行业
展开
-
为什么不建议3G以下的情况下使用CMS GC
之前曾经有讲过在heap size<=3G的情况下完全不要考虑CMS GC,在heap size>3G的情况下也优先选择ParallelOldGC,而不是CMS GC,只有在暂停时间无法接受的情况下才考虑CMS GC(不过当然,一般来说在heap size>8G后基本上都得选择CMS GC,否则那暂停时间是相当吓人的,除非是完全不在乎响应时间的应用),这其实也是官方的建议(每年J...转载 2020-03-29 09:14:56 · 497 阅读 · 0 评论 -
使用Mybatis3.1.1时J2EE容器启动不起来而且不报错
我们的系统Dao层使用的ORM映射框架是Mybatis3.1.1,在启动J2EE容器(Tomcat)时,服务器一直在启动,查看日志也不报错。日志如下:……2013-11-10 10:36:43,963 [pool-2-thread-1] INFO com.mchange.v2.log.MLog - MLog clients using log4j logging.2013-原创 2013-11-10 11:41:01 · 5957 阅读 · 2 评论 -
哈希分布与一致性哈希算法简介(1)
前言在我们的日常web应用开发当中memcached可以算作是当今的标准开发配置了。相信memcache的基本原理大家也都了解过了,memcache虽然是分布式的应用服务,但分布的原则是由client端的api来决定的,api根据存储用的key以及已知的服务器列表,根据key的hash计算将指定的key存储到对应的服务器列表上。基本的原理以及分布在这里我们通常使用的方法是根据 key的转载 2012-04-03 14:24:05 · 908 阅读 · 0 评论 -
常用WebService一览表
天气预报Web服务,数据来源于中国气象局Endpoint :http://www.webxml.com.cn/WebServices/WeatherWebService.asmxDisco :http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?discoWSDL :http://www.webxm原创 2013-05-07 15:05:07 · 1058 阅读 · 0 评论 -
Linux下运行java DES解密失败,报javax.crypto.BadPaddingException:Given final block not properly padded
DES java源代码如下:import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.spec.InvalidKeySpecException;imp原创 2012-11-18 14:04:05 · 97593 阅读 · 17 评论 -
JAVA读取属性文件的几种方法
1.使用java.util.Properties类的load()方法 示例: Java代码 InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2原创 2012-09-11 23:58:07 · 1412 阅读 · 0 评论 -
Spring Junit 读取WEB-INF下的配置文件
假设Spring配置文件为applicationContext.xml一、Spring配置文件在类路径下面在Spring的java应用程序中,一般我们的Spring的配置文件都是放在放在类路径下面(也即编译后会进入到classes目录下)。以下是我的项目,因为是用maven管理的,所以配置文件都放在“src/main/resources”目录下这时候,在原创 2012-05-09 13:04:16 · 47612 阅读 · 6 评论 -
JAVA注解
本文将向你介绍J2SE5.0中的新特性之一:注解。本文将从什么是注解;J2SE5.0中预定义的注解;如何自定义注解;如何对注解进行注解以及如何在程序中读取注解5个方面进行讨论。 一、什么是注解 说起注解,得先提一提什么是元数据(metadata)。所谓元数据就是数据的数据。也就是说,元数据是描述数据的。就象数据表中的字段一样,每个字段描述了这个字段下的数据的含义。而J2SE原创 2011-05-06 15:26:00 · 16018 阅读 · 13 评论 -
Spring MVC异常处理
Spring3.0中对异常的处理方法一共提供了两种:一种是使用HandlerExceptionResolver接口;一种是在Controller类内部使用@ExceptionHandler注解。使用第一种方式可以实现全局异常控制,并且Spring已经提供了一个默认的实现类SimpleMappingExceptionResolver;使用第二种方式可以在Controller内部实现更个性化点异常处理原创 2012-03-21 18:23:09 · 11480 阅读 · 1 评论 -
Spring MVC的表单控制器——SimpleFormController
概述 大多数Web应用都会遇到需要填写表单的页面,当表单提交成功后,表单的数据被传送给Web服务器中处理。处理成功后导向到一个成功页面,如果操作失败则导向到一个错误报告页面。此外,在表单数据处理之前还会进行表单数据的验证,保证客户端提交的表单数据是合法有效的,如果数据不合法,请求返回到原表单页面中,以便用户根据错误信息进行修改。 假设你想成为论坛的用户时,必须填写一张用户注册表单,原创 2011-10-26 15:09:09 · 9825 阅读 · 1 评论 -
为什么SqlMapClientFactoryBean与SqlMapClient类型不同也可被注入
在对spring和ibatis进行整合时,大家都会用到如下的配置以在ibatis中使用spring提供的事务处理功能。...... <!-- Transaction manager for a single JDBC DataSource事务管理的定义--> class="org.springframework.jdbc.da原创 2011-11-13 20:51:29 · 5846 阅读 · 0 评论 -
集群环境中使用 EhCache 缓存系统
EhCache 缓存系统简介EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。下图是 EhCache 在应用程序中的位置:图 1. EhCache 应用架构图EhCache 的主要特性有:快速;简单;多种缓存策略;缓存数据有两级:内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重转载 2014-01-04 11:16:57 · 1151 阅读 · 0 评论 -
一致性哈希(2)
在大型web应用中,缓存可算是当今的一个标准开发配置了。在大规模的缓存应用中,应运而生了分布式缓存系统。分布式缓存系统的基本原理,大家也有所耳闻。key-value如何均匀的分散到集群中?说到此,最常规的方式莫过于hash取模的方式。比如集群中可用机器适量为N,那么key值为K的的数据请求很简单的应该路由到hash(K) mod N对应的机器。的确,这种结构是简单的,也是实用的。但是在一些高速发展转载 2012-04-03 14:26:18 · 912 阅读 · 0 评论 -
Java 序列化的高级认识
引言将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写。然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们与 Java 序转载 2014-03-23 19:01:02 · 1450 阅读 · 0 评论 -
网络字节序和主机字节序
什么是Big Endian和Little Endian?来源:http://blog.ednchina.com/qinyonglyz/194674/message.aspx1.故事的起源“endian”这个词出自《格列佛游记》。小人国的内战就源于吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开,由此曾发生过六次叛乱,其中一个皇帝送了命转载 2015-09-23 18:39:57 · 839 阅读 · 0 评论 -
Spring MVC之LocaleResolver(解析用户区域)
为了让web应用程序支持国际化,必须识别每个用户的首选区域,并根据这个区域显示内容。在Spring MVC应用程序中,用户的区域是通过区域解析器来识别的,它必须实现LocaleResolver接口。Spring MVC提供了几个LocaleResolver实现,让你可以按照不同的条件来解析区域。除此之外,你还可以实现这个接口,创建自己的区域解析器。要定义一个区域解析器,只需在web原创 2014-04-10 14:49:13 · 40058 阅读 · 4 评论 -
spring mvc路径匹配原则
Ant path 匹配原则路径匹配原则(Path Matching) Spring MVC中的路径匹配要比标准的web.xml要灵活的多。默认的策略实现了 org.springframework.util.AntPathMatcher,就像名字提示的那样,路径模式是使用了Apache Ant的样式路径,Apache Ant样式的路径有三种通配符匹配方法(在下面的表格中列出)这些可以原创 2014-04-09 16:45:51 · 58616 阅读 · 0 评论 -
Spring全局事务之JTA+Atomikos
本文简单介绍一下在Spring通过声明管理一个有数据库和ActiveMQ参入的全局事务,事务管理器的实现为Atomikos.全局事务的步骤为1,更新数据库操作.2访问ActiveMQ资源.3,提交在数据库A中的操作.4,提交在ActiveMQ中的操作.上面的所有步骤应该保证要么全部成功,要么全部回滚.下面是实现的步骤:1,配置Spring文件:[ht转载 2014-03-20 23:15:51 · 1846 阅读 · 0 评论 -
Spring多数据源的配置和使用
最近开发一个数据同步的小功能,需要从A主机的Oracle数据库中把数据同步到B主机的Oracle库中。当然能够用dmp脚本或者SQL脚本是最好,但是对于两边异构的表结构来说,直接导入不可行。然后在需要实时同步的情况下用存储过程也不可行了。写一个数据同步的小程序是个不错的选择。使用框架的封装和连接池是必须的,Spring是首选,这里我们同样需要Spring的多数据源连接配置方式。 其实再进行项目开发转载 2014-03-20 23:02:44 · 55358 阅读 · 4 评论 -
Spring全局事务之WebLogicJtaTransactionManager
全局事务是指在一个事务中涉及到几个事务参入者,这些事务参入者可以是我们常见的数据库操作,消息(MQ)操作等等.如同时进行下面的操作,比如"转账"操作发生在两个数据库:1,从数据库A的的表中将某个帐号的余额减少.2从数据库B的的表中将某个帐号的余额增加.3,提交在数据库A中的操作.4,提交在数据库B中的操作.通常单个数据库只能保证本数据库的事务要么提交要么回滚,当涉及的事务跨数据转载 2014-03-20 23:17:32 · 2326 阅读 · 0 评论 -
Spring基于ThreadLocal的“资源-事务”线程绑定设计的缘起
题目起的有些拗口了,简单说,这篇文章想要解释Spring为什么会选择使用ThreadLocal将资源和事务绑定到线程上,这背后有着什么样的起因和设计动机,通过分析帮助大家更清晰地认识Spring的线程绑定机制。ThreadLocal不是用来解决对象共享访问问题的,而主要是提供了保持对象的方法和避免参数传递的方便的对象访问方式。归纳了两点: 1。每个线程中都有一个自己的T转载 2014-03-18 23:16:01 · 1339 阅读 · 0 评论 -
Java 深度克隆 clone()方法重写 equals()方法的重写
1、为什么要重写clone()方法?答案:Java中的浅度复制是不会把要复制的那个对象的引用对象重新开辟一个新的引用空间,当我们需要深度复制的时候,这个时候我们就要重写clone()方法。2、为什么要重载equal方法?答案:因为Object的equal方法默认是两个对象的引用的比较,意思就是指向同一内存,地址则相等,否则不相等;如果你现在需要利用对象里面的值来判断是否相等转载 2014-03-17 13:34:39 · 11047 阅读 · 2 评论 -
JAVA深复制(深克隆)与浅复制(浅克隆)
1.浅复制与深复制概念⑴浅复制(浅克隆或者影子克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。⑵深复制(深克隆)被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被原创 2014-03-18 00:21:20 · 1173 阅读 · 0 评论 -
JAVA HOTSPOT VM参数大全
(本文JDK版本6.0) SUN的JDK版本从1.3.1开始使用HotSpot虚拟机技术。HotSpot是较新的Java虚拟机技术,用来代替JIT(Just in Time)技术,可以大大提高Java运行的性能。Java原先是把源代码编译为字节码在虚拟机执转载 2011-10-13 17:42:34 · 3992 阅读 · 0 评论 -
java+内存分配及变量存储位置的区别
Java内存分配与管理是Java的核心技术之一,之前我们曾介绍过Java的内存管理与内存泄露以及Java垃圾回收方面的知识,今天我们再次深入Java核心,详细介绍一下Java在内存分配方面的知识。一般Java在内存分配时会涉及到以下区域: ◆寄存器:我们在程序中无法控制原创 2011-10-13 19:11:35 · 23079 阅读 · 18 评论 -
Spring AOP简介二
一、先了解AOP的相关术语:1.通知(Advice): 通知定义了切面是什么以及何时使用。描述了切面要完成的工作和何时需要执行这个工作。2.切入点(Pointcut) 通知定义了切面要发生的“故事”和时间,那么切入点就定义了“故事”发生的地点,例如某个类或方法的名称,Spring中允许我们方便的用正则表达式来指定。(就是指定所有想启用通知的方法,也即指定所有想被通知拦截的方法)3.连接点(Joinpoint): 程序能够应用通知的一个“时机”,这些“时机”就是连接点,例如方法被调用原创 2010-10-22 20:53:00 · 758 阅读 · 0 评论 -
Spring AOP简介一
AOP 已经成为企业应用开发重要的手段, 而 Spring AOP 无疑是其主流, 本文将从 AOP alliance 开始对 spring aop 做一个简单的概括, 同时也会对其中的重要细节做一些说明. 本文将延续 spring1.0 风格.下图显示了Spring AOP和AOP alliance一些接口和类关系:从图中可以看出, aop alliance 定义了 Advice, JointPoint 两个核心 interface, Pointcut 接口是在 sp原创 2010-10-22 21:06:00 · 1695 阅读 · 0 评论 -
iBATIS中$和#的区别
<br />我们在使用iBATIS时会经常用到#这个符号。<br /><br />比如:sql 代码 select * from member where id =#id# <br /><br /><br />然后,我们会在程序中给id这个变量传递一个值,iBATIS会自动将#id#转成我们传递的内容。<br /><br />但是我最近碰到一个奇怪的问题。我在批量删除或修改的时候,居然SQL失效了。<br /><br />SQL如下:sql 代码 update user set flag=原创 2010-09-26 18:40:00 · 253 阅读 · 0 评论 -
response.sendRedirect()和request.getRequestDispatcher().forward(request,response)的区别
<br />跳转方式<br />http://localhost:8080/Test应用<br /> 运用forward方法只能重定向到同一个Web应用程序中的一个资源。而sendRedirect方法可以让你重定向到任何URL。<br /> 表单form的action="/uu";sendRedirect("/uu");表示相对于服务器根路径。如http://localhost:8080/Test应用(则提交至http://localhost:80原创 2010-08-27 16:08:00 · 895 阅读 · 0 评论 -
java读取xml文件的四种方法
1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导原创 2010-07-15 10:17:00 · 1166 阅读 · 0 评论 -
spring多配置文件加载
在项目中会涉及到多个spring的配置文件,在我所接触的项目中,只用到了两种不同的方法进行配置,有其他好办法的,欢迎讨论。 方法一: 在web.xml文件中作如下配置: contextConfigLocation /WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml org.springframewo转载 2009-12-22 10:51:00 · 1244 阅读 · 0 评论 -
java中static修饰符的代码的加载顺序
1:首先加载被final static 修饰的原始数据类型的数据成员(若是其他类型的对象,包括原始数据类型的类包装器,如Integer,也排在第3加载)。2:其次加载处于static块中的代码块。3:最后才是加载只被static修饰的数据成员。 测试实例: package com.liu.person;import java.util.Random;public c原创 2009-12-09 22:09:00 · 3595 阅读 · 2 评论 -
Java中abstract和interface的区别
abstractclass和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstractclass和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,转载 2009-12-09 14:42:00 · 982 阅读 · 0 评论 -
深入浅出URL编码
一、问题: 编码问题是JAVA初学者在web开发过程中经常会遇到问题,网上也有大量相关的文章介绍,但其中很多文章并没有对URL中使用了中文等非ASCII的字符造成服务器后台程序解析出现乱码的问题作出准确的解释和说明。本文将详细介绍由于在URL中使用了中文等非ASCII的字符造成乱码的问题。1、在URL中中文字符通常出现在以下两个地方:(1)、Query String转载 2010-01-20 16:31:00 · 3717 阅读 · 0 评论 -
关于struts Action类中重载excute方法应注意
最近在做项目(用struts技术)的过程中,在一个Action类中重载了父类的execute方法,结果出现了意想不到的结果。情况是这样的: 这个Action类是继承DispatchAction,因为这个类很早之前就写好了,原以为这个Action类的逻辑比较单纯,就直接重载了execute。过了段时间,发现这个类要处理多个逻辑,然后就有在这个类里面加个方法B。写好之后,我原创 2009-05-20 12:47:00 · 1931 阅读 · 0 评论 -
Eclipse快捷键大全
<br />Ctrl+1 快速修复(最经典的快捷键,就不用多说了)<br />Ctrl+D: 删除当前行 <br />Ctrl+Alt+↓ 复制当前行到下一行(复制增加)<br />Ctrl+Alt+↑ 复制当前行到上一行(复制增加)<br />Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)<br />Alt+↑ 当前行和上面一行交互位置(同上)<br />Alt+← 前一个编辑的页面<br />Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)<br />Alt+Ente转载 2011-03-04 14:27:00 · 569 阅读 · 0 评论 -
使用 Spring 2.5 TestContext 测试框架
<br />概述<br />Spring 2.5 相比于 Spring 2.0 所新增的最重要的功能可以归结为以下 3 点:基于注解的 IoC 功能;基于注解驱动的 Spring MVC 功能;基于注解的 TestContext 测试框架。<br />Spring 推荐开发者使用新的基于注解的 TestContext 测试框架,本文我们将对此进行详细的讲述。<br />低版本的 Spring 所提供的 Spring 测试框架构在 JUnit 3.8 基础上扩展而来,它提供了若干个测试基类。而 Spring转载 2011-03-09 17:21:00 · 771 阅读 · 0 评论 -
更改maven打包文件的默认输出
众所周知,maven是个项目管理工具,maven是个好东西啊,这里就不多介绍了,网上有很多!这里我主要是讲一下在使用maven之后的一些心得。 开发j2ee Web项目的同学,在开发阶段总免不了需要运行web服务器来调试项目。一般都喜欢在应用服务器的配置文件中原创 2011-09-29 18:36:53 · 49207 阅读 · 3 评论 -
java正则类Matcher详解
一、捕获组的概念捕获组可以通过从左到右计算其开括号来编号,编号是从1 开始的。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:1 ((A)(B(C)))2 (A)3 (B(C))原创 2011-09-20 18:39:25 · 4685 阅读 · 0 评论 -
java.util.concurrent.CountDownLatch类详解及例子
从名字可以看出,CountDownLatch是一个倒数计数的锁,当倒数到0时触发事件,也就是开锁,其他人就可以进入了。在一些应用场合中,需要等待某个条件达到要求后才能做后面的事情;同时当线程都完成后也会触发事件,以便进行后面的操作。CountDownLatch最重要的方法是countDown()和await(),前者主要是倒数一次,后者是等待倒数到0,如果没有到达0,就只有阻塞等待了。转载 2011-06-20 14:07:00 · 4053 阅读 · 1 评论