??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国内精品,国产亚洲一区二区精品,亚洲欧美综合另类中字http://www.aygfsteel.com/gemscorpio/category/3066.html目前的目标是做一名合格的JavaE序员,为此我要a Za a Za fightingzh-cnTue, 27 Feb 2007 23:34:27 GMTTue, 27 Feb 2007 23:34:27 GMT60常用的ant的操?/title><link>http://www.aygfsteel.com/Gemscorpio/articles/13983.html</link><dc:creator>MudFish</dc:creator><author>MudFish</author><pubDate>Sun, 25 Sep 2005 03:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/Gemscorpio/articles/13983.html</guid><wfw:comment>http://www.aygfsteel.com/Gemscorpio/comments/13983.html</wfw:comment><comments>http://www.aygfsteel.com/Gemscorpio/articles/13983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Gemscorpio/comments/commentRss/13983.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Gemscorpio/services/trackbacks/13983.html</trackback:ping><description><![CDATA[Gem转:<BR>主要的内ҎQ?BR><BR>    (1)建立一个项?BR>    (2)建立属?BR>    (3)Ҏ据库的操?BR>    (4)javac~译 <BR>    (5)删除目录 <BR>    (6)建立目录 <BR>    (7)拯文g?nbsp;<BR>    (8)jarZ个包 <BR>    (9)拯单个文g <BR>    (10)q行<BR>  有更多更好的常用?我没惛_?希望大家补充?nbsp; <BR>  <BR>  <!--(1)建立一个项目,默认的操作ؓtarget=all. --><BR>  <project name="proj" default="all" basedir="."><BR><BR>    <!--(2)建立一些属性,以供下边的操作用?nbsp;--><BR>    <property name="root"  value="./" /><BR>    <property name="deploy_path"  value="d:/deploy" /><BR>    <property name="srcfile"  value="d:/srcfile" />  <BR>  <BR>    <target name="all" depends="compile,deploy"/><BR><BR>    <!--(3)Ҏ据库的操?nbsp;demo.ddl中写的是sql语句 driver,url,userid,password<BR>随具体情况设|?->  <BR>    <!-- Oracle --><BR>    <target name="db_setup_oracle" description="Database setup for Oracle<BR>"><BR>      <antcall target="check_params_results"/><BR>      <sql driver="oracle.jdbc.driver.OracleDriver"<BR>       url="jdbc:oracle:thin:@192.168.0.1:1521:oa" <BR>       userid="oa" password="oa"<BR>       onerror="continue" <BR>       print="yes"<BR>       src="./demo.ddl"/><BR>    </target><BR><BR>    <!--(4)javac~译 -->  <BR>    <target name="compile">   <BR>    <javac srcdir="${srcfile}"<BR>      destdir="${root}/oa/"<BR>      includes="*.java"<BR>      classpath="${CLASSPATH};${CLIENT_CLASSES}/utils_common.jar"   <!--CLASSPATH<BR>和CLIENT_CLASSES是环境变?-><BR>      /><BR>    </target><BR> <BR>    <target name="deploy" depends="compile"><BR>      <!-- Create the time stamp --><BR>      <tstamp/><BR>    <BR>      <!--(5)删除目录-->    <BR>      <!--(6)建立目录--><BR>      <delete dir="${root}/dist/"/>    <BR>      <mkdir dir="${root}/dist/"/>      <BR><BR>      <delete dir="${deploy_path}"/> <BR>    <mkdir dir="${deploy_path}"/>     <BR>  <BR>    <!--(7)拯文g?-><BR>    <copy todir="${root}/dist/">     <BR>            <fileset dir="${root}/oa/"><BR>                <include name="*.class"/><BR>            </fileset><BR>    </copy><BR>    <BR>    <!--(8)jarZ个包-->    <BR>    <jar jarfile="${deploy_path}/classjar.jar" basedir="${root}/dist" update<BR>="yes"></jar>  <BR>  <BR>    <!--(9)拯单个文g(上边是文件群,q是单个文g)--><BR>    <copy file="${deploy_path}/classjar.jar" todir="${root}/dist/"/> <BR><BR>    </target><BR> <BR>     <!--(10)q行(args中是参数,随应用程序的具体情况有所不同)-><BR>   <target name="simplesql"  depends="compile,db_setup_oracle"> <BR>    <java classname="examples.jdbc.oracle.simplesql"<BR>      fork="yes" failonerror="yes"<BR>      args="-user zrb <BR>            -password zrb <BR>            "/><BR><BR>  </project> <img src ="http://www.aygfsteel.com/Gemscorpio/aggbug/13983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Gemscorpio/" target="_blank">MudFish</a> 2005-09-25 11:32 <a href="http://www.aygfsteel.com/Gemscorpio/articles/13983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Java栈与堆的思?/title><link>http://www.aygfsteel.com/Gemscorpio/articles/13982.html</link><dc:creator>MudFish</dc:creator><author>MudFish</author><pubDate>Sun, 25 Sep 2005 03:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/Gemscorpio/articles/13982.html</guid><wfw:comment>http://www.aygfsteel.com/Gemscorpio/comments/13982.html</wfw:comment><comments>http://www.aygfsteel.com/Gemscorpio/articles/13982.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Gemscorpio/comments/commentRss/13982.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Gemscorpio/services/trackbacks/13982.html</trackback:ping><description><![CDATA[1. ?stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同QJava?BR>动管理栈和堆Q程序员不能直接地设|栈或堆?nbsp;<BR><BR>  2. 栈的优势是,存取速度比堆要快Q仅ơ于直接位于CPU中的寄存器。但~点?BR>Q存在栈中的数据大小与生存期必须是确定的Q缺乏灵zL。另外,栈数据可以共?BR>Q详见第3炏V堆的优势是可以动态地分配内存大小Q生存期也不必事先告诉编译器<BR>QJava的垃圾收集器会自动收走这些不再用的数据。但~点是,׃要在q行时动<BR>态分配内存,存取速度较慢?BR><BR>  3. Java中的数据cd有两U?BR><BR>  一U是基本cd(primitive types), 共有8U,即int, short, long, byte, float<BR>, double, boolean, char(注意Qƈ没有string的基本类?。这U类型的定义是?BR>q诸如int a = 3; long b = 255L;的Ş式来定义的,UCؓ自动变量。值得注意的是<BR>Q自动变量存的是字面|不是cȝ实例Q即不是cȝ引用Q这里ƈ没有cȝ存在?BR>如int a = 3; q里的a是一个指向intcd的引用,指向3q个字面倹{这些字面值的<BR>数据Q由于大可知,生存期可?q些字面值固定定义在某个E序块里面,E序?BR>退出后Q字D值就消失?Q出于追求速度的原因,存在于栈中?BR><BR>  另外Q栈有一个很重要的特D性,是存在栈中的数据可以共享。假设我们同?BR>定义Q?BR><BR>int a = 3; <BR>int b = 3Q?nbsp;<BR><BR>  ~译器先处理int a = 3Q首先它会在栈中创徏一个变量ؓa的引用,然后查找?BR>没有字面gؓ3的地址Q没扑ֈQ就开辟一个存?q个字面值的地址Q然后将a指向<BR>3的地址。接着处理int b = 3Q在创徏完b的引用变量后Q由于在栈中已经?q个?BR>面|便将b直接指向3的地址。这P出Ca与b同时均指?的情c?BR><BR>  特别注意的是Q这U字面值的引用与类对象的引用不同。假定两个类对象的引?BR>同时指向一个对象,如果一个对象引用变量修改了q个对象的内部状态,那么另一?BR>对象引用变量也即d映出q个变化。相反,通过字面值的引用来修改其|不会?BR>致另一个指向此字面值的引用的g跟着改变的情c如上例Q我们定义完a与b的?BR>后,再oa=4Q那么,b不会{于4Q还是等?。在~译器内部,遇到a=4Q时Q它?BR>会重新搜索栈中是否有4的字面|如果没有Q重新开辟地址存放4的|如果已经?BR>了,则直接将a指向q个地址。因此a值的改变不会影响到b的倹{?BR><BR>  另一U是包装cL据,如Integer, String, Double{将相应的基本数据类型包<BR>装v来的cR这些类数据全部存在于堆中,Java用new()语句来显C地告诉~译器,<BR>在运行时才根据需要动态创建,因此比较灉|Q但~点是要占用更多的时间?nbsp;4. String<BR>是一个特D的包装cL据。即可以用String str = new String("abc");的Ş式来?BR>建,也可以用String str = "abc"Q的形式来创?作ؓҎQ在JDK 5.0之前Q你?BR>未见qInteger i = 3;的表辑ּQ因为类与字面值是不能通用的,除了String。而在<BR>JDK 5.0中,q种表达式是可以的!因ؓ~译器在后台q行Integer i = new Integer<BR>(3)的{?。前者是规范的类的创E,卛_Java中,一切都是对象,而对象是c?BR>的实例,全部通过new()的Ş式来创徏。Java中的有些c,如DateFormatc,可以?BR>q该cȝgetInstance()Ҏ来返回一个新创徏的类Q似乎违反了此原则。其实不?BR>。该c运用了单例模式来返回类的实例,只不q这个实例是在该cd部通过new()?BR>创徏的,而getInstance()向外部隐藏了此细节。那Z么在String str = "abc"Q?BR>中,q没有通过new()来创建实例,是不是违反了上述原则Q其实没有?BR><BR>  5. 关于String str = "abc"的内部工作。Java内部此语句转化Z下几个步<BR>骤:<BR><BR>  (1)先定义一个名为str的对Stringcȝ对象引用变量QString strQ?BR><BR>  (2)在栈中查找有没有存放gؓ"abc"的地址Q如果没有,则开辟一个存攑֭面?BR>?abc"的地址Q接着创徏一个新的Stringcȝ对象oQƈo的字W串值指向这个地<BR>址Q而且在栈中这个地址旁边Cq个引用的对象o。如果已l有了gؓ"abc"的地址<BR>Q则查找对象oQƈq回o的地址?BR><BR>  (3)str指向对象o的地址?BR><BR>  值得注意的是Q一般StringcM字符串值都是直接存值的。但像String str = <BR>"abc"Q这U场合下Q其字符串值却是保存了一个指向存在栈中数据的引用Q?BR><BR>  Z更好地说明这个问题,我们可以通过以下的几个代码进行验证?BR><BR>String str1 = "abc";<BR>String str2 = "abc";<BR>System.out.println(str1==str2); //true <BR><BR>  注意Q我们这里ƈ不用str1.equals(str2)Q的方式Q因比较两个字W串<BR>的值是否相{?=PҎJDK的说明,只有在两个引用都指向了同一个对象时才返<BR>回真倹{而我们在q里要看的是Qstr1与str2是否都指向了同一个对象?BR>l果说明QJVM创徏了两个引用str1和str2Q但只创Z一个对象,而且两个引用?BR>指向了这个对象?BR><BR>  我们再来更进一步,以上代码改成:<BR><BR>String str1 = "abc";<BR>String str2 = "abc";<BR>str1 = "bcd";<BR>System.out.println(str1 + "," + str2); //bcd, abc<BR>System.out.println(str1==str2); //false <BR><BR>  q就是说Q赋值的变化D了类对象引用的变化,str1指向了另外一个新对象Q?BR>而str2仍旧指向原来的对象。上例中Q当我们str1的值改?bcd"ӞJVM发现在栈<BR>中没有存放该值的地址Q便开辟了q个地址Qƈ创徏了一个新的对象,其字W串的?BR>指向q个地址?BR><BR>  事实上,Stringc被设计成ؓ不可改变(immutable)的类。如果你要改变其|<BR>可以Q但JVM在运行时Ҏ新值悄悄创Z一个新对象Q然后将q个对象的地址q回<BR>l原来类的引用。这个创E虽说是完全自动q行的,但它毕竟占用了更多的旉<BR>。在Ҏ间要求比较敏感的环境中,会带有一定的不良影响?BR><BR>  再修改原来代码:<BR><BR>String str1 = "abc";<BR>String str2 = "abc";<BR><BR>str1 = "bcd";<BR><BR>String str3 = str1;<BR>System.out.println(str3); //bcd<BR><BR>String str4 = "bcd";<BR>System.out.println(str1 == str4); //true <BR><BR>  str3q个对象的引用直接指向str1所指向的对?注意Qstr3q没有创建新对象<BR>)。当str1改完其值后Q再创徏一个String的引用str4Qƈ指向因str1修改D创?BR>的新的对象。可以发玎ͼq回str4也没有创建新的对象,从而再ơ实现栈中数据的?BR>享?BR><BR>  我们再接着看以下的代码?BR><BR>String str1 = new String("abc");<BR>String str2 = "abc";<BR>System.out.println(str1==str2); //false <BR><BR>  创徏了两个引用。创Z两个对象。两个引用分别指向不同的两个对象?BR><BR>String str1 = "abc";<BR>String str2 = new String("abc");<BR>System.out.println(str1==str2); //false <BR><BR>  创徏了两个引用。创Z两个对象。两个引用分别指向不同的两个对象?BR><BR>  以上两段代码说明Q只要是用new()来新建对象的Q都会在堆中创徏Q而且其字<BR>W串是单独存值的Q即使与栈中的数据相同,也不会与栈中的数据共享?BR><BR>  6. 数据cd包装cȝg可修攏V不仅仅是Stringcȝg可修改,所有的?BR>据类型包装类都不能更改其内部的倹{?nbsp;7. l论与徏议:<BR><BR>  (1)我们在用诸如String str = "abc"Q的格式定义cLQL惛_然地认ؓ<BR>Q我们创ZStringcȝ对象str。担心陷阱!对象可能q没有被创徏Q唯一可以?BR>定的是,指向Stringcȝ引用被创Z。至于这个引用到底是否指向了一个新的对?BR>Q必L据上下文来考虑Q除非你通过new()Ҏ来显要地创徏一个新的对象。因?BR>Q更为准的说法是,我们创徏了一个指向Stringcȝ对象的引用变量strQ这个对<BR>象引用变量指向了某个gؓ"abc"的StringcR清醒地认识到这一点对排除E序中难<BR>以发现的bug是很有帮助的?BR><BR>  (2)使用String str = "abc"Q的方式Q可以在一定程度上提高E序的运行速度<BR>Q因为JVM会自动根据栈中数据的实际情况来决定是否有必要创徏新对象。而对于String<BR> str = new String("abc")Q的代码Q则一概在堆中创徏新对象,而不其字符串?BR>是否相等Q是否有必要创徏新对象,从而加重了E序的负担。这个思想应该是n元模<BR>式的思想Q但JDK的内部在q里实现是否应用了这个模式,不得而知?BR><BR>  (3)当比较包装类里面的数值是否相{时Q用equals()ҎQ当试两个包装c?BR>的引用是否指向同一个对象时Q用==?BR><BR>  (4)׃Stringcȝimmutable性质Q当String变量需要经常变换其值时Q应该?BR>虑用StringBufferc,以提高程序效率?BR><img src ="http://www.aygfsteel.com/Gemscorpio/aggbug/13982.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Gemscorpio/" target="_blank">MudFish</a> 2005-09-25 11:27 <a href="http://www.aygfsteel.com/Gemscorpio/articles/13982.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>d明白Java的IOpȝhttp://www.aygfsteel.com/Gemscorpio/articles/13981.htmlMudFishMudFishSun, 25 Sep 2005 03:24:00 GMThttp://www.aygfsteel.com/Gemscorpio/articles/13981.htmlhttp://www.aygfsteel.com/Gemscorpio/comments/13981.htmlhttp://www.aygfsteel.com/Gemscorpio/articles/13981.html#Feedback0http://www.aygfsteel.com/Gemscorpio/comments/commentRss/13981.htmlhttp://www.aygfsteel.com/Gemscorpio/services/trackbacks/13981.html一Q?nbsp;Input和Output
1. stream代表的是M有能力出数据的数据源,或是M有能力接收数据的接收
源。在Java的IO中,所有的streamQ包括Input和Out streamQ都包括两种cdQ?BR>1.1 以字节ؓ导向的stream
以字节ؓ导向的streamQ表CZ字节为单位从stream中读取或往stream中写入信息?BR>以字节ؓ导向的stream包括下面几种cdQ?BR>1) input streamQ?BR>1) ByteArrayInputStreamQ把内存中的一个缓冲区作ؓInputStream使用
2) StringBufferInputStreamQ把一个String对象作ؓInputStream
3) FileInputStreamQ把一个文件作为InputStreamQ实现对文g的读取操?BR>4) PipedInputStreamQ实Cpipe的概念,主要在线E中使用
5) SequenceInputStreamQ把多个InputStream合ƈZ个InputStream
2) Out stream
1) ByteArrayOutputStreamQ把信息存入内存中的一个缓冲区?BR>2) FileOutputStreamQ把信息存入文g?BR>3) PipedOutputStreamQ实Cpipe的概念,主要在线E中使用
4) SequenceOutputStreamQ把多个OutStream合ƈZ个OutStream
1.2 以Unicode字符为导向的stream
以Unicode字符为导向的streamQ表CZUnicode字符为单位从stream中读取或往stream
中写入信息。以Unicode字符为导向的stream包括下面几种cdQ?BR>1) Input Stream
1) CharArrayReaderQ与ByteArrayInputStream对应
2) StringReaderQ与StringBufferInputStream对应
3) FileReaderQ与FileInputStream对应
4) PipedReaderQ与PipedInputStream对应
2) Out Stream
1) CharArrayWriteQ与ByteArrayOutputStream对应
2) StringWriteQ无与之对应的以字节为导向的stream
3) FileWriteQ与FileOutputStream对应
4) PipedWriteQ与PipedOutputStream对应
以字Wؓ导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类
实现的功能相同,字是在操作时的导向不同。如CharArrayReaderQ和ByteArrayInputStream
的作用都是把内存中的一个缓冲区作ؓInputStream使用Q所不同的是前者每ơ从?BR>存中d一个字节的信息Q而后者每ơ从内存中读取一个字W?BR>1.3 两种不现导向的stream之间的{?BR>InputStreamReader和OutputStreamReaderQ把一个以字节为导向的stream转换成一
个以字符为导向的stream?BR>2. streamd属?BR>2.1 “ؓstreamd属性”的作用
q用上面介绍的Java中操作IO的APIQ我们就可完成我们想完成的Q何操作了。但?BR>qFilterInputStream和FilterOutStream的子c,我们可以为streamd属性。下?BR>以一个例子来说明q种功能的作用?BR>如果我们要往一个文件中写入数据Q我们可以这h作:
FileOutStream fs = new FileOutStream(“test.txt?;
然后可以通过产生的fs对象调用write()函数来往test.txt文g中写入数据了。但
是,如果我们惛_现“先把要写入文g的数据先~存到内存中Q再把缓存中的数据写
入文件中”的功能Ӟ上面的API没有一个能满我们的需求了。但是通过FilterInputStream
和FilterOutStream的子c,为FileOutStreamd我们所需要的功能?BR>2.2 FilterInputStream的各U类?BR>2.2.1 用于装以字节ؓ导向的InputStream
1) DataInputStreamQ从stream中读取基本类型(int、char{)数据?BR>2) BufferedInputStreamQ用缓冲区
3) LineNumberInputStreamQ会记录input stream内的行数Q然后可以调用getLineNumber
()和setLineNumber(int)
4) PushbackInputStreamQ很用刎ͼ一般用于编译器开?BR>2.2.2 用于装以字Wؓ导向的InputStream
1) 没有与DataInputStream对应的类。除非在要用readLine()时改用BufferedReader
Q否则用DataInputStream
2) BufferedReaderQ与BufferedInputStream对应
3) LineNumberReaderQ与LineNumberInputStream对应
4) PushBackReaderQ与PushbackInputStream对应
2.3 FilterOutStream的各U类?BR>2.2.3 用于装以字节ؓ导向的OutputStream
1) DataIOutStreamQ往stream中输出基本类型(int、char{)数据?BR>2) BufferedOutStreamQ用缓冲区
3) PrintStreamQ生格式化输出
2.2.4 用于装以字Wؓ导向的OutputStream
1) BufferedWriteQ与对应
2) PrintWriteQ与对应
3. RandomAccessFile
1) 可通过RandomAccessFile对象完成Ҏ件的d操作
2) 在生一个对象时Q可指明要打开的文件的性质QrQ只读;wQ只写;rw可读?BR>
3) 可以直接跛_文g中指定的位置
4. I/O应用的一个例?BR>import java.io.*;
public class TestIO{
public static void main(String[] args)
throws IOException{
//1.以行为单位从一个文件读取数?BR>BufferedReader in = 
new BufferedReader(
new FileReader("F:nepalonTestIO.java"));
String s, s2 = new String();
while((s = in.readLine()) != null)
s2 += s + "n";
in.close();

//1b. 接收键盘的输?BR>BufferedReader stdin = 
new BufferedReader(
new InputStreamReader(System.in));
System.out.println("Enter a line:");
System.out.println(stdin.readLine());

//2. 从一个String对象中读取数?BR>StringReader in2 = new StringReader(s2);
int c;
while((c = in2.read()) != -1)
System.out.println((char)c);
in2.close();

//3. 从内存取出格式化输入
try{
DataInputStream in3 = 
new DataInputStream(
new ByteArrayInputStream(s2.getBytes()));
while(true)
System.out.println((char)in3.readByte()); 
}
catch(EOFException e){
System.out.println("End of stream");
}

//4. 输出到文?BR>try{
BufferedReader in4 =
new BufferedReader(
new StringReader(s2));
PrintWriter out1 =
new PrintWriter(
new BufferedWriter(
new FileWriter("F:nepalon TestIO.out")));
int lineCount = 1;
while((s = in4.readLine()) != null)
out1.println(lineCount++ + "Q? + s);
out1.close();
in4.close();
}
catch(EOFException ex){
System.out.println("End of stream");
}

//5. 数据的存储和恢复
try{
DataOutputStream out2 = 
new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("F:nepalon Data.txt")));
out2.writeDouble(3.1415926);
out2.writeChars("nThas was pi:writeCharsn");
out2.writeBytes("Thas was pi:writeByten");
out2.close();
DataInputStream in5 =
new DataInputStream(
new BufferedInputStream(
new FileInputStream("F:nepalon Data.txt")));
BufferedReader in5br =
new BufferedReader(
new InputStreamReader(in5));
System.out.println(in5.readDouble());
System.out.println(in5br.readLine());
System.out.println(in5br.readLine());
}
catch(EOFException e){
System.out.println("End of stream");
}

