軟通動(dòng)力筆試題合集_第1頁
軟通動(dòng)力筆試題合集_第2頁
軟通動(dòng)力筆試題合集_第3頁
軟通動(dòng)力筆試題合集_第4頁
軟通動(dòng)力筆試題合集_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1:在下述選項(xiàng)時(shí),沒有構(gòu)成死循環(huán)的程序是A.inti=100while(1){i=i%100+1;if(i>100)break;}B.for(;;);C.intk=1000;do{++k;}while(k>=10000);D.ints=36;while(s);--s;2:設(shè)有變量說明語句inta=1,b=0;則執(zhí)行以下程序段的輸出結(jié)果為()。switch(a){case1:switch(b){case0:printf("**0**");break;case1:printf("**1**");break;}case2:printf("**2**");break;}printf("\n");A.**0**B.**0****2**C.**0****1****2**D.有語法錯(cuò)誤3:Whatcompilerswitchcreatesanxmlfilefromthexmlcommentsinthefilesinanassembly?A./textB./docC./xmlD./help4:如果設(shè)treeView1=newTreeView(),TreeNodenode=newTreeNode("根結(jié)點(diǎn)"),則treeView1.Nodes.Add(node)返回的是一個(gè)()類型的值。A.TreeNodeB.intC.stringD.TreeView5:以下描述錯(cuò)誤的是:A.在C++中支持抽象類而在C#中不支持抽象類。B.C++中可在頭文件中聲明類的成員而在CPPC#中沒有頭文件并且在同一處聲明和定義類的成員。C.在C#中可使用new修飾符顯式隱藏從基類繼承的成員。D.在C#中要在派生類中重新定義基類的虛函數(shù)必須在前面加Override。6:關(guān)于ASP.NET中的代碼隱藏文件的描述正確的是:A.Web窗體頁的程序的邏輯由代碼組成,這些代碼的創(chuàng)建用于與窗體交互。編程邏輯唯一與用戶界面不同的文件中。該文件稱作為“代碼隱藏”文件,如果用C#創(chuàng)建,該文件B.項(xiàng)目中所有Web窗體頁的代碼隱藏文件都被編譯成.EXE文件C.項(xiàng)目中所有的Web窗體頁的代碼隱藏文件都被編譯成項(xiàng)目動(dòng)態(tài)鏈接庫(kù)(.dll)文件D.以上都不正確7:下述程序代碼中有語法錯(cuò)誤的行是()。inti,ia[10],ib[10];for(i=0;i<=9;i++)ia[i]=0;/*第一行*//*第2行*//*第3行*/ib=ia;/*第4行*/A.第1行B.第2行C.第3行D.第4行8:abstractclassBaseClass{publicvirtualvoidMethodA(){Console.WriteLine("BaseClass");}publicvirtualvoidMethodB(){}}classClass1:BaseClass{publicvoidMethodA(){Console.WriteLine("Class1");}publicoverridevoidMethodB(){}}classClass2:Class1{newpublicvoidMethodB(){}}classMainClass{publicstaticvoidMain(string[]args){Class2o=newClass2();o.MethodA();}}請(qǐng)問,此程序輸出結(jié)果是:A.BaseClassB.BassClassClass1C.Class1D.Class1BassClass9:publicstaticvoidMain(string[]args){inti=2000;objecto=i;i=2001;intj=(int)o;Console.WriteLine("i={0},o={1},j={2}",i,o,j);}A.i=2001,o=2000,j=2000B.i=2001,o=2001,,j=2001C.i=2000,o=2001,,j=2000D.i=2001,o=2000,j=200110:軟件生命周期的瀑布模型把軟件項(xiàng)目分為3個(gè)階段、8個(gè)子階段,以下哪一個(gè)是正常的開發(fā)順序?A.計(jì)劃階段、開發(fā)階段、運(yùn)行階段B.設(shè)計(jì)階段、開發(fā)階段、編碼階段C.設(shè)計(jì)階段、編碼階段、維護(hù)階段D.計(jì)劃階段、編碼階段、測(cè)試階段11:如下程序的運(yùn)行結(jié)果是:publicabstractclassA{publicA(){Console.WriteLine(''A'');}publicvirtualvoidFun(){Console.WriteLine("A.Fun()");}}publicclassB:A{publicB(){Console.WriteLine(''B'');}publicnewvoidFun(){Console.WriteLine("B.Fun()");}publicstaticvoidMain(){Aa=newB();a.Fun();}}A.ABA.Fun()B.ABB.Fun()C.BAA.Fun()D.BAB.Fun()12:以下的C程序代碼片段運(yùn)行后C和d的值分別是多少Inta=1,b=2;Intc,d;c=(a&b)&&a;d=(a&&b)&a;A.0,0B.0,1C.1,0D.1,113:聲明一個(gè)委托publicdelegateintmyCallBack(intx);則用該委托產(chǎn)生的回調(diào)方法的原型應(yīng)該是A.voidmyCallBack(intx)B.intreceive(intnum)C.stringreceive(intx)D.不確定的14:classClass1{publicstaticintCount=0;staticClass1(){Count++;}publicClass1(){Count++;}}Class1o1=newClass1();Class1o2=newClass1();請(qǐng)問,Class1.Count的值是多少?A.1B.2C.3D.415:在軟件生命周期中,下列哪個(gè)說法是不準(zhǔn)確的?A.軟件生命周期分為計(jì)劃、開發(fā)和運(yùn)行三個(gè)階段B.在計(jì)劃階段要進(jìn)行問題焉醛和需求分析C.在開發(fā)后期要進(jìn)行編寫代碼和軟件測(cè)試D.在運(yùn)行階段主要是進(jìn)行軟件維護(hù)簡(jiǎn)答題16:寫一個(gè)二叉樹的類,包括主要的方法,遍歷,比較大小等17:VaryByCustom是如何工作的?18:述面向接口、面向?qū)ο?、面向方面編程的區(qū)別19:用.net做B/S結(jié)構(gòu)的系統(tǒng),您是用幾層結(jié)構(gòu)來開發(fā),每一層之間的關(guān)系以及為什么要這樣分層?20:如何判別一個(gè)數(shù)是unsigned。21:假設(shè)你有一個(gè)用1001道所有的整數(shù)都在1到1000(包括1000)之間。此外,除一個(gè)數(shù)字出現(xiàn)兩次外,種方式的算法嗎?22:34+56則輸出結(jié)果90.00。要求運(yùn)算結(jié)果保留兩位小數(shù),用戶輸入時(shí)一次將兩個(gè)數(shù)和操作符輸入。23:幾種判斷空字符串的方法和特點(diǎn)24:簡(jiǎn)述活動(dòng)目錄概念和作用25:用css控制一個(gè)html標(biāo)簽test的字體的大小,如果想讓此標(biāo)簽在頁面中隱藏的方法Struts的運(yùn)行機(jī)制:Web應(yīng)用初始化時(shí),控制器加載分析配置文件(struts-config.xmlActionMapping,配置應(yīng)用程序1.ActionServlet接收用戶請(qǐng)求2.ActionServlet根據(jù)應(yīng)用程序配置填充ActionForm3.ActionServlet根據(jù)ActionMapping調(diào)用Action的execute方法4.Action調(diào)用業(yè)務(wù)邏輯類(ModelAction的execute方法中執(zhí)行業(yè)務(wù)處理5.業(yè)務(wù)邏輯類將處理結(jié)果返回給Action,Action將處理結(jié)果保存在適當(dāng)?shù)淖饔糜蚍秶畠?nèi)(session、request等)6.Action的execute方法向ActionServlet返回ActionForward指明下一步調(diào)用的Action或JSP視圖7.JSP視圖取得保存在作用域之中的業(yè)務(wù)處理結(jié)果并負(fù)責(zé)顯示HTML頁面大家最好用自己的話來總結(jié)出來!常用的集合以及介紹:(應(yīng)重點(diǎn)復(fù)習(xí))常用集合set、map、listset、map是collection接口的子接口set接口的實(shí)現(xiàn)類:HashSet、TreeSetList接口的實(shí)現(xiàn)類:ArrayList、linkedListMap接口的實(shí)現(xiàn)類:HashMap、、Hashtable。ArrayList和linkedList的區(qū)別略)HashMap、HashTable區(qū)別略)遍歷map的方法:使用Map接口提供的方法entrySet();importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;publicclassMapTest{publicstaticvoidmain(String[]args){Map<Object,Object>map=newHashMap<Object,Object>();map.put("a",中國(guó)");map.put("b","ABC");map.put("c",1000);/*for(Iterator<Entry<Object,Object>>map.entrySet().iterator();it.hasNext();){Entry<Object,Object>entry=it.next();System.out.println(entry);it=System.out.println(entry.getKey());System.out.println(entry.getValue());}*/for(Iterator<Object>it=map.keySet().iterator();it.hasNext();){Objectkey=it.next();System.out.println(key);Objectvalue=map.get(key);System.out.println(value);}}}4.字符串相加用“”和append()的區(qū)別abc”之后要加,加過之后內(nèi)存中會(huì)有abc、”abcde兩個(gè)字符串!但”abc會(huì)失去原本指向它的引用變成垃圾回收機(jī)制回收的對(duì)象!只是將字符串追加到原字符串的尾部,始終都是一個(gè)對(duì)象!5.垃圾回收機(jī)制原理:當(dāng)一個(gè)對(duì)象賦值為null或者沒有指引指向他的時(shí)候,那么這個(gè)對(duì)象就符合垃圾回收機(jī)制回收的范圍,java虛擬機(jī)會(huì)不定時(shí)的對(duì)垃圾進(jìn)行回收,回收對(duì)象之前會(huì)調(diào)用被回收對(duì)象的finalize()方法!注意Java虛擬機(jī)何時(shí)來回收垃圾不確定!6.如何實(shí)現(xiàn)多線程:繼承Thread類或者實(shí)現(xiàn)Runnable接口那種好處多:因?yàn)閖ava是單繼承所以一般會(huì)采用實(shí)現(xiàn)Runnable接口兩種實(shí)現(xiàn)方式的區(qū)別:繼承Thread類可以創(chuàng)建本類對(duì)象直接調(diào)用方法運(yùn)行線程(也就是說本類對(duì)象就是一個(gè)線程個(gè)人理解)實(shí)現(xiàn)Runnable接口必須用Threadthread=new來獲得一個(gè)線程!7.代碼的重構(gòu):代碼的輸入、輸出不變,只是改變中間實(shí)現(xiàn)代碼!8.MVC思想是modelviewcontroller的縮寫,model代表業(yè)務(wù)邏輯通過javabeanEJB組建實(shí)現(xiàn)view是應(yīng)用表示面由jsp頁面產(chǎn)生controller是提供應(yīng)用處理過程的控制一般是一個(gè)servlet)。通過這種設(shè)計(jì)模式把應(yīng)用邏輯、處理過程、顯示邏輯分成不同的組件實(shí)現(xiàn),可提高組件的交互和重用性。9.struts1和struts2的區(qū)別(見最后一頁)10:講解一下Spring11:hibernate是怎么工作的原理:1.讀取并解析配置文件2.讀取并解析映射信息,創(chuàng)建SessionFactory3.打開Sesssion4.創(chuàng)建事務(wù)Transation5.持久化操作6.提交事務(wù)7.關(guān)閉Session8.關(guān)閉SesstionFactory12:hibernate的一級(jí)和二級(jí)緩存是什么Hibernate提供了兩級(jí)緩存,第一級(jí)是Session的緩存。由于Session對(duì)象的生緩存。第一級(jí)緩存是必需的,Session的緩存是內(nèi)置的,不能被卸載。第二級(jí)緩存是一個(gè)可插拔的的緩存插件,它是由SessionFactory負(fù)責(zé)管理。由于SessionFactory對(duì)象的生命周期和應(yīng)用程序的整個(gè)過程對(duì)應(yīng),因此第二級(jí)緩存是第二級(jí)緩存。當(dāng)Hibernate根據(jù)ID訪問數(shù)據(jù)對(duì)象的時(shí)候,首先從Session一級(jí)緩存中查;查不到,如果配置了二級(jí)緩存,那么從二級(jí)緩存中查;查不到,再查詢數(shù)據(jù)庫(kù),把結(jié)果按照ID放入到緩存。13:hibernate的連接池14:怎么接收dwr返回的數(shù)組或集合15:怎么讀取一個(gè)文本文件(流)16:javascript中這么去掉字符串的空格17:用ajax的時(shí)候怎么運(yùn)行后臺(tái)返回的javascript代碼18:存儲(chǔ)過程是用來干什么的19:怎么終止一個(gè)線程拋出異常和等待run()方法結(jié)束。20.悲觀鎖和樂觀鎖?21.Oracle中實(shí)現(xiàn)序列用什么關(guān)鍵字?Sequence22.數(shù)據(jù)庫(kù)中有哪些函數(shù)?23.解析XML的方法?DOM解析和SAX解析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)型的XMLXML文件,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開頭,文檔結(jié)束,或者標(biāo)簽開頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件,用戶通過在其回調(diào)事件中寫入處理代碼來處理XML文件,適合對(duì)XML的順序訪問24.用遞歸法求n的階乘?25.Orcale中左右連接用“”怎樣連接Oracle數(shù)據(jù)庫(kù)左連接“”在右邊,右連接“+”在左邊。26.Equals方法和的區(qū)別。equals()方法是用來比較兩個(gè)字符串值是否相等而==是用來比較對(duì)象引用是否相等也就是是否為同一個(gè)對(duì)象)27.線程池的問題。的,那就是為了提高對(duì)象的使用率,從而達(dá)到提高程序效率的目的。比如對(duì)于Servlet,它被設(shè)計(jì)為多線程的(如果它是單線程的,你就可以想象,當(dāng)1000個(gè)人同時(shí)請(qǐng)求一個(gè)網(wǎng)頁時(shí),在第一個(gè)人獲得請(qǐng)求結(jié)果之前,其它999個(gè)人都在郁系統(tǒng)就會(huì)在創(chuàng)建線程和銷毀線程上耗費(fèi)很大的開銷,大大降低系統(tǒng)的效率。因此,Servlet對(duì)象,從而達(dá)到提高程序的效率的目的。28.struts1的一些配置問題web.xml和struts-config.xml中的一些配置。29.JavaScript的一個(gè)操作流程。30.一些簡(jiǎn)單的sql語句,比如說現(xiàn)在數(shù)據(jù)庫(kù)中有10記錄,要求你寫一個(gè)語句保留第二條和第五條記錄,將其他的記錄全部刪除。31.存儲(chǔ)過程、觸發(fā)器32.Throw和Throws的區(qū)別throwthrows用來標(biāo)明一個(gè)成員函數(shù)可能拋出的各種“異?!?3.在異常捕獲時(shí)try,catch,finally中可不可以沒有catch語句塊。trycatch或者34.面向?qū)ο笥心男┨卣鳎闳绾卫斫??抽象、繼承、封裝、多態(tài)35.什么是多線程?線程的狀態(tài)有那幾個(gè)?創(chuàng)建線程的方法?啟動(dòng)線程用什么方法?線程同步包括的方法?答:多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候?qū)崿F(xiàn)的。線程狀態(tài)有:就緒、運(yùn)行、掛起、結(jié)束。啟動(dòng)線程用start()線程睡眠sleep()yield()、等待其他線程結(jié)束join()等。36.、stringBuffer、StringBuilder的區(qū)別37.垃圾回收機(jī)制的原理?final,finally,finalize的區(qū)別?38.內(nèi)存的泄露以及溢出是怎么回事??jī)?nèi)存溢出就是你要求分配的java滿足需求,于是產(chǎn)生溢出。內(nèi)存泄漏是指你向系統(tǒng)申請(qǐng)分配內(nèi)存進(jìn)行使用(new),可是使用完了以后卻不歸還(delete),結(jié)果你申請(qǐng)到的那塊內(nèi)存你自己也不能再訪問,該塊已分配出多,系統(tǒng)也不能再次將它分配給需要的程序,產(chǎn)生泄露。一直下去,程序也逐漸無內(nèi)存使用,就會(huì)溢出。39.數(shù)據(jù)庫(kù)連接池的原理?數(shù)據(jù)庫(kù)連接池的基本思想就是為數(shù)據(jù)庫(kù)連接建立一個(gè)“緩沖池”。預(yù)先在緩沖池中放入一定數(shù)量的連接,當(dāng)需要建立數(shù)據(jù)庫(kù)連接時(shí),只需從緩沖池”中取出一個(gè),使用完畢之后再放回去。我們可以通過設(shè)定連接池最大連接數(shù)供依據(jù)。40.數(shù)組和鏈表的區(qū)別?棧以及隊(duì)列的特點(diǎn)以及區(qū)別?數(shù)組處理一組數(shù)據(jù)類型相同的數(shù)據(jù),但不允許動(dòng)態(tài)定義數(shù)組的大小,即在使用數(shù)組之前必須確定數(shù)組的大小。而在實(shí)際應(yīng)用中,用戶使用數(shù)組之前有時(shí)無法準(zhǔn)確確定數(shù)組的大小,只能將數(shù)組定義成足夠大小,這樣數(shù)組中有些空間可能不被使用,從而造成內(nèi)存空間的浪費(fèi)。要時(shí)可以用new分配內(nèi)存空間,不需要時(shí)用delete將已分配的空間釋放,不會(huì)造成內(nèi)存空間的浪費(fèi)。數(shù)組中的數(shù)據(jù)在內(nèi)存中的按順序存儲(chǔ)的,而鏈表是隨機(jī)存儲(chǔ)的!要訪問數(shù)組中的元素可以按下標(biāo)索引來訪問,速度比較快,如果對(duì)他進(jìn)行插入操作的話,就得移動(dòng)很多元素,所以對(duì)數(shù)組進(jìn)行插入操作效率很低!由于連表是隨機(jī)存儲(chǔ)的,鏈表在插入,刪除操作上有很高的效率(相對(duì)到找到所需要的元素為止,所以鏈表的隨機(jī)訪問的效率就比數(shù)組要低41.遞歸的算法?比如階乘和fif數(shù)列的實(shí)現(xiàn)。常用的一些算法,如冒泡,二分查找,折半查找,選擇排序等等42.java中多態(tài)是如何實(shí)現(xiàn)的?重載和覆蓋的區(qū)別?注意代碼的重構(gòu)不是重載!43.接口和抽象類的區(qū)別?44.jsp和servlet的區(qū)別?jsp的內(nèi)置對(duì)象?jsp的標(biāo)準(zhǔn)動(dòng)作?jsp的頁面元素有哪些?四種會(huì)話跟蹤技術(shù)是什么?servlet是不是線程安全的?servlet生命周期?動(dòng)態(tài)include和靜態(tài)include區(qū)別?重定向和請(qǐng)求轉(zhuǎn)發(fā)的區(qū)別?servlet中如何從頁面獲取參數(shù)?jsp的四種作用于范圍是什么?Jsp是Servlet的技術(shù)擴(kuò)展,本質(zhì)上是Servlet的簡(jiǎn)易方式,Jsp側(cè)重于視圖而Servlet側(cè)重于控制業(yè)務(wù)邏輯。Jsp內(nèi)置對(duì)象九個(gè):requestresponseoutsessionapplicationpagecantext、、config、Exception會(huì)話跟蹤技術(shù):session、cookie、重寫url、隱藏表單域Jsp標(biāo)準(zhǔn)動(dòng)作:、setProperty、、forward、include不是,servletservice個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求,并且其實(shí)例一般不會(huì)銷毀,所以你的項(xiàng)目中如果只有一個(gè)servlet,那么web容器就只會(huì)創(chuàng)建一個(gè)實(shí)例通過request.getParameter()來獲取頁面參數(shù)作用域范圍由小到大:、request、session、application47.jstl的包括哪些標(biāo)簽庫(kù)?如何實(shí)現(xiàn)迭代?I18N與國(guó)際化標(biāo)簽、SQL標(biāo)簽、XML標(biāo)簽、function標(biāo)簽使用迭代標(biāo)簽forEach來遍歷48.過濾器的原理?過濾器的生命周期?監(jiān)聽器的原理49.hibernate的映射原理?hibernate的查詢方式有哪些?關(guān)聯(lián)關(guān)系的映射怎么理解?三種查詢方式:、條件查詢、原生SQL查詢,命名、50.oracle和sqlserver區(qū)別?如何優(yōu)化oracle數(shù)據(jù)庫(kù)?oracle的一些常用系統(tǒng)函數(shù)?Oracle跨平臺(tái),SqlServer只能運(yùn)行在window平臺(tái)上。51.為什么要用索引?索引的分類?視圖是什么?度。聚集索引和非聚集索引(SQLServer)標(biāo)準(zhǔn)索引、組合索引、唯一索引、反向索引、位圖索引(Oracle)中派生出來的對(duì)象。52.存儲(chǔ)過程你是怎么理解的?如何實(shí)現(xiàn)?答:我感覺存儲(chǔ)過程就像java中的方法一樣,輸入?yún)?shù)就是方法傳的參數(shù),而輸出參數(shù)就像方法的返回值一樣。Java中通過CallAbleStatement接口實(shí)現(xiàn)了對(duì)存儲(chǔ)過程的調(diào)用。53.觸發(fā)器、游標(biāo)的一些基本知識(shí)!54.oracle數(shù)據(jù)庫(kù)的一些特殊之處如簇、序列等如何理解簇是用來存儲(chǔ)表的方法這些表互相聯(lián)系密切并通常相連在磁盤的相同區(qū)域上,共享同一列的一組表,用于檢索時(shí)提高效率oracle中沒有sqlserver中的標(biāo)識(shí)列,只能通過創(chuàng)建序列來實(shí)現(xiàn)這一功能。55.權(quán)限的問題如何解決?56.Ajax的javaScript代碼如何實(shí)現(xiàn)?Ajax的一些框架?57.單例模式和工廠模式如何實(shí)現(xiàn)?publicclassCar{privateCar(){}//私有的構(gòu)造方法使別的類不能通過new來創(chuàng)建本類是類只能通過我們下面的方法來獲得對(duì)象privatestaticCarbaoma=newCar();//靜態(tài)類類型的變量保證對(duì)象只有一個(gè)publicstaticCargetCar(){//注意方法定義為靜態(tài)的再別的類中就可以用本類類名來調(diào)用此方法得到本類對(duì)象returnbaoma;}}單列模式使本類對(duì)象只有一個(gè),只能通過方法調(diào)用來獲得對(duì)象,而且無論你掉用多少次方法,得到的都是一個(gè)實(shí)例。58.類的加載順序父類靜態(tài)塊>子類的靜態(tài)塊>程序的入口(main)>父類的初始化塊>父類的構(gòu)造方法>子類的初始化塊>子類的構(gòu)造方法59.如何處理數(shù)據(jù)庫(kù)差異比如用戶剛開始使要求用SqlServer之后需求改變要使用Oracle:a)使用hibernate只需要改變方言即可b)使用sql標(biāo)準(zhǔn)語句60.Session和cookie的區(qū)別61.一個(gè)抽象類是否可以繼承一個(gè)普通類可以,但被繼承的類必須要有明確的構(gòu)造方法62.什么時(shí)候用接口?抽象類?當(dāng)你寫一個(gè)類時(shí),可能面臨部分代碼可能會(huì)發(fā)生變化你可以把這些代碼封裝成(接口或抽象類或基礎(chǔ)類中的)一個(gè)或多個(gè)方法1、如果所有抽象出的方法不確定性很高,就定義為接口來封裝,所有方法抽象,由實(shí)現(xiàn)類全部實(shí)現(xiàn)2、如果部分抽象出的方法不確定性很高,就定義為抽象類來封裝,能確定的3、如果所有抽象出的方法確定性很高,就定義為基礎(chǔ)類,所有方法提供基本實(shí)現(xiàn),由子類去重寫(不變就不用寫子類啦)63.函數(shù)和存儲(chǔ)過程的區(qū)別1.一般來說,存儲(chǔ)過程實(shí)現(xiàn)的功能要復(fù)雜一點(diǎn),而函數(shù)的實(shí)現(xiàn)的功能針對(duì)性比較強(qiáng)。2.對(duì)于存儲(chǔ)過程來說可以返回參數(shù),而函數(shù)只能返回值或者表對(duì)象。3.存儲(chǔ)過程一般是作為一個(gè)獨(dú)立的部分來執(zhí)行,而函數(shù)可以作為查詢語句的一個(gè)部分來調(diào)用,由于函數(shù)可以返回一個(gè)表對(duì)象,因此它可以在查詢語句中位于FROM關(guān)鍵字的后面。4.當(dāng)存儲(chǔ)過程和函數(shù)被執(zhí)行的時(shí)候,SQLManager會(huì)到procedurecache中去取相應(yīng)的查詢語句,如果在procedurecache里沒有相應(yīng)的查詢語句,SQLManager就會(huì)對(duì)存儲(chǔ)過程和函數(shù)進(jìn)行編譯。Procedurecache中保存的是執(zhí)行計(jì)劃(executionplan),當(dāng)編譯好之后就執(zhí)行procedurecache中的executionplanSQLSERVER會(huì)根據(jù)每個(gè)executionplan的實(shí)際情況來考慮是否要在cache中保存這個(gè),評(píng)判的標(biāo)準(zhǔn)一個(gè)是這個(gè)executionplan可能被使用的頻率;其次是生成這個(gè)plan的代價(jià),也就是編譯的耗時(shí)。保存在cache中的plan在下次執(zhí)行時(shí)就不用再編譯了。Struts1和struts2比較:Action類Struts1要求Action類要擴(kuò)展自一個(gè)抽象基類。Struts1的一個(gè)共有的問題是面向抽象類編程而不是面向接口編程。Struts2的Action類實(shí)現(xiàn)了一個(gè)Action接口,連同其他接口一起實(shí)現(xiàn)可選擇和自定義的服務(wù)。Struts2提供一個(gè)名叫ActionSupport的基類實(shí)現(xiàn)一般使用的接口。雖然,Action接口不是必須的。任何使用execute方法的POJO對(duì)象可以被當(dāng)作Struts2的Action對(duì)象使用。程模型Struts1Action類是單例類,因只有一個(gè)示例控制所有的請(qǐng)求。單例類策略造成了一定的限制且給開發(fā)帶來了額外的煩惱。Action資源必須是程安全或者同步的。Struts2Action對(duì)象每一個(gè)請(qǐng)求都實(shí)例化對(duì)象,所以沒有程安全的問題。(實(shí)踐中,servlet容器生許多丟的對(duì)象對(duì)于每一個(gè)請(qǐng)求,多于一個(gè)的對(duì)象并不影響垃圾收集)Servlet依賴Struts1的Action類依賴于servletAPI以HttpServletRequest和HttpServletResponse作參數(shù)傳給execute方法當(dāng)Action被調(diào)用時(shí)。Struts2的Action不和容器有關(guān)。Servlet上下文被表現(xiàn)簡(jiǎn)單的Maps,允許ActionStruts2的Action可以訪問最初的請(qǐng)求和相應(yīng),如果需要的話。然而,其他的架構(gòu)元素少或者排除直接訪問HttpServletRequest或者HttpServletResponse的需要。易測(cè)性測(cè)試Struts1的主要障礙是execute方法暴露了ServletAPI。第三方的擴(kuò)展,Struts測(cè)試用例,提供Struts1的集合對(duì)象。Struts2的Action可以通過實(shí)例化Action測(cè)試,設(shè)置屬性,然后調(diào)用方法。依賴注入的支持也是測(cè)試變得更簡(jiǎn)單。接受輸入Struts1使用ActionForm對(duì)象捕獲輸入。象Action一樣,所有的ActionFormJavaBean不能作ActionForm余的類捕獲輸入。DynaBeans可以被用來作替代ActionForm的類創(chuàng)建。但是開發(fā)者可以重新描述已經(jīng)存在的JavaBean。Struts2Action屬性作輸入屬性,排除第二個(gè)輸入對(duì)象的需要。輸入屬性可能有豐富的對(duì)象類型這些類型有他們自己的屬性。Action的屬性可以通過標(biāo)簽庫(kù)訪問。Struts2也支持ActionForm形式。豐富的對(duì)象類型,包含業(yè)務(wù)或者

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論