??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲一区二区,中文字幕亚洲综合精品一区,亚洲色欲啪啪久久WWW综合网http://m.tkk7.com/xiaohuanbaby/个h日记zh-cnMon, 12 May 2025 14:31:13 GMTMon, 12 May 2025 14:31:13 GMT60关于CLASSPATHhttp://m.tkk7.com/xiaohuanbaby/articles/219062.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:45:00 GMThttp://m.tkk7.com/xiaohuanbaby/articles/219062.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219062.htmlhttp://m.tkk7.com/xiaohuanbaby/articles/219062.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219062.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219062.html今天看翁恺的教程Q讲JAVA基础Q提到CLASSPATH...so bad...惭愧?.只知道是环境变量..却不知道是做什么用的,以前只知道要set classpath=什么什么,至于Z么这么设Q是作什么用的却q不知道Q今天试了试..才有原来如此的感?.

我的理解QCLASSPATH是针?class文g的,它是一个\径,能够让系l自动的L个目录下d找你所要运行的.class文g..

讄CLASSPATHQ可以在pȝ下电脑属性里的环境变量里直接dQ也可以自己创徏一?bat文gQ输入set classpath=d:\javatest;.;q里可以讄多个路径Q?’代表当前目?然后在DOC下执行这?bat文gOK了。这h?class文g攑֜d:\javatest下,无论我在哪JAVAq个.class文gQ它都能够被正常执行.

再有Q关于packageQ如果一个a.java文g定义了一个package javatestQ?当然a.java在javatestq个目录?

~译的时候需要在javatest的目录下执行JAVAC指o。此时会在当前目录生成一个a.class文g(假设只有一个ac?Q但是此时这个文件的名字不再是AQ而是多了一个姓Q姓javatestQ也是_我直接在当前目录下执行java apȝ会提C找不到目标文g。所以在q行q个a.class的时候需要这h行java javatest.a..

q个时候需要注意的是,pȝ同样会在CLASSPATH的目录下Ljavatestq个目录.如果CLASSPATH此时被设|ؓset classpath=d:\javatest;.;那么在当前目录下Qd:\javatestQ下执行java javatest.aQ系l会报错Q因为在当前目录Qd:\javatestQ和d:\javatest目录下找不到目标文gQ正的做法是在d:\下执行java javatest.a..

呵呵Q原来接触的时候很乱,现在l于有了那么一Ҏ\Q还有待慢慢学习...



久城 2006-09-12 16:45 发表评论


]]>
配置让我头疼的MyEclipse...http://m.tkk7.com/xiaohuanbaby/articles/219061.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:45:00 GMThttp://m.tkk7.com/xiaohuanbaby/articles/219061.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219061.htmlhttp://m.tkk7.com/xiaohuanbaby/articles/219061.html#Feedback1http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219061.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219061.html
最q老师讲的都是关于Web Programming的知识,能涉及到的方面有JAVA便宜环境JDKQWEB服务器tomcat,q有是老师说以后会l常用的Eclipse?br />
刚刚接触EclipseQ还没怎么弄熟悉呢~开始弄到MyEclipse..MyEclipse是我接触的Eclipse的第一个插件?br />
所以,一点一点的Q第一步从JDK开始,q个?..讄环境变量Q?br />JAVA_HOMEQF:\jdk1.5.0_06Q?br />CLASSPATHQ?;%JAVA_HOME%\lib;
然后在PATH里加入:%JAVA_HOME%\bin;Q其实只需要把JDK的bin目录加到PATH里就可以Q至于JAVA_HOME和CLASSPATH以后q会用到Q估计这也是一U规范,所以就q样写了..Q?br />
然后Q安装tomcat...讄环境变量Q?br />CATALINA_HOMEQF:\Tomcat 5.0Q?br />再在pȝ变量CLASSPATH的值的后面加入Q?CATALINA_HOME%\common\lib;
再在pȝ变量Path的g"%JAVA_HOME%\bin;"的后面加入:%CATALINA_HOME%\bin;

然后安装Eclipse,把下载的ZIP包直接解压就可以用?br />
最后就是MyEclipseQ折了我好半天Q其实很单,下蝲MyEclipse的安装包之后执行QMyEclipseEnterpriseWorkbenchInstaller_5.0.1GA_E3.2.exeQ,会有两个路径需要修改,把这两个路径都设|成Eclipse的安装\径,比如我的Eclipse装到FQ\下,是F:\eclipse?strong>然后把其中一个安装出来的文g夹(eclipseQ中的features和pluginsq?个目录覆盖原有的文g..我就是因个弄来半天没弄好Q郁闷啊Q?br />
然后q行eclipse.exeQ首ơ运行要求指定WorkspaceQ,依次点击Window ——Preferences ——MyEclipse——Subscription ——Enter SubscriptionQ输入注册名以及注册机生成的注册码?

q个MyEclipseq个插g可以用了~哈哈~用来q啥q不了解呢!慢慢学习Q?img src ="http://m.tkk7.com/realsmy/aggbug/69765.html" width = "1" height = "1" />

久城 2006-09-14 22:51 发表评论


]]>
初识sessionhttp://m.tkk7.com/xiaohuanbaby/articles/219060.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:45:00 GMThttp://m.tkk7.com/xiaohuanbaby/articles/219060.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219060.htmlhttp://m.tkk7.com/xiaohuanbaby/articles/219060.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219060.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219060.html新徏立一个Web Project...用来试session的功能?br />
sessionp一个大容器Q关键在于它的生命周期,它存zd父窗口的整个生命周期中。比如在一个index.htm面中创Z一个session,那么在这个index.htm的页面没有被关闭的过E中Qindex的所有子q接Q子q接的子q接{等Qsession都是同一个容器。但是,当我重新启动index.htm的时候,原来的session消失Q新的session产生?br />
p以前学习的那个数据库的实践一P可以实现不同的客L每次讉K服务器,服务器都会分配给客户端不同的一个session用以区别不同的用戗?br />
主要用法
//session test

import javax.servlet.http.HttpSession;  //需要的?br />
HttpSession session = request.getSession();   //定义session对象

session.setAttribute("name",name);   //讄session属?br />
String sessionname = (String)session.getAttribute("name");   //取session属性的?/p>

久城 2006-09-18 10:31 发表评论


]]>
用JAVA创徏,dXML文ghttp://m.tkk7.com/xiaohuanbaby/articles/219059.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:45:00 GMThttp://m.tkk7.com/xiaohuanbaby/articles/219059.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219059.htmlhttp://m.tkk7.com/xiaohuanbaby/articles/219059.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219059.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219059.html
Document:
import org.dom4j.Document;
Import org.dom4j.DocumentHelper;
DocumentHelper.createDocument(); 获得文档对象
addElementҎ增加根节?br />getRootElementҎ获得根节?br />asXMLҎ文档对象包含的内容转换为字W?br />addCommentҎ在增加注?br />getPathҎ获得路径,根节点ؓ/

Element:
import org.dom4j.Elemet;
addElementҎ增加子节?br />addAttributeҎ增加属?br />getNameҎ获得节点名称
asXMLҎ文档对象包含的内容转换为字W?br />addCommentҎ在增加注?br />getPathҎ获得路径
addTextҎ增加节点?br />setTextҎ讄节点?br />addNamespaceҎ增加命名I间
attributeCountҎ获得属性个?br />attributeValueҎ获得属性?br />elementTextҎ指定元素的?br />
Attribute:
Import org.dom4j.Attribute;
getNameҎ获得属性名U?br />getValueҎ获得属性?br />setValueҎ讄属性?br />
Node:
import org.dom4j.Node;
Document和Element中selectSingleNodeҎ获得对象
setNameҎ讄节点名称
getTextҎ获得节点?br />setTextҎ讄节点?br />
List,Iterator:
import java.util.List;
Document和Element中selectNodesҎ获得对象
import java.util.Iterator;
List中iteratorҎ,Iterator中hasNextҎ和nextҎ来获得节Ҏ属?br />
XMLWriter:
import org.dom4j.io.XMLWriter;
WriterҎ与OutputStream(FileOutputStream),Writer(FileWriter)
writeҎ写对?br />closeҎ关闭写对?br />
OutputFormat:
import org.dom4j.io.OutputFormat;
setEncodingҎ讄字符?br />createCompactFormatҎ为紧凑格?默认
createPrettyFormatҎ为羃q格?br />
SAXReader:
import org.dom4j.io.SAXReader ;
readҎ与File

下面,我们用这些类来实C下创建XML文g的简单过E?

 1package Test;
 2
 3import java.io.*;
 4import org.dom4j.*;
 5import org.dom4j.io.*;
 6
 7public class xmlTest {
 8    
 9    public void writeXML(){
10        Document doc = org.dom4j.DocumentHelper.createDocument();
11        //创徏节点操作对象
12        Element rootElement = doc.addElement("student");
13        //创徏根节点对象rootElement,标签名ؓstudent
14        
15        rootElement.setText("hello");
16        //对节点设|内?后面dXML文g的时候可以把他取出来
17        rootElement.addAttribute("id","030511111");
18        //讄节点属?/span>
19        Element name = rootElement.addElement("name");
20        //d子节?/span>
21        name.setText("xiaozhang");
22        //讄子节点内?/span>
23        Element age = rootElement.addElement("age");
24        age.setText("23");
25        
26        try {
27            OutputFormat fmt = new OutputFormat();
28            //创徏输出格式对象
29            fmt.setEncoding("gb2312");
30            XMLWriter writer = new XMLWriter(fmt);
31            //以输出格式ؓ参数,创徏XML文g输出对象
32            OutputStream out = new FileOutputStream("d:\\test.xml");
33            //创徏输出?.
34            writer.setOutputStream(out);
35            //讄输出?/span>
36            writer.write(doc);
37            //输出doc对象,卛_Ş成XML文g
38        }
 catch (Exception e) {
39
40            e.printStackTrace();
41        }

42        
43    }

44    
45    public void readXML(){
46        SAXReader reader = new SAXReader();
47        //创徏d对象
48        Document doc;
49        try {
50            doc = reader.read(new File("d:\\test.xml"));
51            //从test.xml文g中取得节Ҏ作对?/span>
52            Element name = doc.getRootElement();
53            //取得节点对象
54            System.out.println(name.getText());
55            //输出节点内容
56        }
 catch (Exception e) {
57            e.printStackTrace();
58        }

59    }

60    
61    public static void main(String[] args){
62        xmlTest s = new xmlTest();
63        s.writeXML();
64        s.readXML();    
65    }

66}