//6. 通过RandomAccessFile操作文g
RandomAccessFile rf =
new RandomAccessFile("F:nepalon rtest.dat", "rw");
for(int i=0; i<10; i++)
rf.writeDouble(i*1.414);
rf.close();

rf = new RandomAccessFile("F:nepalon rtest.dat", "r");
for(int i=0; i<10; i++)
System.out.println("Value " + i + "Q? + rf.readDouble());
rf.close();

rf = new RandomAccessFile("F:nepalon rtest.dat", "rw");
rf.seek(5*8);
rf.writeDouble(47.0001);
rf.close();

rf = new RandomAccessFile("F:nepalon rtest.dat", "r");
for(int i=0; i<10; i++)
System.out.println("Value " + i + "Q? + rf.readDouble());
rf.close();
}
}
关于代码的解释(以区为单位)Q?BR>1ZQ当d文gӞ先把文g内容d~存中,当调用in.readLine()Ӟ再从~?BR>存中以字W的方式d数据Q以下简U“缓存字节读取方式”)?BR>1bZQ由于想以缓存字节读取方式从标准IOQ键盘)中读取数据,所以要先把标准
IOQSystem.inQ{换成字符导向的streamQ再q行BufferedReader装?BR>2ZQ要以字W的形式从一个String对象中读取数据,所以要产生一个StringReader
cd的stream?BR>4ZQ对String对象s2d数据Ӟ先把对象中的数据存入~存中,再从~冲中进
行读取;对TestIO.out文gq行操作Ӟ先把格式化后的信息输出到~存中,再把~?BR>存中的信息输出到文g中?BR>5ZQ对Data.txt文gq行输出Ӟ是先把基本类型的数据输出屋缓存中Q再把缓
存中的数据输出到文g中;Ҏ件进行读取操作时Q先把文件中的数据读取到~存?BR>Q再从缓存中以基本类型的形式q行d。注意in5.readDouble()q一行。因为写?BR>W一个writeDouble()Q所以ؓ了正显C。也要以基本cd的Ş式进行读取?BR>6区是通过RandomAccessFilecd文gq行操作?BR>

MudFish 2005-09-25 11:24 发表评论
]]>
Tomcat的配|?/title><link>http://www.aygfsteel.com/Gemscorpio/articles/11319.html</link><dc:creator>MudFish</dc:creator><author>MudFish</author><pubDate>Sat, 27 Aug 2005 07:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/Gemscorpio/articles/11319.html</guid><wfw:comment>http://www.aygfsteel.com/Gemscorpio/comments/11319.html</wfw:comment><comments>http://www.aygfsteel.com/Gemscorpio/articles/11319.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Gemscorpio/comments/commentRss/11319.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Gemscorpio/services/trackbacks/11319.html</trackback:ping><description><![CDATA[<FONT size=2>如何tomcat下配|jsp、servlet和bean<BR>(q是我配|成功的Q还有许多地方不合理Q欢q大家指?<BR>W一步:</FONT><FONT color=#f70909><FONT size=2>下蝲j2sdk和tomcatQ?BR>到sun官方站点<FONT color=#000000>Q?/FONT></FONT><A ><FONT size=2>http://java.sun.com/j2se/1.5.0/download.jsp</FONT></A><FONT size=2><FONT color=#000000>Q下载j2sdkQ注意下载版本ؓWindows Offline Installation的SDKQ同时最好下载J2SE  DocumentationQ?BR></FONT><FONT color=#ff0000>然后到tomcat官方站点</FONT><FONT color=#000000>Q?/FONT></FONT><A ><FONT size=2>http://www.apache.org/dist/jakarta/tomcat-5/</FONT></A></FONT><FONT color=#000000><FONT size=2>Q下载tomcatQ下载最新版本的tomcatQ;</FONT> <BR><FONT size=2>Q这里我下的是jdk 1.5.0Qtomcat 5.59Q?BR><BR>W二步:</FONT><FONT color=#ff0000 size=2>安装和配|你的j2sdk和tomcatQ?BR></FONT><FONT color=#000000><FONT size=2>执行j2sdk和tomcat的安装程序,然后一路Next卛_?安装tomcat的时候要提示你输入Admin的密码,记得把自p的密码记下来)1.安装j2sdk以后Q需要配|一下环境变量,在我的电?>属?>高->环境变量->pȝ变量中添加以下环境变?BR></FONT><FONT size=2><FONT color=#ff0000>JAVA_HOME=H:\Java\jdk1.5.0 <BR>classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;Q?;一定不能少Q因为它代表当前路径) <BR>path=%JAVA_HOME%\bin</FONT><BR>(q里我的安装目录是H:\Java\jdk1.5.0Q我只是Ҏ自己的安装目录来讲配|,当然Q你可以有一个更ȝ的取得安装目录的ҎQ直接从我的电脑q到你的安装目录Q然后复制地址栏里的地址卛_^_^)<BR>接着Q我们来试你的java开发环境是否已l配好,以经典的HelloWorld开始吧Q?BR></FONT><FONT size=2><FONT color=#0000ff>public class HelloWorld {<BR>        public static void main(String [] args) {<BR>                System.out.println("HelloWorld!");<BR>        }<BR>}<BR></FONT><FONT color=#000000>上面这D늨序另存ؓHelloWorld.java。进入cmdQ然后cd到HelloWorld.java所在的目录Q键入如下命?FONT color=#ff0000>javac HelloWorld.java</FONT></FONT><FONT color=#000000>接着<FONT color=#ff0000>java HelloWorld</FONT></FONT><FONT color=#000000>此时你应该看到输出的是HelloWorld!Q说明java环境配置成功^_^;<BR> <P>2.安装Tomcat后,在我的电?>属?>高->环境变量->pȝ变量中添加以下环境变?BR>q里我的安装目录是H:\Tomcat 5.5Q以我的Z?BR><FONT color=#ff0000>CATALINA_HOME=H:\Tomcat 5.5; <BR>CATALINA_BASE=H:\Tomcat 5.5; <BR><FONT color=#000000>然后修改环境变量中的classpathQ把tomat安装目录下的common\lib下的servlet.jarq加到classpath中去<BR>以下是修改后的classpathQ?BR><FONT color=#ff0000>.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar;%CATALINA_HOME%\common\lib\mssqlserver.jar;<BR><FONT color=#000000>接着可以启动tomcatQ在IE中访?/FONT><A href="http://localhost:8080/">http://localhost:8080</A></FONT><FONT color=#000000>Q如果看到tomcat的那支小猫话说明安装成功了?BR><BR>W三步:</FONT><FONT color=#ff0000>建立自己的jsp app目录 <BR><FONT color=#000000>1.到Tomcat的安装目录的webapps目录Q可以看到ROOTQexamples, tomcat-docs之类Tomcat自带的的目录Q?<BR>2.在webapps目录下新Z个目录,起名叫myappQ?nbsp; <BR>3.在myapp下新Z个测试的jsp面Q文件名为index.jspQ文件内容如下: <BR></FONT><FONT color=#0000ff><</FONT><A href="mailto:%@page"><FONT color=#0000ff>%@page</FONT></A><FONT color=#0000ff> contentType="text/html;charset=gb2312" language="java"%><BR><html><BR><body><BR><center><BR><% <BR>      out.println("HelloWorld!");<BR>      out.println("你好!世界!");<BR>%><BR></center><BR></body><BR></html> <BR></FONT><FONT color=#000000>4.重启Tomcat <BR>5.打开览器,输入</FONT><A href="http://localhost:8080/myapp/index.jsp">http://localhost:8080/myapp/index.jsp</A></FONT><FONT color=#000000> 看到<BR>HelloWorld! 你好!世界!<BR>的话说明成功了?BR><BR>W四步:</FONT><FONT color=#ff0000>建立自己的ServletQ?BR><FONT color=#000000>1.在webapps目录下新Z个目录,起名叫HelloWorldQ?BR></P> <P>2.用你最熟悉的编辑器Q徏议用有语法查的java ideQ新Z个servletE序Q文件名为HelloWorld.javaQ文件内容如下: <BR><FONT color=#0000ff>import javax.servlet.http.HttpServlet;<BR>import javax.servlet.http.HttpServletRequest;<BR>import javax.servlet.http.HttpServletResponse;<BR>import java.io.IOException;<BR>import java.io.PrintWriter;<BR>import javax.servlet.ServletException;</FONT></P><FONT color=#0000ff></FONT><FONT color=#0000ff> <P><BR>public class HelloWorld extends HttpServlet {<BR>    public void doGet(HttpServletRequest request,HttpServletResponse response)<BR>   throws IOException, ServletException {<BR>    response.setContentType("text/html");<BR>    PrintWriter writer = response.getWriter();<BR>    writer.println("Hello World!");<BR>   }<BR>}</FONT> <BR></P> <P>3 .~译 <BR>HelloWorld.java~译 <BR>然后在会产生一个编译后的servlet文gQHelloWorld.class <BR>4 .结构HelloWorld.class剪切?CATALINA_HOME%\webapps\HelloWorld\WEB-INF\classes下,如果WEB-INF\classes目录不存在,新Z个?现在webapps\HelloWorld\WEB-INF\classes下有HelloWorld.class的文?(注意Q要注意文g夹和文g名的大小写!)<BR>5 .在webapps\HelloWorld\WEB-INF下新建web.xml文gQ添加servlet和servlet-mapping <BR>~辑后的web.xml如下所C:<BR></P> <P><FONT color=#ff0000><?xml version="1.0" encoding="ISO-8859-1"?> </FONT></P> <P><FONT color=#ff0000><web-app xmlns="</FONT><A ><FONT color=#ff0000>http://java.sun.com/xml/ns/j2ee</FONT></A><FONT color=#ff0000>" <BR>xmlns:xsi="</FONT><A ><FONT color=#ff0000>http://www.w3.org/2001/XMLSchema-instance</FONT></A><FONT color=#ff0000>" <BR>version="2.4" <BR>xsi:schemaLocation="</FONT><A ><FONT color=#ff0000>http://java.sun.com/xml/ns/j2ee</FONT></A><FONT color=#ff0000>   <BR></FONT><A ><FONT color=#ff0000>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd</FONT></A><FONT color=#ff0000>"></FONT></P> <P><BR><FONT color=#ff0000><display-name>HelloWorld</display-name> <BR><description> <BR>HelloWorld<BR></description> <BR><servlet> <BR><servlet-name>HelloWorld</servlet-name> <BR><display-name>HelloWorld</display-name> <BR><description>HelloWorld</description> <BR><servlet-class>HelloWorld</servlet-class> <BR></servlet> <BR><servlet-mapping> <BR><servlet-name>HelloWorld</servlet-name> <BR><url-pattern>/Hello</url-pattern> <BR></servlet-mapping> <BR></web-app> <BR><FONT color=#000000>q段话中的servletq一D声明了你要调用的ServletQ而servlet-mapping则是声明的servlet“映”到地址/Hello?nbsp;</FONT><BR><FONT color=#000000>6 .好了Q启动TomcatQ启动浏览器Q输?/FONT><A href="http://localhost:8080/HelloWorld/Hello">http://localhost:8080/HelloWorld/Hello</A></FONT><FONT color=#000000> 如果看到输出Hello World! .p明编写的servlet成功了?<BR>(注意Q修改了web.xml以及新加了classQ都要重启Tomcat .)<BR>W五步:建立自己的BeanQ?<BR>1.用你最熟悉的编辑器Q徏议用有语法查的java ideQ新Z个javaE序Q文件名为TestBean.javaQ文件内容如下: <BR><FONT color=#0000ff>package test; <BR>public class TestBean{ <BR>private String name = null; <BR>public TestBean(String strName_p){ <BR>this.name=strName_p; <BR>}  <BR>public void setName(String strName_p){ <BR>this.name=strName_p; <BR>} <BR>public String getName(){ <BR>return this.name; <BR>}  <BR>} <BR></FONT>2 .~译 <BR>TestBean.java攑֜c:\test下,使用如下命o~译Q?<BR>C:\Test>javac TestBean.java <BR>然后在c:\Test下会产生一个编译后的bean文gQTestBean.class <BR>3 .TestBean.class文g剪切?%CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test下, <BR>4 .新徏一个TestBean.jsp文gQ文件内容ؓQ?<BR><FONT color=#0000ff><%@ page import="test.TestBean" %>  <BR><html><body><center> <BR><% <BR>TestBean testBean=new TestBean("This is a test java bean."); <BR>%> <BR>Java bean name is: <%=testBean.getName()%> <BR></center></body></html>  <BR></FONT>5 .好了Q重启TomcatQ启动浏览器Q输?A href="http://localhost:8080/myapp/TestBean.jsp">http://localhost:8080/myapp/TestBean.jsp</A> 如果看到输出Java bean name is: This is a test java bean.p明编写的Bean成功?BR>q样完成了整个Tomcat下的jsp、servlet和javabean的配|。接下来需要做的事情就是多看书、多d人的好代码,自己多动手写代码以增己在q方面开发的能力了?/FONT></P></FONT></FONT></FONT></FONT></FONT></FONT></FONT></FONT><img src ="http://www.aygfsteel.com/Gemscorpio/aggbug/11319.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Gemscorpio/" target="_blank">MudFish</a> 2005-08-27 15:50 <a href="http://www.aygfsteel.com/Gemscorpio/articles/11319.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͤ</a>| <a href="http://" target="_blank">ʳ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">γ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӽ</a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">¡</a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank">Ž</a>| <a href="http://" target="_blank">ƺ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">찲</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">з</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>