廣州企業(yè)面試題綜合_第1頁(yè)
廣州企業(yè)面試題綜合_第2頁(yè)
廣州企業(yè)面試題綜合_第3頁(yè)
廣州企業(yè)面試題綜合_第4頁(yè)
廣州企業(yè)面試題綜合_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、&和&的區(qū)別&兩邊都要執(zhí)行。&當(dāng)左邊為 false 時(shí),不執(zhí)行右邊為什么不建議用Stop()方法來(lái)停止一個(gè)正在運(yùn)行的線程?stop 是不安全的,因?yàn)橛袝r(shí)會(huì)導(dǎo)致嚴(yán)重的系統(tǒng)錯(cuò)誤。比如一個(gè)線程正在等待關(guān)鍵的數(shù)據(jù)結(jié)構(gòu),并只完成了部分的改變,如果這個(gè)時(shí)候停止它,那么數(shù)據(jù)結(jié)構(gòu)將會(huì)停留在錯(cuò)誤的狀態(tài)上。也就是說(shuō)它會(huì)接觸由線程獲取的所有鎖定,而且一旦隊(duì)形處于一種不連貫的狀態(tài),那么其他線程就能在那種狀態(tài)下檢查和修改它們,結(jié)果導(dǎo)致很難再檢查出問(wèn)題的真正所在。調(diào)用 Thread 類的 destroy()方?thread 的 destroy()方法從來(lái)就沒(méi)有被實(shí)現(xiàn)過(guò),不能用它來(lái)銷毀線程 public void dest

2、roy()throw new nosuethoderror();該方法最初用于破壞該線程,但不作任何清除。它所保持的任何監(jiān)視器都會(huì)保持鎖定狀態(tài)。不過(guò),該方法決不會(huì)被實(shí)現(xiàn)。即使要實(shí)現(xiàn),它也極有可能以 suspend() 方式被死鎖。如果目標(biāo)線程被破壞時(shí)保持一個(gè)保護(hù)關(guān)鍵系統(tǒng)資源的鎖,則任何線程在任何時(shí)候都無(wú)法再次該資源。如果另一個(gè)線程曾試圖鎖定該資源,則會(huì)出現(xiàn)死鎖。這類死鎖通常會(huì)證明它們自己是“凍結(jié)”的進(jìn)程。需求分析文檔包括那些內(nèi)容, CMMI,生命周期?方案的總體介紹文檔介紹總體需求描述產(chǎn)品范圍,功能性需求,非功能性需求能力成熟度模型集成。早期是應(yīng)用于合性模型業(yè)項(xiàng)目的管理方法,現(xiàn)在成為一種被廣泛

3、應(yīng)用的綜立項(xiàng)、需求分析、設(shè)計(jì)、編碼、測(cè)試、交付、退役守護(hù)線程,如何判斷一個(gè)線程是守護(hù)?如何設(shè)置守護(hù)線程守護(hù)線程是一種特殊的線程,它和普通線程的區(qū)別在于它并不是應(yīng)用程序的部分,當(dāng)一個(gè)應(yīng)用程序的所用非守護(hù)線程終止運(yùn)行時(shí),及時(shí)仍然有守護(hù)線程在運(yùn)行,應(yīng)用程序也將終止,它一般用于在為其他線程提供服務(wù)??梢酝ㄟ^(guò)調(diào)用方法 isDaemon()來(lái)判斷一個(gè)線程是否是守護(hù)線程。setDaemon()將一個(gè)線程設(shè)為守護(hù)線程。 UML答:UML 是一種標(biāo)準(zhǔn)、是一種協(xié)議,它是系統(tǒng)分析戶之間所應(yīng)遵循的一種通訊協(xié)議。和設(shè)計(jì)之間、從業(yè)與客通過(guò)使用 UML,系統(tǒng)分析不僅可以很直觀地客戶需求,為系統(tǒng)設(shè)計(jì)提供具體的、甚至客戶進(jìn)行交

4、流,因?yàn)榇蠹叶甲裱蓞⒖嫉南到y(tǒng)分析模型,而且可以很方便地與設(shè)計(jì)同一協(xié)議,交流就變得容易和直觀。UML 是建模語(yǔ)言?!啊保克硎?UML 并不僅僅是系統(tǒng)的“專利”,非行業(yè)同樣可以使用 UML 進(jìn)行建模描述。同時(shí),它也更好地證實(shí)了“UML 是一種標(biāo)準(zhǔn)”這一說(shuō)法?!罢Z(yǔ)言”?因?yàn)樗凶约旱恼Z(yǔ)法和語(yǔ)義。UML 的各個(gè)元素有著自己的語(yǔ)義,而元素的組織形式卻遵循著一定的語(yǔ)則。從語(yǔ)法強(qiáng)度來(lái)講,UML 應(yīng)該和自然語(yǔ)言的語(yǔ)法強(qiáng)度平級(jí),因此 UML 應(yīng)該會(huì)出現(xiàn)二義性問(wèn)題。數(shù)據(jù)庫(kù)建表原則遵從 3 個(gè)范式,業(yè)務(wù)需要。寫(xiě)一段驗(yàn)證號(hào)碼的代碼(String 類)面象,分析 設(shè)計(jì)面象其實(shí)是現(xiàn)實(shí)世界模型的自然延伸?,F(xiàn)實(shí)世界中任何

5、實(shí)體都可以看作是對(duì)象。對(duì)象之間通過(guò)消息相互作用。另外,現(xiàn)實(shí)世界中任何實(shí)體都可歸屬于某類事物,任何對(duì)象都是某一類事物的實(shí)例。如果說(shuō)傳統(tǒng)的面向過(guò)程式編程語(yǔ)言是以過(guò)程為中心以算法為驅(qū)動(dòng)的話,面向?qū)ο蟮木幊陶Z(yǔ)言則是以對(duì)象為中心以消息為驅(qū)動(dòng)。用公式表示,過(guò)程式編程語(yǔ)言為:程序=算法+數(shù)據(jù);面象編程語(yǔ)言為:程序=對(duì)象+消息。所有面象編程語(yǔ)言都支持三個(gè)概念:封裝、多態(tài)性和繼承,Java 也不例外。現(xiàn)實(shí)世界中的對(duì)象均有屬性和行為,到計(jì)算機(jī)程序上,屬性則表示對(duì)象的數(shù)據(jù),行為表示對(duì)象的方法(其作用是處理數(shù)據(jù)或同外界交互)。所謂封裝,就是用一個(gè)式框架把對(duì)象的數(shù)據(jù)和方法聯(lián)在一起形成一個(gè)整體。可以說(shuō),對(duì)象是支持封裝段,