67


久城 2006-11-10 08:53 发表评论


]]>
javaq接oracle数据?/title><link>http://m.tkk7.com/xiaohuanbaby/articles/219058.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 31 Jul 2008 07:45:00 GMT</pubDate><guid>http://m.tkk7.com/xiaohuanbaby/articles/219058.html</guid><wfw:comment>http://m.tkk7.com/xiaohuanbaby/comments/219058.html</wfw:comment><comments>http://m.tkk7.com/xiaohuanbaby/articles/219058.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219058.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiaohuanbaby/services/trackbacks/219058.html</trackback:ping><description><![CDATA[偶理解不?没什么说?用的时候COPY可以了~~<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> jdbc;<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.sql.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/None.gif" align="top" /><br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img id="Codehighlighter1_57_879_Open_Image" onclick="this.style.display='none'; Codehighlighter1_57_879_Open_Text.style.display='none'; Codehighlighter1_57_879_Closed_Image.style.display='inline'; Codehighlighter1_57_879_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_57_879_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_57_879_Closed_Text.style.display='none'; Codehighlighter1_57_879_Open_Image.style.display='inline'; Codehighlighter1_57_879_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> jdbcTest </span><span id="Codehighlighter1_57_879_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_57_879_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img id="Codehighlighter1_78_785_Open_Image" onclick="this.style.display='none'; Codehighlighter1_78_785_Open_Text.style.display='none'; Codehighlighter1_78_785_Closed_Image.style.display='inline'; Codehighlighter1_78_785_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_78_785_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_78_785_Closed_Text.style.display='none'; Codehighlighter1_78_785_Open_Image.style.display='inline'; Codehighlighter1_78_785_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> test()</span><span id="Codehighlighter1_78_785_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_78_785_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        Connection conn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        Statement sta </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img id="Codehighlighter1_135_582_Open_Image" onclick="this.style.display='none'; Codehighlighter1_135_582_Open_Text.style.display='none'; Codehighlighter1_135_582_Closed_Image.style.display='inline'; Codehighlighter1_135_582_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_135_582_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_135_582_Closed_Text.style.display='none'; Codehighlighter1_135_582_Open_Image.style.display='inline'; Codehighlighter1_135_582_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">try</span><span id="Codehighlighter1_135_582_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_135_582_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            Class.forName(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">oracle.jdbc.driver.OracleDriver</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">加蝲驱动</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #008000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            conn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> DriverManager.getConnection(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc:oracle:thin:@192.168.88.220:1521:oracle9</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">scott</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tiger</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">192.168.88.220Z所讉K的数据库的地址<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">1521为oracle的端口号<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">oracle9为数据库?br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #008000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">scott,tiger为oracle默认的用户名和密?/span><span style="COLOR: #008000"><br /></span><span style="COLOR: #008080">17</span><span style="COLOR: #008000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">            sta </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> conn.createStatement();<br /></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            ResultSet rs </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> sta.executeQuery(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">select ename from emp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(rs.next())<br /></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img id="Codehighlighter1_525_577_Open_Image" onclick="this.style.display='none'; Codehighlighter1_525_577_Open_Text.style.display='none'; Codehighlighter1_525_577_Closed_Image.style.display='inline'; Codehighlighter1_525_577_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_525_577_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_525_577_Closed_Text.style.display='none'; Codehighlighter1_525_577_Open_Image.style.display='inline'; Codehighlighter1_525_577_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span id="Codehighlighter1_525_577_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_525_577_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                System.out.println(rs.getString(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ename</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img id="Codehighlighter1_601_622_Open_Image" onclick="this.style.display='none'; Codehighlighter1_601_622_Open_Text.style.display='none'; Codehighlighter1_601_622_Closed_Image.style.display='inline'; Codehighlighter1_601_622_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_601_622_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_601_622_Closed_Text.style.display='none'; Codehighlighter1_601_622_Open_Image.style.display='inline'; Codehighlighter1_601_622_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        }</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception e)</span><span id="Codehighlighter1_601_622_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_601_622_Open_Text"><span style="COLOR: #000000">{e.printStackTrace();}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img id="Codehighlighter1_633_782_Open_Image" onclick="this.style.display='none'; Codehighlighter1_633_782_Open_Text.style.display='none'; Codehighlighter1_633_782_Closed_Image.style.display='inline'; Codehighlighter1_633_782_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_633_782_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_633_782_Closed_Text.style.display='none'; Codehighlighter1_633_782_Open_Image.style.display='inline'; Codehighlighter1_633_782_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">finally</span><span id="Codehighlighter1_633_782_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_633_782_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img id="Codehighlighter1_641_738_Open_Image" onclick="this.style.display='none'; Codehighlighter1_641_738_Open_Text.style.display='none'; Codehighlighter1_641_738_Closed_Image.style.display='inline'; Codehighlighter1_641_738_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_641_738_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_641_738_Closed_Text.style.display='none'; Codehighlighter1_641_738_Open_Image.style.display='inline'; Codehighlighter1_641_738_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">try</span><span id="Codehighlighter1_641_738_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_641_738_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img id="Codehighlighter1_662_686_Open_Image" onclick="this.style.display='none'; Codehighlighter1_662_686_Open_Text.style.display='none'; Codehighlighter1_662_686_Closed_Image.style.display='inline'; Codehighlighter1_662_686_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_662_686_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_662_686_Closed_Text.style.display='none'; Codehighlighter1_662_686_Open_Image.style.display='inline'; Codehighlighter1_662_686_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(sta </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_662_686_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_662_686_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                    sta.close();<br /></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img id="Codehighlighter1_708_733_Open_Image" onclick="this.style.display='none'; Codehighlighter1_708_733_Open_Text.style.display='none'; Codehighlighter1_708_733_Closed_Image.style.display='inline'; Codehighlighter1_708_733_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_708_733_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_708_733_Closed_Text.style.display='none'; Codehighlighter1_708_733_Open_Image.style.display='inline'; Codehighlighter1_708_733_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(conn </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_708_733_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_708_733_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />                    conn.close();<br /></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />                }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img id="Codehighlighter1_757_778_Open_Image" onclick="this.style.display='none'; Codehighlighter1_757_778_Open_Text.style.display='none'; Codehighlighter1_757_778_Closed_Image.style.display='inline'; Codehighlighter1_757_778_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_757_778_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_757_778_Closed_Text.style.display='none'; Codehighlighter1_757_778_Open_Image.style.display='inline'; Codehighlighter1_757_778_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span></span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(Exception e)</span><span id="Codehighlighter1_757_778_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_757_778_Open_Text"><span style="COLOR: #000000">{e.printStackTrace();}</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img id="Codehighlighter1_827_877_Open_Image" onclick="this.style.display='none'; Codehighlighter1_827_877_Open_Text.style.display='none'; Codehighlighter1_827_877_Closed_Image.style.display='inline'; Codehighlighter1_827_877_Closed_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_827_877_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_827_877_Closed_Text.style.display='none'; Codehighlighter1_827_877_Open_Image.style.display='inline'; Codehighlighter1_827_877_Open_Text.style.display='inline';" src="http://m.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) </span><span id="Codehighlighter1_827_877_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://m.tkk7.com/images/dot.gif" /></span><span id="Codehighlighter1_827_877_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        jdbcTest jt </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> jdbcTest();<br /></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" />        jt.test();        <br /></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://m.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><img src ="http://m.tkk7.com/realsmy/aggbug/80295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/realsmy/" target="_blank">久城</a> 2006-11-10 09:01 <a href="http://m.tkk7.com/realsmy/archive/2006/11/10/80295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><img src ="http://m.tkk7.com/xiaohuanbaby/aggbug/219058.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiaohuanbaby/" target="_blank">?/a> 2008-07-31 15:45 <a href="http://m.tkk7.com/xiaohuanbaby/articles/219058.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java class loading技术研I?/title><link>http://m.tkk7.com/xiaohuanbaby/articles/219057.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 31 Jul 2008 07:45:00 GMT</pubDate><guid>http://m.tkk7.com/xiaohuanbaby/articles/219057.html</guid><wfw:comment>http://m.tkk7.com/xiaohuanbaby/comments/219057.html</wfw:comment><comments>http://m.tkk7.com/xiaohuanbaby/articles/219057.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219057.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiaohuanbaby/services/trackbacks/219057.html</trackback:ping><description><![CDATA[ <p>最q在忙毕业设计,被分到的N?Qjava class loading技术研I?br /><br />W一ơ接触java虚拟机方面的问题Q对我来_q真有些困难。查了两天的资料Q简单整理一下?br /><br />一个类代表要执行的代码Q而数据则表示其相关状态。状态时常改变,而代码则不会。当我们一个特定的状态与一个类相对应v来,也就意味着实例化一个对象。尽相同的cd应的实例的状态千差万别,但其本质都对应着同一D代码。在JAVA中,一个类通常有着一?class文gQ但也有例外?br /><br />我们所~译的代码,都是首先通过~译器编译成字节码文件。对于JAVA来说Q就是生成一个一个的.class文g。当我们q行E序的时候,再由JAVA虚拟机将所需要的.class文g加蝲q内存。(q个时候的工作由每一个加载器来完成)。我的毕设所要研I的问题在q里。如何自己定义一个classloader?自定义的classloader׃么意义呢?呵呵Q才接触两天Q具体的我还没理解透呢?br /><br /><strong>关于classloader:</strong><br />classloader是一Utree-like的hierarchy的结构,q颗树的root是bootstrap classloader。当JVM启动后,pȝ往往会有三个或三个以上的Class LoaderQ也卻IBootstrap CL, Extension CL, System CL和User-defined CL。Q何的CL都有一个parent CLQBootstrap CL除外Q,从而所有的CL形成一颗自上而下的树Q其中Bootstrap CL是这颗树的Root?br />Bootstrap CL<br />└──Extension CL<br />└──System CL<br />└──User-defined CL.(classLoaderA)<br />└──User-defined CL.(classLoaderB)<br /><br />程Q?/p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">当执行?/span> <span lang="EN-US">java XXX.class</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">”时Q?/span> <span lang="EN-US">java.exe</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">首先扑ֈ</span> <span lang="EN-US">JRE</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span> <span lang="EN-US">Java Runtime Environment</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q,接着扑ֈ位于</span> <span lang="EN-US">JRE</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">之中?/span> <span lang="EN-US">jvm.dll</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q最后蝲?/span> <span lang="EN-US">jvm.dll</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q启动虚拟机?/span> </p> <p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟Z启动Q先做一些初始化动作Q如获取pȝ参数{,然后产生</span> <span lang="EN-US">BL</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang="EN-US">BL</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">加蝲</span> <span lang="EN-US">Java</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">基础c,q些c都存放?/span> <span lang="EN-US">JRE</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span> <span lang="EN-US">lib</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目录下,可由</span> <span lang="EN-US">System.getProperty(“sun.boot.class.path?</span> <span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">列出?br /></span> <br />jvm建立->初始化动?>产生W一个ClassLoader,即bootstrap loader->bootstrap loader在sum.misc.Launcherc里面的ExtClassLoader,q设定其Parent为null->bootstrap loader载入sun.misc.Launcher$AppClassLoader,q设定其parent为ExtClassLoader(但是AppClassLoader也是由bootstrap loader所载入?->AppClassLoader载入各个xx.class,xx.class也有可能被ExtclassLoader或者bootstrap loader载入. <br /><br /><strong>Javac装载体pȝ?/strong></p> <p class="normal">装蝲cȝq程非常单:查找cL在位|,q将扑ֈ的Javacȝ字节码装入内存,生成对应的Class对象。Java的类装蝲器专门用来实现这Lq程QJVMq不止有一个类装蝲器,事实上,如果你愿意的话,你可以让JVM拥有无数个类装蝲器,当然q除了测试JVM外,我想不出q有其他的用途。你应该已经发现Cq样一个问题,c装载器自n也是一个类Q它也需要被装蝲到内存中来,那么q些c装载器p来装载呢Qd有个根吧Q没错,实存在q样的根Q它是龙见首不见Bootstrap ClassLoader. Z么说它神龙见首不见尾呢,因ؓ你根本无法在Java代码中抓住哪怕是它的一点点的尾_管你能时时d体会到它的存在,因ؓjava的运行环境所需要的所有类库,都由它来装蝲Q而它本n是C++写的E序Q可以独立运?可以说是JVM的运行v?伟大吧。在Bootstrap完成它的d后,会生成一个AppClassLoader(实际上之前系l还会用扩展类装蝲器ExtClassLoaderQ它用于装蝲Javaq行环境扩展包中的类),q个c装载器才是我们l常使用的,可以调用ClassLoader.getSystemClassLoader() 来获得,我们假定E序中没有用类装蝲器相x作设定或者自定义新的c装载器Q那么我们编写的所有javac通通会由它来装载,值得敬吧。AppClassLoader查找cȝ区域是耳熟能详的ClasspathQ也是初学者必跨q的门槛Q有没有灵光一闪的感觉Q我们按照它的类查找范围l它取名为类路径c装载器。还是先前假定的情况Q当Java中出现新的类QAppClassLoader首先在类传递给它的父类c装载器Q也是Extion ClassLoaderQ询问它是否能够装蝲该类Q如果能Q那AppClassLoader׃q这zMQ同样Extion ClassLoader在装载时Q也会先问问它的父类装蝲器。我们可以看出类装蝲器实际上是一个树状的l构图,每个c装载器有自q父亲Q类装蝲器在装蝲cLQL先让自己的父c装载器装蝲(多么敬长辈),如果父类装蝲器无法装载该cLQ自己就会动手装载,如果它也装蝲不了Q那么对不vQ它会大喊一壎ͼExceptionQclass not found。有必要提一句,当由直接使用c\径装载器装蝲cd败抛出的是NoClassDefFoundException异常。如果用自定义的类装蝲器loadClassҎ或者ClassLoader的findSystemClassҎ装蝲c,如果你不d意改变,那么抛出的是ClassNotFoundException?br /><br /><strong>cd载器是什么?<br /></strong><br />Java和其他语a不同的是QJava是运行于Java虚拟?JVM)。这意味着~译后的代码是以<br />一U和q_无关的格式保存的Q而不是某U特定的机器上运行的格式。这U格式和传统的可<br />执行代码格式有很多重要的区别。具体来_不同于C或者E++E序QJavaE序不是一个独<br />立的可执行文Ӟ而是由很多分开的类文gl成Q每个类文g对应一个JavacR?另外Q这<br />些类文gq不是马上加载到内存Q而是当程序需要的时候才加蝲?cd载器是Java虚拟<br />Z用来把类加蝲到内存的工具。而且QJavacd载器也是用Java实现的。这样你׃需?br />对Java虚拟机有深入的理解就可以很容易创qcd载器了?br /><br /><strong>Z么要创徏cd载器?<br /><br /></strong>既然Java虚拟金已l有了类加蝲器,我们q要自己创徏其他的呢?问得好。默认的cd载器<br />只知道如何从本地pȝ加蝲cR当你的E序完全在本机编译的话,默认的类加蝲器一般都?br />作的很好。但是Java中最Ȁ动h心的地方之一是很容易的从网l上而不只是本地加蝲cR?br />举个例子Q浏览器可以通过自定义的cd载器加蝲cR?q有<br />很多加蝲cȝ方式。除了简单的从本地或者网l外Q你q可以通过自定义Java中最Ȁ动h?br />的地方之一:<br />* 执行非信M码前自动验证数字{֐<br />* Ҏ用户提供的密码解密代?br />* Ҏ用户的需要动态的创徏c?br />你关心的M东西都能方便的以字节码的形式集成C的应用中<br /><br />-----------------------------------------------------------------------------------<br /><br />以上大都是别人的文字Q我选取了一些保存下来。用于以后的l箋学习?<br /><br />如果哪位朋友研究q这斚w的内容,很乐意向您请教学习?br /></p> <img src ="http://m.tkk7.com/realsmy/aggbug/105823.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/realsmy/" target="_blank">久城</a> 2007-03-23 14:07 <a href="http://m.tkk7.com/realsmy/archive/2007/03/23/105823.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><img src ="http://m.tkk7.com/xiaohuanbaby/aggbug/219057.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiaohuanbaby/" target="_blank">?/a> 2008-07-31 15:45 <a href="http://m.tkk7.com/xiaohuanbaby/articles/219057.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于java class loader的理解笔?/title><link>http://m.tkk7.com/xiaohuanbaby/articles/219056.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 31 Jul 2008 07:45:00 GMT</pubDate><guid>http://m.tkk7.com/xiaohuanbaby/articles/219056.html</guid><wfw:comment>http://m.tkk7.com/xiaohuanbaby/comments/219056.html</wfw:comment><comments>http://m.tkk7.com/xiaohuanbaby/articles/219056.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219056.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiaohuanbaby/services/trackbacks/219056.html</trackback:ping><description><![CDATA[     摘要: JAVA中的一切都是以cȝ形式存在的(除少数底层的东西Q那些我׃清楚是怎么回事了)。我们运行的接口是一个类Q运行中所涉及到的对象也都是类对象。下面,我们来研I下Q我所理解的类的加载机制?<br> <br>比如我们有一个Studentc,也就是经q编译后Q是一个Student.class文g。当我们的程序运行的q程中,W一ơ实例化一个student对象的时候,pȝ首先要做的就是加载Studentq个cR也是把Student.class以字节玛的Ş势加载到内存中(q过defineClass()q个Ҏ转变成Class对象Q最l以Class对象的Ş式存储在内存中)。这个加载的q程是q加蝲器来完成的?<br>  <a href='http://m.tkk7.com/realsmy/archive/2007/04/03/108053.html'>阅读全文</a><img src ="http://m.tkk7.com/realsmy/aggbug/108053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/realsmy/" target="_blank">久城</a> 2007-04-03 12:27 <a href="http://m.tkk7.com/realsmy/archive/2007/04/03/108053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><img src ="http://m.tkk7.com/xiaohuanbaby/aggbug/219056.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiaohuanbaby/" target="_blank">?/a> 2008-07-31 15:45 <a href="http://m.tkk7.com/xiaohuanbaby/articles/219056.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVA加密解密---自定义类加蝲器应?/title><link>http://m.tkk7.com/xiaohuanbaby/articles/219055.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 31 Jul 2008 07:45:00 GMT</pubDate><guid>http://m.tkk7.com/xiaohuanbaby/articles/219055.html</guid><wfw:comment>http://m.tkk7.com/xiaohuanbaby/comments/219055.html</wfw:comment><comments>http://m.tkk7.com/xiaohuanbaby/articles/219055.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219055.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiaohuanbaby/services/trackbacks/219055.html</trackback:ping><description><![CDATA[     摘要: 自定义的cd载器能够灉|的控制类的加载过E。从而可以实C些我们所要的功能?<br> <br>但是Q即使是q样的加密技术,对于某些高手来说Q依然是脆弱的。我们所需要做的就是,理解q其中的q程Q掌握这L技术,最l能够应用到我们自己的实际项目中来?nbsp; <a href='http://m.tkk7.com/realsmy/archive/2007/04/22/112575.html'>阅读全文</a><img src ="http://m.tkk7.com/realsmy/aggbug/112575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/realsmy/" target="_blank">久城</a> 2007-04-22 11:09 <a href="http://m.tkk7.com/realsmy/archive/2007/04/22/112575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><img src ="http://m.tkk7.com/xiaohuanbaby/aggbug/219055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiaohuanbaby/" target="_blank">?/a> 2008-07-31 15:45 <a href="http://m.tkk7.com/xiaohuanbaby/articles/219055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]JSP内部对象学习http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219048.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:29:00 GMThttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219048.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219048.htmlhttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219048.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219048.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219048.html最q在学JSP~程Q感觉JSP的内部对象在实际开发中的作用不。今天刚好看C不错的资料Q自己整理下Q?/p>


