一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

應(yīng)聘Java筆試時(shí)可能出現(xiàn)問題及其答案(第二版part two)

 maomao 2006-11-03
以前整理了一篇文章《有感:應(yīng)聘Java筆試時(shí)可能出現(xiàn)問題及其答案》發(fā)布到csdn的blog上,很多人看了以后認(rèn)為很有用處,特別是對(duì)于即將參加java面試的朋友們,很多人給我反饋了意見或者向我請(qǐng)教問題,實(shí)在是不敢當(dāng),本人也是菜鳥一個(gè),只是做了一點(diǎn)整理工作而已,所有問題與答案都來自于網(wǎng)絡(luò)。
        最近由于換工作,又收集到了一點(diǎn)資料,所以我決定再整理一個(gè)版本出來,再一次聲明,題目與答案都來自于網(wǎng)絡(luò),本人不對(duì)題目與答案的完整性與正確性做出任何承諾,僅做參考。
       當(dāng)然,本人歡迎任何人對(duì)本文章中的錯(cuò)誤答案加以指正或者提出更好的解決方案,并請(qǐng)發(fā)給我,我定期進(jìn)行相關(guān)更新,謝謝!本人也歡迎同道中人進(jìn)行技術(shù)相關(guān)方面的討論。 如有任何意見與建議請(qǐng)通過QQ:6045306,Mail:huijunzi@21cn.com與我聯(lián)系。

線程編程方面

 

 

60java中有幾種方法可以實(shí)現(xiàn)一個(gè)線程?用什么關(guān)鍵字修飾同步方法? stop()suspend()法為何不推薦使用?
答:有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口
用synchronized關(guān)鍵字修飾同步方法
反對(duì)使用stop(),是因?yàn)樗话踩K鼤?huì)解除由線程獲取的所有鎖定,而且如果對(duì)象處于一種不連貫狀態(tài),那么其他線程能在那種狀態(tài)下檢查和修改它們。結(jié)果很難檢查出真正的問題所在。suspend()方法容易發(fā)生死鎖。調(diào)用suspend()的時(shí)候,目標(biāo)線程會(huì)停下來,但卻仍然持有在這之前獲得的鎖定。此時(shí),其他任何線程都不能訪問鎖定的資源,除非被"掛起"的線程恢復(fù)運(yùn)行。對(duì)任何線程來說,如果它們想恢復(fù)目標(biāo)線程,同時(shí)又試圖使用任何一個(gè)鎖定的資源,就會(huì)造成死鎖。所以不應(yīng)該使用suspend(),而應(yīng)在自己的Thread類中置入一個(gè)標(biāo)志,指出線程應(yīng)該活動(dòng)還是掛起。若標(biāo)志指出線程應(yīng)該掛起,便用wait()命其進(jìn)入等待狀態(tài)。若標(biāo)志指出線程應(yīng)當(dāng)恢復(fù),則用一個(gè)notify()重新啟動(dòng)線程。

