forget and forget

          能吃能睡是福;能忘是大福......

          posts - 39, comments - 26, trackbacks - 0, articles - 10
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          JAVA面試題集(5)

          Posted on 2006-05-21 10:05 橘子 閱讀(83) 評(píng)論(0)  編輯  收藏
          Jdbc、Jdo方面

          1、可能會(huì)讓你寫一段Jdbc連Oracle的程序,并實(shí)現(xiàn)數(shù)據(jù)查詢.

          答:程序如下:

          package hello.ant;

          import java.sql.*;

          public class jdbc

          {

          String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl";

          String theUser="admin";

          String thePw="manager";

          Connection c=null;

          Statement conn;

          ResultSet rs=null;

          public jdbc()

          {

          try{

          Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

          c = DriverManager.getConnection(dbUrl,theUser,thePw);

          conn=c.createStatement();

          }catch(Exception e){

          e.printStackTrace();

          }

          }

          public boolean executeUpdate(String sql)

          {

          try

          {

          conn.executeUpdate(sql);

          return true;

          }

          catch (SQLException e)

          {

          e.printStackTrace();

          return false;

          }

          }

          public ResultSet executeQuery(String sql)

          {

          rs=null;

          try

          {

          rs=conn.executeQuery(sql);

          }

          catch (SQLException e)

          {

          e.printStackTrace();

          }

          return rs;

          }

          public void close()

          {

          try

          {

          conn.close();

          c.close();

          }

          catch (Exception e)

          {

          e.printStackTrace();

          }

          }

          public static void main(String[] args)

          {

          ResultSet rs;

          jdbc conn = new jdbc();

          rs=conn.executeQuery("select * from test");

          try{

          while (rs.next())

          {

          System.out.println(rs.getString("id"));

          System.out.println(rs.getString("name"));

          }

          }catch(Exception e)

          {

          e.printStackTrace();

          }

          }

          }

          2、Class.forName的作用?為什么要用?

          答:調(diào)用該訪問(wèn)返回一個(gè)以字符串指定類名的類的對(duì)象。

          3、Jdo是什么?

          答:JDO是Java對(duì)象持久化的新的規(guī)范,為java data object的簡(jiǎn)稱,也是一個(gè)用于存取某種數(shù)據(jù)倉(cāng)庫(kù)中的對(duì)象的標(biāo)準(zhǔn)化API。JDO提供了透明的對(duì)象存儲(chǔ),因此對(duì)開(kāi)發(fā)人員來(lái)說(shuō),存儲(chǔ)數(shù)據(jù)對(duì)象完全不需要額外的代碼(如JDBC API的使用)。這些繁瑣的例行工作已經(jīng)轉(zhuǎn)移到JDO產(chǎn)品提供商身上,使開(kāi)發(fā)人員解脫出來(lái),從而集中時(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)。

          4、在ORACLE大數(shù)據(jù)量下的分頁(yè)解決方法。一般用截取ID方法,還有是三層嵌套方法。

          答:一種分頁(yè)方法

          <%

          int i=1;

          int numPages=14;

          String pages = request.getParameter("page") ;

          int currentPage = 1;

          currentPage=(pages==null)?(1):{Integer.parseInt(pages)}

          sql = "select count(*) from tables";

          ResultSet rs = DBLink.executeQuery(sql) ;

          while(rs.next()) i = rs.getInt(1) ;

          int intPageCount=1;

          intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);

          int nextPage ;

          int upPage;

          nextPage = currentPage+1;

          if (nextPage>=intPageCount) nextPage=intPageCount;

          upPage = currentPage-1;

          if (upPage<=1) upPage=1;

          rs.close();

          sql="select * from tables";

          rs=DBLink.executeQuery(sql);

          i=0;

          while((i<numPages*(currentPage-1))&&rs.next()){i++;}

          %>

          //輸出內(nèi)容

          //輸出翻頁(yè)連接

          合計(jì):<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">第一頁(yè)</a><a



          href="List.jsp?page=<%=upPage%>">上一頁(yè)</a>

          <%

          for(int j=1;j<=intPageCount;j++){

          if(currentPage!=j){

          %>

          <a href="list.jsp?page=<%=j%>">[<%=j%>]</a>

          <%

          }else{

          out.println(j);

          }

          }

          %>

          <a href="List.jsp?page=<%=nextPage%>">下一頁(yè)</a><a href="List.jsp?page=<%=intPageCount%>">最后頁(yè)



          </a>

          Xml方面

          1、xml有哪些解析技術(shù)?區(qū)別是什么?

          答:有DOM,SAX,STAX等

          DOM:處理大型文件時(shí)其性能下降的非常厲害。這個(gè)問(wèn)題是由DOM的樹(shù)結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多,而且DOM必須在解析文件之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML的隨機(jī)訪問(wèn)SAX:不現(xiàn)于DOM,SAX是事件驅(qū)動(dòng)型的XML解析方式。它順序讀取XML文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開(kāi)頭,文檔結(jié)束,或者標(biāo)簽開(kāi)頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過(guò)在其回調(diào)事件中寫入處理代碼來(lái)處理XML文件,適合對(duì)XML的順序訪問(wèn)

          STAX:Streaming API for XML (StAX)

          2、你在項(xiàng)目中用到了xml技術(shù)的哪些方面?如何實(shí)現(xiàn)的?

          答:用到了數(shù)據(jù)存貯,信息配置兩方面。在做數(shù)據(jù)交換平臺(tái)時(shí),將不能數(shù)據(jù)源的數(shù)據(jù)組裝成XML文件,然后將XML文件壓縮打包加密后通過(guò)網(wǎng)絡(luò)傳送給接收者,接收解密與解壓縮后再同XML文件中還原相關(guān)信息進(jìn)行處理。在做軟件配置時(shí),利用XML可以很方便的進(jìn)行,軟件的各種配置參數(shù)都存貯在XML文件中。

          3、用jdom解析xml文件時(shí)如何解決中文問(wèn)題?如何解析?

          答:看如下代碼,用編碼方式加以解決

          package test;

          import java.io.*;

          public class DOMTest

          {

          private String inFile = "c:\people.xml";

          private String outFile = "c:\people.xml";

          public static void main(String args[])

          {

          new DOMTest();

          }

          public DOMTest()

          {

          try

          {

          javax.xml.parsers.DocumentBuilder builder =

          javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();

          org.w3c.dom.Document doc = builder.newDocument();

          org.w3c.dom.Element root = doc.createElement("老師");

          org.w3c.dom.Element wang = doc.createElement("王");

          org.w3c.dom.Element liu = doc.createElement("劉");

          wang.appendChild(doc.createTextNode("我是王老師"));

          root.appendChild(wang);

          doc.appendChild(root);

          javax.xml.transform.Transformer transformer =

          javax.xml.transform.TransformerFactory.newInstance().newTransformer();

          transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312");

          transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");





          transformer.transform(new javax.xml.transform.dom.DOMSource(doc),

          new



          javax.xml.transform.stream.StreamResult(outFile));

          }

          catch (Exception e)

          {

          System.out.println (e.getMessage());

          }

          }

          }

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 淮安市| 凤城市| 北流市| 扎鲁特旗| 神池县| 花莲县| 濮阳市| 寿阳县| 曲阜市| 布拖县| 扎囊县| 崇文区| 金堂县| 合山市| 凤翔县| 察雅县| 皋兰县| 富源县| 江津市| 德化县| 罗山县| 根河市| 吉林市| 高雄市| 小金县| 化州市| 鹤岗市| 石景山区| 武威市| 阳山县| 怀柔区| 祁阳县| 孟村| 政和县| 简阳市| 隆尧县| 原阳县| 兴业县| 安塞县| 阿图什市| 五台县|