1、Out对象

主要用来向客L输出各种格式的数据,q且理应用服务器上的输出缓冲区QOut对象的基cLjavax.servlet.jsp.JspWritercR?

Out的主要方法:

out.println(DataType);或out.print(DataType);

实例Q?

<%@page  language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> out对象使用实例</TITLE>
</HEAD>
<BODY>
<%
out.println(new Date().toLocaleString());
out.print("<BR>");
out.print("试成功");
%>
</BODY>
</HTML>

2、Request对象

Request.setAttribute()与Request.getAttribute()Ҏ实例Q也可以使用forward建立h关系Q:

引入面Q?

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<%@ include file="1.jsp" %>
你刚才输入的内容是:
<%=request.getAttribute("gr")%>

主页面:

< %@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request对象使用实例</TITLE>
</HEAD>
<BODY>
<%
request.setAttribute("gr","123333");
%>
</FORM>
</BODY>
</HTML>

Request.getParameter()Ҏ实例

主页?

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request.getParameter()Ҏ使用实例</TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="2.jsp">
<INPUT TYPE="text" NAME="gr1"><BR>
<INPUT TYPE="text" NAME="gr2"><BR>
<INPUT TYPE="text" NAME="gr3"><BR>
<INPUT TYPE="submit" NAME="submit" value="提交">
<INPUT TYPE="reset" NAME="reset" value="清除">
</FORM>
</FORM>
</BODY>
</HTML>

