Java/J2EE
大墨
素华偏可憙,的的半临池,疑为霜裹叶,复类雪封枝,日斜光隐见,风还影合离.
展开
-
JDK动态代理实现原理
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。 Java代码 package dynamic.proxy; import java.lang转载 2014-04-14 13:13:18 · 825 阅读 · 0 评论 -
JDO Tips
Java数据对象(Java Data Objects,JDO)是一个应用程序接口(API),它是Java程序员能够间接地访问数据库,也就是说,不需使用直接的结构化查询语言(SQL)语句。JDO是作为Java数据库连接(JDBC)的一个补充来介绍的,而JDBC是一个支持使用SOL语句对流行的数据库程序进行访问的接口。有了JDO,程序员就可以使用类来定义数据对象,然后支撑程序就会根据类的定义来管理对给原创 2012-09-02 09:03:29 · 1102 阅读 · 1 评论 -
ClassNotFoundException And NoClassDefFoundError
ClassNotFoundException直接继承与Exception,它是一个checked 的异常。NoClassDefFoundErr 继承自Error->LinkageError ,它是一个unchecked 的异常。当我们在运行期间通过Class.forName() or ClassLoader.loadClass() or ClassLoader.findSystemCl原创 2012-08-17 11:22:21 · 3520 阅读 · 0 评论 -
How to Create J2ee Project With Maven in Eclipse
1. Open "New Maven Project" Wizard2. Fill artifact info correspondingly 3. Click "Finish"生成标准的Maven工程,要求有如下源目录:src/main/javasrc/main/resourcessrc/test/javasrc/test/resou原创 2012-07-29 21:07:28 · 1627 阅读 · 0 评论 -
Java Bit Computing
移位运算符包括: “>> 右移”;“>> 无符号右移”例子:-5>>3=-11111 1111 1111 1111 1111 1111 1111 10111111 1111 1111 1111 1111 1111 1111 1111其结果与 Math.floor((double)-5/(2*2*2)) 完全相同。-51111 1111 1111 111原创 2012-08-02 22:19:08 · 561 阅读 · 0 评论 -
Java编程中“为了性能”需做的26件事
下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:控制资源的使用,通过线程同步来控制资源的并发访问;控制实例的产生,以达到节约资源的目的;控制数据共享,在不建立直接关联的条件下,让多个不相关转载 2012-07-18 14:13:15 · 1827 阅读 · 0 评论 -
Java Performance Monitor
参考工具:1.VisualVMVisualVM是一个资源分析工具,一直从JDK 6更新到7,它默认内存和CPU的监视,它可以告诉你哪个类和方法消耗资源,但它不会显示代码流程。 2.JProfilerJProfiler很容易安装,并且通过向导,你可以选择应用服务器用来运行应用程序。我不得不选择使用JPofiler应用服务器的主目录,以及向导生成的一个单独的启动脚本。然原创 2012-07-18 14:30:41 · 1141 阅读 · 0 评论 -
interface vs abstract class 应用场景总结
1. interface的应用场合 A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。 B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。 C. 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。 D. 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。2. abstract class的应用场合 在既需原创 2012-06-26 09:52:19 · 1910 阅读 · 1 评论 -
Apache整合Tomcat详解系列(三)Apache性能调优
一、总结前一天的学习在前两天的学习中我们知道、了解并掌握了Web Server结合App Server实现单向Https的这样的一个架构。这个架构是一个非常基础的J2ee工程上线布署时的一种架构。在前两天的教程中,还讲述了Http服务器、App Server的最基本安全配置(包括单向https的实现), 它只是避免了用户可以通过浏览器侵入我们的Web访问器或者能够通过Web浏览器来查询我们转载 2012-07-08 12:47:25 · 5492 阅读 · 0 评论 -
Apache整合Tomcat详解系列(五)Tomcat集群-群猫乱舞
一、为何要集群单台App Server再强劲,也有其瓶劲,先来看一下下面这个真实的场景。当时这个工程是这样的,tomcat这一段被称为web zone,里面用spring+ws,还装了一个jboss的规则引擎Guvnor5.x,全部是ws没有service layer也没有dao layer。然后App Zone这边是weblogic,传输用的是spring转载 2012-07-08 12:49:53 · 1738 阅读 · 0 评论 -
Apache整合Tomcat详解系列(一)
一、先从J2EE工程的通用架构说起这是一个通用的Web即B/S工程的架构,它由:ü Web Serverü App Serverü DB Server三大部分组成,其中:² Web Server置于企业防火墙外,这个防火墙,大家可以认为是一个CISCO路由器,然后在CISCO路由器上开放了两个端口为:80和443转载 2012-07-08 11:40:51 · 1542 阅读 · 0 评论 -
JPA Notes
JPA全称为Java Persistence API ,是目前比较流行的一种ORM技术之一,所以他拥有ORM技术的各种特点,当然他还有自己的一些优势:1 标准化 JPA 是 JCP 组织发布的 Java EE 标准之一,因此任何声称符合 JPA 标准的框架都遵循同样的架构,提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。2 对原创 2012-09-03 11:25:53 · 536 阅读 · 0 评论 -
Statement vs PreparedStatement
1. PreparedStatement是预编译的,对于批量处理可以大大提高效率:Statement为每一条Sql语句生成执行计划,如果要执行两条sql语句select colume from table where colume=1;select colume from table where colume=2;会生成两个执行计划,一千个查询就生成一千个执行计划!Pr原创 2012-09-03 13:25:01 · 475 阅读 · 0 评论 -
Understanding synchronized
synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,即同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。 A.无论synchronized关键字加在方法上还是对象上,他取得的锁都是对象,而不是把一段代码或函数当作原创 2012-06-26 13:47:51 · 443 阅读 · 0 评论 -
注解(Annotation)--注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Anno转载 2014-08-10 18:54:06 · 907 阅读 · 0 评论 -
CGLib 动态代理
JDK自从1.3版本开始,就引入了动态代理,JDK的动态代理用起来非常简单,但是它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的类可以使用CGLIB包。 CGLIB是一个强大的高性能的代码生成包。它被许多AOP的框架(例如Spring AOP)使用,为他们提供方法的interception(拦截)。Hibernate也使用CGLIB来代理单端s原创 2011-10-22 16:33:04 · 731 阅读 · 0 评论 -
JAVA的内存泄露问题
1 引言 Java的一个重要优点就是通过垃圾收集器GC (Garbage Collection)自动管理内存的回收,程序员不需要通过调用函数来释放内存。因此,很多程序员认为Java 不存在内存泄漏问题,或者认为即使有内存泄漏也不是程序的责任,而是GC 或JVM的问题。其实,这种想法是不正确的,因为Java 也存在内存泄漏,但它的表现与C++不同。如果正在开发的Java 代码要全天24转载 2012-09-26 18:14:29 · 606 阅读 · 0 评论 -
String 深入理解
1、"abc"与new String("abc"); String s = new String("abc");创建了几个String Object? 这个问题比较简单,涉及的知识点包括:引用变量与对象的区别; 字符串文字"abc"是一个String对象; 文字池[pool of literal strings]和堆[heap]中的字符串对象。 一、引用变量与对原创 2012-09-16 09:09:34 · 666 阅读 · 0 评论 -
The Difference of Class.forName()、Class.forName().newInstance() and New in Java
在一次偶然的跟同行交流的过程中,突然被问及Class.forName()、Class.forName().newInstance() 、New的区别,一时懵了, 竟然在java开发中最常见的一些东西竟说不清道不明的感觉,很不是滋味,于是下来仔细search了一番:Class.forName( ): Class.forName("")返回的是类 forName()静态方法的目的是为了让JVM原创 2011-10-26 14:59:24 · 1244 阅读 · 0 评论 -
java.lang.ThreadLocal类的用法,及与同步机制的比较
一、ThreadLocal类 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以转载 2012-06-14 07:21:47 · 516 阅读 · 0 评论 -
JSP两种声明变量的区别
在JSP中用两种声明变量的方法,一种是在内,一种是在内。他们之间有什么区别呢?我们直接看一个JSP文件来理解。count.jsp代码如下:JSP DeclarationsJSP Declarations<%! int count = 0; //声明在内的变量 void method(){} %><% int i= 0原创 2013-09-11 09:50:29 · 2418 阅读 · 0 评论 -
JAVA 性能监测与分析工具简介
一、Jconsole:java监控和管理控制台,从java5开始,在JDK中提供,用于对JVM中内存,线程和类等的监控。基本使用:在命令行启动jconsole:jconsole 在启动的界面中:概述:有关堆内存使用情况,线程,类加载和CPU使用情况的综述;内存:内存的详细情况,堆和其他内存;线程:峰值/活动线程,另外,各个线程的明细信息,检测死锁;类:监控加载和卸载的类;原创 2013-05-13 11:51:00 · 1055 阅读 · 0 评论 -
Java可变参数讨论与重写,重载的相关讨论
到J2SE 1.4为止,一直无法在Java程序里定义实参个数可变的方法——因为Java要求实参(Arguments)和形参(Parameters)的数量和类型都必须逐一匹配,而形参的数目是在定义方法时就已经固定下来了。尽管可以通过重载机制,为同一个方法提供带有不同数量的形参的版本,但是这仍然不能达到让实参数量任意变化的目的。然而,有些方法的语义要求它们必须能接受个数可变的实参——例如著名的原创 2013-05-13 09:46:52 · 824 阅读 · 0 评论 -
Apache整合Tomcat详解系列(二)Apache Tomcat https应用
一、总结前一天的学习在前一天的学习中我们知道、了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验。这样的架构的好处在于:ü 减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负转载 2012-07-08 12:45:26 · 10450 阅读 · 1 评论 -
Apache整合Tomcat详解系列(四)Tomcat性能调优-让小猫飞奔
一、总结前一天的学习从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是:ü 吞吐量ü Responsetimeü Cpuloadü MemoryUsage我们也在第三天的学习中对Apache做过了一定的优化,使其最优化上述4大核心指标的读数,那么我们的Apache调优了,我们的Tomcat也作些相应的调整,当完转载 2012-07-08 12:48:31 · 1819 阅读 · 0 评论 -
Java Key words and Reserved words
Key words:abstract boolean break byte casecatch char class continue defaultdo double else extends falsefinal finally float for if原创 2011-09-21 20:54:10 · 594 阅读 · 0 评论 -
Clone使用方法详解
1. java“指针” Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念。并且由于Java不能通过简单的赋值来解决对象复制的问题,在开发过程中,也常常要要应用clone()方法来复制对原创 2011-09-22 11:24:55 · 1764 阅读 · 0 评论 -
Java transient 关键字用法
transient 关键字表示在Serializable 的时候不保存该值。//LoggingInfo.javaimport java.io.FileInputStream;import java.io.FileOutputStream;import ja原创 2011-09-22 11:03:25 · 659 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
简介: Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的 Java 理论与实践 中,Brian原创 2011-09-21 21:42:29 · 428 阅读 · 0 评论 -
java 获取路径
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE转载 2008-12-11 08:51:00 · 901 阅读 · 0 评论 -
开源PDF类库
iText iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。 JFreeReport JFreeReport的数据继承自Swing组件的TableModel接口。JFreeReport生成的报表可转载 2008-10-10 10:31:00 · 1864 阅读 · 0 评论 -
Ant入门教程(下)
本内容包含了Ant的历史简要介绍,Ant的功能以及Ant框架的介绍,并对下载安装使用Ant进行了示例介绍,同时通过一个Java程序讲解了Ant的基本使用方法。 1. Ant简介:这里引用Ant帮助文档中对Ant的介绍:转载 2008-10-14 11:23:00 · 723 阅读 · 0 评论 -
Ant入门教程(上)
1,什么是ant ant是构建工具2,什么是构建 概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅与此,但是主要用来干这个3,ant的好处 跨平台 --因为ant是使用java实现的,所以它跨平台 使用简单--与ant的兄弟make比起来 语法清晰--同样是和make相比 功能强大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。转载 2008-10-14 11:15:00 · 791 阅读 · 0 评论 -
log4j 配置案例参考
常用log4j配置,一般可以采用两种方式,.properties和.xml,下面举两个简单的例子:一、log4j.properties### 设置com.unmi域对应的级别INFO,DEBUG,WARN,ERROR和输出地A1,A2 ##log4j.category.com.unmi=ERROR,A1 log4j.category.com.unmi=INFO,A2 ### 一般把上面原创 2008-09-10 14:29:00 · 600 阅读 · 0 评论 -
log4j配置文件基本含义说明
log4j配置文件基本含义说明 log4j.properties配置文件讲解如下: # Set root logger level to DEBUG and its only appender to A1 #log4j中有五级logger #FATAL 0 #ERROR 3 #WARN 4 #INFO 6 #DEBUG 7 配置根Logger,其语法为:#log4j.rootL原创 2008-09-10 14:22:00 · 433 阅读 · 0 评论 -
高效的Java异常处理框架
摘要:本文从Java异常最基本的概念、语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框架,阐述了异常处理的基本原则。并且作者提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常处理的框架来论述此思想。 一、转载 2011-10-01 11:46:39 · 886 阅读 · 0 评论 -
java中的hashcode()和equals()方法详解
1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的。 equals()方法在Object类中定义如下: public boolean equals(Object obj) { return (this == obj);}很原创 2008-10-06 17:32:00 · 2735 阅读 · 1 评论 -
JVM组成图
JVM的组成部分我们先把JVM这个虚拟机画出来,如下图所示:从这个图中可以看到,JVM是运行在操作系统之上的,它与硬件没有直接的交互。我们再来看下JVM有哪些组成部分,如下图所示:原创 2011-10-16 15:35:43 · 791 阅读 · 0 评论 -
Apache vs Tomcat
Apache是专门用于提供HTTP服务的,以及相关配置的(例如虚拟主机、URL转发等等)的web服务器,仅支持静态页面,Tomcat支持动态的,比如Servlet等的应用(Java)服务器,它只是一个Servlet(JSP也翻译成Servlet)容器,Apache:侧重于HTTP ServerTomcat:侧重于Servlet引擎,如果以Standalone方式运行,功能上与Apach原创 2012-07-08 10:50:05 · 844 阅读 · 1 评论 -
JDK 1.5中新增的语言特性
1.泛型generics(支持参数化类型,安全方便);2.注解annotation(@interface,注解式编程);3.枚举enum(增加了enum类型,支持switch);4.变长参数 variable arguments(方法的参数数目可变);5.自动拆装箱automatic boxing and unboxing(八个原始类型与包装类型自行隐式转换);原创 2012-06-19 10:05:43 · 430 阅读 · 0 评论