??xml version="1.0" encoding="utf-8" standalone="yes"?>
public class TestTry extends Exception
{
static boolean f=false;
static int sum=0;
static int created=0;
static int i=0;
TestTry()
{
i=created++;
if(created>=299) f=true;
}
public void finalize()
{
sum++;
}
public static void main(String[] args)
{
while(!TestTry.f)
{
try{
throw new TestTry();
}catch(Exception e){}
finally{
System.out.println("Creat "+TestTry.i+" TestTry, "+TestTry.sum+" has been finalized!");
}
}
//System.out.println("Creat "+TestTry.created+" TestTry, "+TestTry.sum+" has been finalized!");
}
}
q个是我在测试在try语句抛出异常后,在try语句中徏立的对象是否会调用自w的l止函数时发现的Q这里有个奇怪的现象在if(created>=299) f=true;q条语句中,如果把条件created>=299改ؓ>=?99更大的数Q你会发现System.out.println("Creat "+TestTry.i+" TestTry, "+TestTry.sum+" has been finalized!");q条语句的输出的l果q不是你预想的那P输出判断的数?1的行敎ͼQ而只是显C最后的三百行。那么在q之前抛出的异常上哪里去了呢Q难道说Java只处理最后抛出的三百的异怹Q?BR>
You are given a String[] cityMap representing the layout of a city. The city consists of blocks. The first element of cityMap represents the first row of blocks, etc. A 'B' character indicates a location where there is a bus stop. There will be exactly one 'X' character, indicating your location. All other characters will be '.'. You are also given an int walkingDistance, which is the maximum distance you are willing to walk to a bus stop. The distance should be calculated as the number of blocks vertically plus the number of blocks horizontally. Return the number of bus stops that are within walking distance of your current location.
Definition
Class:BusStops
Method:countStops
Parameters:String[], int
Returns:int
Method signature:int countStops(String[] cityMap, int walkingDistance)
(be sure your method is public)
Constraints
-cityMap will contain between 1 and 50 elements, inclusive.
-Each element of cityMap will contain between 1 and 50 characters, inclusive.
-Each element of cityMap will contain the same number of characters.
-Each character of each element of cityMap will be 'B', 'X', or '.'.
-There will be exactly one 'X' character in cityMap.
-walkingDistance will be between 1 and 100, inclusive.
Examples
0)
{"...B.",
".....",
"..X.B",
".....",
"B...."}
3
Returns: 2
You can reach the bus stop at the top (3 units away), or on the right (2 units away). The one in the lower left is 4 units away, which is too far.
1)
{"B.B..",
".....",
"B....",
".....",
"....X"}
8
Returns: 3
A distance of 8 can get us anywhere on the map, so we can reach all 3 bus stops.
2)
{"BBBBB",
"BB.BB",
"B.X.B",
"BB.BB",
"BBBBB"}
1
Returns: 0
Plenty of bus stops, but unfortunately we cannot reach any of them.
3)
{"B..B..",
".B...B",
"..B...",
"..B.X.",
"B.B.B.",
".B.B.B"}
3
Returns: 7
E序代码
//chapter03:Garbage.java
// Demonstration of the garbage
// collector and finalization
class Chair {
static boolean gcrun = false;
static boolean f = false;
static int created = 0;
static int finalized = 0;
int i;
Chair() {
i = ++created;
if(created == 47)
System.out.println("Created 47");
}
public void finalize() {
if(!gcrun) {
// The first time finalize() is called:
gcrun = true;
System.out.println(
"Beginning to finalize after " +
created + " Chairs have been created");
}
if(i == 47) {
System.out.println(
"Finalizing Chair #47, " +
"Setting flag to stop Chair creation");
f = true;
}
finalized++;
if(finalized >= created)
System.out.println(
"All " + finalized + " finalized");
}
}
public class Garbage {
public static void main(String[] args) {
// As long as the flag hasn't been set,
// make Chairs and Strings:
while(!Chair.f) {
new Chair();
new String("To take up space");
}
System.out.println(
"After all Chairs have been created:\n" +
"total created = " + Chair.created +
", total finalized = " + Chair.finalized);
// Optional arguments force garbage
// collection & finalization:
if(args.length > 0) {
if(args[0].equals("gc") &line;&line;
args[0].equals("all")) {
System.out.println("gc():");
System.gc();
}
if(args[0].equals("finalize") &line;&line;
args[0].equals("all")) {
System.out.println("runFinalization():");
System.runFinalization();
}
}
System.out.println("bye!");
}
} ///:~Z么执?SPAN lang=EN-US style="COLOR: red">java Garbage gc以后Q当所有对象创建完Q比?SPAN lang=EN-US>8000个)Q这时只清除?SPAN lang=EN-US>2000个(不定Q,应该只能创徏47个对象啊
分析Q?/FONT>
首先Q在一个@环当中创建对象,q且只是创徏Q而不引用Q也是说这个对象会自动的被pȝ当作垃圾处理掉。但h意,finalize()Ҏq不是立d会执行的Q执行的旉完全ql来军_。所以很有可能的情况是已l创Z20000个对象,才开始其中的某一个对象的清除工作Q这可能和时间或者系l内容的占用有关Q。看finalize()Ҏ中的一D代码:
if (!gcrun) {
gcrun = true;
System.out.println(
"\nBeginning to finalize after" + created + "Chairs have been created\nat ");
}
׃出现q样的结果:
Beginning to finalize after 25038 Chairs have been created
q时对象的创E仍在l(因ؓ已经Finalize的对象还不满47个,Chair.fq是falseQ。所?SPAN lang=EN-US>Chair.created会l增加?/FONT>
直到?SPAN lang=EN-US>47个对象被清除了,Chair.f被置?SPAN lang=EN-US>true了,创徏对象的@环才l束。看mainҎ中的一D代码:
System.out.println(
"\nAfter all chairs have been created:\n"
+ "total created ="
+ Chair.created
+ ",total finalized ="
+ Chair.finalized+"\n");
如上所_Chair.created是不断增加的Q而在q段代码执行之前Q又会有N个对象被释放掉了Q所?SPAN lang=EN-US>finalized也增加了?/FONT>
l果可能是这LQ?/FONT>
total created =29096,total finalized =73
其实q一q程和用的JVM有很大关p,执行l果可能会很不相同。但有一Ҏ可以肯定的,那就?SPAN style="COLOR: red">我们无法定JVM什么时候做对象的清除工?/SPAN>Q这也是Thinking in java中这D代码的惌说明的)Q?SPAN style="COLOR: red">可能会在q个对象刚刚?/SPAN>无用?/SPAN>的时候就清除掉了Q也可能滞后几秒Q甚xq不清除?/SPAN>
l论Q?/FONT>
不能指望finalize()Ҏ能稳定的工作Q尤其不能依靠它来做文g的关闭等操作Q由?SPAN lang=EN-US>finalize()的不定性,往往得不C惌的结果。事实上我们只需要知道所有无用的对象Q?SPAN lang=EN-US>JVM会自己清除就够了。省点心思去睡觉岂不是更好的一件事?Q)
z阳的天气可真是讨厌Q昨天好不容易放晴了一天,今天又下v了大雨,本来计划好去买衣服的Q现在只能汤了。这几天来上|查了很多的资料Qؓ了组Z个PHP、JSP、ASP的全能^収ͼPHP跟JSP的^台是l徏好了Q可是ASP怎么样都不行Q好不容易下了个IASP装上了,配置了之后却老是出现错误。哎NB怎么׃配个专业版的pȝl我呢,q样我就不用那么费劲了,只要把IIS跟Apache整合hp了。趁着有点旉把用apachel徏的PHP、JSPq_教程整理出来了,说实话光q两个都费了我好多的劲呀Q特别是JSPQ网上的教程都不知道是什么年代写的了Q几乎都不能用了Q我废了好几天的功夫才把q些零gl找齐,所以还特别C了下载的地址Q要下的p赶快了!好了Q废话不多说了,往下看吧。对了,另外再多说一句,下面的配|是我安装我本机的安装地址的,如果你的安装地址跟我的不W,那么你就要一些相应的改进Q还有,如果一下的下蝲地址无效了,你可以在我这留下你的邮箱Q我可以这些东西发l你?BR>
所需软g列表
1、apache_2.0.54-win32-x86-no_ssl.exe QApache web服务器) http://apache.justdn.org/......2.0.54-win32-x86-no_ssl.exe
2、php-5.0.5-Win32 QPHP语言解析器)
4、jdk1.4.2QJAVA 语言环境Q?
5、jakarta-tomcat-5.5.12 QTomcat JSP解析服务器) http://mirror.vmmatrix.ne......in/apache-tomcat-5.5.12.exe
7、mod_jk-1.2.14-apache-2.0.54.so.asc Q整合Apache+Tomcat的plusQ?http://apache.linuxforum.......1.2.14-apache-2.0.54.so.ascQؓ了找q个文g都把我给扄了,|上的教E到处都说要mod_jk_1.2.5_2.0.47.dllQ可是我找了两天死都找不刎ͼ后来到apache的官方网站看着生硬的ENL才找到这么个文gQ看文g名直觉就告诉我找对了Q现在的apache不都是用so扩展了么Q而且在那个页面也说明了这一点,要用还要改名,所以在q里特别指出下蝲地址Q让大家走很多的弯路)
开始安装:
一?Apahce+PHP安装配置
1、安装apache_2.0.54-win32-x86-no_ssl.exeQؓ了方便把路径改ؓc:\吧,其他都不用管一路next下去?
2、安装完成之后,apache服务自动加蝲Q这时打开览器,览Q?A href="http://localhost/">http://localhostQ出现apacheƢ迎面Q这步需要将C:\apache2\htdocs目录中的文g“index.html.en”改为“index.html”,方能昄Q;如果q步出现异常Q请查安装源文gQ重新安装?
3. 安装php-5.0.5-Win32,一般下载的PHP文gZ个免安装的压~包Q解压到CQ\PHP可以?nbsp;
4. 配置PHP和ApacheQ之能解析phpE序?nbsp;
PHP配置Q将C:\PHP\目录中的“php.ini-dist”改名“php.ini?然后d环境变量。在环境变量里的classpath中添加?;c:\php;”,在新Z个“PHPRC”的变量Q里面同hd?;c:\php;?nbsp;
Apache配置Q?nbsp;
打开C:\apache2\conf\httpd.conf
httpd.conf是apache的配|文Ӟ在此配置文g最后添加以下语句,用以支持phpE序Q?nbsp;
ScriptAlias /php/ "C:/PHP/"
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
Action application/x-httpd-php "/php/php.exe"
okQ接下来重启Apache服务器(如果加蝲PHP成功Q可以在Apache监控器中看到Apache/2.0.52(win32) PHP/5.0.4Q就可以试了PHP了,用编辑器~写如下语句Q?nbsp;
<?
phpinfo();
?>
保存文g名ؓ“test.php”到C:\apache2\htdocs目录Q然后打开览器,览Q?A href="http://localhost/test.php">http://localhost/test.phpQ出现PHP基本信息p明配|成功。严格按以上说明安装配置Q都会一ơ成功?
二、安装JDK和Tomcat
1. 安装j2sdk-1_4_2-windows-i586QJDK一定要在Tomcat之前安装Q默认安装\径就可以?BR>2. 安装Jakarta-Tomcat-5.5.12Q默认安装\径就可以?BR>4Q设|环境变量(桌面->我的电脑->右键点击->选择“属性?>高->环境变量Q,所有设|均在系l变量栏q行?BR>新徏->变量名:JAVA_HOME
->变量|C:\j2sdk1.4.2
新徏->变量名:TOMCAT_HOME
->变量|C:\Program Files\Apache Software Foundation\Tomcat 5.5
新徏->变量名: PATH
->变量|.;C:\j2sdk1.4.2\bin; Q前面的?;”一定要有)
修改增加环境变量 CLASSPATH (如果没有此变量名Q则新徏)
->增加变量|.;C:\j2sdk1.4.2\lib\dt.jar;C:\j2sdk1.4.2\lib\tool.jar;
C:\j2sdk1.4.2\lib\NetComponents.jar;
C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\classes;
C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib;
C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar;Q前面的?;”一定要有)
5. 启动Tomcat服务器,打开览器,览Q?A href="http://localhost:8080/">http://localhost:8080/ Q出现TomcatƢ迎面Q如果这步出现异常,h查安装源文gQ重新安装?/P>
三、整合Apache+Tomcat服务?/P>
1. 复制mod_jk-1.2.14-apache-2.0.54.so.asc文g到C:\Apache2\modules目录Qƈ其文g名改为mod_jk.so?BR>2. Apache配置Q?BR>C:\apahce2\conf\httpd.conf
httpd.conf
在此配置文g最后添加以下语句,用以支持jspE序Q?BR>LoadModule jk_module modules/mod_jk.so
JkWorkersFile "C:/Program Files/Apache Software Foundation/Tomcat 5.5/conf/workers.properties"
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
q有要在
DirectoryIndex index.html index.html.var的后面加上default.jsp index.jspQ前面忘了说了,支持PHPq要加上index.php default.phpQ?/P>
3. 在C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\目录下,新徏文g名ؓ“workers.properties”的文gQ将如下内容复制到新建文件workers.properties中?/P>
workers.properties
# 只复制以下内容即可:
workers.tomcat_home=C:\Program Files\Apache Software Foundation\Tomcat 5.5
workers.java_home=C:\j2sdk1.4.2
ps=\
# worker.list=ajp13
worker.list=ajp12,ajp13
worker.ajp12.port=8007
worker.ajp12.host=localhost
worker.ajp12.type=ajp12
worker.ajp12.lbfactor=1
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=ajp12, ajp13
worker.inprocess.type=jni
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)classes
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)jaxp.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)lib$(ps)parser.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)jasper.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)servlet.jar
worker.inprocess.class_path=$(workers.tomcat_home)$(ps)common$(ps)lib$(ps)webserver.jar
worker.inprocess.class_path=$(workers.java_home)$(ps)lib$(ps)tools.jar
worker.inprocess.cmd_line=-config
worker.inprocess.cmd_line=$(workers.tomcat_home)/conf/jni_server.xml
worker.inprocess.cmd_line=-home
worker.inprocess.cmd_line=$(workers.tomcat_home)
worker.inprocess.jvm_lib=$(workers.java_home)$(ps)jre$(ps)bin$(ps)classic$(ps)jvm.dll
worker.inprocess.stdout=$(workers.tomcat_home)$(ps)inprocess.stdout
worker.inprocess.stderr=$(workers.tomcat_home)$(ps)inprocess.stderr
worker.inprocess.sysprops=tomcat.home=$(workers.tomcat_home)
接下来重启Tomcat和Apache服务器(必须先重启Tomcat再重启ApacheQ不然会出错Q如果加载JK成功Q这个时候你可以在Apache监控器中看到Apache/2.0.52(win32) PHP/5.0.4 mod_jk/1.2.8Q就可以试了,把Tomcat的webappsq个目录拯到Apache的htdocs目录下面Q然后直接在览器地址栏输入:http://localhost/webapps ?http://localhost:8080如果昄的页面一样就说明成功了?/P>
剩下的就是连接MySQL了,但是本h不才一个叫mm.mysql-2.0.4-bin.jar的文件怎么也找不到Q只扑ֈ了个mysql-connector-java-3.1.5-gamma-bin.jar的文Ӟ可是我试q了一点用都没有,所以连接数据库的教E等我试验成功再说拉Q如果哪位高救救我的告诉我mm.mysql-2.0.4-bin.jar的下载地址或者告诉我IASP到底改如何配|,我真是感Ȁ不尽?BR>