6、是封裝的基本。Java語(yǔ)言的封裝性較強(qiáng),因?yàn)?Java 無(wú)全局變量,無(wú)主函數(shù),在 Java 中絕大部分成員是對(duì)象,只有簡(jiǎn)單的數(shù)字類型、字符類型和 類型除外。而對(duì)于這些類型,Java 也提供了相應(yīng)的對(duì)象類型以便與其他對(duì)象交互操作。多態(tài)性就是多種表現(xiàn)形式,具體來(lái)說(shuō),可以用一個(gè)對(duì)外接口,多個(gè)內(nèi)在實(shí)現(xiàn)方法表示。舉一個(gè)例子,計(jì)算機(jī)中的堆??梢愿鞣N格式的數(shù)據(jù),包括整型,浮點(diǎn)或字符。不管的是何種數(shù)據(jù),堆棧的算法實(shí)現(xiàn)是一樣的。針對(duì)不同的數(shù)據(jù)類型,編程不必手工選擇,只需使用接口名,系統(tǒng)可自動(dòng)選擇。運(yùn)算符重載(operator overload)一直被認(rèn)為是一種優(yōu)秀的多態(tài)機(jī)制體現(xiàn),但由于考慮到它會(huì)使程序變得難以理

7、解,所以 Java 最后還是把它取消了。繼承是指一個(gè)對(duì)象直接使用另一對(duì)象的屬性和方法。事實(shí)上,遇到的很多實(shí)體都有繼承的含義。例如,若把汽車(chē)看成一個(gè)實(shí)體,它可以分成多個(gè)子實(shí)體,如:卡車(chē)、公共汽車(chē)等。這些子實(shí)體都具有汽車(chē)的特性,因此,汽車(chē)是它們的父親,而這些子實(shí)體則是汽車(chē)的孩子。Java 提供給用戶一系列類(class),Java 的類有層次結(jié)構(gòu),子類可以繼承父類的屬性和方法。與另外一些面象編程語(yǔ)言不同,Java 只支持單一繼承。其實(shí)在沒(méi)有面象的世界里也有繼承,編程語(yǔ)言都支持直接轉(zhuǎn)換為 float,這叫低類型轉(zhuǎn)換為高類型。類是其實(shí)一個(gè)自定義數(shù)據(jù)類型,父類是高類型,子類是低類型。Hibernate用

8、(優(yōu)點(diǎn)),流程HibernateHibernate 是一個(gè)免費(fèi)的開(kāi)源 Java 包,它使得與關(guān)系數(shù)據(jù)庫(kù)打交道變得十分輕松,不用考慮如何把他們從數(shù)據(jù)庫(kù)表中取出或放回。使如何保存他們或怎么找到他們可以專注應(yīng)用程序的對(duì)象和功能,而不用擔(dān)心大多數(shù)應(yīng)用程序都要處理數(shù)據(jù),Java 應(yīng)用程序運(yùn)行時(shí),往往把數(shù)據(jù)封裝成相互連接的對(duì)象網(wǎng)絡(luò)。但是當(dāng)程序結(jié)束時(shí)候,這些對(duì)象就會(huì),所以需要有一些保存他們的方法,有時(shí)候,甚至在編寫(xiě)應(yīng)用程序知青,數(shù)據(jù)就已經(jīng)存在了,所以需要有讀入他們和將其標(biāo)識(shí)為對(duì)象的方法,手動(dòng)編寫(xiě)代碼來(lái)執(zhí)行這些任務(wù),不但單調(diào),容易出錯(cuò),而且會(huì)占用整個(gè)應(yīng)用的很大一部分開(kāi)發(fā)工作量。創(chuàng)建工具,使整個(gè)過(guò)程自動(dòng)化。是一

9、種“積極”的偷懶做法。對(duì)于關(guān)系數(shù)據(jù)庫(kù)來(lái)說(shuō),這種努力的最大成果就是對(duì)象/關(guān)系(ORM)工具。Hibernate 工作方式Hibernate 不會(huì)強(qiáng)迫你修改對(duì)象的行為方式,不需要實(shí)現(xiàn)任何接口以便能夠繼續(xù)存在。唯一要做的就是創(chuàng)建一個(gè)xml“文檔”,告訴 Hibernate 你希望能夠保存在數(shù)據(jù)庫(kù)中的類。以及他們?nèi)绾侮P(guān)聯(lián)到這個(gè)數(shù)據(jù)庫(kù)中的表和列。然后就可以要求它以對(duì)象的形式獲取數(shù)據(jù),或者把對(duì)象保存為數(shù)據(jù)。運(yùn)行時(shí),Hibernate文檔,然后動(dòng)態(tài)構(gòu)建 Java 類,以便管理數(shù)據(jù)庫(kù)和 Java 之間的轉(zhuǎn)換,在 hibernate 中只有一個(gè)簡(jiǎn)單的 API,用于對(duì)數(shù)據(jù)庫(kù)所表示的對(duì)象執(zhí)行查詢。要修改這些對(duì)象,只

