一共23種設計模式!
龍泉ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
引用《軟件秘笈-設計模式那點事》書籍:
按照目的來分,設計模式可以分為創(chuàng)建型模式、結構型模式和行為型模式。
創(chuàng)建型模式用來處理對象的創(chuàng)建過程;結構型模式用來處理類或者對象的組合;行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述。
創(chuàng)建型模式用來處理對象的創(chuàng)建過程,主要包含以下5種設計模式:
? 工廠方法模式(Factory Method Pattern)
? 抽象工廠模式(Abstract Factory Pattern)
? 建造者模式(Builder Pattern)
? 原型模式(Prototype Pattern)
? 單例模式(Singleton Pattern)
結構型模式用來處理類或者對象的組合,主要包含以下7種設計模式:
? 適配器模式(Adapter Pattern)
? 橋接模式(Bridge Pattern)
? 組合模式(Composite Pattern)
? 裝飾者模式(Decorator Pattern)
? 外觀模式(Facade Pattern)
? 享元模式(Flyweight Pattern)
? 代理模式(Proxy Pattern)
行為型模式用來對類或對象怎樣交互和怎樣分配職責進行描述,主要包含以下11種設計模式:
? 責任鏈模式(Chain of Responsibility Pattern)
? 命令模式(Command Pattern)
? 解釋器模式(Interpreter Pattern)
? 迭代器模式(Iterator Pattern)
? 中介者模式(Mediator Pattern)
? 備忘錄模式(Memento Pattern)
? 觀察者模式(Observer Pattern)
? 狀態(tài)模式(State Pattern)
? 策略模式(Strategy Pattern)
? 模板方法模式(Template Method Pattern)
? 訪問者模式(Visitor Pattern)
7 描述一下Struts的工作方法
答: 1. 包含一個controller servlet,能將用戶的請求發(fā)送到相應的Action對象。
2. JSP自由tag庫,并且在controller servlet中提供關聯支持,幫助開發(fā)員創(chuàng)建交互式表單應用。
3. 提供了一系列實用對象:XML處理、通過Java reflection APIs自動處理JavaBeans屬性、國際化的提示和消息。
Struts項目的目標是為創(chuàng)建Java web應用提供一個開放源代碼的framework。Struts framework的內核是基于例如Java Servlets, JavaBeans, ResourceBundles, 和 XML,以及各種 Jakarta Commons包的標準技術的靈活的控制層。
8 jsp有哪些內置對象?作用分別是什么?
答: JSP共有以下9種基本內置組件(可與ASP的6種內部組件相對應):
request 用戶端請求,此請求會包含來自GET/POST請求的參數
response 網頁傳回用戶端的回應
pageContext 網頁的屬性是在這里管理
session 與請求有關的會話期
application servlet 正在執(zhí)行的內容
out 用來傳送回應的輸出
config servlet的構架部件
page JSP網頁本身
exception 針對錯誤網頁,未捕捉的例外
9 兩種跳轉方式分別是什么?有什么區(qū)別?
答: 有兩種,分別為:
jsp:include page="included.jsp" flush="true"
jsp:forward page= "nextpage.jsp"/
I0前者頁面不會轉向include所指的頁面,只是顯示該頁的結果,主頁面還是原來的頁面。執(zhí)行完后還會回來,相當于函數調用。并且可 以帶參數.后者完全轉向新頁面,不會再回來。相當于go to 語句。
10 描述一下Jsp中Taglib的用法
答: 一、第一種方法:僅聲明TLD位置
在jsp文件頭部,聲明:
%@ taglib uri=”/WEB-INF/tlds/orataglib_1_0.tld” prefix=”ora”%
二、第二種方法:定義庫名稱
在jsp文件頭部,聲明:
%@ taglib uri=”/orataglib” prefix=”ora”%
在WEB.XML添加如下聲明:
taglib
taglib-uri/orataglib/taglib-uri
taglib-location/WEB-INF/tlds/orataglib_1_0.tld/taglib-location
/taglib
在tld里加上:
shortnameora/shortname
uri/orataglib/uri
11 Javascript中如何校對數字型?
答:
12 EJB2.0 中包括那些內容?作用分別是什么?
答: 規(guī)范內容包括Bean提供者,應用程序裝配者,EJB容器,EJB配置工具,EJB服務提供者,系統(tǒng)管理員。這里面,EJB容器是EJB之所以 能夠運行的核心。EJB容器管理著EJB的創(chuàng)建,撤消,激活,去活,與數據庫的連接等等重要的核心工作。 JSP,Servlet,EJB,JNDI,JDBC,JMS.....
13 一個SessionBean包含哪幾個組件?各個組件作用是什么?
答: Session Bean 包含: Stateful Session Bean 與 Stateless Session Bean
Stateful Session Bean 可以記錄 呼叫者的狀態(tài),因此通常來說,一個使用者會有一個相對應的 Stateful Session Bean 的實體。 Stateless Session Bean 不負責記錄使用者狀態(tài),也就是說當使用者呼叫 Stateless Session Bean 的時候, EJB Container 并不會 找尋特定的 Stateless Session Bean 的實體來執(zhí)行這個 method 。換言之,很可能數個使用者在執(zhí)行某個 Stateless Session Bean 的methods 時,會是同一個 Bean 的 Instance 在執(zhí)行。,
14 列舉一下你所知道的設計模式(包括EJB,J2EE的設計模式),以及它們應用的場合?
答: Factory(工廠模式), Factory Method(工廠方法模式),
Prototype(原始模型模式),Singleton(單例模式),
Adapter(適配器模式), Decorator(裝飾模式),
Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解釋器模式),
Visitor(訪問者模式),Iterator(迭代子模式),
Observer(觀察者模式), State(狀態(tài)模式),
主要用到了MVC的設計模式。用來開發(fā)JSP/Servlet或者J2EE的相關應用。
15 解析XML主要方法有哪些?各有什么區(qū)別?
答: 有DOM,SAX,STAX等
DOM:處理大型文件時其性能下降的非常厲害。這個問題是由DOM的樹結構所造成的,這種結構占用的內存較多,而且DOM必須在解析文件 之前把整個文檔裝入內存,適合對XML的隨機訪問SAX:不現于DOM,SAX是事件驅動型的XML解析方式。它順序讀取XML文件,不需要一次全部 裝載整個文件。當遇到像文件開頭,文檔結束,或者標簽開頭與標簽結束時,它會觸發(fā)一個事件,用戶通過在其回調事件中寫入處理代 碼來處理XML文件,適合對XML的順序訪問
STAX:Streaming API for XML (StAX)
16 Hashtable的原理,并說出HashMap與Hashtable的區(qū)別 Vector 和ArrayList有什么區(qū)別?
答:
HashTable的原理:通過節(jié)點的關鍵碼確定節(jié)點的存儲位置,即給定節(jié)點的關鍵碼k,通過一定的函數關系H(散列函數),得到函數值H(k),將 此值解釋為該節(jié)點的存儲地址.
就ArrayList與Vector主要從二方面來說.
一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的
二.數據增長:當需要增長時,Vector 默認增長為原來一培,而ArrayList卻是原來的一半
就HashMap與HashTable主要從三方面來說。
一.歷史原因:Hashtable是基于陳舊的Dictionary類的,HashMap是Java 1.2引進的Map接口的一個實現
二.同步性:Hashtable是線程安全的,也就是說是同步的,而HashMap是線程序不安全的,不是同步的
三.值:只有HashMap可以讓你將空值作為一個表的條目的key或value
17 JAVA SERVLET API中forward() 與redirect()的區(qū)別?
答: 前者僅是容器中控制權的轉向,在客戶端瀏覽器地址欄中不會顯示出轉向后的地址;后者則是完全的跳轉,瀏覽器將會得到跳轉的地 址,并重新發(fā)送請求鏈接。這樣,從瀏覽器的地址欄中可以看到跳轉后的鏈接地址。所以,前者更加高效,在前者可以滿足需要時,盡 量使用forward()方法,并且,這樣也有助于隱藏實際的鏈接。在有些情況下,比如,需要跳轉到一個其它服務器上的資源,則必須使用 sendRedirect()方法。
18 什么是Web容器?
答: 實現J2EE規(guī)范中web協(xié)議的應用.該協(xié)議定義了web程序的運行時環(huán)境,包括:并發(fā)性,安全性,生命周期管理等等.
19 EJB是基于哪些技術實現的?并說 出SessionBean和EntityBean的區(qū)別,StatefulBean和StatelessBean的區(qū)別.
答: EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術實現.
SessionBean在J2EE應用程序中被用來完成一些服務器端的業(yè)務操作,例如訪問數據庫、調用其他EJB組件.EntityBean被用來代 表應用系統(tǒng)中用到的數據.對于客戶機,SessionBean是一種非持久性對象,它實現某些在服務器上運行的業(yè)務邏輯;EntityBean 是一種持久性對象,它代表一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現有企業(yè)應用程序實現的實體.
Session Bean 還可以再細分為 Stateful Session Bean 與 Stateless Session Bean .這兩種的 Session Bean都可以將系統(tǒng) 邏輯放在method之中執(zhí)行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態(tài),因此通常來說,一個使用者會有一個相 對應的 Stateful Session Bean 的實體.Stateless Session Bean 雖然也是邏輯組件,但是他卻不負責記錄使用者狀態(tài),也就 是說當使用者呼叫 Stateless Session Bean 的時候,EJB Container 并不會找尋特定的 Stateless Session Bean 的實體來 執(zhí)行這個 method.換言之,很可能數個使用者在執(zhí)行某個 Stateless Session Bean 的 methods 時,會是同一個 Bean 的 Instance 在執(zhí)行.從內存方面來看,Stateful Session Bean 與 Stateless Session Bean 比較, Stateful Session Bean 會 消耗J2EE Server 較多的內存,然而 Stateful Session Bean 的優(yōu)勢卻在于他可以維持使用者的狀態(tài).
20 什么是Web Service?
答: Web Service就是為了使原來各孤立的站點之間的信息能夠相互通信、共享而提出的一種接口。
Web Service所使用的是Internet上統(tǒng)一、開放的標準,如HTTP、XML、SOAP(簡單對象訪問協(xié)議)、WSDL等,所以Web Service 可以在任何支持這些標準的環(huán)境(Windows,Linux)中使用。
注:SOAP協(xié)議(Simple Object Access Protocal,簡單對象訪問協(xié)議),它是一個用于分散和分布式環(huán)境下網絡信息交換的基于 XML的通訊協(xié)議。在此協(xié)議下,軟件組件或應用程序能夠通過標準的HTTP協(xié)議進行通訊。它的設計目標就是簡單性和擴展性,這 有助于大量異構程序和平臺之間的互操作性,從而使存在的應用程序能夠被廣泛的用戶訪問。
優(yōu)勢:
(1).跨平臺。
(2).SOAP協(xié)議是基于XML和HTTP這些業(yè)界的標準的,得到了所有的重要公司的支持。
(3).由于使用了SOAP,數據是以ASCII文本的方式而非二進制傳輸,調試很方便;并且由于這樣,它的數據容易通過防火墻,不需要防火 墻為了程序而單獨開一個“漏洞”。
(4).此外,WebService實現的技術難度要比CORBA和DCOM小得多。
(5).要實現B2B集成,EDI比較完善與比較復雜;而用WebService則可以低成本的實現,小公司也可以用上。
(6).在C/S的程序中,WebService可以實現網頁無整體刷新的與服務器打交道并取數。
缺點:
(1).WebService使用了XML對數據封裝,會造成大量的數據要在網絡中傳輸。
(2).WebService規(guī)范沒有規(guī)定任何與實現相關的細節(jié),包括對象模型、編程語言,這一點,它不如CORBA。
21 多線程有幾種實現方法,都是什么?同步有幾種實現方法,都是什么?
答: 多線程有兩種實現方法,分別是繼承Thread類與實現Runnable接口
同步的實現方面有兩種,分別是synchronized,wait與notify
22 Java編程,打印昨天的當前時刻(機試)
23 struts的工作流程?
答: 在Struts中,用戶的請求一般以*.do作為請求服務名,所有的*.do請求均被指向ActionSevlet,ActionSevlet根據Struts-config.xml中 的配置信息,將用戶請求封裝成一個指定名稱的FormBean,并將此FormBean傳至指定名稱的ActionBean,由ActionBean完成相應的業(yè)務 操作,如文件操作,數據庫操作等。每一個*.do均有對應的FormBean名稱和ActionBean名稱,這些在Struts-config.xml中配置。
24 MVC的工作原理?
答: 控制:有一個XML文件Struts-config.xml,與之相關聯的是Controller,在Struts中,承擔MVC中Controller角色的是一個Servlet,叫 ActionServlet。ActionServlet是一個通用的控制組件。這個控制組件提供了處理所有發(fā)送到Struts的HTTP請求的入口點。它截取和分 發(fā)這些請求到相應的動作類(這些動作類都是Action類的子類)。另外控制組件也負責用相應的請求參數填充 Action From(通常稱之 為FromBean),并傳給動作類(通常稱之為ActionBean)。動作類實現核心商業(yè)邏輯,它可以訪問java bean 或調用EJB。最后動作類把 控制權傳給后續(xù)的JSP 文件,后者生成視圖。所有這些控制邏輯利用Struts-config.xml文件來配置。
視圖:主要由JSP生成頁面完成視圖,Struts提供豐富的JSP 標簽庫: Html,Bean,Logic,Template等,這有利于分開表現邏輯和程序 邏輯。
模型:模型以一個或多個java bean的形式存在。這些bean分為三類:Action Form、Action、JavaBean or EJB。Action Form通常稱之 為FormBean,封裝了來自于Client的用戶請求信息,如表單信息。Action通常稱之為ActionBean,獲取從ActionSevlet傳來的FormBean ,取出FormBean中的相關信息,并做出相關的處理,一般是調用Java Bean或EJB等。
流程:在Struts中,用戶的請求一般以*.do作為請求服務名,所有的*.do請求均被指向ActionSevlet,ActionSevlet根據Struts- config.xml中的配置信息,將用戶請求封裝成一個指定名稱的FormBean,并將此FormBean傳至指定名稱的ActionBean,由ActionBean完 成相應的業(yè)務操作,如文件操作,數據庫操作等。每一個*.do均有對應的FormBean名稱和ActionBean名稱,這些在Struts-config.xml中 配置。 核心:Struts的核心是ActionSevlet,ActionSevlet的核心是Struts-config.xml。
FormBean的產生是為了提供數據給ActionBean,在ActionBean中可以取得FormBean中封裝的數據,經相應的邏輯處理后,調用業(yè)務方法 完成相應業(yè)務要求。
Servlet的演變:在常規(guī)的 JSP,Servlet,JavaBean三層結構中,JSP實現View的功能,Servlet實現Controller的功能,JavaBean實現 Model的實現。
在Struts中,將常規(guī)情況下的Servlet拆分與ActionServlet、FormBean、ActionBean三個部分。ActionServlet配合Struts-config.xml ,專職完成頁面導航,而不再負責具
25 寫一段實現楊輝三角的代碼?
答:
26 java里的方法重載和方法覆蓋有什么區(qū)別?
答: 1、方法的覆蓋是子類和父類之間的關系,是垂直關系;方法的重載是同一個類中方法之間的關系,是水平關系。
2、覆蓋只能由一個方法,或只能由一對方法產生關系;方法的重載是多個方法之間的關系。
3、覆蓋要求參數列表相同;重載要求參數列表不同。
4、覆蓋關系中,調用那個方法體,是根據對象的類型(對象對應存儲空間類型)來決定;重載關系,是根據調用時的實參表與形參表來 選擇方法體的。
27 jsp有哪些動作?作用分別是什么?
答: JSP共有以下6種基本動作
jsp:include:在頁面被請求的時候引入一個文件。
jsp:useBean:尋找或者實例化一個JavaBean。
jsp:setProperty:設置JavaBean的屬性。
jsp:getProperty:輸出某個JavaBean的屬性。
jsp:forward:把請求轉到一個新的頁面。
jsp:plugin:根據瀏覽器類型為Java插件生成OBJECT或EMBED標記
28 一個int型的數組與一個int值,查詢int值在數組中的index值,還要寫兩個測試用例
答:
29 線程的工作機制?wait與sleep的區(qū)別
答: sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時后會自動恢復 。調用sleep不會釋放對象鎖。
wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方 法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態(tài)。
30 Servlet與GenericServlet,HttpServlet的區(qū)別?在程序中一般用哪個?并實現什么方法?
答:
31 Hibernate的工作原理?
答: Hibernate是一個JDO工具。它的工作原理是通過文件把值對象和數據庫表之間建立起一個映射關系,這樣,我們只需要通過操作這些 值對象和Hibernate提供的一些基本類,就可以達到使用數據庫的目的。
32 寫出實現單例模式的代碼?
答:
33 J2EE是什么?J2EE中有哪些組件,你的項目中用到了哪些組件?
答: Je22是Sun公司提出的多層(multi-diered),分布式(distributed),基于組件(component-base)的企業(yè)級應用模型(enterpriese application model).在這樣的一個應用系統(tǒng)中,可按照功能劃分為不同的組件,這些組件又可在不同計算機上,并且處于相應的層次 (tier)中。所屬層次包括客戶層(clietn tier)組件,web層和組件,Business層和組件,企業(yè)信息系統(tǒng)(EIS)層
34 簡述你的項目的架構及工作流程?
答:
35 String 和 StringBuffer 的區(qū)別?什么情況下用哪種字符串類?
答: JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數據。這個String類提供了 數值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。當你知道字符數據要改變的時候你就可以使用StringBuffer。 典型地,你可以使用StringBuffers來動態(tài)構造字符數據。
36 java 中的序列化操作要實現什么接口?并實現什么方法?
答: 實現Externalizable接口。Externalizable接口定義包括兩個方法writeExternal()與readExternal()。利用這些方法可以控制對象數據 成員如何寫入字節(jié)流.類實現Externalizable時,頭寫入對象流中,然后類完全負責序列化和恢復數據成員。
37 接口中可以定義屬性嗎?如果可以應該定義什么類型的屬性?
答:可以 應該定義public類型的屬性,不寫則默認為 public static類型的
JavaScript 是一種腳本語言,官方名稱為 ECMAScript(因定義語言的標準為 ECMA-262)。JS 的主要特點:1. 語法類似于常見的高級語言,如 C 和 Java;2. 腳本語言,不需要編譯就可以由解釋器直接運行;3. 變量松散定義,屬于弱類型語言;4. 面向對象的。
JS 最初是為網頁設計而開發(fā)的,現在也是 Web 開發(fā)的重要語言。它支持對瀏覽器(瀏覽器對象模型,BOM)和 HTML 文檔(文檔對象模型,DOM)進行操作,而使網頁呈現動態(tài)的交互特性。
嚴格的說,JS 只是 ECMAScript 的一種實現,是 ECMAScript 和 BOM、DOM 組成的一種 Web 開發(fā)技術。
javascript原型,原型鏈特點:原型鏈實現了繼承。
JS中每個函數都存在有一個原型對象屬性prototype。并且所有函數的默認原型都是Object的實例。每個繼承父函數的子函數的對象都包含一個內部屬性proto。該屬性包含一個指針,指向父函數的prototype。若父函數的原型對象的_proto_屬性為再上一層函數。在此過程中就形成了原型鏈。
原型鏈的作用是用來實現繼承,比如我們新建一個數組,數組的方法就是從數組的原型上繼承而來的。
var arr = [];
arr.map === Array.prototype.map //arr.map
是從arr.__proto__上繼承下來的,arr.__proto__也就是Array.prototype。
擴展資料:
1.JS中每個函數都存在有一個原型對象屬性prototype。并且所有函數的默認原型都是Object的實例。
2.每個繼承父函數的子函數的對象都包含一個內部屬性_proto_。該屬性包含一個指針,指向父函數的prototype。若父函數的原型對象的_proto_屬性為再上一層函數。在此過程中就形成了原型鏈。
3.原型鏈實現了繼承。原型鏈存在兩個問題:a 包含引用類型值的原型屬性會被所有實例共享。b 在創(chuàng)建子類型時,無法向超類型的構造函數中傳遞參數。
參考資料:百度百科-javascript
本文名稱:javascript享元,享元模式 js
新聞來源:http://www.sd-ha.com/article2/dsesoic.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站設計、網站內鏈、手機網站建設、企業(yè)網站制作、響應式網站、面包屑導航
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