<?xml version="1.0" encoding="utf-8"?><rss version="2.0">
<channel>
<title><![CDATA[关于学习Java日记]]></title>
<link>http://blog.pfan.cn/lovekker</link>
<description>编程爱好者博客</description>
<language>zh-cn</language>
			<item>
		<title><![CDATA[2007-01-18《专升本考试结束》]]></title>
		<link>http://blog.pfan.cn/lovekker/22343.html</link>
		<description><![CDATA[本来可以考的非常好的。。但是当试卷发下来的那一刻起。自己就隐约感觉到了---这次的考试与我无缘了。。。我需要做点别的了。。。&nbsp;&nbsp;&nbsp; 二天的考试非常的快。考题是那么的简单。。简单的令我非常失落。。也许高考时的感觉到现在才感觉到吧！！&nbsp;&nbsp;终于明白了一点：原来时间是这样过的。。在考本之前你都干了些什么？默默地问自己。。但这都没有一点头绪。&nbsp;&nbsp; 隐隐约约感觉到在考本的这段时间里自己浪费了非常多的时间。。原因只有一个：没有把握好自己的心态。把它想的太过于复杂。在周围的一些不确定因素使我忽略了我还有一场对自己今后的发展有一定帮助的考试。。《在每天所做的一些事情。能关联到考本的应该不是太多吧！》我明智得选择了考本这条路。但在这条路上我没有好好的把握这次机遇。至于我失去了原本属于我的相当多的一些...。。 ！~ 在这条路上发现了自己非常多的就相当于致命的一些思想、一些习惯、一些不由自主的心态。。。这些就是我在令后最大的敌人。。学习其实非常之简单。。尤其是考试。。当对一门课程你努力了，，试卷发下来的那一刻你就会发现这一点。。&nbsp; 经历了活到18岁的第一次失败的感觉就是这个样子。。。也许这次考试是我的又一次机遇。。这次考试能告诉我许多地方我需要在短期的时间里改正。。一些心态也应该及时得到调整..（在这些问题解决的前提下。。你将会成为一个人才。如果没有解决 你将会给某些人带来负担...）..&nbsp; 好好改一改吧。。以前的我。。从来不是这个样子的。。在这个地方工作真的感觉到什么是腐败。居安不思危啊!!! 那种对工作的热情。。对作何一件事情你都得向你身旁的人学习的那种态度。。对人的承诺是永远不能改变。。现在是将来也要是。。浮躁心情应该立及得到改正。。现在真的不允许你再想/做一些与目标无关紧要的事了。。&nbsp; 如果你改变了。。你就会重新找回原本属于你的那种自信。。&nbsp; 如果你改变了。。你的人生未来会是光明。。&nbsp; 如果你没有改变。你会变得一无是处。（不要在找任何借口！那是在骗谁呢？）&nbsp; 如果你没有改变。你就会尝到什么是一生碌碌无为的感觉..&nbsp; ！不要再把问题想的太复杂了。。你应该做。只有做了才知道问题的关键。。！&nbsp;&nbsp;!改变吧 。。 这就是人生的一个转]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2007-01-08 08:42:00</pubDate>
		</item>
				<item>
		<title><![CDATA[JavaScript收藏]]></title>
		<link>http://blog.pfan.cn/lovekker/21594.html</link>
		<description><![CDATA[随着ajax的升温，javascript越来越得到人们的重视。重要的是，ajax在一定程度上带来了web软件架构上的变化，人们把越来越多的功能分配到客户端实现，javascript子项目规模越来越大。如何更高效的使用javascript，如何更科学的组织javascript，如何更顺利的保证项目进展？我想就我的经验谈一点浅见。
一。 开发人员需要认真学习javascript语言本身&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于javascript是“[url =http://www2.uuzone.com/blog/555080192/18957.htm]世界上最被误解的语言[/url]”, 大部分人对javascript语法并没有全面了解过，只是凭借看起来很像c或者java的关键字按照自己的理解写javascript代码。其实 javascript是一种很独特的语言，和c++/java有非常大的区别，要想用javascript做大一些的项目，开发人员必须老老实实的学习 javascript的语法。真正掌握了语法后，我们才不会把delete看成释放内存对象，才不会为到底参数传递是值传递还是引用传递而烦恼。真正理解了javascript的基于原型的OO方式，才可能写出具有良好架构的javascript程序。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 《javascript权威指南》是一本最合适的书，郑重推荐。另外ECMA262 文档可以作为参考。网上流行的jscript手册chm版本使用起来比较方便，不过这是微软的jscript实现，和标准的javascript略有区别，使用时应该注意上面的注脚信息。关于javascript的原型和OO,网上已经有很多文章介绍了，在此不再多说。
二。 良好的代码来源于良好的设计&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只有设计优良，代码才会写的漂亮。现在的javascript子项目已经不是以前web项目中的“边角料”和散兵游勇了，在较大的ajax项目内， javascript将非常复杂，ajax的异步模型也和以前顺序执行的程序设计有所区别。所以建议做javascript前首先做好设计。推荐使用用例驱动的方式，把用例分析清楚，以便全局考虑所]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-12-14 21:23:00</pubDate>
		</item>
				<item>
		<title><![CDATA[字符，字节和编码]]></title>
		<link>http://blog.pfan.cn/lovekker/19619.html</link>
		<description><![CDATA[字符，字节和编码
[原创文章，转载请保留或注明出处：http://www.regexlab.com/zh/encoding.htm]
级别：中级

摘要：本文介绍了字符与编码的发展过程，相关概念的正确理解。举例说明了一些实际应用中，编码的实现方法。然后，本文讲述了通常对字符与编码的几种误解，由于这些误解而导致乱码产生的原因，以及消除乱码的办法。本文的内容涵盖了“中文问题”，“乱码问题”。
掌握编码问题的关键是正确地理解相关概念，编码所涉及的技术其实是很简单的。因此，阅读本文时需要慢读多想，多思考。
引言
“字符与编码”是一个被经常讨论的话题。即使这样，时常出现的乱码仍然困扰着大家。虽然我们有很多的办法可以用来消除乱码，但我们并不一定理解这些办法的内在原理。而有的乱码产生的原因，实际上由于底层代码本身有问题所导致的。因此，不仅是初学者会对字符编码感到模糊，有的底层开发人员同样对字符编码缺乏准确的理解。
1. 编码问题的由来，相关概念的理解
1.1 字符与编码的发展
从计算机对多国语言的支持角度看，大致可以分为三个阶段：



　
系统内码
说明
系统

阶段一
ASCII
计算机刚开始只支持英语，其它语言不能够在计算机上存储和显示。
英文 DOS

阶段二
ANSI编码（本地化）
为使计算机支持更多语言，通常使用 0x80~0xFF 范围的 2 个字节来表示 1 个字符。比如：汉字 '中' 在中文操作系统中，使用 [0xD6,0xD0] 这两个字节存储。不同的国家和地区制定了不同的标准，由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式，称为 ANSI 编码。在简体中文系统下，ANSI 编码代表 GB2312 编码，在日文操作系统下，ANSI 编码代表 JIS 编码。不同 ANSI 编码之间互不兼容，当信息在国际间交流时，无法将属于两种语言的文字，存储在同一段 ANSI 编码的文本中。
中文 DOS，中文 Windows 95/98，日文 Windows 95/98

阶段三
UNICODE（国际化）
为了使国际间信息交流更加方便，国际组织制定了 UNICODE 字符集，为各种语言中的每一个字符设定了统一并且唯一的数字编号，以满足跨语言]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-10-22 17:28:00</pubDate>
		</item>
				<item>
		<title><![CDATA[SQL安装时出错的解决办法]]></title>
		<link>http://blog.pfan.cn/lovekker/19157.html</link>
		<description><![CDATA[安装过程中出现“以前进行的程序创建了挂起的文件操作，运行安装程序前，必须重新启动”，请按照下面步骤解决：&nbsp;a、重启机器，再进行安装，如果发现还有该错误，请按下面步骤&nbsp;b、在开始-&gt;运行中输入regedit&nbsp;c、到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session&nbsp;Manager&nbsp;位置&nbsp;d、选择文件-&gt;倒出,保存&nbsp;e、在右边窗口右击PendingFileRenameOperations，选择删除，然后确认&nbsp;f、重启安装，问题解决&nbsp;如果还有同样问题，请检查其它注册表中是否有该值存在，如有请删掉。
引用地址：http://blog.programfan.com/trackback.asp?id=15568]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-10-09 17:04:00</pubDate>
		</item>
				<item>
		<title><![CDATA[JavaScript函数小集锦]]></title>
		<link>http://blog.pfan.cn/lovekker/19156.html</link>
		<description><![CDATA[javascript提供了许多函数供开发人员使用，下面给出一个简单介绍，更详细的信息请参考Visual InterDev提供的在线帮助　　javascript函数一共可分为五类：　　·常规函数　　·数组函数　　·日期函数　　·数学函数　　·字符串函数　　1.常规函数　　javascript常规函数包括以下9个函数：　　(1)alert函数：显示一个警告对话框，包括一个OK按钮。　　(2)confirm函数：显示一个确认对话框，包括OK、Cancel按钮。　　(3)escape函数：将字符转换成Unicode码。　　(4)eval函数：计算表达式的结果。　　(5)isNaN函数：测试是(true)否(false)不是一个数字。　　(6)parseFloat函数：将字符串转换成符点数字形式。　　(7)parseInt函数：将符串转换成整数数字形式(可指定几进制)。　　(8)prompt函数：显示一个输入对话框，提示等待用户输入。例如：　　&lt;script language="javascript"&gt;　　&lt;!--　　alert("输入错误");　　prompt("请输入您的姓名","姓名");　　confirm("确定否！");　　//--&gt;　　&lt;/script&gt;　　(9)unescape函数：解码由escape函数编码的字符。　　2.数组函数　　javascript数组函数包括以下4个函数：　　(1)join函数：转换并连接数组中的所有元素为一个字符串。例:　　　　function JoinDemo()　　　　{　　　　　var a, b;　　　　　a = new Array(0,1,2,3,4);　　　　　b = a.join("-");//分隔符　　　　　return(b);//返回的b=="0-1-2-3-4"　　　　} 　　(2)langth函数：返回数组的长度。例：　　　　function LengthDemo()　　　　{　　　　　var a, l;　　　　　a = new Array(0,1,2,3,4);　　　　　l = a.length;　　　　　return(l);//l==5　　　　} 　　(3)reverse函数：将数组元素顺序颠倒。例：　　　function ReverseDemo()　　　{　　　　var a]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-10-09 17:02:00</pubDate>
		</item>
				<item>
		<title><![CDATA[Java&nbsp;编程语言中的口令屏蔽]]></title>
		<link>http://blog.pfan.cn/lovekker/19155.html</link>
		<description><![CDATA[Java 编程语言中的口令屏蔽《本文章引用:自:http://gceclub.sun.com.cn/staticcontent/html/2004-08-06/password.html 》


作者：Qusay H. Mahmoud得到 Alan Sommerer 大力协助，2004 年 7 月
目前，对于 Java 命令行基于文本的输入/输出 API 的批评之一就是它缺乏对命令行输入口令屏蔽的支持。如果借助 AWT/Swing，这便不再成为问题，因为 AWT/Swing 提供了可以提供屏蔽口令的方法。
2002 年 9 月，我发表了本文的早期版本，其后便不断收到大量感谢信、建设性的意见和在应用程序中使用源代码的许可。本文：

概述了口令屏蔽 
描述了用于口令屏蔽的 AWT/Swing 实用程序 
为命令行输入口令屏蔽问题提供独立于平台的解决方案 
为口令屏蔽提供一个改进的解决方案（可靠而安全） 
口令屏蔽


登录屏幕和登录对话框使用口令屏蔽技术，这种技术要么在输入口令时隐藏口令，要么显示一个字符（比如星号'*'）来代替用户输入的字符。例如，当您在一台 Windows 机器上进行登录时，一个登录对话框将会呈现在您眼前，其中的口令一栏使用星号作为屏蔽或回显字符。










图 1：UNIX 登录屏幕
如果操作系统是 UNIX，则登录屏幕中的口令栏不显示回显字符。它的做法很简单，就是什么都不显示，如图 1 所示。
AWT/Swing 中的口令屏蔽


如果您希望为您的应用程序提供图形化的登录对话框，您可以使用 AWT 的 TextField 类，该类是一个文本组件，允许编辑单行文本。为了屏蔽口令栏，要使用 setEchoChar 方法。例如，为了把回显字符设置为星号，您需要这样做：



TextField password = new TextField(8);
password.setEchoChar('*');

基于所使用字体的平均字符宽度，数字8指定了文本栏的宽度。您可以把回显字符设置为任何您喜欢的字符。注意，如果您把它设置为0，这意味着输入将会被回显，而不会被屏蔽。










图 2：setEchoChar('#')后的JP]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-10-09 16:43:00</pubDate>
		</item>
				<item>
		<title><![CDATA[java中的全屏幕模式]]></title>
		<link>http://blog.pfan.cn/lovekker/19153.html</link>
		<description><![CDATA[什么时候会用到全屏幕模式？ 也许用到的机会很少，但JDK还是为我们提供了这个的功能。像许多软件中的打印预览功能，还有某些文本编辑器中为了获得更大的编辑画面，也用到了全屏幕模式，如果你有兴趣写一个像ACDSee这样的软件，使用全屏幕模式可以让用户看到更大的图片画面。 如何使用全屏幕模式？ 关键是java.awt.*里面的两个与显示设备有关的类：GraphicsEnvironment和GraphicsDevice。 GraphicsEnvironment为Java应用程序提供了特定平台的 GraphicsDevice 对象和 Font 对象集合。这些GraphicsDevice可以是各种本机和远端机器的资源，如屏幕、打印机或者是Image Buffer,甚至是Graphics2D绘图方法的目标对象。 而GraphicsDevice就是指特定的图形环境了，如屏幕和打印设备等。这样，我们就可以用GraphicsDevice来操纵屏幕了。GraphicsDevice提供的setFullScreenWindow()方法就是设置全屏幕用的。 由于GraphicsEnvironment的构造器是受保护的(protected)，我们不能直接构造一个 GraphicsEnvironment对象来获得GraphicsDevice对象。幸好它提供了getLocalGraphicsEnvironment()方法，用来获得一个GraphicsEnvironment实例： GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 有了GraphicsEnvironment可以调用getDefaultScreenDevice方法获得当前的屏幕设备了： GraphicsDevice gd = ge.getDefaultScreenDevice(); 自己动手体验一下 有了上面的简介，写一个实例来体验一下吧： import java.awt.*; import java.awt.event.*; import javax.swing.*; public class FullScreenTest {&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[]]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-10-09 16:21:00</pubDate>
		</item>
				<item>
		<title><![CDATA[microsoft&nbsp;JDK]]></title>
		<link>http://blog.pfan.cn/lovekker/18143.html</link>
		<description><![CDATA[HCQ9D-TVCWX-X9QRG-J4B2Y-GR2TT
微软官方验证地址:
1.扫描您的产品密钥http://www.microsoft.com/resources/howtotell/zh-chs/windows/default.mspx
2.辨别 Windows 软件是否是正版软件http://www.microsoft.com/genuine/downloads/WhyValidate.aspx?displaylang=zh-cn微软官方在线更新地址:
http://update.microsoft.com/microsoftupdate/v6/default.aspx?ln=zh-cn微软官方正版增值软件下载地址:
http://catalog.microsoft.com/genuine/offers/default.aspx?displaylang=zh-cn]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-09-03 16:41:00</pubDate>
		</item>
				<item>
		<title><![CDATA[在WinXP中装SQL&nbsp;SERVER企业版]]></title>
		<link>http://blog.pfan.cn/lovekker/18139.html</link>
		<description><![CDATA[在WinXP中装SQL SERVER企业版
一．在SQL服务器的安装盘中找到MSDE这个目录，并且点击setup.exe安装它，过程简单直接下一步就ＯＫ了。　　二. 重启系统WINDOWSXP,这下就可以看到SQL服务的图标出现了。　　三. 再拿出SQL服务器版的安装光盘，直接安装客户端工具（这个不要多说吧？最简单的方法就是直接点击光盘根目录下的autorun.exe)　　根据提示安装，自检过程中知道系统不是SERVER版，会提示只安装客户端工具。（哈哈，服务端我已有了）　　四. 打开企业管理器，试用SA用户连一下看看，是不是发现SA用户登陆失败？因为你还没有与信任SQL SERVER连接相关联。还好这个只要对系统注册表稍加修改就可以啦：　　在运行中输入regedit打开注册表编辑器，找到[HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\MSSQLSERVER\MSSQLSERVER]，这个项里面有一个键值LoginMode，默认下，值是1，现在将值改为2，重启电脑。]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-09-03 16:30:00</pubDate>
		</item>
				<item>
		<title><![CDATA[关于java的汇编]]></title>
		<link>http://blog.pfan.cn/lovekker/16249.html</link>
		<description><![CDATA[指令：
javac -verbose XX.java
它将使编译器告诉你需要哪些类
java -prof XX
用于优化，显示每个过程调用次数，需要多少毫秒。
javadoc
自动生成html文档。原java文档带两个星号以上那些段落。
javah
处理C和JAVA转化的，不是很清楚
jdb XX
自己用一下就知道了
javap XX
相当有用的反汇编，
javap -c XX
输出会显示VM执行时采用的每个步骤。
jre运行环境就不多说了，程序里面可以包装进去，方便用户下栽。
2006.5.10.21:02]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-06-28 15:36:00</pubDate>
		</item>
				<item>
		<title><![CDATA[收藏_java的时间操作]]></title>
		<link>http://blog.pfan.cn/lovekker/16247.html</link>
		<description><![CDATA[java中的时间操作一
&nbsp;文/Ray
java中的时间操作不外乎这四种情况：
1、获取当前时间
2、获取某个时间的某种格式
3、设置时间
4、时间的运算
好，下面就针对这三种情况，一个一个搞定。
&nbsp;
一、获取当前时间
&nbsp;
有两种方式可以获得，第一种，使用Date类。
j2SE的包里有两个Date类，一个是java.sql.Date,一个是java.util.Date
这里，要使用java.util.Date。获取当前时间的代码如下
Date date = new Date();
date.getTime();
还有一种方式，使用System.currentTimeMillis();
&nbsp;
这两种方式获得的结果是一样的，都是得到一个当前的时间的long型的时间的毫秒值，这个值实际上是当前时间值与1970年一月一号零时零分零秒相差的毫秒数。
当前的时间得到了，但实际的应用中最后往往不是要用这个long型的东西，用户希望得到的往往是一个时间的字符串，比如“2006年6月18号”，或“2006-06-18”，老外可能希望得到的是“06-18-2006”，诸如此类等等。这就是下一个要解决的问题
&nbsp;
二、获取某个时间的某种格式
&nbsp;
获取时间的格式，需要用到一个专门用于时间格式的类java.text.SimpleDateFormat。
首先，定义一个SimpleDateFormat变量
SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);
这个构造函数的定义如下：
SimpleDateFormat(String&nbsp;pattern, Locale&nbsp;locale) 
第一个参数pattern，我们后面再解释，这里我们使用一个"",第二个参数，是用来设置时区的，这里用到了java.util.Locale这个类，这个类了面定义了很多静态变量，直接拿过来用就OK，我们把时区设置为Locale.SIMPLIFIED_CHINESE，只看名字，这个静态变量的意义已经很清楚了。
&nbsp;
接下来我们使用这个SimpleDateFormat把当前时间格式化为一个如下]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-06-28 15:29:00</pubDate>
		</item>
				<item>
		<title><![CDATA[收藏_java的文件各种操作]]></title>
		<link>http://blog.pfan.cn/lovekker/16245.html</link>
		<description><![CDATA[java.io &nbsp;--------------------------------------------------------------- &nbsp;&nbsp;/** &nbsp;&nbsp;* &nbsp;&lt;p&gt;Title: &nbsp;文件的各种操作&lt;/p&gt; &nbsp;&nbsp;* &nbsp;&lt;p&gt;Copyright: &nbsp;Copyright &nbsp;(c) &nbsp;2004&lt;/p&gt; &nbsp;&nbsp;* &nbsp;&lt;p&gt;Company: &nbsp;广东 &nbsp;有限公司&lt;/p&gt; &nbsp;&nbsp;* &nbsp;@author &nbsp;网络信息部 &nbsp;庆丰 &nbsp;&nbsp;* &nbsp;@version &nbsp;1.0 &nbsp;&nbsp;*/ &nbsp;&nbsp;package &nbsp;common; &nbsp;&nbsp;import &nbsp;java.io.*; &nbsp;&nbsp;public &nbsp;class &nbsp;FileOperate &nbsp;{ &nbsp;&nbsp; &nbsp;public &nbsp;FileOperate() &nbsp;{ &nbsp;&nbsp; &nbsp;} &nbsp;&nbsp;&nbsp; &nbsp;/** &nbsp;&nbsp; &nbsp; &nbsp;* &nbsp;新建目录 &nbsp;&nbsp; &nbsp; &nbsp;* &nbsp;@param &nbsp;folderPath &nbsp;String &nbsp;如 &nbsp;c:/fqf &nbsp;&nbsp; &nbsp; &nbsp;* &nbsp;@return &nbsp;boolean &nbsp;&nbsp; &nbsp; &nbsp;*/ &nbsp;&nbsp; &nbsp;public &nbsp;void &nbsp;newFolder(String &nbsp;folderPath) &nbsp;{ &nbsp;&nbsp; &nbsp; &nbsp; &nbsp;try &nbsp;{ &nbsp;&nbs]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-06-28 15:28:00</pubDate>
		</item>
				<item>
		<title><![CDATA[Tomcat-Web.xml&lt;解释&gt;]]></title>
		<link>http://blog.pfan.cn/lovekker/14437.html</link>
		<description><![CDATA[经常看到jsp的初学者问tomcat下如何配置jsp、servlet和bean的问题，于是总结了一下如何tomcat下配置jsp、servlet和ben，希望对那些初学者有所帮助。 
第一步：下载j2sdk和tomcat：到sun官方站点（http://java.sun.com/j2se/1.4.2/download.html）下载j2sdk，注意下载版本为Windows Offline Installation的SDK，同时最好下载J2SE 1.4.2 Documentation，然后到tomcat官方站点（http://www.apache.org/dist/jakarta/tomcat-4/）下载tomcat（下载最新4.1.x版本的tomcat）； 
第二步：安装和配置你的j2sdk和tomcat：执行j2sdk和tomcat的安装程序，然后按默认设置进行安装即可。 1.安装j2sdk以后，需要配置一下环境变量，在我的电脑-&gt;属性-&gt;高级-&gt;环境变量-&gt;系统变量中添加以下环境变量(假定你的j2sdk安装在c:\j2sdk1.4.2）： JAVA_HOME=c:\j2sdk1.4.2 classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;（.;一定不能少，因为它代表当前路径) path=%JAVA_HOME%\bin 接着可以写一个简单的java程序来测试J2SDK是否已安装成功： public class Test{ public static void main(String args[]){ System.out.println("This is a test program."); } } 将上面的这段程序保存为文件名为Test.java的文件。 然后打开命令提示符窗口，cd到你的Test.java所在目录，然后键入下面的命令 javac Test.java java Test 此时如果看到打印出来This is a test program.的话说明安装成功了，如果没有打印出这句话，你需要仔细检查一下你的配置情况。 
2.安装Tomcat后，在我的电脑-&gt;属性-&gt;高级-&gt;环境变量-&gt;系统变量中添加以下环境变量(假定你的tomcat]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-05-21 09:58:00</pubDate>
		</item>
				<item>
		<title><![CDATA[Tomcat中文字符显示乱码问题的一些解决方法]]></title>
		<link>http://blog.pfan.cn/lovekker/14436.html</link>
		<description><![CDATA[&nbsp;目前, Tomcat 作为一种出色的开放源代码的 JSP 服务器,目前在 JSP 的开发过程中获得了广泛的应用. 但是作为一款英语国家公司开发的软件, 在中文环境下不可避免的会出现一些乱码问题. 这里就 Tomcat 4.0 和 Tomcat 4.1 下的常见中文问题及其解决方法做一个总结. 这些方法都已经在 中文版 Windows 98 + JDK 1.3.1 和 中文版 Windows 2000 + JDK 1.3.1 下通过了测试. 另外在 IBM 的网站上有一个网页 http://www-900.ibm.com/developerWorks/cn/java/jsp_dbcsz/index.shtml 也讨论了这个问题.&nbsp;&nbsp; 首先为了便于讨论, 这里首先列出了一些方便的工具方法, 便于我们的讨论. 这些方法如下所示:
// 转换由表单读取的数据的内码到 GB2312public String toChi(String input) {try {byte[] bytes = input.getBytes("ISO8859-1");return new String(bytes);}catch(Exception ex) {}return null;}
// 对给定字符进行 URL 编码public String encode(String value) {if(isEmpty(value)) return "";return java.net.URLEncoder.encode(value);}
// 对给定字符进行 URL 解码public String decode(String value) {if(isEmpty(value)) return "";return java.net.URLDecoder.decode(value);}
.&nbsp;&nbsp; 问题1. 浏览器中看到的 JSP 页面中的汉字怎么都成了 '?' ?可能原因如下: 您的页面中没有指定页面的字符集为中文. 解决方法(适用于Tomcat 4.0 和 Tomcat 4.1)是在页面中添加如下代码:&lt;%@ page contentType="text/html;charset=gb2312" %&gt;&lt;meta http-equi]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-05-21 09:53:00</pubDate>
		</item>
				<item>
		<title><![CDATA[关于正则表达式[转载]]]></title>
		<link>http://blog.pfan.cn/lovekker/14435.html</link>
		<description><![CDATA[正则表达式&nbsp; 模式匹配 Javascript
摘要：收集一些常用的正则表达式。
正则表达式用于字符串处理，表单验证等场合，实用高效，但用到时总是不太把握，以致往往要上网查一番。我将一些常用的表达式收藏在这里，作备忘之用。本贴随时会更新。
匹配中文字符的正则表达式： 代码 [\u4e00-\u9fa5] 
匹配双字节字符(包括汉字在内)： 代码 [^\x00-\xff] 
应用：计算字符串的长度（一个双字节字符长度计2，ASCII字符计1） 代码 String.prototype.len=function(){ return this.replace([^\x00-\xff]/g,"aa").length; } 
匹配空行的正则表达式： 代码 \n[\s|]*\r 
匹配HTML标记的正则表达式： 代码 /&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/ 
匹配首尾空格的正则表达式： 代码 (^\s*)|(\s*$) 
应用：j avascript中没有像v bscript那样的trim函数，我们就可以利用这个表达式来实现，如下： 代码 String.prototype.trim = function(){ &nbsp;&nbsp; return this.replace(/(^\s*)|(\s*$)/g, "");} 
利用正则表达式分解和转换IP地址下面是利用正则表达式匹配IP地址，并将IP地址转换成对应数值的Javascript程序： 代码 function IP2V(ip){ &nbsp;&nbsp;&nbsp; re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g&nbsp; //匹配IP地址的正则表达式&nbsp;&nbsp;&nbsp; if(re.test(ip))&nbsp;&nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; else&nbsp;&nbsp;&nb]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-05-21 09:48:00</pubDate>
		</item>
				<item>
		<title><![CDATA[JSplitPane]]></title>
		<link>http://blog.pfan.cn/lovekker/14434.html</link>
		<description><![CDATA[import javax.swing.*;import java.awt.Dimension;public class JSplitPaneDemo{&nbsp;public static void main (String[] args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;JButton button = new JButton ("button");&nbsp;&nbsp;JLabel label = new JLabel ("label");&nbsp;&nbsp;&nbsp;&nbsp;JSplitPane splitPane = new JSplitPane ();&nbsp;&nbsp;splitPane.setOneTouchExpandable (true);//是该分隔面板的分隔条显示出箭头&nbsp;&nbsp;splitPane.setContinuousLayout (true);&nbsp;&nbsp;splitPane.setPreferredSize (new Dimension (500,600));//设置大小&nbsp;&nbsp;splitPane.setOrientation (JSplitPane.HORIZONTAL_SPLIT);&nbsp;&nbsp;splitPane.setLeftComponent (button);//same as: splitPane.setTopComponent(button);&nbsp;&nbsp;splitPane.setRightComponent (label);//same as: splitPane.setBottomComponent(label);&nbsp;&nbsp;splitPane.setDividerSize (5);//设置分隔条的粗细&nbsp;&nbsp;splitPane.setDividerLocation(200);//设置分隔条的位置，基于setPreferredSize方法中的值，&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//此处为200/500，大概在中间靠左
&nbsp;&nbsp;JFrame frame = new]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-05-21 09:44:00</pubDate>
		</item>
				<item>
		<title><![CDATA[OutputStreamWriter]]></title>
		<link>http://blog.pfan.cn/lovekker/14433.html</link>
		<description><![CDATA[example2:OutputStreamWriterDemo.java/************************************************************************以FileOutputStreamDemo.java为摸板，按回车后再按Ctrl+z结束输入，可输入中文************************************************************************/import java.io.*;
public class OutputStreamWriterDemo{&nbsp;public static void main(String[] args)throws IOException &nbsp;{&nbsp;&nbsp;try&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;InputStreamReader isr = new InputStreamReader (new FileInputStream (FileDescriptor.in));&nbsp;&nbsp;&nbsp;OutputStreamWriter osw = new OutputStreamWriter (new FileOutputStream ("D://testfile//output.log"));&nbsp;&nbsp;&nbsp;int is;&nbsp;&nbsp;&nbsp;while ((is=isr.read()) != -1)osw.write(is);&nbsp;&nbsp;&nbsp;isr.close();&nbsp;&nbsp;&nbsp;osw.close();&nbsp;&nbsp;&nbsp;
&nbsp;&nbsp;}&nbsp;&nbsp;catch(FileNotFoundException e)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;System.out.println(e);&nbsp;&nbsp;}&nbsp;&nbsp;catch(IOException e)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;System.out.println(e);&nbsp;&nbsp;}&nbs]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-05-21 09:42:00</pubDate>
		</item>
				<item>
		<title><![CDATA[JTable]]></title>
		<link>http://blog.pfan.cn/lovekker/14432.html</link>
		<description><![CDATA[import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JPanel;import javax.swing.JTable;import java.awt.Color;import java.awt.GridLayout;import javax.swing.table.TableColumn;
public class JTableDemo{&nbsp;public static void main (String[] args)&nbsp;{&nbsp;&nbsp;/*&nbsp;&nbsp;构造函数有很多下面先介绍几个:&nbsp;&nbsp;JTable()&nbsp;&nbsp;JTable(int numRows, int numColumns)&nbsp;&nbsp;JTable(Object[][] rowData, Object[] columnNames)&nbsp;&nbsp;*/&nbsp;&nbsp;&nbsp;&nbsp;JTable example1 = new JTable ();//看不到但存在&nbsp;&nbsp;&nbsp;&nbsp;JTable example2 = new JTable (8, 6);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;final Object[] columnNames = {"姓名", "性别", "家庭地址",//列名最好用final修饰&nbsp;&nbsp; "电话号码", "生日", "工作", "收入", "婚姻状况","恋爱状况"};&nbsp;&nbsp;Object[][] rowData = {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{"ddd", "男", "江苏南京", "1378313210", "03/24/1985", "学生", "寄生中", "未婚", "没"},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{"eee", "女", "江苏南京", "13645181705", "xx/xx/1985", "家教", "未知", "未婚", "好象没"]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-05-21 09:37:00</pubDate>
		</item>
				<item>
		<title><![CDATA[JTablePanel]]></title>
		<link>http://blog.pfan.cn/lovekker/14431.html</link>
		<description><![CDATA[import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import javax.swing.BoxLayout;import javax.swing.JTabbedPane;import javax.swing.JPanel;import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.ImageIcon;import javax.swing.UIManager;
class TabPane extends JTabbedPane{&nbsp;JPanel panel1, panel2, panel3, panel4, panel5;&nbsp;&nbsp;public TabPane ()&nbsp;{&nbsp;&nbsp;//super (a, b);&nbsp;&nbsp;panel1 = new JPanel ();&nbsp;&nbsp;panel1.add(new JButton());&nbsp;&nbsp;panel2 = new JPanel (new BorderLayout());&nbsp;&nbsp;panel3 = new JPanel (true);&nbsp;&nbsp;panel4 = new JPanel (new GridLayout(2,3));&nbsp;&nbsp;panel5 = new JPanel (new FlowLayout(FlowLayout.LEFT, 1, 0));&nbsp;&nbsp;//以上是JPanel的四种构造方法&nbsp;&nbsp;//窗体布局器有四种设置：&nbsp;&nbsp;//new BorderLayout () or new BorderLayout (int hgap, int vgap)&nbsp;&nbsp;//new GridLayout () or new GridLayout (int rows, int cols) new GridLayout (int rows, int]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-05-21 09:30:00</pubDate>
		</item>
				<item>
		<title><![CDATA[PrintStream]]></title>
		<link>http://blog.pfan.cn/lovekker/14430.html</link>
		<description><![CDATA[import java.io.*;
public class PrintStreamDemo{&nbsp;public static void main(String[] args)throws IOException &nbsp;{&nbsp;&nbsp;try&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;FileInputStream fis = new FileInputStream (FileDescriptor.in);//指定输入流为键盘&nbsp;&nbsp;&nbsp;PrintStream ps = new PrintStream (new FileOutputStream ("D://testfile//file.log"), true);&nbsp;&nbsp;&nbsp;int is;&nbsp;&nbsp;&nbsp;while ((is=fis.read()) != -1)ps.println((char)is);&nbsp;&nbsp;&nbsp;fis.close();&nbsp;&nbsp;&nbsp;ps.close();&nbsp;&nbsp;}&nbsp;&nbsp;catch(FileNotFoundException e)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;System.out.println(e);&nbsp;&nbsp;}&nbsp;&nbsp;catch(IOException e)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;System.out.println(e);&nbsp;&nbsp;}&nbsp;&nbsp;catch(Exception e)&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;System.out.println(e);&nbsp;&nbsp;}&nbsp;}}]]></description>
		<author><![CDATA[lovekker]]></author>
		<pubDate>2006-05-21 09:24:00</pubDate>
		</item>
		</channel>
</rss>