10、需在程序中和他們進(jìn)行交互,然后告訴 Hibernate 保存修改即可。類似地,創(chuàng)建新對(duì)象也很簡(jiǎn)單,只需以常規(guī)方式創(chuàng)建他們,然后告訴 Hibernate 有關(guān)他們的信息,這樣就能在數(shù)據(jù)庫(kù)中保存了和其他的ORM 產(chǎn)品(JDO,TopLink,CocoBase,Castor 等)相比較:1、開(kāi)源和免費(fèi)的 License,我可以在需要的時(shí)候研究源代碼,改寫(xiě)源代碼,進(jìn)行功能的定制。2、輕量級(jí)封裝,避免引入過(guò)多復(fù)雜,調(diào)試容易,也減輕程序員的負(fù)擔(dān)。3、具有可擴(kuò)展性,API 開(kāi)放,當(dāng)本身功能不夠用的時(shí)候,可以自己遍碼進(jìn)行擴(kuò)展。4、開(kāi)發(fā)者活躍,產(chǎn)品有穩(wěn)定的發(fā)展保障。一、Hibernate 是JDBC 的輕量級(jí)的

11、對(duì)象封裝,它是一個(gè)獨(dú)立的對(duì)象持久層框架,和App Server,和 EJB 沒(méi)用程序的數(shù)據(jù)庫(kù)必然的聯(lián)系。Hibernate 可以用在任何 JDBC 可以使用的場(chǎng)合,例如 Java 應(yīng)接口的實(shí)現(xiàn)類,甚至可以是 BMP 里面的代碼數(shù)據(jù)庫(kù)的代碼。從這個(gè)意義上來(lái)說(shuō),Hibernate 和EB 不是一個(gè)范疇的東西,也不存在非此即彼的關(guān)系。二、Hibernate 是一個(gè)和 JDBC 密切關(guān)聯(lián)的框架,所以 Hibernate 的兼容性和 JDBC 驅(qū)動(dòng),和數(shù)據(jù)庫(kù)都有一定的關(guān)系,但是和使用它的 Java 程序,和 App Server 沒(méi)有任何關(guān)系,也不存在兼容性問(wèn)題。三、 Hibernate 不能用來(lái)直接和

12、 Entity Bean 做對(duì)比,只有放在整個(gè) J2EE 項(xiàng)目的框架中才能比較。并且即使是放在整體框架中來(lái)看,Hibernate 也是做為 JDBC 的替代者出現(xiàn)的,而不是 Entity Bean 的替代者出現(xiàn)的,讓我再列一次我已經(jīng)列 n 次的框架結(jié)構(gòu):傳統(tǒng)的架構(gòu):1) SesBean Entity Bean DB為了解決性能的替代架構(gòu):2) SesBean JDBC DB使用 Hibernate 來(lái)提高上面架構(gòu)的開(kāi)發(fā)效率的架構(gòu):3) SesBean Hibernate DB就上面 3 個(gè)架構(gòu)來(lái)分析:1、內(nèi)存消耗:采用 JDBC 的架構(gòu) 2 無(wú)疑是最省內(nèi)存的,Hibernate 的架構(gòu) 3 次

13、之,EB 的架構(gòu) 1。2、運(yùn)行效率:如果 JDBC 的代碼寫(xiě)的非常優(yōu)化,那么 JDBC 架構(gòu)運(yùn)行效率最高,但是實(shí)際項(xiàng)目中,這一點(diǎn)幾乎做不到,這需要程序員非常精通 JDBC,運(yùn)用 Batch 語(yǔ)句,調(diào)整PreapredSement 的 Batch Size 和 Fetch Size 等參數(shù),以及在必要的情況下采用結(jié)果集 cache等等。而一般情況下程序員是做不到這一點(diǎn)的。因此 Hibernate 架構(gòu)EB 的架構(gòu)效率會(huì)差的很遠(yuǎn)。最快的運(yùn)行效率。3、開(kāi)發(fā)效率:在有 JBuilder 的支持下以及簡(jiǎn)單的項(xiàng)目,EB 架構(gòu)開(kāi)發(fā)效率最高,JDBC 次之,Hibernate。但是在大的項(xiàng)目,特別是持久層關(guān)系

14、很復(fù)雜的情況下,Hibernate 效率高的驚人,JDBC 次之,而EB 架構(gòu)很可能會(huì)失敗。4、分布式,安全檢查,集群,負(fù)載均衡的支持由于有SB 做為 Facade,3 個(gè)架構(gòu)沒(méi)有區(qū)別。四、EB 和 Hibernate 學(xué)習(xí)難度在哪里?EB 的難度在哪里?不在復(fù)雜的 XML 配置文件上,而在于 EB 運(yùn)用稍微不慎,就有嚴(yán)重的性能。所以難在你需要學(xué)習(xí)很多 EJB 設(shè)計(jì)模式來(lái)避開(kāi)性能問(wèn)題,需要學(xué)習(xí) App Server和 EB 的配置來(lái)優(yōu)化 EB 的運(yùn)行效率。做 EB 的開(kāi)發(fā)工作,程序員的大部分精力都被放到了EB 的性能問(wèn)題上了,反而沒(méi)有設(shè)計(jì)上來(lái)。的精力關(guān)注本身就主要投入精力去考慮的對(duì)象持久層的H

15、ibernate 難在哪里?不在Hibernate 本身的復(fù)雜,實(shí)際上Hibernate 非常的簡(jiǎn)單,難在Hibernate太靈活了。當(dāng)你用 EB 來(lái)實(shí)現(xiàn)持久層的時(shí)候,你會(huì)發(fā)現(xiàn) EB 實(shí)在是太笨拙了,笨拙到你根本沒(méi)可以選擇的余地,所以你根本就不用花費(fèi)精力去設(shè)計(jì)方案,去平衡方案的好壞,去費(fèi)腦筋考慮選擇哪個(gè)方案,因?yàn)橹挥形ㄒ坏姆桨该媲?,你只能這么做,沒(méi)得選擇。Hibernate 相反,它太靈活了,相同,你至少可以設(shè)計(jì)出十幾種方案來(lái)解決,所以特別的,究竟用這個(gè),還是用那個(gè)呢?這些方案之間到底區(qū)別呢?他們的運(yùn)行原理不同?運(yùn)行效率哪個(gè)比較好?光是主鍵生成,就有七八種方案供你選擇,你為難不為難?集合屬性可

