- 博客(42)
- 收藏
- 关注
类的代码块研究
代码块实例:测试发现:1)代码块是在类初始化前执行的。2)用java.lang.Class.forName("com.chen.test.One");只会加载类,并不会执行构造方法。3)用java.lang.Class.forName("com.chen.test.One");会执行代码块。4)如果实例化One one = new One(),会先执行代码块,然后再执行构造...
2009-09-03 16:25:39
99
内部类是怎样编译的
测试发现内部类被编译后class文件名为:主类$内部类名.class如:package dlp.oa.test;public class Testb { public class chen{ }}被编译为:Testb.class 和 Testb$chen.class 两个class文件...
2009-09-03 16:25:03
147
程序运行时间的测试
在测试时发现一个类的实例化时间有几百毫秒,测试下发现以下问题.1)当一个类加载了很多其它的类时,第一次加载是要多点时间,一般好像为:16毫秒左右,如果实例化一次,再去实例化就会发现几乎不要时间,反正毫秒数显示为0,因此可以认为类在加载一次后,实例化会从中找是否类已加载,如果加载,直接在内存中实例化类,而不要再加载类文件,然后再实例化,可想而知,容器中保存实例就是加快了实例化的过程,因为...
2009-09-03 16:24:31
115
继承类的实例化顺序
测试发现继承类的实例子顺序为:1)实例化最上层父类,类在第一次实例化时都要加载类模板,大概用时几十毫秒左右.2)然后再实例化自己,总结:实例化过程是从上到下的过程.A extends BB extends C1)实例化C.2)实例化B3)实例化A...
2009-09-03 16:23:41
109
类的代码块研究
代码块实例:测试发现:1)代码块是在类初始化前执行的。2)用java.lang.Class.forName("com.chen.test.One");只会加载类,并不会执行构造方法。3)用java.lang.Class.forName("com.chen.test.One");会执行代码块。4)如果实例化One one = new One(),会先执行代码块,然后再执行构造...
2009-08-27 15:36:58
79
内部类是怎样编译的
测试发现内部类被编译后class文件名为:主类$内部类名.class如:package dlp.oa.test;public class Testb { public class chen{ }}被编译为:Testb.class 和 Testb$chen.class 两个class文件...
2009-08-27 15:36:24
208
程序运行时间的测试
在测试时发现一个类的实例化时间有几百毫秒,测试下发现以下问题.1)当一个类加载了很多其它的类时,第一次加载是要多点时间,一般好像为:16毫秒左右,如果实例化一次,再去实例化就会发现几乎不要时间,反正毫秒数显示为0,因此可以认为类在加载一次后,实例化会从中找是否类已加载,如果加载,直接在内存中实例化类,而不要再加载类文件,然后再实例化,可想而知,容器中保存实例就是加快了实例化的过程,因为...
2009-08-27 15:35:43
109
继承类的实例化顺序
测试发现继承类的实例子顺序为:1)实例化最上层父类,类在第一次实例化时都要加载类模板,大概用时几十毫秒左右.2)然后再实例化自己,总结:实例化过程是从上到下的过程.A extends BB extends C1)实例化C.2)实例化B3)实例化A...
2009-08-27 15:34:58
123
条件的执行顺序
public void run() { if(statusa() && statusb()) { System.out.println("ok"); } } public boolean statusa() { System.out.println("aa"); return false; } public boolean ...
2009-08-27 15:34:30
191
tomcat类加载器之WebappClassLoader
我们一直迷惹为什么我们放在web-inf/classes和web-in/lib下的类和包怎会被tomcat找到执行,这也是我们为什么常常把自己项目开发的类和第三方包放在这两个地方,以前我们一直认为java只从classpath中加载类,或者dir.ext中加载类及lib中加载系统类包。但是tomcat是否有自己的加载方式,比如,tomcat能加载自己目下的核心类包,tomcat的核心类包放...
2009-08-22 17:25:00
177
tomcat生命周期管理接口Lifecycle
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding c...
2009-08-22 17:24:39
138
tomcat数据库连接池的研究
数据库连接池可能很多人一直不明白真正的作,也无法真实的体会其明显的作用,很多初级开发者可能大我都是用完就close了,要用时就打开,这是否对小的应用来说用不用连接池效果不是很明显,还有一点就是初级开发者常常不记得关闭连接,使得数据库服务器被连接占满,同时连接池因设定了最大连接数,而可能使得超过了连接时数据库无法使用。有可能很多开发者因为以前用asp,php,vb等的原因,好像不关闭...
2009-08-22 17:24:07
123
关于JAVA时间的研究
java的时间一直令人难以处理,或者说不知道用那种方式,最主要的是对一些类的多种实现方法的一种混乱,其实时间主要有以下几个类。时的相关的类:1)java.until.Date2)java.util.Calendar3)java.util.GregorianCalendar其中GregorianCalendar继承Calendar。也就是说GregorianCalendar除...
2009-08-21 08:27:09
103
程序执行耗时测试
1)实例化时第一次一般有几毫秒到几十毫秒。第二,或者加载过一次,二次一般不要时间。2)测试连接数据库并执行一条select语句要400多毫秒3)得到连接要390多毫秒总结:发现数据连接是最毫时的操作,而执行查询等操作并不需要很多时间。我在tomcat中用一个程序进行测试,不使用连接池用时都为47毫秒,不管怎样刷新这时间不变。而用连接池后,用时15毫秒,多次刷新大多数都是...
2009-08-21 08:26:45
184
方法重写
当一个接口A,有B继承了A并实现了A的全部方法,C然后再继承B,然后重写了部分B的方法,当B实例化后附给A变量。当A执行方法时,将是盖过后的方法。如果实例化的类没有相应的方法,将向上的父类找看有没有相应的方法。一直找到最顶层。...
2009-08-21 08:26:20
115
关于javabean的一反射原理
我们知道反射可以通过一个getter和setter方法得到相应属性的值,在struts测试中发现,struts只会把提供的属性转成get方法。而不会去检查这个属性是否真实存在。如:我有一个public String getLove(){ return good;}在标签中我们使用love属性一样可以得到值,只不过是good的值。应用需求:这种应用是在有时...
2009-08-21 08:25:48
94
java语法解析
1. 一个重写方法的实例的写法。//////////////////////////////////////////////////////////////////////////////////////new Thread(){ public void run(){ se.send(); } }.start();上面...
2009-08-21 08:25:04
158
关于数据LinkedList的removefirst出错
我有一段这样的代码: Java codeprivate LinkedList freeCon = new LinkedList();public Connection getConn() { Connection re = null; if(freeCon.size()>0) { try { re = freeCon.getFirst();...
2009-08-21 08:23:31
282
tomcat(3)之StandardServer.java
StandarServer.java 所在包package org.apache.catalina.core;public final class StandardServer implements Lifecycle, Server, MBeanRegistration 从上节分析可以看到,Catalina.java主要执行了。 server.initiali...
2009-08-08 11:57:41
141
ThreadLocal研究
我在hibernate工厂类中看到了关于ThreadLocal的使用,threadLocal显然是类变量,全局的是否这样表示不同的线程共享了threadLocal,事实上没错,多个线程取得到是同一样threadLocal但是在不同的线程中使用threadLocal得到的变量不一样。那么什么是同一线程呢,我们可以这样理解线程是主线程创建分支线程调用类执行完再返回主线程,那么这么这分支线程...
2009-08-08 11:55:39
77
StringBuffer
StringBuffer和String都差不多,都是对char类型数组进行处理,只不过他们继承的父类不一样,我们看看String 的继承关系。public final class String implements java.io.Serializable, Comparable, CharSequence StringBuffer的继承关系。 public ...
2009-08-06 19:15:51
86
类型转换之Byte
Byte是一个类,byte是java内部类型,并不体现为一个类。下面的代码是正确的。byte aa = 10;Byte i = aa;很显然是正确的,但我们知道在类中进行赋值,要不就同类型,要不就是左边为右边的父类或接口,但是byte很显然不是一个真实的类,而Byte也并不是byte的父类,很显然Byte是约定的,不能改变其名称的和位置的。可能JVM在运行时,或者在JAVA源码...
2009-08-06 19:15:07
141
Object之hashCode
public int hashCode()返回该对象的哈希码值。支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表。 hashCode 的常规协定是: 在 Java 应用程序执行期间,在同一对象上多次调用 hashCode 方法时,必须一致地返回相同的整数,前提是对象上 equals 比较中所用的信息没有被修改。从某一应用程序的一次执行到...
2009-08-06 19:14:19
83
String
1.方法:getBytes(String charsetName) charsetName为编码类型,也就是把字符串转成字节时的编码类型,在测试中发现他用默认编码转换时,英文字母和数字只占一个字节,中文占二个字节.如果用utf-8转换时,英文字母和数字还是占一个字节,但中文占三个字节.以下是源码:-----------------------------------------...
2009-08-05 12:02:31
64
struts启始类ActionServlet
此类是struts的入口类,也是调渡类,tomcat是通过个servlet把相关参数等操作传给struts处理的,ActionServlet是一个普能的servlet,他继承于:HttpServlet,有相应的doGet和doPost方法。ActionServlet和其它servlet一样,是在web.xml进行定义的,不然系统将无法找到这个servlet很显然struts帮我们处理了...
2009-08-05 12:00:36
79
Action.java
此类为action的继承的类,其中主要以下几个方法:1)execute2)addErrors3)addMessages4)saveErrors5)saveMessages其中excute方法为 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServl...
2009-08-05 11:59:43
88
tomcat(2)之Catalina.java
这个类位于org.apache.catalina.startup包中.其实这个类是启动tomcat的真正的入口类.从Bootstrap.java中看得出来,其实启动时只执行此类的load和start,并设置此对象的父加载器属性。我们选来看此类的方法load有什么作。--------------------------------------------------------p...
2009-07-04 08:04:38
110
tomcat(1)之Bootstrap.java
此类的作用,就是 * Initialize daemon. 初始化 * 主要有以下过程 * 1)设置环境变量,初始化类加载器,事实上就是为commonLoader,catalinaLoader,sharedLoader,不过这里其实都为 * commonLoader,因为其它几个并没配置,配置文件位于 org.apache,catalina.startup中的catalina....
2009-07-04 08:04:03
125
文章发表说明
写这个博客的目的是自己在JAVA开发中的一些总结和研究测试,中间难免会有很多的错误,还请大家指正,我写的文章尽量不那些难懂的太专业的术语,希望大家的支持,本人想有时间研究一下JDK的源友和TOMCAT的源,这样也能比较清楚底层的一些细节情况。 本博客都是自己原创的文章,是自己的一些经验和测试总结,可以转摘我的文章,但请保留出处,同时也希大家能提供意见。谢谢。...
2009-07-02 18:21:07
117
类是怎样被执行的研究
1)类是以编译后的字节码.class类型存于硬盘或其它存储介质上.我们打开被编译的文件也能看出一些东东,上面的部分看不懂,但从能看得懂的来分析有几下几点 1、class文件中,把(.)点号转成了(/),也就是真实的路径。我们在类中定义private Pstring good; 在class中变为: good dlp/oa/pub/Pstring 很显然java文件在编译后,会把各此的属...
2009-07-02 15:45:26
82
ThreadLocal研究
我在hibernate工厂类中看到了关于ThreadLocal的使用,threadLocal显然是类变量,全局的是否这样表示不同的线程共享了threadLocal,事实上没错,多个线程取得到是同一样threadLocal但是在不同的线程中使用threadLocal得到的变量不一样。那么什么是同一线程呢,我们可以这样理解线程是主线程创建分支线程调用类执行完再返回主线程,那么这么这分支线程...
2009-07-01 15:35:30
91
tomcat批处理最后执行命令
D:\apache-tomcat-6.0.14\bin>startup.batUsing CATALINA_BASE: D:\apache-tomcat-6.0.14Using CATALINA_HOME: D:\apache-tomcat-6.0.14Using CATALINA_TMPDIR: D:\apache-tomcat-6.0.14\tempUsing JRE_...
2009-07-01 15:26:44
117
tomcat启动批处理setclasspath.bat
这个批处理文件主要是进行classpath设置.rem ---------------------------------------------------------------------------rem Set CLASSPATH and Java optionsremrem $Id: setclasspath.bat 545668 2007-06-09 00:18:22...
2009-07-01 15:26:16
162
tomcat启动批处理catalina.bat
@echo offif "%OS%" == "Windows_NT" setlocal //如果为window_nt系统,开始批处理文件中环境改动的本地化操作rem ---------------------------------------------------------------------------rem Start script for the CATALINA Se...
2009-07-01 15:25:00
209
tomcat启动批处理startup.bat
@echo offif "%OS%" == "Windows_NT" setlocal //如果为window_nt系统,开始批处理文件中环境改动的本地化操作rem ---------------------------------------------------------------------------rem Start script for the CATALINA Se...
2009-07-01 15:23:55
173
tomcat启动过程分析(1)
以tomcat为例,看tomcat是怎样启动的。tomcat中有一个startup.bat 批处理文件,这个文件会启动另一个批处理文件 catalina.bat 而这个批处理会设置set CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\bin\bootstrap.jar 也就是把bootstrap.jar所在目录加入classpath中,这样就可以通过jre来运...
2009-07-01 15:23:16
105
使用数组要注意的问题
1。问题。我定义了一个linkedList,在使用linkedList的add(object)方法中。我们把对象写入数组列表结果用Stats cc; //System.out.println(con.size()+"---------------------"); int count = con.size(); try{ if(con!=null) {...
2009-06-30 12:16:43
154
rt.jar ,dt.jar ,tool.jar是什么东西,什么时候需加到到classpath
1.rt.jar 默认就在 根classloader的加载路径里面 放在claspath是多此一举不信你可以去掉classpath里面的rt.jar然后用 java -verbose XXXX 的方式运行一个简单的类 就知道 JVM的系统根Loader的路径里面不光rt.jar jre\lib下面的大部分jar 都在这个路径里 2.tools.jar 是系统...
2009-06-30 12:13:21
242
lib;ext等目录区别
jdk\lib,是jdk开发工具包中的类库,既编译时所需要的类库。 jdk\jre\lib是运行java程序所要加载的类库。 jdk\jre\lib\ext 是jvm加载的扩展类库。 你可以把你的jar文件,分别拷贝到jdk\lib\下(为开发所用)和jdk\jre\lib或jdk\jre\lib\ext下(为运行所用),然后再指定classpath...
2009-06-30 12:12:39
1025
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人