`
22cgreen
  • 浏览: 55207 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
写这个博客的目的是自己在JAVA开发中的一些总结和研究测试,中间难免会有很多的错误,还请大家指正,我写的文章尽量不那些难懂的太专业的术语,希望大家的支持,本人想有时间研究一下JDK的源友和TOMCAT的源,这样也能比较清楚底层的一些细节情况。 本博客都是自己原创的文章,是自己的一些经验和测试总结,可以转摘我的文章,但请保留出处,同时也希大家能提供意见。谢谢。
代码块实例: 测试发现: 1)代码块是在类初始化前执行的。 2)用java.lang.Class.forName("com.chen.test.One");只会加载类,并不会执行构造方法。 3)用java.lang.Class.forName("com.chen.test.One");会执行代码块。 4)如果实例化One one = new One(),会先执行代码块,然后再执行构造方法, 总结:代码块是在类加载时执行的,而构造方法是在类加载后,再进行实例化执行的。 如此可以明白为什么加载驱动时,如: Class.forName("oracl ...
测试发现内部类被编译后class文件名为:主类$内部类名.class 如: package dlp.oa.test; public class Testb { public class chen{ } } 被编译为:Testb.class  和 Testb$chen.class 两个class文件
在测试时发现一个类的实例化时间有几百毫秒,测试下发现以下问题. 1)当一个类加载了很多其它的类时,第一次加载是要多点时间,一般好像为:16毫秒左右,如果实例化一次,再去实例化就会发 现几乎不要时间,反正毫秒数显示为0,因此可以认为类在加载一次后,实例化会从中找是否类已加载,如果加载,直接在内存中实例化类,而不要再 加载类文件,然后再实例化,可想而知,容器中保存实例就是加快了实例化的过程,因为类的模板还在. 2)一个类中加载了多个类,而这些类都继承了A,如果其中一个类实例化后,其它的类实例化A时,其时间可以不计.推断,一个JVM中如果存在一个类的模板 其它使用此类的实例都将使用这个模板. imp ...
测试发现继承类的实例子顺序为: 1)实例化最上层父类,类在第一次实例化时都要加载类模板,大概用时几十毫秒左右. 2)然后再实例化自己, 总结:实例化过程是从上到下的过程. A extends B B extends C 1)实例化C. 2)实例化B 3)实例化A
代码块实例: 测试发现: 1)代码块是在类初始化前执行的。 2)用java.lang.Class.forName("com.chen.test.One");只会加载类,并不会执行构造方法。 3)用java.lang.Class.forName("com.chen.test.One");会执行代码块。 4)如果实例化One one = new One(),会先执行代码块,然后再执行构造方法, 总结:代码块是在类加载时执行的,而构造方法是在类加载后,再进行实例化执行的。 如此可以明白为什么加载驱动时,如: Class.forName("oracl ...
测试发现内部类被编译后class文件名为:主类$内部类名.class 如: package dlp.oa.test; public class Testb { public class chen{ } } 被编译为:Testb.class  和 Testb$chen.class 两个class文件
在测试时发现一个类的实例化时间有几百毫秒,测试下发现以下问题. 1)当一个类加载了很多其它的类时,第一次加载是要多点时间,一般好像为:16毫秒左右,如果实例化一次,再去实例化就会发 现几乎不要时间,反正毫秒数显示为0,因此可以认为类在加载一次后,实例化会从中找是否类已加载,如果加载,直接在内存中实例化类,而不要再 加载类文件,然后再实例化,可想而知,容器中保存实例就是加快了实例化的过程,因为类的模板还在. 2)一个类中加载了多个类,而这些类都继承了A,如果其中一个类实例化后,其它的类实例化A时,其时间可以不计.推断,一个JVM中如果存在一个类的模板 其它使用此类的实例都将使用这个模板. 3) ...
测试发现继承类的实例子顺序为: 1)实例化最上层父类,类在第一次实例化时都要加载类模板,大概用时几十毫秒左右. 2)然后再实例化自己, 总结:实例化过程是从上到下的过程. A extends B B extends C 1)实例化C. 2)实例化B 3)实例化A
public void run() { if(statusa() && statusb()) { System.out.println("ok"); } } public boolean statusa() { System.out.println("aa"); return false; } public boolean statusb() { System.out.println("bb"); return true; } 测试发现如下: 1)当左边条件为 ...
我们一直迷惹为什么我们放在web-inf/classes和web-in/lib下的类和包怎会被tomcat找到执行,这也是我们为什么常常把自己项目开发的 类和第三方包放在这两个地方,以前我们一直认为java只从classpath中加载类,或者dir.ext中加载类及lib中加载系统类包。 但是tomcat是否有自己的加载方式,比如,tomcat能加载自己目下的核心类包,tomcat的核心类包放在apache-tomcat-6.0.14\lib 为什么会这样,原因在于tomcat定义自己的类加载器,tomcat类加载器所在的包为: org.apache.catalina.loader 而其中就有. ...
/* * 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 copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the & ...
数据库连接池可能很多人一直不明白真正的作,也无法真实的体会其明显的作用, 很多初级开发者可能大我都是用完就close了,要用时就打开,这是否对小的应用来说 用不用连接池效果不是很明显,还有一点就是初级开发者常常 ...
java的时间一直令人难以处理,或者说不知道用那种方式,最主要的是对一些类的多种实现方法的一种混乱,其实时间主要有以下几个类。 时的相关的类: 1)java.until.Date 2)java.util.Calendar 3)java.util.GregorianCalendar 其中GregorianCalendar继承Calendar。也就是说GregorianCalendar除了有Calendar的所有 方法外,还有自己的一些方法。主要处理时间,日历的一些相关操作。 Date是一种时间类型,这种类型在java中时间类型,使用很多,但是有关于时间的处理都可以用java.util.Cale ...
1)实例化时第一次一般有几毫秒到几十毫秒。第二,或者加载过一次,二次一般不要时间。 2)测试连接数据库并执行一条select语句要400多毫秒 3)得到连接要390多毫秒 总结:发现数据连接是最毫时的操作,而执行查询等操作并不需要很多时间。 我在tomcat中用一个程序进行测试,不使用连接池用时都为47毫秒,不管怎样刷新这时间不变。 而用连接池后,用时15毫秒,多次刷新大多数都是0, 总结:在tomcat中连数据库好像比在eclipse进行测试时快很多。当刷新不是很快时,很显然 连接用的connection是相同的。从而大量减少了时间。
Global site tag (gtag.js) - Google Analytics