16、以用 Set,可以用 List,還可以用 Bag,到底哪個(gè)效率高,你為難不為難?查詢可以用 iterator,可以用 list,哪個(gè)好,區(qū)別?你為難不為難?復(fù)合主鍵你可以直接在 hbm 里面配置,也可以自定義 CustomerType,哪種比較好些?你為難不為難?對(duì)于一個(gè)表,你可以選擇單一一個(gè)對(duì)象,也可以成父子對(duì)象,還可以成兩個(gè) 1:1 的對(duì)象,在什么情況下用哪種方案比較好,你為難不為難?這個(gè)列表可以一直開(kāi)列下去,直到你不想再看下去為止。當(dāng)你面前擺著無(wú)數(shù)的眼花繚亂的方案的時(shí)候,你會(huì)覺(jué)得呢?還是呢?如果你是一個(gè)負(fù)責(zé)的程序員,那么你一定會(huì)仔細(xì)研究每種方案的區(qū)別,每種方案的效率,每種方案的適用場(chǎng)合,

17、你會(huì)覺(jué)得你已經(jīng)陷入進(jìn)去拔不出來(lái)了。如果是用 EB,你第一秒種就已經(jīng)做出了決定,根本沒(méi)得選擇,比如說(shuō)集合屬性,你只能用 Collection,如果是 Hibernate,你會(huì)在 Bag,List 和 Set 之間來(lái)回猶豫不決,甚至搞不清楚的話,程序都沒(méi)有辦法寫(xiě)。Struts 的優(yōu)點(diǎn),流程Struts controller 基本功能是.截獲用戶的 Http 請(qǐng)求把這個(gè)請(qǐng)求到一個(gè)定義好的業(yè)務(wù)操作上獲取業(yè)務(wù)操作結(jié)果,提供給客戶端決定下一步應(yīng)該顯示哪一個(gè)頁(yè)面有幾個(gè)部分共同組成了 Struts 的 Controller, 用戶的請(qǐng)求發(fā)送到 ActionServlet 中, ActionSer

18、vlet 調(diào)用 RequestProssor 開(kāi)始處理用戶請(qǐng)求的流程,在這個(gè)流程中,會(huì)查找 ApplicationConfig,得到用戶請(qǐng)求對(duì)應(yīng)的 Action,調(diào)用相應(yīng)的 Action 來(lái)具體執(zhí)行用戶的請(qǐng)求,最后返回ActionForward,轉(zhuǎn)向相應(yīng)的流程。=.apache.strution.ActionServlet 是Struts Controller 中最主要的部分,所有用戶請(qǐng)求都會(huì)被發(fā)送到這里,所有的其它處理也必須從這里經(jīng)過(guò)。ActionServlet 是從HttpServlet 中繼承過(guò)來(lái)的。當(dāng) ActionServlet 接收到 HTTP request 的時(shí)候,不管是 doG

19、et()或者 dot()方法,都會(huì)調(diào)用pros()方法。protected voidpros(HttpServletRequest request,HttpServletResponse response)throwsIOException, ServletException RequestUtilectApplication( request, getServletContext() );getApplicationConfig(request).getProsor().pros( request, response );一般情況下,不需要自己實(shí)現(xiàn)或者修改 ActionServlet 類,僅

20、僅使用就可以了。某些情況下可以自己擴(kuò)展ActionServlet 類,從 ActionServlet 繼承,實(shí)現(xiàn)自己的 MyActionServlet類。 覆蓋其 中的一些 方法來(lái) 達(dá)到你的 特殊處理的需要 。 ActionServlet 繼承自javax.servlet.http.HttpServlet,所以在本質(zhì)上它和一個(gè)普通的 servlet 沒(méi)有區(qū)別,你完全可以把它當(dāng)做一個(gè) servlet 來(lái)=,只是在其中完成的功能不同罷了。RequestProssor 具體處理用戶的 request,作為一個(gè) request handler 存在。同樣,處理request的時(shí)候,會(huì)執(zhí)行 Reques

21、tProsor 類中的 pros(execute)方法。pros 中調(diào)用的方法都是可以重載的, 如果有需要,可以實(shí)現(xiàn)為自己特定的方法。比如,對(duì)于 Locale 問(wèn)題,通常都是在系統(tǒng)最一開(kāi)始加載的時(shí)候的,如果用戶想在任何時(shí)刻都sLocale()方法。然后只需要在配置可以切換或者選擇自己的 Locale,文件中加入段就可以了就可以重載 pro=Action 類是實(shí)現(xiàn)整系的部分,它在客戶請(qǐng)求、界面表示和業(yè)務(wù)邏輯之間起到一個(gè)橋梁的作用。每一個(gè) Action 都用來(lái)處理某一項(xiàng)任務(wù),或者進(jìn)行一個(gè)業(yè)務(wù)操作。當(dāng)然了,說(shuō)一項(xiàng)任務(wù)不是說(shuō) Action 只實(shí)現(xiàn)一個(gè)業(yè)務(wù)操作方法,而是集中實(shí)現(xiàn)某一個(gè)功能單元。比如登錄用

22、的 LogonAction、查找用的 SearchAction 等等。Action 是在 RequestProsor 中,由proionPerform 方法調(diào)用的非常重要的一點(diǎn):不要在 Action 中包含任何業(yè)務(wù)邏輯操作,而是應(yīng)該調(diào)用一個(gè) M層的JavaBean 來(lái)實(shí)現(xiàn)你的業(yè)務(wù)邏輯操作。在某些情況下,可能包含少許表現(xiàn)邏輯。這樣,就可以充分進(jìn)行代碼重用,比如上例中調(diào)用的 IStorefrontService 接口,這個(gè)接口在實(shí)現(xiàn)時(shí)完全可以不用考慮客戶端的事情,所以它可以被其它部分或者其它系統(tǒng)所使用。否則的話,Action會(huì)變得非常難于理解,難于,代碼也不能重用。struts-exle 工程的設(shè)

23、計(jì)就是一個(gè) bug,它把業(yè)務(wù)邏輯封裝到了Action 類中=在Action 的execute 方法中,返回一個(gè) ActionForward 類。ActionForward 把配置文件中forward部分的信息包裝起來(lái),減少了應(yīng)用程序和物理資源信息之間的耦合性。通過(guò)ActionMap類,可以在配置文件中查找相應(yīng)的 forward 信息。例如,對(duì)于一個(gè) LoginAction,它的配置信息可能是這樣的:返回的 ActionForward 就會(huì)包含段中的信息。在 ActionMap類的 findForward 方法中,首先會(huì)根據(jù)查找 forward 的 name 查找是否有相應(yīng)的 forward 段