61sleep()  wait() 有什么區(qū)別
答:
sleep是線程類(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。
wait是Object類的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。

62
、同步和異步有何異同,在什么情況下分別使用他們?舉例說明。
答:
如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個(gè)線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個(gè)線程寫過了,那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進(jìn)行同步存取。
當(dāng)應(yīng)用程序在對(duì)象上調(diào)用了一個(gè)需要花費(fèi)很長(zhǎng)時(shí)間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時(shí),就應(yīng)該使用異步編程,在很多情況下采用異步途徑往往更有效率。
63、啟動(dòng)一個(gè)線程是用run()還是start()?
答:啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。這并不意味著線程就會(huì)立即運(yùn)行。run()方法可以產(chǎn)生必須退出的標(biāo)志來停止一個(gè)線程。 

64
、當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?
答:不能,一個(gè)對(duì)象的一個(gè)synchronized方法只能由一個(gè)線程訪問。

65
、請(qǐng)說出你所知道的線程同步的方法。
答:
wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象的lock。
sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常。
notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。
Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是讓它們競(jìng)爭(zhēng)。
66、多線程有幾種實(shí)現(xiàn)方法,都是什么?同步有幾種實(shí)現(xiàn)方法,都是什么

答:
多線程有兩種實(shí)現(xiàn)方法,分別是繼承Thread類與實(shí)現(xiàn)Runnable接口 
同步的實(shí)現(xiàn)方面有兩種,分別是synchronized,wait與notify
67、線程的基本概念、線程的基本狀態(tài)以及狀態(tài)之間的關(guān)系
答:線程指在程序執(zhí)行過程中,能夠執(zhí)行程序代碼的一個(gè)執(zhí)行單位,每個(gè)程序至少都有一個(gè)線程,也就是程序本身。
Java中的線程有四種狀態(tài)分別是:運(yùn)行、就緒、掛起、結(jié)束
68、簡(jiǎn)述synchronizedjava.util.concurrent.locks.Lock的異同 

答:主要相同點(diǎn):Lock能完成synchronized所實(shí)現(xiàn)的所有功能
主要不同點(diǎn):Lock有比synchronized更精確的線程語(yǔ)義和更好的性能。synchronized會(huì)自動(dòng)釋放鎖,而Lock一定要求程序員手工釋放,并且必須在finally從句中釋放。

 

 

Jsp方面

 

 

69、forward redirect的區(qū)別
答:forward是服務(wù)器請(qǐng)求資源,服務(wù)器直接訪問目標(biāo)地址的URL,把那個(gè)URL的響應(yīng)內(nèi)容讀取過來,然后把這些內(nèi)容再發(fā)給瀏覽器,瀏覽器根本不知道服務(wù)器發(fā)送的內(nèi)容是從哪兒來的,所以它的地址欄中還是原來的地址。
    redirect就是服務(wù)端根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請(qǐng)求那個(gè)地址,一般來說瀏覽器會(huì)用剛才請(qǐng)求的所有參數(shù)重新請(qǐng)求,所以session,request參數(shù)都可以獲取。
70、jsp有哪些內(nèi)置對(duì)象?作用分別是什么?

答:JSP共有以下9種基本內(nèi)置組件(可與ASP6種內(nèi)部組件相對(duì)應(yīng)):
 request 用戶端請(qǐng)求,此請(qǐng)求會(huì)包含來自GET/POST請(qǐng)求的參數(shù)

   response
網(wǎng)頁(yè)傳回用戶端的回應(yīng)

   pageContext
網(wǎng)頁(yè)的屬性是在這里管理

   session
與請(qǐng)求有關(guān)的會(huì)話期

   application servlet
正在執(zhí)行的內(nèi)容

   out
用來傳送回應(yīng)的輸出

   config servlet
的構(gòu)架部件
   page JSP
網(wǎng)頁(yè)本身

   exception
針對(duì)錯(cuò)誤網(wǎng)頁(yè),未捕捉的例外

71
、jsp有哪些動(dòng)作?作用分別是什么?
:JSP共有以下6種基本動(dòng)作
   jsp:include
:在頁(yè)面被請(qǐng)求的時(shí)候引入一個(gè)文件。
   jsp:useBean
:尋找或者實(shí)例化一個(gè)JavaBean。

   jsp:setProperty
:設(shè)置JavaBean的屬性。

   jsp:getProperty
:輸出某個(gè)JavaBean的屬性。

   jsp:forward
:把請(qǐng)求轉(zhuǎn)到一個(gè)新的頁(yè)面。

   jsp:plugin
:根據(jù)瀏覽器類型為Java插件生成OBJECTEMBED標(biāo)記

72
JSP中動(dòng)態(tài)INCLUDE與靜態(tài)INCLUDE的區(qū)別?
答:動(dòng)態(tài)INCLUDEjsp:include動(dòng)作實(shí)現(xiàn)
   <jsp:include page="included.jsp" flush="true" />
它總是會(huì)檢查所含文件中的變化,適合用于包含動(dòng)態(tài)頁(yè)面,并且可以帶參數(shù)
  
靜態(tài)INCLUDEinclude偽碼實(shí)現(xiàn),定不會(huì)檢查所含文件的變化,適用于包含靜態(tài)頁(yè)面
   <%@ include file="included.htm" %>
73
、兩種跳轉(zhuǎn)方式分別是什么?有什么區(qū)別?
答:有兩種,分別為:
  <jsp:include page="included.jsp" flush="true">
  <jsp:forward page= "nextpage.jsp"/>
前者頁(yè)面不會(huì)轉(zhuǎn)向include所指的頁(yè)面,只是顯示該頁(yè)的結(jié)果,主頁(yè)面還是原來的頁(yè)面。執(zhí)行完后還會(huì)回來,相當(dāng)于函數(shù)調(diào)用。并且可以帶參數(shù).后者完全轉(zhuǎn)向新頁(yè)面,不會(huì)再回來。相當(dāng)于go to 語(yǔ)句。
74
、JSP的內(nèi)置對(duì)象及方法。
答:request表示HttpServletRequest對(duì)象。它包含了有關(guān)瀏覽器請(qǐng)求的信息,并且提供了幾個(gè)用于獲取cookie, header, session數(shù)據(jù)的有用的方法。 
    response
表示HttpServletResponse對(duì)象,并提供了幾個(gè)用于設(shè)置送回 瀏覽器的響應(yīng)的方法(如cookies,頭信息等)
 
    out
對(duì)象是javax.jsp.JspWriter的一個(gè)實(shí)例,并提供了幾個(gè)方法使你能用于向?yàn)g覽器回送輸出結(jié)果。
 
    pageContext