引入面

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
你刚才输入的内容是:<BR>
<%=request.getParameter("gr1")%><BR>
<%=request.getParameter("gr2")%><BR>
<%=request.getParameter("gr3")%><BR>

Request.getParameterName()Ҏ实例

主页?

<%@page  language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> request.getParameterName()Ҏ使用实例</TITLE>
</HEAD>
<BODY>
<FORM METHOD=post ACTION="2.jsp">
<INPUT TYPE="text" NAME="gr1"><BR>
<INPUT TYPE="text" NAME="gr2"><BR>
<INPUT TYPE="text" NAME="gr3"><BR>
<INPUT TYPE="submit" value="提交">
<INPUT TYPE="reset" value="清除">
</FORM>
</FORM>
</BODY>
</HTML>

指向面

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
你刚才输入的内容是:<BR>
<%
Enumeration e=request.getParameterNames();
while(e.hasMoreElements()){
String parameterName=(String)e.nextElement();
String parameterValue=(String)request.getParameter(parameterName);
out.print("参数名称Q?+parameterName+"<BR>");
out.print("参数内容Q?+parameterValue+"<BR>");
}
%>
PSQEnumeration接口的APIQ?br />实现 Enumeration 接口的对象,它生成一pd元素Q一ơ生成一个。连l调?nextElement Ҏ返回一pd的连l元素?br />hasMoreElements ()
          试此枚举是否包含更多的元素?br />nextElement ()
          如果此枚丑֯象至还有一个可提供的元素,则返回此枚D的下一个元素?/p>

Request.getAttributeName()Ҏ实例

主页面:

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> request.getAttributeName()Ҏ使用实例</TITLE>
</HEAD>
<BODY>
<jsp:include page="2.jsp" flush="true"/>
<%
Enumeration e=request.getAttributeNames();
while(e.hasMoreElements()){
String attributeName=(String)e.nextElement();
String attributeValue=(String)request.getAttribute(attributeName);
out.print("变量名称Q?+attributeName);
out.print("变量内容Q?+attributeValue+"<BR>");
}
%>
</FORM>
</FORM>
</BODY>
</HTML>


转向面

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<%
request.setAttribute("gr1","111");
request.setAttribute("gr2","222");
request.setAttribute("gr3","333");
%>

request.getRemoteAddr()Ҏ实例Q?

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> request.getRemoteAddr()Ҏ使用实例</TITLE>
</HEAD>
<BODY>
<B>你的IP地址Q?lt;/B>
<B><%=request.getRemoteAddr()%></B>
</FORM>
</FORM>
</BODY>
</HTML>

3、Response对象

response.setHeader()Ҏ|页自动h实例Q?

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> responseh面实例</TITLE>
</HEAD>
<BODY>
<%
response.setHeader("refresh","3");
out.println(new Date().toLocaleString());
%>
</BODY>
</HTML>


response.sendRedirect();Ҏ实现面的蟩?
<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> response面跌{实例</TITLE>
</HEAD>
<BODY>
<%
    response.sendRedirect("login.jsp");
%>
</BODY>
</HTML>

4、Application对象

在JSP服务器运行时刻,仅有一个Application对象Q它由服务器创徏Q也由服务器自动清除,
不能被用户创建和清除。我们只能创个Appliation对象的同步拷贝?

setAttribute(),getAttribute()和removeAttribute()Ҏ实例Q?

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Application对象Ҏ实例</TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";
application.setAttribute("username",username);
application.setAttribute("password",password);
out.println(application.getAttribute("username")+"<BR>");
out.println(application.getAttribute("password")+"<BR>");
application.removeAttribute("password");
out.println(application.getAttribute("password")+"<BR>");
%>
</BODY>
</HTML>

getAttributeNames()Ҏ实例Q?

<%@page language="java"
contentType="text/html;charset=gb2312"
import="java.util.*"
%>
<HTML>
<HEAD>
<TITLE> Application对象Ҏ实例</TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";

application.setAttribute("username",username);
application.setAttribute("password",password);

Enumeration enum=application.getAttributeNames();
while(enum.hasMoreElements()){
String attrName=(String)enum.nextElement();
out.println(attrName+"----"+application.getAttribute(attrName)+"<BR>");
}

%>
</BODY>
</HTML>


5、Session对象

当用L陆网站,pȝؓ他生成一个独一无二的Session对象Q用以记录改用户的个Z?
Q一旦该用户退出网站,那么该Session对象会注销。Session对象可以l定若干个h信息?
者Java对象Q不同Session对象的同名变量是不会怺q扰的?

getValue(String name)、putValue(String name)、removeValue(String name)、getValueNames()
、getCreationTime()、getId()、getLastAccessedTime()、getMaxInactiveInterval()?
setMaxInactiveInterval()ҎQ?

<%@page  language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session主页?lt;/TITLE>
</HEAD>
<BODY>
<%
String username="rossini";
String password="126263";
session.putValue("username",username);
session.putValue("password",password);
%>
<A HREF="2.jsp">指向W二?lt;/A>
</BODY>
</HTML>

转向面1

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session转向面1</TITLE>
</HEAD>
<BODY>
<%
String usr=(String)session.getValue("username");
String pwd=(String)session.getValue("password");
%>
<%=usr%><BR>
<%=pwd%><BR>
<%out.println("session create:"+session.getCreationTime());%><BR>
<%out.println("session id:"+session.getId());%><BR>
<%out.println("session last access:"+session.getLastAccessedTime());%><BR>
<%out.println("session 原来最大休眠时?"+session.getMaxInactiveInterval());%><BR>
<%session.setMaxInactiveInterval(session.getMaxInactiveInterval()+1);%><BR>
<%out.println("session 最新最大休眠时?"+session.getMaxInactiveInterval());%><BR
<%
String []name=session.getValueNames();
out.println("--------------"+"<BR>");
for(int i=0;i<name.length;i++)
{
out.println(session.getValue(name[i])+"<BR>");
}
%>
<%
session.removeValue("username");
%>
<A HREF="3.jsp">指向W三?lt;/A>
</BODY>
</HTML>

转向面2

<%@page language="java"
contentType="text/html;charset=gb2312"
%>
<HTML>
<HEAD>
<TITLE> Session转向面2</TITLE>
</HEAD>
<BODY>
<%
String usr=(String)session.getValue("username");
String pwd=(String)session.getValue("password");
%>
<%=usr%><BR>
<%=pwd%>
</BODY>
</HTML>

invalidate()Ҏ会会清除当前的session对象解除它和M参数或者JAVA对象的绑定关p?



久城 2006-10-08 20:54 发表评论

文章来源:http://m.tkk7.com/realsmy/archive/2006/10/08/73901.html

]]>
[导入]JSP生成验证?/title><link>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219047.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 31 Jul 2008 07:29:00 GMT</pubDate><guid>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219047.html</guid><wfw:comment>http://m.tkk7.com/xiaohuanbaby/comments/219047.html</wfw:comment><comments>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219047.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219047.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiaohuanbaby/services/trackbacks/219047.html</trackback:ping><description><![CDATA[     摘要: JSP生成验证码学习?nbsp; <a href='http://m.tkk7.com/realsmy/archive/2007/04/18/111725.html'>阅读全文</a><img src ="http://m.tkk7.com/realsmy/aggbug/111725.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/realsmy/" target="_blank">久城</a> 2007-04-18 19:54 <a href="http://m.tkk7.com/realsmy/archive/2007/04/18/111725.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://m.tkk7.com/realsmy/archive/2007/04/18/111725.html'>http://m.tkk7.com/realsmy/archive/2007/04/18/111725.html</a><img src ="http://m.tkk7.com/xiaohuanbaby/aggbug/219047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiaohuanbaby/" target="_blank">?/a> 2008-07-31 15:29 <a href="http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]整理q几天处理JSP面中遇到的几个问题http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219046.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:29:00 GMThttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219046.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219046.htmlhttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219046.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219046.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219046.html阅读全文

久城 2007-10-10 13:51 发表评论

文章来源:http://m.tkk7.com/realsmy/archive/2007/10/10/151692.html

]]>
[导入]关于JTableQؓ何这Phttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219037.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:12:00 GMThttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219037.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219037.htmlhttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219037.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219037.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219037.html        下周完我工作满一q啦。回惛_部分的时间都被好奇心l占MQ这个组件好玩弄一下,那个好玩也弄一下,最后手里还是什么都没得Q而本w的工作是基于swingQ倒是没花多少_֊Q最后也是对swing一知半解,今天想研I研I下talbeQ却发现被这么个问题l卡住了?br />        是这LlTableModel传入表头和内容,但是直接table加到frame中去Qtable昄不了表头如图1Q但是将table攑ֈJScrollPane中去Q却能显C,如图2?br />
       

                                     图一      
             
                             图二                                                              
    Z么这P实在是弄不明白,不知道有那位高手指点下不Q?br />      源码如下Q?br />
package kissJava.JTable;

import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
public class TestSortedTable {
    
public static void main(String args[]){
        JFrame frame 
= new JFrame("JTable的header试");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Object rows[][] 
={
                
"王明""中国"44 },
                
"姚明""中国"25 },
                
"赵子?/span>""西蜀"1234 },
                
"Ҏ""北魏"2112 },
                