24、,如果沒(méi)有,則在配置文件中的段中進(jìn)行查找,如果還沒(méi)有就會(huì)拋出一個(gè)例外。=以前,頁(yè)面上的輸入數(shù)據(jù)都通過(guò)HTTP request 提交,服務(wù)方檢索出輸入的數(shù)據(jù),進(jìn)行驗(yàn)證,然后將這些數(shù)據(jù)傳遞給其它組件進(jìn)行業(yè)務(wù)處理。一切基本都需要手工編寫(xiě)代碼進(jìn)行操作,比較麻煩,也使代碼變得復(fù)雜。ActionForm.apache.strution.ActionForm用來(lái)收集用戶的輸入,并且把這些信息傳遞給 Action 對(duì)象,然后,在 Action 對(duì)象中,ActionForm 中的數(shù)據(jù)被取出來(lái)傳遞給業(yè)務(wù)邏輯層進(jìn)行處理。ActionForm 一方面作為一個(gè)緩沖區(qū),臨時(shí)用戶輸入的數(shù)據(jù);另一方面,可以把ActionFo

25、rm當(dāng)成是 HTTP 和 Action 之間的一個(gè),它可以驗(yàn)證輸入數(shù)據(jù)的正確性,如果驗(yàn)證不通過(guò),這個(gè)request 是不會(huì)發(fā)送給Action 進(jìn)行處理的。ActionForm 可以有兩種 Scope,request 或者 ses。request 就是只能在rquest 到 response,之后 ActionForm 就不可見(jiàn)了;ses可以保存時(shí)間長(zhǎng)一點(diǎn)。在 ActionForm 的 Validate 方法中返回的是ActionErrors 對(duì)象。這個(gè)對(duì)象可以將錯(cuò)誤信息都封裝起來(lái),并且自動(dòng)把它們顯示給用戶。在相應(yīng) JSP 頁(yè)面上添加,可以自動(dòng)將 ActionErrors 中的錯(cuò)誤信息顯示出來(lái)。

26、包括,每一個(gè)具體的,通過(guò) add 添加的錯(cuò)誤信息,和一個(gè) ErrorHeader 和一個(gè) ErrorFooter,這些都可以通過(guò)配置文件指定,并且可以包含HTML 語(yǔ)法。Struts 提供了四種自定義 Tag 庫(kù):bean:struts-bean taglib 包含在tag。bean 和bean 屬性時(shí)使用的 tag,也包含一些消息顯示的html:struts-html taglib 包含用來(lái)創(chuàng)建 struts 輸入表單的 tag,和其它通常用來(lái)創(chuàng)建基于 HTML用戶界面的 tag。logic:struts-logic taglib 包含的 tag 用來(lái)管理根據(jù)條件生成輸出文本,和其它一些用來(lái)

27、控制的信息。template:struts-template taglib 包含的 tag 用來(lái)定義模板機(jī)制。SQL 有幾種用戶答:SQL Server 的用戶及權(quán)限Sybase 中的用戶分為兩種:SQL 服務(wù)器用戶(登錄帳號(hào))和數(shù)據(jù)庫(kù)用戶。 安裝完 SQL 服務(wù)器后,系統(tǒng)自動(dòng)建立一個(gè) SQL 服務(wù)器用戶 sa,口令為空,即系統(tǒng)管理員,他對(duì)整個(gè)系統(tǒng)有操作權(quán),其他用戶均由系統(tǒng)管理員建立。在 SQL Server 中有三種特殊的用戶:系統(tǒng)管理員、用戶數(shù)據(jù)庫(kù)所有者(建立相應(yīng)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)用戶)DBO、一般用戶。系統(tǒng)管理員對(duì)整個(gè)系統(tǒng)有操作權(quán);用戶數(shù)據(jù)庫(kù)所有者對(duì)他所建立的數(shù)據(jù)庫(kù)具有全部操作權(quán)利;一般用戶

28、對(duì)給定的數(shù)據(jù)庫(kù)只有被的操作權(quán)限。數(shù)據(jù)庫(kù)用戶一般可分為用戶組,任一數(shù)據(jù)庫(kù)在建立后即被賦予一個(gè)用戶組public。 -)1、建立SQL 服務(wù)器用戶名(登錄帳號(hào))作為一個(gè)用戶,為了使用 SQL Server,他必須在 SQL Server 上有一個(gè)SQL 服務(wù)器用戶名(登錄帳號(hào))。這個(gè)帳號(hào)是系統(tǒng)管理員通過(guò) sp_addlogin 來(lái)增加的。sp_addlogin 登錄名,口令,庫(kù)名,語(yǔ)言,全名例:建立用戶 zhang, 口令為 zhangling(最低六位),全名為 Zhang ling 1 sp_addlogin zhang,zhangling,null,null,Zhang ling2 go3

29、select * from syslogins 4 go2、增加數(shù)據(jù)庫(kù)用戶名同樣,為了使用 SQL Server 上的數(shù)據(jù)庫(kù),他必須在數(shù)據(jù)庫(kù)中有一個(gè)用戶名,這個(gè)用戶名是數(shù)據(jù)庫(kù)所有者通過(guò) sp_adduser 來(lái)增加的。數(shù)據(jù)庫(kù)用戶名不必和用戶帳戶一樣,而且在不同的數(shù)據(jù)庫(kù)中用戶名可以不同。多個(gè)用戶可以有相同的 SQL Server 帳戶。同樣,多個(gè) SQL Server帳戶可以有相同的數(shù)據(jù)庫(kù)名。sp_adduser 登錄名,別名,組名登錄名為用戶的 SQL 服務(wù)器登錄名;別名為用戶在數(shù)據(jù)庫(kù)中的用戶名;組名為用戶所屬的數(shù)據(jù)庫(kù)用戶組。例:用戶 zhang 增加為1sp_addgroup china 2