表示一個(gè)javax.servlet.jsp.PageContext對(duì)象。它是用于方便存取各種范圍的名字空間、servlet相關(guān)的對(duì)象的API,并且包裝了通用的servlet相關(guān)功能的方法。
 
    session
表示一個(gè)請(qǐng)求的javax.servlet.http.HttpSession對(duì)象。Session可以存貯用戶的狀態(tài)信息
 
    applicaton 
表示一個(gè)javax.servle.ServletContext對(duì)象。這有助于查找有關(guān)servlet引擎和servlet環(huán)境的信息
 
    config
表示一個(gè)javax.servlet.ServletConfig對(duì)象。該對(duì)象用于存取servlet實(shí)例的初始化參數(shù)。
 
    page
表示從該頁(yè)面產(chǎn)生的一個(gè)servlet實(shí)例

 

 

Servlet方面

 

 

75、說一說Servlet的生命周期?
:servlet有良好的生存期的定義,包括加載和實(shí)例化、初始化、處理請(qǐng)求以及服務(wù)結(jié)束。這個(gè)生存期由javax.servlet.Servlet接口的init,servicedestroy方法表達(dá)。 Servlet被服務(wù)器實(shí)例化后,容器運(yùn)行其init方法,請(qǐng)求到達(dá)時(shí)運(yùn)行其service方法,service方法自動(dòng)派遣運(yùn)行與請(qǐng)求對(duì)應(yīng)的doXXX方法(doGetdoPost)等,當(dāng)服務(wù)器決定將實(shí)例銷毀的時(shí)候調(diào)用其destroy方法。
cgi的區(qū)別在于servlet處于服務(wù)器進(jìn)程中,它通過多線程方式運(yùn)行其service方法,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程,服務(wù)完成后就銷毀,所以效率上低于servlet。
76、JAVA SERVLET APIforward() redirect()的區(qū)別?
:前者僅是容器中控制權(quán)的轉(zhuǎn)向,在客戶端瀏覽器地址欄中不會(huì)顯示出轉(zhuǎn)向后的地址;后者則是完全的跳轉(zhuǎn),瀏覽器將會(huì)得到跳轉(zhuǎn)的地址,并重新發(fā)送請(qǐng)求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉(zhuǎn)后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時(shí),盡量使用forward()方法,并且,這樣也有助于隱藏實(shí)際的鏈接。在有些情況下,比如,需要跳轉(zhuǎn)到一個(gè)其它服務(wù)器上的資源,則必須使用sendRedirect()方法。
77
、Servlet的基本架構(gòu)
答:
public class ServletName extends HttpServlet {
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException  {
      }
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException  {
      }
}

 

 

