Java
tianlincao
09年毕业后一直从事J2EE企业应用的开发工作,有丰富的应用软件开发和优化经验。喜欢运动,崇尚一切自由的东西,关注行业新动态。tip:如果你不能改变世界,那就改变自己。
展开
-
JAVA double 类型相加
问题的提出: 编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01); System.out.pr原创 2012-06-16 17:24:44 · 43602 阅读 · 1 评论 -
java 函数形参传值和传引用的区别
java方法中传值和传引用的问题是个基本问题,但是也有很多人一时弄不清。 (一)基本数据类型:传值,方法不会改变实参的值。 public class TestFun { public static void testInt(int i){ i=5;原创 2011-10-15 11:29:48 · 24584 阅读 · 4 评论 -
利用Java的反射与代理机制实现AOP
一.AOP概述 AOP(Aspect Oriented Programing),即面向切面编程,它主要用于日志记录、性能统计、安全控制、事务处理、异常处理等方面。它的主要意图就要将日志记录,性能统计,安全控制、事务处理、异常处理等等代码从业务逻辑代码中清楚地划分出来。通过对这些行为的分离,我们希望可以将它们独立地配置到业务逻辑方法中,而要改变这些行为的时候也不需要影响到业务逻辑方法代码。 下面让我们来看一个利用AOP来实现日志记录的例子,在没有使用AOP之前,我们的代码如下面所讲述。原创 2011-05-04 14:14:00 · 799 阅读 · 0 评论 -
JAVA动态代理模式
<br />在目前的Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。 <br /><br /> 其实现主要通过是java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。 <br /><br /> Proxy类主要用来获取动态代理对象,InvocationHandler接口用来约束调用者实现,如下,HelloWorld接口定义的业务方法,HelloWorldImpl是HelloWorld接口的实现,HelloWo原创 2011-05-01 09:41:00 · 483 阅读 · 0 评论 -
HashSet HashTable HashMap的区别
<br />首先将HashSet与HashTable hashMap区别开:<br />(1)HashSet是set的一个实现类,hashMap是Map的一个实现类,同时hashMap是hashTable的替代品(为什么后面会讲到).<br />(2)HashSet以对象作为元素,而HashMap以(key-value)的一组对象作为元素,且HashSet拒绝接受重复的对象.HashMap可以看作三个视图:key的Set,value的Collection,Entry的Set。这里HashSet就是其实就是H原创 2011-05-19 17:59:00 · 640 阅读 · 0 评论 -
Java栈与堆
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 3. Java中的数据类型有两种。原创 2011-05-18 13:54:00 · 408 阅读 · 0 评论 -
Dbutils 详解
<br />http://www.blogjava.net/b47248054/articles/326712.html转载 2011-03-28 00:54:00 · 498 阅读 · 0 评论 -
JVM内存相关的参数及其说明
<br />JVM内存相关的参数及其说明<br />JVM堆内存(heap)设置选项<br />参数格式<br />说 明<br />设置新对象生产堆内存(Setting the Newgeneration heap size)<br />-XX:NewSize<br />通过这个选项可以设置Java新对象生产堆内存。在通常情况下这个选项的数值为1 024的整数倍并且大于1MB。这个值的取值规则为,一般情况下这个值-XX:NewSize是最大堆内存(maximum heap size)的四分之一。增加原创 2011-03-24 10:41:00 · 476 阅读 · 0 评论 -
JAVA文件操作方法汇总
import java.io.*; public class FileOperate { public FileOperate() { } /** * 新建目录 * @param folderP原创 2011-10-18 14:22:24 · 1021 阅读 · 0 评论 -
List 删除指定元素
由于jdk 1.5推出了快速便利 for each,我们在编码过程中便利都是for each , 格式如下for(Object o : objList){ ...}现在的场景是,需要删除objList中的某几个元素,自然而然,我们会习惯性的写下如下语句:int i = 0;for(Object o : objList){ if(o == value) {原创 2011-11-24 11:09:33 · 24090 阅读 · 2 评论 -
java定时同步类(可以实现挂起和唤醒,定时,同步于异步切换)
public class BatchLogSync extends Thread { /** * 建立一个日期格式化实例,形如yyyy-MM-DD */ private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); /** * 单例对象 */ private static BatchLogSync i原创 2011-11-03 15:55:19 · 3460 阅读 · 0 评论 -
JAVA自定义缓存设计方案
缓存有一个缓存基类,其它缓存类都继承基类.去实现一些方法,其它缓存类可以在里面写自己特有的方法.以带到不同的需求.实现基类主要是方便管理缓存.基类内容如下:import java.util.ArrayList;import java.util.HashMap;import java.util.List;public abstractclass BaseCache {/*原创 2012-06-12 22:52:15 · 3327 阅读 · 0 评论 -
java操作XML
1)DOM(JAXP Crimson解析器)DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的原创 2011-11-26 17:05:18 · 739 阅读 · 0 评论 -
MyEclipse:ant打包部署web工程
在myeclipse下使用ant打包部署web工程:原创 2012-03-07 09:56:57 · 3480 阅读 · 0 评论 -
java io 详解
java中的io中的(input/output)stream无非就是包括基于字符的stream、基于字节的stream和把字节导向的stream转换字符为导向的stream的stream。(很难理解么?)以字节为导向的stream------InputStream/OutputStreamInputStream 和 OutputStream是两个abstact类,对于字节为导向的strea转载 2012-01-12 20:09:20 · 766 阅读 · 0 评论 -
[Thinking In Java] 之 一切皆对象
一.一切皆对象Java 是以C++为基础,但是Java是一种更纯粹的面向对象语言.C++允许有多种编程风格,它支持与C语言的向后兼容能力,由于C++是C的一个超集,所以C++有很多特性是C不具备的,因此,C++在某些地方显得复杂.而Java则没有这种”杂合关系”,只希望进行面向对象设计,即:一切皆对象. 1.1 用句柄操纵对象 我们在处理数据进行操作的时候,时候要知道处理的对原创 2011-12-27 13:07:25 · 1536 阅读 · 0 评论 -
HashMap 源码分析
/** * The default initial capacity - MUST be a power of two. * 默认的初始容量必须是2的几次方。 */ static final int DEFAULT_INITIAL_CAPACITY = 16; /** * The maximum capacity, used if a hi转载 2011-12-22 15:21:28 · 820 阅读 · 0 评论 -
DES和RSA加密解密实例
加密的应用 加密是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。数据加密技术已经广泛应用于因特网电子商务、手机网络和银行自动取款机等领域。加密系统中有如下重要概念:1:明文。被隐蔽的消息称作明文(plaintext)。2:密文。隐蔽后的消息称作密文(ciphertext)。3.加密。将明文变原创 2011-11-30 14:07:46 · 7609 阅读 · 0 评论 -
连接操作数据库DAO类
<br />一共三个文件来实现DAO的封装DB.java,ConnManage.java,BaseDAO.java <br />==========DBconfig.properties文件========================= <br />datasource=jdbc/MakeWeb2008 <br />show_sql=false <br />DEFAULT_PAGE_SIZE=20 <br />==========DB.java==============================原创 2011-03-28 00:47:00 · 4924 阅读 · 0 评论 -
Resin3.x 项目实践
<br /> Resin一般以轻巧、方便著称,其处理jsp,servlet的效率比较高,适合中小型企业作为web服务器部署,而且resin对中文的支持也很好哦。同样的配置在resin中默认情况下中文处理不会出现乱码,而tomcat则会。这是因为tomcat默认使用iso-8859-1 编码 ,而resin默认使用服务器本地字符编码。 <br /> <br /> 项目运行环境 <br /> 系统环境: windows 2003 server + jdk 1.6 +resin 3.1.9<br />原创 2011-03-20 18:09:00 · 1184 阅读 · 0 评论 -
深入研究Servlet线程安全性问题
<br />摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍。<br /><br />关键字:Servlet 线程安全 同步 Java内存模型 实例变量 <br /><br /> Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线原创 2010-12-01 00:15:00 · 542 阅读 · 0 评论 -
Java操作XML文件(转)
<br />在java环境下读取xml文件的方法主要有4种:DOM、SAX、JDOM、JAXB<br />1. DOM(Document Object Model)<br /> 此方法主要由W3C提供,它将xml文件全部读入内存中,然后将各个元素组成一棵数据树,以便快速的访问各个节点 。 因此非常消耗系统性能 ,对比较大的文档不适宜采用DOM方法来解析。 DOM API 直接沿袭了 XML 规范。每个结点都可以扩展的基于 Node 的接口,就多态性的观点来讲,它是优秀的,但是在 Java 语言中的应用不方转载 2010-11-30 15:26:00 · 469 阅读 · 0 评论 -
ThreadLocal作用
<br />早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。 ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一 些。 <br /><br />当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。转载 2010-11-27 20:34:00 · 5134 阅读 · 4 评论 -
Java读取配置文件的几种方法
<br /> 在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。<br />一、读取xml配置文件<br /> (一)新建一个java bean<br /> package chb.demo.vo;<br /> public class HelloBean {<br /> private String helloWorld;<br /> public String ge原创 2010-09-18 21:16:00 · 457 阅读 · 0 评论 -
JAVA保留小数点
<br />java保留两位小数问题:<br />方式一:<br />四舍五入 <br />double f = 111231.5585; <br />BigDecimal b = new BigDecimal(f); <br />double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); <br />保留两位小数 <br />---------------------------转载 2010-06-08 10:22:00 · 16278 阅读 · 2 评论 -
在Java web服务器内使用url rewrite
每个网页或请求都是一个url地址,一般,这个地址可能是.do,.page,.action之类的并加上?号、&号查询串等构成的一个长长的的url。很urgly。 一般的url----------------------------------------------------------较好的url http://www.xxx.net/user/profile.do?id=20001转载 2010-03-16 20:51:00 · 1001 阅读 · 0 评论 -
CAS 配置(基于tomcat 6)
CAS 配置(基于tomcat 6) 需要包资源:a) cas-server-3.3.5-releaseb) apache-tomcat-6.0.24-windows-x86.zipc) cas-client-2.0.11.zip ,后面我用了CAS-CLIENT-3.1.3版本,支持登出功能 第一步:配置CAS服务器环境1原创 2010-03-13 11:32:00 · 14466 阅读 · 3 评论 -
一著名软件公司的java笔试算法题!
一著名软件公司的java笔试算法题! 算法程序题: 该公司笔试题就1个,要求在10分钟内作完。 题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。 BY [重庆流氓]我来实现一下我转载 2009-06-15 15:51:00 · 654 阅读 · 0 评论 -
log4j详解与实战
<br />http://www.javaeye.com/topic/378077<br /> <br />参考资料:<br />1、log4j 详解(一)<br />2、log4j 详解(二)<br />3、Log4j基本使用方法<br />4、Log4j 用法(一)<br />5、log4j.properties 使用说明<br />6、Apache Log4j详解<br />7、log4j.xml配置详解<br />8、log4j.xml配置详解转载 2010-12-05 10:47:00 · 736 阅读 · 0 评论 -
Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法
<br />ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项的前后项即可,所以插入数度较快! <br />线性表,链表,哈希表是常用的数据结构,在进行J转载 2010-12-05 22:50:00 · 662 阅读 · 0 评论 -
Apache Commons-logging+log4j配置
1.Commons-Loggin简介Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interface),同时兼顾轻量级和不依赖于具体的日志实现工具 。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,进行了简单的包装,此接口更接近于Log4J和LogKit的转载 2010-12-05 10:24:00 · 10428 阅读 · 1 评论 -
linux下tomcat设置最大连接数,设置最大内存,使用jconsole监控
1. 添加tomcat管理员帐户<br />添加管理员账户tomcat-users.xml<br /><?xml version='1.0' encoding='utf-8'?><br /><tomcat-users><br /><role rolename="tomcat"/><br /><role rolename="role1"/><br /><role rolename="manager"/><br /><role rolename="admin"/><br /><user username="to原创 2011-03-15 16:14:00 · 1755 阅读 · 0 评论 -
Tomcat 6 项目实践
以前公司一直使用的web服务器是resin 版本,虽然说很轻巧方便,但是老是会崩溃,故现在换成tomcat 6,个人觉得在处理并发和稳定性上会比resin 好很多,服务器是:windows server 2003 ,下面是我在项目中的配置:1.调整tomcat启动内存 这一步是必须的,默认tomcat 启动内存是128M ,这可很难满足项目需求,如果这里不调整,你会发现web服务器经常性的down。调整方案: 在tomcat 主目录下/bin/catalina.bat 修改如下@原创 2011-03-14 11:39:00 · 491 阅读 · 0 评论 -
取得查询SQL里面的字段名和类型
<br /> 一直想做一个报表系统,只要把SQL写入就可以自动生成报表,先做一点简单的实现:<br /> <br />package com.ur.util;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSetMetaData;import java.sql.SQLException;/** * Jan 13, 2011 GetColumnName.java原创 2011-01-13 14:54:00 · 3721 阅读 · 0 评论 -
dom4j方式访问远程WebService返回xml形式的String类型
import java.io.IOException;import java.io.InputStream;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.HashMap;import java.util.Map;import org.dom4j.Document;import org.dom4j.Documen转载 2011-01-06 00:39:00 · 2061 阅读 · 3 评论 -
Java Annotation(注解)
<br /> Annotation(注释)是 JDK5.0 及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注释是以 @注释名 在代码中存在的,根据注释参数的个数,我们可以将注释分为:标记注释、单值注释、完整注释三类。它们都不会直接影响到程序的语义,只是作为注释(标识)存在,我们可以通过反射机制编程实现对这些元数据的访问。另外,你可以在编译时选择代码里的注释是否只存在于源代码级,或者它也能在 class 文件中出现。<br /><br /> 如果要对于元数据转载 2011-01-04 23:59:00 · 725 阅读 · 0 评论 -
javadoc 语法
<br />我们在开发JAVA程序中, 可以使用Javadoc来进行程序文档的整理, 当程序编写完成, 利用Java自带的JavaDoc工具就可以生成规范的API说明手册.而且在编辑器内可以看到类或者方法的说明,这对于代码的重用有很高的意义!! <br />javadoc 的语法是在代码文件内部使用的 <br />javadoc 命令是在CMD状态下的一个指令生成代码文件的说明文件(html) <br />注释说明的几个建议和原则 <br />1.类如何相互关联 <br />2.方法如何影响对象的状态 <转载 2011-01-01 20:41:00 · 862 阅读 · 0 评论 -
SLF4J 的几种实际应用模式--:SLF4J+Log4J 与 SLF4J+LogBack
SLF4J(Simple Logging Facade for Java) 是一个通用的日志框架,不能何以谓之 Facade(门面),所扮眼的角色相当于 Jakarta Commons Logging。就像 JCL 需要底层的日志实现,如 Log4J、java.util.logging、Simple Logger 等来完成具体的信息输出,事实上基本总是 JCL+Log4J 那么一个绝配。SLF4J 的原旨也是能支持多种下层日志框架实现,但最好的日志实现仍然是 Log4J,所以本篇讲述 SLF4J 的第一种用转载 2010-12-27 22:54:00 · 7749 阅读 · 0 评论 -
java Serializable 序列化
java中的序列化(serialization)机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个相同的对象。序列化机制在java中有着广泛的应用,EJB、RMI等技术都是以此为基础的。序列化机制是通过java.io.ObjectOutputStream类和java.io.ObjectInputStream类来实现的。在序列化(serialize)一个对象的时候,会先实例化一个Obj原创 2010-12-17 22:16:00 · 526 阅读 · 0 评论 -
正则表达式速成
本文目标30分钟内让你明白正则表达式是什么,并对它有一些基本的了解,让你可以在自己的程序或网页里使用它。如何使用本教程最重要的是——请给我30分钟,如果你没有使用正则表达式的经验,请不要试图在30秒内入门。当然,如果你是超人,那自然得另当别论。别被下面那些复杂的表达式吓倒,只要跟着我一步一步来,你会发现正则表达式其实并没有你想像中的那么困难。当然,如果你看完了这篇教程之后,发现自己明白了很转载 2009-08-18 16:54:00 · 476 阅读 · 0 评论