30、goe114 的用戶,別名為 zhang1,屬于用戶組 china1sp_adduser zhang,zhang1,china gB 2go1 sp_helpuser2 go*例:刪除別名 zhang1,用戶組china,登錄名 zhang1 use2 goe1143 sp_dropuser zhang14 go5 sp_helpuser6 go 1sp_dropgroup china 2go1 sp_helpgroup2 go3 use master4 go5 sp_droplogin zhang6 go7 select * from syslogins 8 go3、數(shù)據(jù)庫(kù)操作grant 命

31、令序列 to 用戶名A. 系統(tǒng)管理員可以授予其他用戶 CREATE庫(kù)所有者。DATABASE 的權(quán)限,使其他用戶可以成為數(shù)據(jù)B. 數(shù)據(jù)庫(kù)所有者在他所擁有的數(shù)據(jù)庫(kù)中,可以授予其他用戶的權(quán)限有:l CREATE TABLE建表 lCREATE DEFAULT建缺省lCREATE RULE建規(guī)則lCREATE PROCedure建過(guò)程lCREATE VIEW建視圖lDUMP DATABASE備份數(shù)據(jù)庫(kù)lDUMP TRANion備份日志C. 數(shù)據(jù)庫(kù)對(duì)象所有者可以授予其他用戶的操作權(quán)限有l(wèi) SELECT l UPDATE l INSERTl EXECute l DELETEl REFERENCE例:授予

32、 zhang1 在數(shù)據(jù)庫(kù)e114 上建表,建視圖,建過(guò)程;對(duì)表students 有select,reference權(quán);對(duì) name,native 字段有 update 權(quán)。1 use2 goe1143 grant creat table,create procedure ,create view to zhang1 4 go5 grant select,reference on students to zhang1 with grant option 6 go 7 grant update on students(name,native) to zhang18 go9 sp_helprotec

33、t10 goXML 的優(yōu)點(diǎn)答:(1)更有意義的搜索數(shù)據(jù)可ML 唯一的標(biāo)識(shí)。沒(méi)有 XML,搜索必須了解每個(gè)數(shù)據(jù)庫(kù)是如何構(gòu)建的。這實(shí)際上是不可能的,因?yàn)槊總€(gè)數(shù)據(jù)庫(kù)描述數(shù)據(jù)都是不同的。有了 XML,書(shū)就可以很容易以標(biāo)準(zhǔn)的方式按照作者、標(biāo)題、ISBN 序號(hào)或其他的標(biāo)準(zhǔn)分類。搜索書(shū)就變得十分方便。(2)開(kāi)發(fā)靈活的 Web 應(yīng)用數(shù)據(jù)一旦建立,XML 能被發(fā)送到其他應(yīng)用、對(duì)象或者中間層服務(wù)器做進(jìn)一步地處理?;蛘咚梢园l(fā)送到桌面用瀏覽器瀏覽。XML 和HTML、公共對(duì)象模式一起為靈活的三層 Web 應(yīng)用的開(kāi)發(fā)提供了所需的技術(shù)。(4)不同來(lái)源數(shù)據(jù)的集成現(xiàn)在搜索多樣的不兼容的數(shù)據(jù)庫(kù)實(shí)際上是不可能的。XML 能夠使

34、不同來(lái)源的結(jié)構(gòu)化的數(shù)據(jù)很容易的結(jié)合在一起商可以在中間層的服務(wù)器上對(duì)從后端數(shù)據(jù)庫(kù)和其他應(yīng)用處來(lái)的數(shù)據(jù)進(jìn)行集成。然后,數(shù)據(jù)就能被發(fā)送到客戶或其他服務(wù)器做進(jìn)一步的集合、處理和分發(fā)。(5)多種應(yīng)用得到的數(shù)據(jù)XML 的擴(kuò)展性和靈活性允許它描述不同種類應(yīng)用中的數(shù)據(jù),從描述搜集的 Web 頁(yè)到數(shù)據(jù)。同時(shí),由于基于XML 的數(shù)據(jù)是自我描述的,數(shù)據(jù)不需要有換和處理。描述就能被交(6)本地計(jì)算和處理XML 格式的數(shù)據(jù)發(fā)送給客戶后,客戶可以用應(yīng)用數(shù)據(jù)并對(duì)數(shù)據(jù)進(jìn)行編輯和處理。使用者可以用不同的方法處理數(shù)據(jù),而不僅僅是顯示它。XML 文檔對(duì)象模式(DOM)允許用或其他編程語(yǔ)言處理數(shù)據(jù)。數(shù)據(jù)計(jì)算不需要回到服務(wù)器就能進(jìn)行。

35、分離使用者數(shù)據(jù)的界面,使用簡(jiǎn)單靈活開(kāi)放的格式,可以給 Web 創(chuàng)建功能強(qiáng)大的應(yīng)用原來(lái)只能建立在高端數(shù)據(jù)庫(kù)上。,這些(7)數(shù)據(jù)的多樣顯示數(shù)據(jù)發(fā)到桌面后,能夠用多種方式顯示。通過(guò)以簡(jiǎn)單開(kāi)放擴(kuò)展的方式描述結(jié)果化的數(shù)據(jù),XML 補(bǔ)充了 HTML,被廣泛的使用者界面。HTML 描述數(shù)據(jù)的外觀,而 XML 描述數(shù)據(jù)本身。由于數(shù)據(jù)顯示與內(nèi)容分開(kāi),XML 定義的數(shù)據(jù)允許指定不同的顯示方式,使數(shù)據(jù)更合理地來(lái)。本地的數(shù)據(jù)能夠以客戶配置、使用者選擇或其他標(biāo)準(zhǔn)決定的方式動(dòng)態(tài)地來(lái)。CSS 和XSL 為數(shù)據(jù)的顯示提供了的機(jī)制。(8)粒狀的更新通過(guò) XML,數(shù)據(jù)可以粒狀的更新。每當(dāng)一部分?jǐn)?shù)據(jù)變化后,不需要重發(fā)整個(gè)結(jié)構(gòu)化的數(shù)