78、什么情況下調(diào)用doGet()doPost()?
答:Jsp頁(yè)面中的form標(biāo)簽里的method屬性為get時(shí)調(diào)用doGet(),為post時(shí)調(diào)用doPost()。
79、servlet的生命周期
答:web容器加載servlet,生命周期開始。通過調(diào)用servletinit()方法進(jìn)行servlet的初始化。通過調(diào)用service()方法實(shí)現(xiàn),根據(jù)請(qǐng)求的不同調(diào)用不同的do***()方法。結(jié)束服務(wù),web容器調(diào)用servletdestroy()方法。
80、如何現(xiàn)實(shí)servlet的單線程模式
答:<%@ page isThreadSafe="false"%>
81、頁(yè)面間對(duì)象傳遞的方法

答:request,session,application,cookie
82JSPServlet有哪些相同點(diǎn)和不同點(diǎn),他們之間的聯(lián)系是什么? 
答:JSPServlet技術(shù)的擴(kuò)展,本質(zhì)上是Servlet的簡(jiǎn)易方式,更強(qiáng)調(diào)應(yīng)用的外表表達(dá)。JSP編譯后是"servlet"。ServletJSP最主要的不同點(diǎn)在于,Servlet的應(yīng)用邏輯是在Java文件中,并且完全從表示層中的HTML里分離開來。而JSP的情況是JavaHTML可以組合成一個(gè)擴(kuò)展名為.jsp的文件。JSP側(cè)重于視圖,Servlet主要用于控制邏輯。

83、四種會(huì)話跟蹤技術(shù)
答:會(huì)話作用域ServletsJSP 頁(yè)面描述
page
否是代表與一個(gè)頁(yè)面相關(guān)的對(duì)象和屬性。一個(gè)頁(yè)面由一個(gè)編譯好的 Java servlet 類(可以帶有任何的 include 指令,但是沒有 include 動(dòng)作)表示。這既包括 servlet 又包括被編譯成 servlet  JSP 頁(yè)面
request
是是代表與 Web 客戶機(jī)發(fā)出的一個(gè)請(qǐng)求相關(guān)的對(duì)象和屬性。一個(gè)請(qǐng)求可能跨越多個(gè)頁(yè)面,涉及多個(gè) Web 組件(由于 forward 指令和 include 動(dòng)作的關(guān)系)
session
是是代表與用于某個(gè) Web 客戶機(jī)的一個(gè)用戶體驗(yàn)相關(guān)的對(duì)象和屬性。一個(gè) Web 會(huì)話可以也經(jīng)常會(huì)跨越多個(gè)客戶機(jī)請(qǐng)求
application
是是代表與整個(gè) Web 應(yīng)用程序相關(guān)的對(duì)象和屬性。這實(shí)質(zhì)上是跨越整個(gè) Web 應(yīng)用程序,包括多個(gè)頁(yè)面、請(qǐng)求和會(huì)話的一個(gè)全局作用域
84Request對(duì)象的主要方法
答:
setAttribute(String name,Object):設(shè)置名字為namerequest的參數(shù)值
getAttribute(String name)
:返回由name指定的屬性值
getAttributeNames()
:返回request對(duì)象所有屬性的名字集合,結(jié)果是一個(gè)枚舉的實(shí)例
getCookies()
:返回客戶端的所有Cookie對(duì)象,結(jié)果是一個(gè)Cookie數(shù)組
getCharacterEncoding()
:返回請(qǐng)求中的字符編碼方式
getContentLength()
:返回請(qǐng)求的Body的長(zhǎng)度
getHeader(String name)
:獲得HTTP協(xié)議定義的文件頭信息
getHeaders(String name)
:返回指定名字的request Header的所有值,結(jié)果是一個(gè)枚舉的實(shí)例
getHeaderNames()
:返回所以request Header的名字,結(jié)果是一個(gè)枚舉的實(shí)例
getInputStream()
:返回請(qǐng)求的輸入流,用于獲得請(qǐng)求中的數(shù)據(jù)
getMethod()
:獲得客戶端向服務(wù)器端傳送數(shù)據(jù)的方法
getParameter(String name)
:獲得客戶端傳送給服務(wù)器端的有name指定的參數(shù)值
getParameterNames()
:獲得客戶端傳送給服務(wù)器端的所有參數(shù)的名字,結(jié)果是一個(gè)枚舉的實(shí)例
getParameterValues(String name)
:獲得有name指定的參數(shù)的所有值
getProtocol()
:獲取客戶端向服務(wù)器端傳送數(shù)據(jù)所依據(jù)的協(xié)議名稱
getQueryString()
:獲得查詢字符串
getRequestURI()
:獲取發(fā)出請(qǐng)求字符串的客戶端地址
getRemoteAddr()
:獲取客戶端的IP地址
getRemoteHost()
:獲取客戶端的名字
getSession([Boolean create])
:返回和請(qǐng)求相關(guān)Session
getServerName()
:獲取服務(wù)器的名字