"Bill Gates"""45 },
                
"Mike""英国"33 } }
;
        String columns[] 
= "姓名""国籍""q龄" };
        TableModel model 
= new DefaultTableModel(rows, columns);
        JTable table 
= new JTable(model);
        
        RowSorter
<TableModel> sorter = new TableRowSorter<TableModel>(model);
        table.setRowSorter(sorter);
        
        JScrollPane pane 
= new JScrollPane(table);
        frame.add(pane, BorderLayout.CENTER);
//昄header        
    
//    frame.add(table, BorderLayout.CENTER);//不显Cheader    
        frame.setSize(300150);
        frame.setVisible(
true);
  }

}



枯宽 2008-03-21 12:31 发表评论

文章来源:http://m.tkk7.com/kissjava/articles/187671.html

]]>
[导入]为JTabledJScrollPanelcorner讄颜色http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219036.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:12:00 GMThttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219036.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219036.htmlhttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219036.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219036.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219036.html阅读全文

枯宽 2008-03-21 17:08 发表评论

文章来源:http://m.tkk7.com/kissjava/articles/187739.html

]]>
[导入]如何使可~辑的JComboBox的输入框高亮昄Q?/title><link>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219035.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 31 Jul 2008 07:12:00 GMT</pubDate><guid>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219035.html</guid><wfw:comment>http://m.tkk7.com/xiaohuanbaby/comments/219035.html</wfw:comment><comments>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219035.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiaohuanbaby/services/trackbacks/219035.html</trackback:ping><description><![CDATA[     摘要:          需要做一个可~辑的JComboBoxQ即可以在里面输入查找,也可以选择下拉框选择。但两者都必须在操作完后,comboBox的输入框都必高亮显C,如图Q?            &nbs...  <a href='http://m.tkk7.com/kissjava/archive/2008/04/02/190383.html'>阅读全文</a><img src ="http://m.tkk7.com/kissjava/aggbug/190383.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/kissjava/" target="_blank">枯宽</a> 2008-04-02 15:27 <a href="http://m.tkk7.com/kissjava/archive/2008/04/02/190383.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://m.tkk7.com/kissjava/archive/2008/04/02/190383.html'>http://m.tkk7.com/kissjava/archive/2008/04/02/190383.html</a><img src ="http://m.tkk7.com/xiaohuanbaby/aggbug/219035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiaohuanbaby/" target="_blank">?/a> 2008-07-31 15:12 <a href="http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]Hibernate学习W记一http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219034.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:12:00 GMThttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219034.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219034.htmlhttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219034.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219034.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219034.htmlConfigurationQ负债管?/span>Hibernate的配|信息,Hibernate的入?/span>

1?/span>configureQ)Ҏ默认会在classpath下面Lhibernatev.cfg.xml

2?/span>支持带参数的讉KQ可以指?/span>hbm.xmlQ如Q?/span>

File file = new File(“d:\\cfg\\hibernate.xml”);

Configuration config = new Configuration().config(file);

Session的缓存:

1Q、充当蓄水池的作用,减少E序讉K数据库的ơ数?/span>

2Q、保证缓存中的数据与数据库同步,同步的具体情늜FlushMode是什?/span>

清理~存是指查看~存中的数据与数据库是否同步Q不同步发送更新语?/span>

FlushMode.AUTOQ?/span>Hibernate判断对象属性有没有改变Q是默认的清理模?/span>

FlushMode.COMMITQ在事务l束之前清理Session的缓存,其他M时候都不清理缓?/span>

FlushMode.NEVERQ除非强制调?/span>Session.flush()Q或则永不清理缓存。所作的修改只限与内?/span>

FlushMode.ALWAYSQ在每一个查询语句前都调?/span>flush()q行~存理Q这U模式经怸必要q且低效的?/span>

Hibernate定义q支持下列对象状?span lang="EN-US">(state):

·         瞬时(Transient) - ?tt>new操作W创建,且尚未与Hibernate Session 兌的对象被认定为瞬?span lang="EN-US">(Transient)的。瞬?span lang="EN-US">(Transient)对象不会被持久化到数据库中,也不会被赋予持久化标?span lang="EN-US">(identifier)?如果瞬时(Transient)对象在程序中没有被引用,它会被垃圑֛收器(garbage collector)销毁?使用Hibernate Session可以其变ؓ持久(Persistent)状态?span lang="EN-US">(Hibernate会自动执行必要的SQL语句)

·         持久(Persistent) - 持久(Persistent)的实例在数据库中有对应的记录Qƈ拥有一个持久化标识(identifier)。持?span lang="EN-US">(Persistent)的实例可能是刚被保存的,或刚被加载的Q无论哪一U,按定义,它存在于相关联的Session作用范围内?span lang="EN-US"> Hibernate会检到处于持久(Persistent)状态的对象的Q何改动,在当前操作单?span lang="EN-US">(unit of work)执行完毕时将对象数据(state)与数据库同步(synchronize)?开发者不需要手动执?tt>UPDATE。将对象从持?span lang="EN-US">(Persistent)状态变成瞬?span lang="EN-US">(Transient)状态同样也不需要手动执?tt>DELETE语句?span lang="EN-US">