36、據(jù)。變化的元素必須從服務(wù)器發(fā)送給客戶,變化的數(shù)據(jù)不需要刷新整個(gè)使用者的界面就能夠顯示出來(lái)。目前,只要一條數(shù)據(jù)變化了,整一頁(yè)都必須重建。這嚴(yán)重限制了服務(wù)器的升級(jí)性能。XML 也允許加進(jìn)其他數(shù)據(jù),比如需要瀏覽器發(fā)一個(gè)新的頁(yè)面。的溫度。加入的信息能夠流入存在的頁(yè)面,不(9)在Web 上發(fā)布數(shù)據(jù)由于XML 是一個(gè)開(kāi)放的基于文本的格式,它可以和 HTML 一樣使用 HTTP 進(jìn)行傳送,不需要對(duì)現(xiàn)存的網(wǎng)絡(luò)進(jìn)行變化。(10)升級(jí)性由于XML 徹底把標(biāo)識(shí)的概念同顯示分開(kāi),處理者能夠在結(jié)構(gòu)化的數(shù)據(jù)中嵌套程序化的描述以表明如何顯示數(shù)據(jù)。這是令人難以相信的強(qiáng)大的機(jī)制,使得客戶計(jì)算機(jī)同使用者間的交互作用盡可能的減少了

37、,同時(shí)減少了服務(wù)器的量和瀏覽器的響應(yīng)時(shí)間。另外,XML 使個(gè)人的數(shù)據(jù)只能通過(guò)更新的布告發(fā)生變化,減少了服務(wù)器的工作量,大大增強(qiáng)了服務(wù)器的升級(jí)性能。(11)壓縮性XML 壓縮性能很好,因?yàn)橛糜诿枋鰯?shù)據(jù)結(jié)構(gòu)的可以重復(fù)使用。XML 數(shù)據(jù)是否要壓縮要根據(jù)應(yīng)用來(lái)定,還取決于服務(wù)器與客戶間數(shù)據(jù)的傳遞量。XML 能夠使用 HTTP1.1 中的壓縮標(biāo)準(zhǔn)。(12)開(kāi)放的標(biāo)準(zhǔn)XML 基于的標(biāo)準(zhǔn)是為 Web 進(jìn)行過(guò)優(yōu)化的。微軟和其他一些公司以及 W3C 中的工作組正致力于確保 XML 的互用性,以及為開(kāi)發(fā)供支持,并進(jìn)一步發(fā)展 XML 的標(biāo)準(zhǔn)。、處理和不同系統(tǒng)和瀏覽器的使用者提XML 包括一套相關(guān)的標(biāo)準(zhǔn):可擴(kuò)展標(biāo)識(shí)語(yǔ)

38、言(XML)標(biāo)準(zhǔn),這是 W3C 正式批準(zhǔn)的。這意味著這個(gè)標(biāo)準(zhǔn)是穩(wěn)定的,完全可用于 Web 和工具的開(kāi)發(fā)。XML 名域標(biāo)準(zhǔn),這名域的句法,支持能識(shí)別名域的 XML器。文檔對(duì)象模式(DOM)標(biāo)準(zhǔn),這為給結(jié)構(gòu)化的數(shù)據(jù)編寫(xiě)能夠同計(jì)算機(jī)在基于XML 的數(shù)據(jù)上進(jìn)行交互作用。提供了標(biāo)準(zhǔn),這樣開(kāi)發(fā)就可擴(kuò)展類型語(yǔ)言(XSL)標(biāo)準(zhǔn),這是一個(gè)工作草案。XSL 有兩個(gè)模塊XSL 轉(zhuǎn)換語(yǔ)言和 XSL 格式化對(duì)象。轉(zhuǎn)換語(yǔ)言可用來(lái)轉(zhuǎn)換 XML 以滿足顯示要求。由于 XSL 的兩部分是模塊,轉(zhuǎn)換語(yǔ)言能夠獨(dú)立的用來(lái)進(jìn)行多用途的轉(zhuǎn)換,包括把 XML 轉(zhuǎn)換成結(jié)構(gòu)完整的 HTML。CSS 可應(yīng)用于結(jié)構(gòu)簡(jiǎn)單的 XML 數(shù)據(jù),但不能以不

39、同于信息如何傳遞來(lái)的方式顯示信息??蓴U(kuò)展語(yǔ)言(XLL)標(biāo)準(zhǔn)和 XML 指針語(yǔ)言(XPOER)標(biāo)準(zhǔn)是當(dāng)前的工作草案。XLL可以是多方向的,可以存在于對(duì)象提供類似與 HTML 的,但功能更強(qiáng)大。例如,上而不僅僅是頁(yè)面上。IE5 內(nèi)在不支持 XLL(13)微軟產(chǎn)品的支持微軟 IE4.0 支持通用的 XML器、XML 對(duì)象模式和 XML 數(shù)據(jù)源對(duì)象。IE5 和Office2000 支持許多添加的 XML 特性和技術(shù)。(14)新的機(jī)會(huì)作為表示結(jié)構(gòu)化數(shù)據(jù)的一個(gè)工業(yè)標(biāo)準(zhǔn),XML 為組織、開(kāi)發(fā)者、Web 站點(diǎn)和終端使用者提供了許多有利條件。的縱向市場(chǎng)數(shù)據(jù)格式建立起來(lái),被應(yīng)用于關(guān)鍵市場(chǎng)諸如高級(jí)的數(shù)據(jù)庫(kù)搜索、網(wǎng)上