getServletPath()
:獲取客戶端所請(qǐng)求的腳本文件的路徑
getServerPort()
:獲取服務(wù)器的端口號(hào)
removeAttribute(String name)
:刪除請(qǐng)求中的一個(gè)屬性
85、我們?cè)?/span>web應(yīng)用開發(fā)過程中經(jīng)常遇到輸出某種編碼的字符,如iso8859-1等,如何輸出個(gè)某種編碼的字符串?
答:

  Public String translate (String str) {
    String tempStr = "";
    try {
      tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
      tempStr = tempStr.trim();
    }
    catch (Exception e) {
      System.err.println(e.getMessage());
    }
    return tempStr;
  }
86、Servlet執(zhí)行時(shí)一般實(shí)現(xiàn)哪幾個(gè)方法?

答:
public void init(ServletConfig config)
public ServletConfig getServletConfig()
public String getServletInfo()
public void service(ServletRequest request,ServletResponse response)
public void destroy()

 

 

Jdbc、Jdo方面

 

 

87、Class.forName的作用?為什么要用?
答:調(diào)用該訪問返回一個(gè)以字符串指定類名的類的對(duì)象。
88
、Jdo是什么?
答:JDOJava對(duì)象持久化的新的規(guī)范,為java data object的簡(jiǎn)稱,也是一個(gè)用于存取某種數(shù)據(jù)倉(cāng)庫(kù)中的對(duì)象的標(biāo)準(zhǔn)化API。JDO提供了透明的對(duì)象存儲(chǔ),因此對(duì)開發(fā)人員來說,存儲(chǔ)數(shù)據(jù)對(duì)象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經(jīng)轉(zhuǎn)移到JDO產(chǎn)品提供商身上,使開發(fā)人員解脫出來,從而集中時(shí)間和精力在業(yè)務(wù)邏輯上。另外,JDO很靈活,因?yàn)樗梢栽谌魏螖?shù)據(jù)底層上運(yùn)行。JDBC只是面向關(guān)系數(shù)據(jù)庫(kù)(RDBMS)JDO更通用,提供到任何數(shù)據(jù)底層的存儲(chǔ)功能,比如關(guān)系數(shù)據(jù)庫(kù)、文件、XML以及對(duì)象數(shù)據(jù)庫(kù)(ODBMS)等等,使得應(yīng)用可移植性更強(qiáng)。
89、說出數(shù)據(jù)連接池的工作機(jī)制是什么?
答:J2EE
服務(wù)器啟動(dòng)時(shí)會(huì)建立一定數(shù)量的池連接,并一直維持不少于此數(shù)目的池連接??蛻舳顺绦蛐枰B接時(shí),池驅(qū)動(dòng)程序會(huì)返回一個(gè)未使用的池連接并將其表記為忙。如果當(dāng)前沒有空閑連接,池驅(qū)動(dòng)程序就新建一定數(shù)量的連接,新建連接的數(shù)量有配置參數(shù)決定。當(dāng)使用的池連接調(diào)用完成后,池驅(qū)動(dòng)程序?qū)⒋诉B接表記為空閑,其他調(diào)用就可以使用這個(gè)連接。
90、Jdo是什么
答:JDOJava對(duì)象持久化的新的規(guī)范,為java data object的簡(jiǎn)稱,也是一個(gè)用于存取某種數(shù)據(jù)倉(cāng)庫(kù)中的對(duì)象的標(biāo)準(zhǔn)化API。JDO提供了透明的對(duì)象存儲(chǔ),因此對(duì)開發(fā)人員來說,存儲(chǔ)數(shù)據(jù)對(duì)象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經(jīng)轉(zhuǎn)移到JDO產(chǎn)品提供商身上,使開發(fā)人員解脫出來,從而集中時(shí)間和精力在業(yè)務(wù)邏輯上。另外,JDO很靈活,因?yàn)樗梢栽谌魏螖?shù)據(jù)底層上運(yùn)行。JDBC只是面向關(guān)系數(shù)據(jù)庫(kù)(RDBMSJDO更通用,提供到任何數(shù)據(jù)底層的存儲(chǔ)功能,比如關(guān)系數(shù)據(jù)庫(kù)、文件、XML以及對(duì)象數(shù)據(jù)庫(kù)(ODBMS)等等,使得應(yīng)用可移植性更強(qiáng)。

Xml方面

 

 

91xml有哪些解析技術(shù)?區(qū)別是什么?
答:DOM,SAX,STAX
DOM:
處理大型文件時(shí)其性能下降的非常厲害。這個(gè)問題是由DOM的樹結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML的隨機(jī)訪問SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動(dòng)型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開頭,文檔結(jié)束,或者標(biāo)簽開頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件,適合對(duì)XML的順序訪問
STAX:Streaming API for XML (StAX)
92
、你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?
答:用到了數(shù)據(jù)存貯,信息配置兩方面。在做數(shù)據(jù)交換平臺(tái)時(shí),將不能數(shù)據(jù)源的數(shù)據(jù)組裝成XML文件,然后將XML文件壓縮打包加密后通過網(wǎng)絡(luò)傳送給接收者,接收解密與解壓縮后再同XML文件中還原相關(guān)信息進(jìn)行處理。在做軟件配置時(shí),利用XML可以很方便的進(jìn)行,軟件的各種配置參數(shù)都存貯在XML文件中。
93
XML文檔定義有幾種形式?它們之間有何本質(zhì)區(qū)別?解析XML文檔有哪幾種方式? 
答:a: 兩種形式 dtd  schema,b: 本質(zhì)區(qū)別:schema本身是xml的,可以被XML解析器解析(這也是從DTD上發(fā)展schema的根本目的),c:DOM,SAX,STAX
 
    DOM:
處理大型文件時(shí)其性能下降的非常厲害。這個(gè)問題是由DOM的樹結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML的隨機(jī)訪問

SAX:
不現(xiàn)于DOM,SAX是事件驅(qū)動(dòng)型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開頭,文檔結(jié)束,或者標(biāo)簽開頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件,適合對(duì)XML的順序訪問 
STAX:Streaming API for XML (StAX)

 

 



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=495429

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产日韩熟女中文字幕| 国产又粗又猛又爽色噜噜| 九九热在线视频精品免费| 欧美日韩精品久久亚洲区熟妇人| 久久精品久久精品中文字幕| 亚洲中文字幕三区四区| 日韩不卡一区二区三区色图| 日本深夜福利在线播放| 国产肥妇一区二区熟女精品| 婷婷激情四射在线观看视频| 91亚洲精品亚洲国产| 欧美三级大黄片免费看| 草草夜色精品国产噜噜竹菊| 尹人大香蕉一级片免费看| 麻豆国产精品一区二区三区| 欧美日韩精品久久亚洲区熟妇人| 国产又粗又猛又长又大| 欧美精品亚洲精品日韩专区| 女同伦理国产精品久久久| 夫妻激情视频一区二区三区| 日本一品道在线免费观看| 国产午夜精品久久福利| 亚洲国产av精品一区二区| 黑丝国产精品一区二区| 欧美日韩国产精品自在自线| 精品一区二区三区不卡少妇av| 91天堂素人精品系列全集| 日本高清不卡在线一区| 99秋霞在线观看视频| 美日韩一区二区精品系列| 搡老妇女老熟女一区二区| 欧美日韩国内一区二区| 一区二区三区日韩中文| 欧美大粗爽一区二区三区| 日本午夜精品视频在线观看| 亚洲伦片免费偷拍一区| 欧美日韩国产黑人一区| 欧美日韩一区二区三区色拉拉| 亚洲精品国产精品日韩| 日韩欧美好看的剧情片免费| 久久精品国产第一区二区三区|