·         q(Detached) - 与持?span lang="EN-US">(Persistent)对象兌?tt>Session被关闭后Q对象就变ؓq(Detached)的?对脱?span lang="EN-US">(Detached)对象的引用依然有效,对象可l被修改。脱?span lang="EN-US">(Detached)对象如果重新兌到某个新?tt>Session上,会再ơ{变ؓ持久(Persistent)?span lang="EN-US">(?span lang="EN-US">Detached光的改动将被持久化到数据库)?q个功能使得一U编E模型,即中间会l用h考时?span lang="EN-US">(user think-time)的长旉q行的操作单?span lang="EN-US">(unit of work)的编E模型成为可能。我们称之ؓ应用E序事务Q即从用戯点看是一个操作单?span lang="EN-US">(unit of work)?span lang="EN-US">

立即索:

         立即索的配置文g标识Wؓlazy=”false”Q表C?/span>Hibernate在数据库中取得字D值组装好一个对象后Q会立即再从数据库此对象多关联的对象Q如果这个关联的对象q有兌对象Q则再组装此兌对象?/span>

          一对多和多对一兌对象则不适合立即索?/span>

延迟索:

      立即索的配置文g标识Wؓlazy=”true”Q就是需要用到时才会d被关联的对象?/span>

预先抓取指的?/span>Hibernate通过select语句使用outer join来获得对象的兌实例或者关联集合?/span>

Hibernate2.x版本Q?/span>outer-join=”true”Q?/span>

Hibernate3.x版本Q?/span>fetch=”join”Q?/span> 

<one-to-one name="cer" class="com.kissjava.Certificate" fetch="join" cascade="all"></one-to-one>Q?/span>1Q?/span>

<many-to-one name="team" column="team_id" class="com.kissjava.Team" fetch="join"></many-to-one>Q?/span>2Q?/span>

Q?/span>1Q一个一对一兌的对象属性,名ؓcerQ在得到Student对象Ӟ采用预先抓取得到cer对象Qƈ且联ؓallQ说?/span>Student的增加、删除及修改操作都会影响?/span>cer对象?/span>

Q?/span>2Q一个多对一兌的对象属性,名ؓteamQ在Student表中通过team_id?/span>team对象发生兌Q?/span>team的实体类?/span>TeamQ在取得Student实例Ӟ使用预先抓取得到team对象?/span>



枯宽 2008-04-10 08:49 发表评论

文章来源:http://m.tkk7.com/kissjava/archive/2008/04/10/191727.html

]]>
[导入]泛型学习http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219033.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:12:00 GMThttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219033.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219033.htmlhttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219033.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219033.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219033.html 使用泛型机制~写的程序代码要比那些杂乱地使用Object变量Q然后再q行强制cd转换的代码具有更好的安全性和可读性。如Q?ArrayList files = new ArrayList();
一看就知道q个数组列表中包含的是String对象。同时编译器据此不需要强制类型{换,q回cd为StringQ而不是ObjectQ?
String file = files.get(0);
同时当files调用addҎQ编译器知道有一个类型是String的参数。这会比使用Object参数更安全,~译器可以进行检查,避免错误cd的对象?
  阅读全文

枯宽 2008-04-10 16:24 发表评论

文章来源:http://m.tkk7.com/kissjava/archive/2008/04/10/191901.html

]]>
[导入]国际Q十个习惯让你精通新的开发技术【{?/title><link>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219032.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 31 Jul 2008 07:12:00 GMT</pubDate><guid>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219032.html</guid><wfw:comment>http://m.tkk7.com/xiaohuanbaby/comments/219032.html</wfw:comment><comments>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219032.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219032.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiaohuanbaby/services/trackbacks/219032.html</trackback:ping><description><![CDATA[<p><font face="Arial">q篇文章Q是从我的《高?nobr><strong class="kgb" onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","","-100835","开?,"ROR%u5E94%u7528%u63A2%u7D22","http%3A//www.sd2china.cn/track1.html", event)' style="border-top-width: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; cursor: hand; color: #0000ff; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100835&k=%u5F00%u53D1&siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&url=http%3A//news.csdn.net/n/20080408/115015.html&gourl=http%3A//www.sd2china.cn/track1.html&parm=B233C05BE9F1653F04711934DB72CFCDD4D652BE6A702FDA&alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">开?/strong></nobr>人员的五个特征》一文中抽出的一个观炏V从我自w的事业和习惯中Q我考虑了很多方式怎么h能有效地<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u5B66_u4E60";KeyGate_ads.ShowGgAds(this,"_u5B66_u4E60",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BP20nHPUCSJbsCILm6wPQ_8HiCMT0yT_s0KnyBMCNtwGQvwUQFBgUIM-BhwooFDgAUNeBmvr-_____wFgnaHfgdgFoAHInZD9A7IBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDgwNDA4LzExNTAxNS5odG1sgAIBqQIP2DeRVCiDPqgDAegD2wXoAxb1AwAEAAA&num=20&adurl=http://www.yygww.com/&client=ca-pub-3578421812762734");GgKwClickStat("学习","www.yygww.com","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u5B66_u4E60"'>学习</strong></nobr>?/font></p> <p><font face="Arial"><strong>1. 要看书?/strong><br /> 在成千上万的<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u7F16_u7A0B";KeyGate_ads.ShowGgAds(this,"_u7F16_u7A0B",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=Byx44HPUCSJbsCILm6wPQ_8HiCK6yrzHOloa1A8CNtwGQvwUQBBgEIM-BhwooFDgAUL_IsMP7_____wFgnaHfgdgFsgENbmV3cy5jc2RuLm5ldMgBAdoBK2h0dHA6Ly9uZXdzLmNzZG4ubmV0L24vMjAwODA0MDgvMTE1MDE1Lmh0bWypAg_YN5FUKIM-yALuw98DqAMB6APbBegDFvUDAAQAAA&num=4&adurl=http://www.szleadtech.com.cn&client=ca-pub-3578421812762734");GgKwClickStat("~程","www.szleadtech.com.cn","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u7F16_u7A0B"'>~程</strong></nobr>图书中,可能很大一部分Ҏ毫无用处。但是仍然有很多图书对你?~程)能力有很大的提升。我一直坚持,相比在网l上查找很多有用信息Q在同类图书中查找要来得更容易更快捷。阅?nobr><strong class="kgb" onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","","-100826","技?,"Web%u6280%u672F%u5728%u4F01%u4E1A%u4E2D%u5E94%u7528","http%3A//www.sd2china.cn/track2.html", event)' style="border-top-width: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; cursor: hand; color: #0000ff; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://s4.17luntan.com/ClickPortal/WebClick.aspx?id=-100826&k=%u6280%u672F&siteid=0098295a-e262-40f7-ae50-7a6fbbdb678b&url=http%3A//news.csdn.net/n/20080408/115015.html&gourl=http%3A//www.sd2china.cn/track2.html&parm=B233C05BE9F1653F04711934DB72CFCDD4D652BE6A702FDA&alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">技?/strong></nobr>图书可心更好地抓住核心内宏V对于理论,架构和设计等斚w来说Q图书也一样很有帮助。只不过要找到高质量的、权威的信息Q就不如|络上可供查扄范围qѝ?/font></p> <p><font face="Arial"><strong>2. M码?br /> </strong>q也是我很喜Ƣ的一U方式。如果我q没有几q的专业~程<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u5DE5_u4F5C";KeyGate_ads.ShowGgAds(this,"_u5DE5_u4F5C",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BNZvaHPUCSJbsCILm6wPQ_8HiCN3h9DHlq82eA8CNtwHwkwkQARgBIM-BhwooFDgAUMSJte0BYJ2h34HYBbIBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDgwNDA4LzExNTAxNS5odG1sgAIBqAMB6APbBegDFvUDAAQAAA&num=1&adurl=http://discovery.skillsone.com/FWP.asp%3Flanguage%3D12%26adid%3D133&client=ca-pub-3578421812762734");GgKwClickStat("工作","discovery.skillsone.com","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u5DE5_u4F5C"'>工作</strong></nobr>l验Q在学习之初我ƈ不会去读很多复杂的代码。如果我要是早些开始学习,我将是一个比现在更好的程序员。但是,开始时我会从一些开?nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u9879_u76EE";KeyGate_ads.ShowGgAds(this,"_u9879_u76EE",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=Bco2UHPUCSJbsCILm6wPQ_8HiCMOroTXP3eGgBMCNtwHAqQcQBhgGIM-BhwooFDgAUKjXpPIBYJ2h34HYBaABw6Kp_QOyAQ1uZXdzLmNzZG4ubmV0yAEB2gEraHR0cDovL25ld3MuY3Nkbi5uZXQvbi8yMDA4MDQwOC8xMTUwMTUuaHRtbIACAakCD9g3kVQogz7IArPelQGoAwHoA9sF6AMW9QMABAAA&num=6&adurl=http://www.freelancerchina.com/%3Freferrer%3DGooglecn&client=ca-pub-3578421812762734");GgKwClickStat("目","www.FreelancerChina.com","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u9879_u76EE"'>目</strong></nobr>里,d习那些源代码(当然Q这些代码不能与我的工作有关Q也不是我自己写?。要从自׃使用到的Q或者自己感兴趣的程序开始这工作。我是从 Paint.net q个|站里开始学习的Q而且已经U篏了很多关?.NET 的编E技术?br /> </font><font face="Arial">d人的代码可以Z提供更多不同的工作思\Q这比你完全凭自己思考得到的工作方式要多?/font></p> <p><font face="Arial"><strong>3. 写代码?/strong><br /> 谨记Q要写大量的代码。从Ҏ上来Ԍ最好的<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u5B66_u4E60_u65B9_u6CD5";KeyGate_ads.ShowGgAds(this,"_u5B66_u4E60_u65B9_u6CD5",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BP20nHPUCSJbsCILm6wPQ_8HiCMT0yT_s0KnyBMCNtwGQvwUQFBgUIM-BhwooFDgAUNeBmvr-_____wFgnaHfgdgFoAHInZD9A7IBDW5ld3MuY3Nkbi5uZXTIAQHaAStodHRwOi8vbmV3cy5jc2RuLm5ldC9uLzIwMDgwNDA4LzExNTAxNS5odG1sgAIBqQIP2DeRVCiDPqgDAegD2wXoAxb1AwAEAAA&num=20&adurl=http://www.yygww.com/&client=ca-pub-3578421812762734");GgKwClickStat("学习Ҏ","www.yygww.com","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u5B66_u4E60_u65B9_u6CD5"'>学习Ҏ</strong></nobr>是实践。如果不写代码,你根本不能把(某种语言?内在的东西学习透彻。学习之初,可以从一些技术指南和图书中照搬一些尽量简单的E序。当Ӟq种照搬是要自己完全手工输入Q而不是复制和_脓Q这两种之间的效果差别是很大的。这U方法的L在于,使知识内在化Qƈ思考其用法Q而不是盲目照抄。学习过E中Q要时常查找新的 API 调用ҎQ这其实是简单的事情?br /> </font><font face="Arial">最重要的是Q要写一个你自己的程序,不管它是一个简单的游戏Q或者是一个参与开源项目的E序Q还是一个公Z自己使用的简单插件。用不同的方式来写程序,量试使用新的技术,新的技巧,新的设计方式。一定要让现在的目比以往的项目更好。想要成一个优U的开发者,q一Ҏ核心?/font></p> <p><font face="Arial"><strong>4. 与其他开发者交?br /> </strong>?AppleQ微软,Google {大公司一L新闻描述的一P(与其他开发者交?可以让你解决一些复杂的问题。虽然这q不能让你感觉到自己已经成一个团队或是社区的成员Q但是这U方法可以让你接触到更多不同的想法?br /> </font><font face="Arial">不同cd的项目要求不同的设计ҎQ代码技术,开发流E和设计思想。如果你工作在一个小团队里,你不必与太多的h接触Q只要在用户会议中扑ֈ一些h(来讨?卛_。如果这栯不行的话Q参与到在线论坛中与其他?q时你需要更努力地寻N质量的讨论内??/font></p> <p><font face="Arial"><strong>6. 教会别h?br /> </strong>相对于仅仅读代码之类的工作,教其他h学习可以让你更深入地学习某个技术,q种Ҏ有着非凡的效果。教会别人某个技术,同样也会让你更专注于q种技术,q且可以比别人更深层ơ地理解它。同样你也会面对一些问题?br /> </font><font face="Arial"><u>“如果你不能向一个六岁的儿童解析清楚一个概念,那么其实是你q没有完全理解它?#8221;Albert Einstein说?br /> </u></font><font face="Arial">教学场景可以是无Ih的Q与工作搭档一对一交流Q休息碰面,非正式周会,学习茶会Q教室,讨论发表会,{等。每周在相同理念开发者之间D办一?0分钟的非正式会议怎么P每周Q让几个人来׃们想要更深入了解话题Q向大家传授q些技术知识,q且展开讨论。如果你知道你将要向团队成员们传授正学学习的知识Q你是不是更惌了解q项技术的每个l节呢?</font></p> <p><font face="Arial"><strong>6. 收听|络电台?br /> </strong>如果你有I闲的时_可以订阅|络电台节目。我现在最喜欢的编E节目就?.Net Rocks。这个节目还会做一些视频节目,叫做 dnrTV 。这样会让你x捕捉到最新最好的技术。一个h是不能学习到所有知识的Q而网l电台刚是一个学习了解广泛知识的途径?/font></p> <p><font face="Arial"><strong>7. 阅读博客?br /> </strong>博客q远比阅读者要多,但是其中有一些却是极其优U的。我q里不ƈ不是要推荐博客,因ؓ|络上已l有了够多的博客。这是与真正在开发你所喜欢和用的软g的开者联pȝ好方法?/font></p> <p><font face="Arial"><strong>8. 学习新的语言?br /> </strong>即你已l在 C(++,#) / JAVA {语a上有很好的造诣Q仍然有很多其他可以解决问题的编E语a。学习新的语aQ是对你已有思维方式的挑战。这不仅仅是另一U语aQ更是对思维的重新架构。的,所有的语言最后都会被~译成汇~程序,但是qƈ不意味着<nobr><strong class="kgb" onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u9AD8_u7EA7_u8BED_u8A00";KeyGate_ads.ShowGgAds(this,"_u9AD8_u7EA7_u8BED_u8A00",event)' style="border-top-width: 0px; padding-right: 0px; padding-left: 0px; font-weight: normal; border-left-width: 0px; border-bottom-width: 0px; padding-bottom: 0px; margin: 0px; cursor: hand; color: #0000ff; padding-top: 0px; border-right-width: 0px; text-decoration: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&ai=BPPseHPUCSJbsCILm6wPQ_8HiCMKYpzT-2cKVBMCNtwHQ6AwQBxgHIM-BhwooFDgAUPqv95H6_____wFgnaHfgdgFsgENbmV3cy5jc2RuLm5ldMgBAdoBK2h0dHA6Ly9uZXdzLmNzZG4ubmV0L24vMjAwODA0MDgvMTE1MDE1Lmh0bWyAAgGpAg_YN5FUKIM-yAKO6fUDqAMB6APbBegDFvUDAAQAAA&num=7&adurl=http://www.cbdjob.com&client=ca-pub-3578421812762734");GgKwClickStat("高语言","www.cbdjob.com.cn","afc","2000084115");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u9AD8_u7EA7_u8BED_u8A00"'>高语言</strong></nobr>毫无价倹{?/font></p> <p><font face="Arial"><strong>9. 学习不正的方式?br /> </strong>?/font><font face="Arial">了要学习应该怎么做,q要学习不应该怎么做。经帔R?Dailywtf.com Q学习你q不知道的经验与教训。学习适当的面向对象设计方式,代码写作方式Q和必须要写的代码等Q是很好的方式,但是如果不细心的话也ҎL不良习惯。学习认识不正确的思\是负责项目开发至关重要的一环?br /> </font><font face="Arial">l基癄对很多觉的不正确方式有十分透彻的分cR?/font></p> <p><font face="Arial"><strong>10. 要谦虚?/strong></font></p> <p><font face="Arial">学习Q意味着Q?br /> <font face="Arial">1、用更好的知识代替不完美的知识;<br /> </font><font face="Arial">2、增长你所不知道的知识Q?br /> </font></font><font face="Arial">只有承认自己有所不Q才能有学习的动力。归根到底,是谦虚Q不对吗Q如果你开始认Z已经掌握了所有需要的知识Q那么你危险了。真正的学习是如饥似渴地q逐知识ƈ使其内在化,q需要很大的努力。我们都知道q一点,但是要必L怸断地提醒自己?br /> <br /> 来自Qhttp://news.csdn.net/n/20080408/115015.html</font></p> <img src ="http://m.tkk7.com/kissjava/aggbug/192763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/kissjava/" target="_blank">枯宽</a> 2008-04-14 14:17 <a href="http://m.tkk7.com/kissjava/archive/2008/04/14/192763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://m.tkk7.com/kissjava/archive/2008/04/14/192763.html'>http://m.tkk7.com/kissjava/archive/2008/04/14/192763.html</a><img src ="http://m.tkk7.com/xiaohuanbaby/aggbug/219032.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiaohuanbaby/" target="_blank">?/a> 2008-07-31 15:12 <a href="http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219032.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]Vector、ArrayList和hashtable hashmap的异同【{?/title><link>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219031.html</link><dc:creator>?/dc:creator><author>?/author><pubDate>Thu, 31 Jul 2008 07:12:00 GMT</pubDate><guid>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219031.html</guid><wfw:comment>http://m.tkk7.com/xiaohuanbaby/comments/219031.html</wfw:comment><comments>http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219031.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219031.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/xiaohuanbaby/services/trackbacks/219031.html</trackback:ping><description><![CDATA[U性表Q链表,哈希表是常用的数据结构,在进行Java开发时QJDK已经为我们提供了一pd相应的类来实现基本的数据l构。这些类均在java.util包中。本文试N过单的描述Q向读者阐q各个类的作用以及如何正用这些类?<br /> <br /> Collection<br /> ├List<br /> │├LinkedList<br /> │├ArrayList<br /> │└Vector<br /> │ └Stack<br /> └Set<br /> Map<br /> ├Hashtable<br /> ├HashMap<br /> └WeakHashMap<br /> <br /> Collection接口<br />   Collection是最基本的集合接口,一个Collection代表一lObjectQ即Collection的元素(ElementsQ。一些Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接承自Collection的类QJava SDK提供的类都是l承自Collection?#8220;子接?#8221;如List和Set?br />   所有实现Collection接口的类都必L供两个标准的构造函敎ͼ无参数的构造函数用于创Z个空的CollectionQ有一个Collection参数的构造函数用于创Z个新的CollectionQ这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection?br />   如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个P代子Q用该q代子即可逐一讉KCollection中每一个元素。典型的用法如下Q?br />     Iterator it = collection.iterator(); // 获得一个P代子<br />     while(it.hasNext()) {<br />       Object obj = it.next(); // 得到下一个元?br />     }<br />   由Collection接口z的两个接口是List和Set?br /> <br /> List接口<br />   List是有序的CollectionQ用此接口能够_的控制每个元素插入的位置。用戯够用烦引(元素在List中的位置Q类g数组下标Q来讉KList中的元素Q这cM于Java的数l?br /> 和下面要提到的Set不同QList允许有相同的元素?br />   除了hCollection接口必备的iterator()Ҏ外,Listq提供一个listIterator()ҎQ返回一个ListIterator接口Q和标准的Iterator接口相比QListIterator多了一些add()之类的方法,允许dQ删除,讑֮元素Q还能向前或向后遍历?br />   实现List接口的常用类有LinkedListQArrayListQVector和Stack?br /> <br /> LinkedListc?br />   LinkedList实现了List接口Q允许null元素。此外LinkedList提供额外的getQremoveQinsertҎ在LinkedList的首部或N。这些操作LinkedList可被用作堆栈QstackQ,队列QqueueQ或双向队列QdequeQ?br />   注意LinkedList没有同步Ҏ。如果多个线E同时访问一个ListQ则必须自己实现讉K同步。一U解x法是在创建List时构造一个同步的ListQ?br />     List list = Collections.synchronizedList(new LinkedList(...));<br /> <br /> ArrayListc?br />   ArrayList实现了可变大的数组。它允许所有元素,包括null。ArrayList没有同步?br /> sizeQisEmptyQgetQsetҎq行旉为常数。但是addҎ开销为分摊的常数Q添加n个元素需要O(n)的时间。其他的Ҏq行旉为线性?br />   每个ArrayList实例都有一个容量(CapacityQ,即用于存储元素的数组的大。这个容量可随着不断d新元素而自动增加,但是增长法q没有定义。当需要插入大量元素时Q在插入前可以调用ensureCapacityҎ来增加ArrayList的容量以提高插入效率?br />   和LinkedList一PArrayList也是非同步的QunsynchronizedQ?br /> <br /> Vectorc?br />   Vector非常cMArrayListQ但是Vector是同步的。由Vector创徏的IteratorQ虽然和ArrayList创徏的Iterator是同一接口Q但是,因ؓVector是同步的Q当一个Iterator被创且正在被用,另一个线E改变了Vector的状态(例如Q添加或删除了一些元素)Q这时调用Iterator的方法时抛出ConcurrentModificationExceptionQ因此必L莯异常?br /> <br /> Stack c?br />   Stackl承自VectorQ实C个后q先出的堆栈。Stack提供5个额外的Ҏ使得Vector得以被当作堆栈用。基本的push和popҎQ还有peekҎ得到栈顶的元素,emptyҎ试堆栈是否为空QsearchҎ一个元素在堆栈中的位置。Stack刚创建后是空栈?br /> <br /> Set接口<br />   Set是一U不包含重复的元素的CollectionQ即L的两个元素e1和e2都有e1.equals(e2)=falseQSet最多有一个null元素?br />   很明显,Set的构造函数有一个约束条Ӟ传入的Collection参数不能包含重复的元素?br />   h意:必须心操作可变对象QMutable ObjectQ。如果一个Set中的可变元素改变了自w状态导致Object.equals(Object)=true导致一些问题?br /> <br /> Map接口<br />   h意,Map没有l承Collection接口QMap提供key到value的映。一个Map中不能包含相同的keyQ每个key只能映射一个value。Map接口提供3U集合的视图QMap的内容可以被当作一lkey集合Q一lvalue集合Q或者一lkey-value映射?br /> <br /> Hashtablec?br />   Hashtablel承Map接口Q实C个key-value映射的哈希表。Q何非I(non-nullQ的对象都可作ؓkey或者value?br />   d数据使用put(key, value)Q取出数据用get(key)Q这两个基本操作的时间开销为常数?br /> Hashtable通过initial capacity和load factor两个参数调整性能。通常~省的load factor 0.75较好地实C旉和空间的均衡。增大load factor可以节省I间但相应的查找旉增大,q会影响像get和putq样的操作?br /> 使用Hashtable的简单示例如下,?Q?Q?攑ֈHashtable中,他们的key分别?#8221;one”Q?#8221;two”Q?#8221;three”Q?br />     Hashtable numbers = new Hashtable();<br />     numbers.put(“one”, new Integer(1));<br />     numbers.put(“two”, new Integer(2));<br />     numbers.put(“three”, new Integer(3));<br />   要取Z个数Q比?Q用相应的keyQ?br />     Integer n = (Integer)numbers.get(“two”);<br />     System.out.println(“two = ” + n);<br />   ׃作ؓkey的对象将通过计算其散列函数来定与之对应的value的位|,因此M作ؓkey的对象都必须实现hashCode和equalsҎ。hashCode和equalsҎl承自根cObjectQ如果你用自定义的类当作key的话Q要相当心Q按照散列函数的定义Q如果两个对象相同,即obj1.equals(obj2)=trueQ则它们的hashCode必须相同Q但如果两个对象不同Q则它们的hashCode不一定不同,如果两个不同对象的hashCode相同Q这U现象称为冲H,冲突会导致操作哈希表的时间开销增大Q所以尽量定义好的hashCode()ҎQ能加快哈希表的操作?br />   如果相同的对象有不同的hashCodeQ对哈希表的操作会出现意想不到的l果Q期待的getҎq回nullQ,要避免这U问题,只需要牢C条:要同时复写equalsҎ和hashCodeҎQ而不要只写其中一个?br />   Hashtable是同步的?br /> <br /> HashMapc?br />   HashMap和HashtablecMQ不同之处在于HashMap是非同步的,q且允许nullQ即null value和null key。,但是HashMap视ؓCollectionӞvalues()Ҏ可返回CollectionQ,其P代子操作旉开销和HashMap的容量成比例。因此,如果q代操作的性能相当重要的话Q不要将HashMap的初始化定w讑־q高Q或者load factorq低?br /> <br /> WeakHashMapc?br />   WeakHashMap是一U改q的HashMapQ它对key实行“弱引?#8221;Q如果一个key不再被外部所引用Q那么该key可以被GC回收?br /> <br /> ȝ<br />   如果涉及到堆栈,队列{操作,应该考虑用ListQ对于需要快速插入,删除元素Q应该用LinkedListQ如果需要快速随问元素,应该使用ArrayList?br />   如果E序在单U程环境中,或者访问仅仅在一个线E中q行Q考虑非同步的c,其效率较高,如果多个U程可能同时操作一个类Q应该用同步的cR?br />   要特别注意对哈希表的操作Q作为key的对象要正确复写equals和hashCodeҎ?br />   量q回接口而非实际的类型,如返回List而非ArrayListQ这样如果以后需要将ArrayList换成LinkedListӞ客户端代码不用改变。这是针对抽象~程?br /> <br /> 同步?br /> Vector是同步的。这个类中的一些方法保证了Vector中的对象是线E安全的。而ArrayList则是异步的,因此ArrayList中的对象q不是线E安全的。因为同步的要求会媄响执行的效率Q所以如果你不需要线E安全的集合那么使用ArrayList是一个很好的选择Q这样可以避免由于同步带来的不必要的性能开销?br /> 数据增长<br /> 从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控刉合中的对象。当你向q两U类型中增加元素的时候,如果元素的数目超Z内部数组目前的长度它们都需要扩展内部数l的长度QVector~省情况下自动增长原来一倍的数组长度QArrayList是原来的50%,所以最后你获得的这个集合所占的I间L比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因ؓ你可以通过讄集合的初始化大小来避免不必要的资源开销?br /> 使用模式<br /> 在ArrayList和Vector中,从一个指定的位置Q通过索引Q查找数据或是在集合的末֢加、移除一个元素所p的时间是一LQ这个时间我们用O(1)表示。但是,如果在集合的其他位置增加或移除元素那么花费的旉会呈UŞ增长QO(n-i)Q其中n代表集合中元素的个数Qi代表元素增加或移除元素的索引位置。ؓ什么会q样呢?以ؓ在进行上q操作的时候集合中Wi和第i个元素之后的所有元素都要执行位Uȝ操作。这一切意味着什么呢Q?br /> q意味着Q你只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用Vector或ArrayList都可以。如果是其他操作Q你最好选择其他的集合操作类。比如,LinkList集合cd增加或移除集合中M位置的元素所p的时间都是一L?O(1)Q但它在索引一个元素的使用~比较慢QO(i),其中i是烦引的位置.使用ArrayList也很ҎQ因Z可以单的使用索引来代替创建iterator对象的操作。LinkList也会为每个插入的元素创徏对象Q所有你要明白它也会带来额外的开销?br /> <br /> #################################################<br /> Hashtable?span class="hilite2">HashMap</span> <br /> Hashtable?span class="hilite2">HashMap</span>cL三个重要的不同之处?br /> W一个不同主要是历史原因。Hashtable是基于陈旧的DictionarycȝQ?span class="hilite2">HashMap</span>是Java 1.2引进的Map接口的一个实现?<br /> W二个也许最重要的不同是Hashtable的方法是同步的,?span class="hilite2">HashMap</span>的方法不是。这意味着Q虽然你可以不用采取MҎ的行为就可以在一个多U程的应用程序中用一个HashtableQ但你必d样地Z?span class="hilite2">HashMap</span>提供外同步。一个方便的Ҏ是利用Collectionscȝ静态的synchronizedMap()ҎQ它创徏一个线E安全的Map对象Qƈ把它作ؓ一个封装的对象来返回。这个对象的Ҏ可以让你同步讉K潜在?span class="hilite2">HashMap</span>。这么做的结果就是当你不需要同步时Q你不能切断Hashtable中的同步Q比如在一个单U程的应用程序中Q,而且同步增加了很多处理费用?<br /> W三点不同是Q只?span class="hilite2">HashMap</span>可以让你空gZ个表的条目的key或value?span class="hilite2">HashMap</span>中只有一条记录可以是一个空的keyQ但L数量的条目可以是I的value。这是_如果在表中没有发现搜索键Q或者如果发C搜烦键,但它是一个空的|那么get()返回null。如果有必要Q用containKey()Ҏ来区别这两种情况?<br /> 一些资料徏议,当需要同步时Q用HashtableQ反之用<span id="91z97th" class="hilite2">HashMap</span>。但是,因ؓ在需要时Q?span class="hilite2">HashMap</span>可以被同步,<span id="jtl79dv" class="hilite2">HashMap</span>的功能比Hashtable的功能更多,而且它不是基于一个陈旧的cȝQ所以有为,在各U情况下Q?span class="hilite2">HashMap</span>都优先于Hashtable<br /> <br /> 以上摘自Q?br /> http://www.javaedu.com/bbs/viewthread?thread=75<br /> <a >http://zztu.javaeye.com/blog/173964</a><br /> <img src ="http://m.tkk7.com/kissjava/aggbug/194063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/kissjava/" target="_blank">枯宽</a> 2008-04-18 16:47 <a href="http://m.tkk7.com/kissjava/archive/2008/04/18/194063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div><br>文章来源:<a href='http://m.tkk7.com/kissjava/archive/2008/04/18/194063.html'>http://m.tkk7.com/kissjava/archive/2008/04/18/194063.html</a><img src ="http://m.tkk7.com/xiaohuanbaby/aggbug/219031.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/xiaohuanbaby/" target="_blank">?/a> 2008-07-31 15:12 <a href="http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219031.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]自定义Button的用效果ؓ何不一Phttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219030.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:12:00 GMThttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219030.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219030.htmlhttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219030.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219030.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219030.html阅读全文

枯宽 2008-05-11 13:44 发表评论

文章来源:http://m.tkk7.com/kissjava/archive/2008/05/11/199818.html

]]>
[导入]mysql存储q程学习及java调用存储q程http://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219029.html?/dc:creator>?/author>Thu, 31 Jul 2008 07:12:00 GMThttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219029.htmlhttp://m.tkk7.com/xiaohuanbaby/comments/219029.htmlhttp://m.tkk7.com/xiaohuanbaby/archive/2008/07/31/219029.html#Feedback0http://m.tkk7.com/xiaohuanbaby/comments/commentRss/219029.htmlhttp://m.tkk7.com/xiaohuanbaby/services/trackbacks/219029.html阅读全文

枯宽 2008-07-16 12:20 发表评论

文章来源:http://m.tkk7.com/kissjava/archive/2008/07/16/215177.html

]]>
վ֩ģ壺 Ļ| ޾Ʒþþþȥq| AëƬav| Ů۳Ƶ߿| vavavaӰĻ| ༤ۺ͵ͼ| ձɫַ| Ů˱Ū߳Ƶ| ӰҹƵ| ɫè˳վ߹ۿ| Ʒ69XXXƵ| ۺϾƷһ| һ岻| 337pձŷ޴ɫ| Ʒһ| Ʒ޸һ| AëƬA| һ߹ۿ| Ů18ëƬˮѹۿ| 99reѾƷƵۿ| 5555߲Ѳ| þֻƷ99re| պһѸ| ɫһ վ| ߹ۿ԰Ƶ| ۺɫ߾Ʒ| ŷպƵ| ޾Ʒ߹ۿ| ҹav2019| ɫ͵͵Ů˵| avһ㽶| ˳վ߹ۿŶ| 츾avһ | ҹaëƬƵ| Ʒۺһ߹ۿ| Ʒ޸жƪ | avһ| ˳ɫ777777Ʒ| avɱվ| ݾ߹ۿվ| Ʒһ|