40、、醫(yī)療、法律事務(wù)、電子商務(wù)和其他領(lǐng)域,這使得機(jī)會(huì)更進(jìn)一步地?cái)U(kuò)大。當(dāng)站點(diǎn)地進(jìn)行分發(fā)數(shù)據(jù),而不僅僅是提供數(shù)據(jù)瀏覽時(shí),特別的機(jī)會(huì)就產(chǎn)生了。務(wù)正從和地理位置轉(zhuǎn)移到 Web 站點(diǎn)上來(lái),而且將會(huì)由于 XML 的強(qiáng)大功能受顧益。并且,由于大多數(shù)商業(yè)應(yīng)用包括數(shù)據(jù)的處理和轉(zhuǎn)移,如單、發(fā)貨單、顧客信息、合同、圖紙等等,XML 將會(huì)實(shí)現(xiàn)。另外,使用基于 XML 的面向企業(yè)終端用戶在ernet 上的行為,許多商業(yè)應(yīng)用將能互連網(wǎng)的詞匯庫(kù),Web 站點(diǎn)上的信息,無(wú)論是在文檔中還是數(shù)據(jù)庫(kù)中,可以被標(biāo)識(shí)。這些詞匯也能夠?qū)δ切┬枰陬櫩秃凸?yīng)商之間交換信息的中小型企業(yè)提供幫助。一個(gè)重要的未開(kāi)發(fā)的市場(chǎng)是開(kāi)發(fā)使終端用戶很容易建立自

41、己的 Web 站點(diǎn)的工具,包括用來(lái)從數(shù)據(jù)庫(kù)信息和存在的使用者界面中產(chǎn)生XML 數(shù)據(jù)的工具。另外,標(biāo)準(zhǔn)模式可以開(kāi)發(fā)數(shù)據(jù),可以使用規(guī)劃、圖表、Excel 或其他電子數(shù)據(jù)表的功能。開(kāi)發(fā)的用來(lái)描述從數(shù)據(jù)庫(kù)中產(chǎn)生的 XML 的可視化工具是個(gè)很好的機(jī)會(huì)。Visual Basic,Java 和 C+編寫(xiě)。XML 數(shù)據(jù)的工具可以用XML 需要強(qiáng)大的新工具用來(lái)在文檔中顯示豐富的復(fù)雜的 XML 數(shù)據(jù),可以在分層的動(dòng)態(tài)變化的數(shù)據(jù)上用戶友好的顯示層來(lái)實(shí)現(xiàn)這一目的。XML 數(shù)據(jù)的布局圖包括數(shù)據(jù)表等。Web 站點(diǎn)可以提供報(bào)價(jià)、新文章或?qū)崟r(shí)的交易數(shù)據(jù)。通過(guò)制定信息老化的規(guī)則,信息超載可以避免。開(kāi)發(fā)用戶用來(lái)制定規(guī)則和服務(wù)器和

42、客戶用來(lái)實(shí)現(xiàn)規(guī)則的基于 XML的工具是個(gè)巨大的機(jī)會(huì)。可以用編寫(xiě)一個(gè)標(biāo)準(zhǔn)對(duì)象模式用來(lái)過(guò)濾進(jìn)來(lái)的信息,檢查的信息,創(chuàng)建輸出的信息,進(jìn)入數(shù)據(jù)庫(kù)等等。你項(xiàng)目中數(shù)據(jù)庫(kù)的設(shè)計(jì),為什么要這樣設(shè)計(jì)Java 的優(yōu)點(diǎn)1.Java 是簡(jiǎn)單的Java 與 C+極為相似,但卻簡(jiǎn)單得多。高級(jí)編程語(yǔ)言的所有特性中,不是絕對(duì)需要的都已刪去了。例如,Java 沒(méi)有算符過(guò)載、標(biāo)題文件、預(yù)處理、指針運(yùn)算、結(jié)構(gòu),聯(lián)合、數(shù)組、模板及隱式類型變換。 如果你知道一點(diǎn)C、C+或Pascal,你很快就會(huì)駕馭 Java。這里是一個(gè)簡(jiǎn)單的 Javao World 程序:public classoernet public sic void main

43、(String argv) System.out.prln(“oernet!”)2.Java 是 面象 的Java 是一種面的大部分都是對(duì)象。算子之外 Java 中象的編程語(yǔ)言 除了簡(jiǎn)單的類型,如數(shù)字和正如任何面象的語(yǔ)言一樣,Java 代碼也按類組織。每個(gè)類定義一組規(guī)定對(duì)象行為的方法。一個(gè)類可以繼承另一個(gè)類的行為。在類的根層次上,通常是類對(duì)象。Java 支持單繼承類層次結(jié)構(gòu)。這就是說(shuō) 每個(gè)類一次只能繼承一個(gè)別的類。有些語(yǔ)言允許多繼承性,但這可能造成繼承兩個(gè)完全不同的類的行為。,使語(yǔ)言不必要地復(fù)雜化。例如,難以想像一個(gè)對(duì)象會(huì)Java 還支持摘要類的接口。這允許編程先定義接口的方法,而不急于馬上確

44、定方法的實(shí)現(xiàn)。一個(gè)類可以施行多個(gè)接口從而正多繼承性的許多優(yōu)點(diǎn)。一個(gè)對(duì)象也可實(shí)施任意數(shù)量的接口。Java 接口與IDL 接口極其相似。很容易建立 IDLJ編譯器這就是說(shuō),Java 可用于 CORBA 對(duì)象系統(tǒng)來(lái)建立分布式對(duì)象系統(tǒng)。鑒于在許多計(jì)算機(jī)系統(tǒng)中都采用 IDL 接口和CORBA 對(duì)象系統(tǒng)這種兼容性是重要的。3.Java 是靜態(tài)類型的在一個(gè) Java 程序中,必須定義所用對(duì)象(數(shù)字、字符、數(shù)組等)的類型。這有助于編程很快發(fā)現(xiàn)問(wèn)題,因?yàn)楫?dāng)程序編譯時(shí)可以檢測(cè)類型錯(cuò)誤。不過(guò),Java 系統(tǒng)中的對(duì)象也有動(dòng)態(tài)類型要求一個(gè)對(duì)象為動(dòng)態(tài)類型往往是可能的,所以寫(xiě)的程序可以對(duì)不同類型的對(duì)象做不同的事。編程4.Java 是 編 譯 型 的當(dāng)運(yùn)行 Java 程序時(shí)它首先被編譯成字節(jié)代碼。字節(jié)代碼非常類似于機(jī)器指令,所以Java 程序非常高效。然而,字節(jié)代碼并不專對(duì)一種特定的機(jī)器,所以 Jav

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論