知识点记录
????KeepAlive的連接活躍時(shí)間當(dāng)然是受KeepAliveTimeOut限制的。如果第二次請(qǐng)求和第一次請(qǐng)求之間超過(guò)KeepAliveTimeOut的時(shí)間的話,第一次連接就會(huì)中斷,再新建第二個(gè)連接。???
????所以,一般情況下,圖片較多的網(wǎng)站應(yīng)該把KeepAlive設(shè)為On。但是KeepAliveTimeOut應(yīng)該設(shè)置為多少秒就是一個(gè)值得討論的問(wèn)題了。
????如果KeepAliveTimeOut設(shè)置的時(shí)間過(guò)短,例如設(shè)置為1秒,那么APACHE就會(huì)頻繁的建立新連接,當(dāng)然會(huì)耗費(fèi)不少的資源;反過(guò)來(lái),如果KeepAliveTimeOut設(shè)置的時(shí)間過(guò)長(zhǎng),例如設(shè)置為300秒,????????
????那么?APACHE中肯定有很多無(wú)用的連接會(huì)占用服務(wù)器的資源,也不是一件好事。???
????所以,到底要把KeepAliveTimeOut設(shè)置為多少,要看網(wǎng)站的流量、服務(wù)器的配置而定。???
????其實(shí),這和MySql的機(jī)制有點(diǎn)相似,KeepAlive相當(dāng)于mysql_connect或mysql_pconnect,KeepAliveTimeOut相當(dāng)于wait_timeout。?
????# Timeout: The number of seconds before receives and sends time out.
????#Timeout:接收和發(fā)送數(shù)據(jù)的超時(shí)設(shè)置,秒數(shù)
????比如Timeout=n 秒,是不是說(shuō),比如一個(gè)http的tcp連接建立好后,服務(wù)器端最多等待n秒,如果這n秒鐘客戶端沒(méi)有發(fā)來(lái)請(qǐng)求,服務(wù)器端會(huì)斷開(kāi)連接?
8.eclipse中的refactor工具: ????Push Down 和 Pull Up,分別實(shí)現(xiàn)將類方法或者屬性從一個(gè)類移動(dòng)到其子類或父類中。 9.linux最大線程數(shù) http://hi.baidu.com/dburu/blog/item/f4a61ffae4403d8059ee90bb.html ????幾個(gè)命令: ????????查看最大線程數(shù):cat /proc/sys/kernel/threads-max ????????ulimit -a ???????? 10.Node.js的應(yīng)用場(chǎng)景: ????但這些場(chǎng)景均不是Node所擅長(zhǎng)的。Node更擅長(zhǎng)處理體積小的請(qǐng)求以及基于事件的I/O,使用Node解決客戶端和服務(wù)器之間的快速溝通,使用表單提交將大量的數(shù)據(jù)發(fā)送給服務(wù)器,使用PHP和Perl來(lái)處理重型數(shù)據(jù)庫(kù)操作以及動(dòng)態(tài)HTML頁(yè)面的生成。使用Node運(yùn)行于服務(wù)器端來(lái)處理體積不大的請(qǐng)求。不管是采用Rails還是Spring以及各式各樣的服務(wù)端容器,只要按需索取即可。一定要明白你需要解決的問(wèn)題是什么,基于此采取最佳解決方案,而不是基于你當(dāng)下所掌握的技能來(lái)解決遇到的問(wèn)題。 Node的簡(jiǎn)單的初衷 學(xué)習(xí)Node可能會(huì)有些吃力,但是非常值得的。為什么?因?yàn)槟阏趯で蠡贘avaScript的web應(yīng)用的解決方案。這意味著你已有的JavaScript編程技能不會(huì)丟掉,當(dāng)你需要使用PHP或者Perl時(shí),你必須重新學(xué)習(xí)一門(mén)新的語(yǔ)言,而Node不必如此大動(dòng)干戈。學(xué)習(xí)新語(yǔ)言帶來(lái)的問(wèn)題比學(xué)習(xí)他們帶來(lái)的好處要大的多。 學(xué)習(xí)Node所面臨的挑戰(zhàn)是,你需要更加活躍思維,將程序拆成低耦合的小片段,然后像組裝數(shù)組一樣的組裝他們。但Node和基于事件的I/O并不能解決所有問(wèn)題,但確定的是,很多關(guān)鍵問(wèn)題,只能依靠Node來(lái)解決。 11.精而不散 ????當(dāng)你越來(lái)越深入你的編程時(shí),你會(huì)發(fā)現(xiàn)你不必每個(gè)工具、API和所使用的框架都達(dá)到精通。將刀用在刀刃上,不要將錘子當(dāng)成鉆頭來(lái)使用。了解每個(gè)工具所適用的場(chǎng)景和能解決的問(wèn)題,然后找到這個(gè)工具的最適合的應(yīng)用場(chǎng)景。如果你想變成超人式的通才(程序員往往什么都想知道),你離“專家”也就越來(lái)越遠(yuǎn),所謂專家,就是指在一兩個(gè)方面達(dá)到非常精通。當(dāng)然,每個(gè)老板都希望能找到超人式的通才,但這種人往往可遇不可求。 12.思科、華為等設(shè)備基本配置大全(強(qiáng)烈推薦) ???? http://down.51cto.com/data/339087# 13.java編碼規(guī)范: ????注釋規(guī)范: ????① 代碼的版權(quán)信息。 ????② 類描述信息,描述類的主要職責(zé)和用處。 ????③ 方法描述信息,描述方法是做什么的,如何調(diào)用,最好給出調(diào)用代碼示例。 ????④ JavaDoc tags ,用來(lái)生成 Html 形式的 API 文檔 ????⑤ 內(nèi)部實(shí)現(xiàn)注釋,用于描述復(fù)雜的算法,長(zhǎng)方法,從為什么要這么做角度去 描述? ???? ????1)盡可能在類描述中加入代碼調(diào)用示例,使用<pre></pre>標(biāo)記,提示JavaDoc 工具不要改變格式.? ????2)使用@deprecated 廢棄方法,不要?jiǎng)h掉它。? ????3)對(duì)一些基本數(shù)據(jù)類型和不太可能通過(guò)繼承進(jìn)行擴(kuò)展的類,應(yīng)聲明為final,提高效率。? ????4)每個(gè)方法不超過(guò)25行 ????5)里氏代換原則是繼承復(fù)用的基石。? ????6)編寫(xiě)代碼前,先編寫(xiě)注釋(可以認(rèn)為是偽代碼) ,先想后寫(xiě) ????7) ????8) ????9) ????10) ????11) ????12) ????13) ????14) ????15) ????16) ????17) ????18) ????19) ????20) 14.泛型方法簽名相同,返回值相同,編譯不通過(guò),原因是是jvm支持簽名相同,返回值相同的方法。 ???泛型方法簽名相同,返回值不同,編譯可通過(guò),原因是是jvm支持簽名不同,返回值相同的方法,只是java語(yǔ)法不支持,但是通過(guò)泛型又可以。 http://topic.csdn.net/u/20090912/22/faeba87b-25e8-4110-bc1b-791a8aca78e6.html 15.if(1>2) ????String a = "1"; //編譯錯(cuò)誤 ????原因:java語(yǔ)法限制,if后面要跟一個(gè)statement,而一個(gè)變量的聲明卻不能算作是一個(gè)statement,所以無(wú)法通過(guò)。 ????建議:所有if語(yǔ)句都用{}包圍 16.form提交主要有下面3種方式:????application/x-www-form-urlencoded:窗體數(shù)據(jù)被編碼為名稱/值對(duì)。這是標(biāo)準(zhǔn)的編碼格式。這是默認(rèn)的方式
????multipart/form-data:窗體數(shù)據(jù)被編碼為一條消息,頁(yè)上的每個(gè)控件對(duì)應(yīng)消息中的一個(gè)部分。二進(jìn)制數(shù)據(jù)傳輸方式,主要用于上傳文件
????text/plain:窗體數(shù)據(jù)以純文本形式進(jìn)行編碼,其中不含任何控件或格式字符。 17.REST的優(yōu)點(diǎn)
可以利用緩存Cache來(lái)提高響應(yīng)速度
通訊本身的無(wú)狀態(tài)性可以讓不同的服務(wù)器的處理一系列請(qǐng)求中的不同請(qǐng)求,提高服務(wù)器的擴(kuò)展性
瀏覽器即可作為客戶端,簡(jiǎn)化軟件需求
相對(duì)于其他疊加在HTTP協(xié)議之上的機(jī)制,REST的軟件依賴性更小
不需要額外的資源發(fā)現(xiàn)機(jī)制
在軟件技術(shù)演進(jìn)中的長(zhǎng)期的兼容性更好 18.servlet轉(zhuǎn)發(fā)和重定向的底層實(shí)現(xiàn)區(qū)別: ????sendRedirect???轉(zhuǎn)發(fā)? : 實(shí)際上指定的是瀏覽器的location,因此無(wú)論是不是絕對(duì)路徑,最后都要被轉(zhuǎn)化為絕對(duì)路徑的形式, ???????????????????????????對(duì)于參數(shù)的傳遞只通過(guò)URL。 ????forward????????重定向:?實(shí)際上通過(guò)轉(zhuǎn)發(fā)流完成。服務(wù)端對(duì)client的發(fā)送數(shù)據(jù)的過(guò)程是通過(guò)先將數(shù)據(jù)輸出到緩沖區(qū),然后將緩沖區(qū)發(fā)送到 ???????????????????????????client,合適緩沖區(qū)會(huì)發(fā)送呢?三種情況: ???????????????????????????1).緩沖區(qū)滿。2).request請(qǐng)求完成。3).程序調(diào)用flush等方法。 ??????????????????????????????????????????????????????如果在<JSP:FORWORD>之前有很多輸出, 前面的輸出已使緩沖區(qū)滿,將自動(dòng)輸出到客戶端, ???????????????????????????那么這種重定向方式將不起作用,這一點(diǎn)應(yīng)該特別注意。??? 19.java序列化的到底是什么 ??????請(qǐng)記住序列化機(jī)制只保存對(duì)象的類型信息,屬性的類型信息和屬性值,和方法沒(méi)有什么關(guān)系,你就是給這個(gè)類增加10000個(gè)方法,序列化內(nèi)容也不會(huì)增加任何東西,不要想當(dāng)然的臆測(cè)自己不了解的知識(shí),動(dòng)手去做! 20.Ajax是否能跨域請(qǐng)求,解決的辦法: ????????http://blog.csdn.net/beidou321/article/details/6490479 21.遍歷map的同時(shí)刪除元素,如何避免ConcurrentModificationException. http://www.blogjava.net/EvanLiu/archive/2008/08/31/224453.html ??? 產(chǎn)生ConcurrentModificationException的原因就是: ????執(zhí)行remove(Object o)方法之后,modCount和expectedModCount不相等了。 ????然后當(dāng)代碼執(zhí)行到next()方法時(shí),判斷了checkForComodification(),發(fā)現(xiàn)兩個(gè)數(shù)值不等, ????就拋出了該Exception。要避免這個(gè)Exception,就應(yīng)該使用remove()方法。 ????也是同樣的原因,但沒(méi)有對(duì)應(yīng)的add()方法。 ???? ????Iterator 是工作在一個(gè)獨(dú)立的線程中,并且擁有一個(gè) mutex 鎖。 ????Iterator 被創(chuàng)建之后會(huì)建立一個(gè)指向原來(lái)對(duì)象的單鏈索引表,當(dāng)原來(lái)的對(duì)象數(shù)量發(fā)生變化時(shí), 這個(gè)索引表的內(nèi)容不會(huì)同步改變,所以當(dāng)索引指針往后移動(dòng)的時(shí)候就找不到要迭代的對(duì)象,所以按照 fail-fast 原則 Iterator 會(huì)馬上拋出 java.util.ConcurrentModificationException 異常。所以 Iterator 在工作的時(shí)候是不允許被迭代的對(duì)象被改變的。但你可以使用 Iterator 本身的方法 remove() 來(lái)刪除對(duì)象, Iterator.remove() 方法會(huì)在刪除當(dāng)前迭代對(duì)象的同時(shí)維護(hù)索引的一致性。 22.java定時(shí)器,計(jì)劃任務(wù). Timer類的用法。 ????Timer time = new Timer(); ????timer = new Timer(); ????timer.schedule(new TimerTask() { ???????? @Override ????????public void run() { ?????????????LiveUsers lu = LiveUsers.getInstance(); ???????? } ????}, 0, 15); ????停止任務(wù): ????time.cancle(); 23.關(guān)于Servlet的多線程是如何實(shí)現(xiàn)?
- ????Servlet是單例的,一個(gè)servlet只在此servlet被第一次請(qǐng)求時(shí)創(chuàng)建一個(gè)實(shí)例,而之后的操作都是由容器來(lái)管理,容器啟動(dòng)多個(gè)線程調(diào)用這個(gè)servlet。
- ????Servlet是運(yùn)行在Servlet容器中的,由Servlet容器來(lái)負(fù)責(zé)Servlet實(shí)例的查找、創(chuàng)建以及整個(gè)生命周期的管理
- ????Servlet整個(gè)生命周期可以分為四個(gè)階段:類裝載及實(shí)例創(chuàng)建階段、實(shí)例初始化階段、服務(wù)階段以及實(shí)例銷毀階段。
- ????
- ????struts中action跟servlet也是同樣原理,單例,創(chuàng)建一次,使用N次。所以也要使用實(shí)例字段,除非不會(huì)改變的值。?
????struts2中action那就不一樣了,他為每次請(qǐng)求都創(chuàng)建一次,使用一次,創(chuàng)建一次。?所以他可以把頁(yè)面上表單寫(xiě)成自己實(shí)例字段。接受攔截器值注入。
- DAO的公共接口中的方法是否拋出檢查過(guò)的異常?
- 如果是的話,拋出何種檢查過(guò)的異常?
- 在DAO實(shí)現(xiàn)類中如何處理異常?
- DAO方法應(yīng)該拋出有意義的異常。
- DAO方法不應(yīng)該拋出 java.lang.Exception.java.lang.Exception 太一般化了。它不傳遞關(guān)于底層問(wèn)題的任何信息。
- DAO方法不應(yīng)該拋出 java.sql.SQLException.SQLException 是一個(gè)低級(jí)別的 JDBC 異常。一個(gè)DAO應(yīng)該力爭(zhēng)封裝JDBC而不是將JDBC公開(kāi)給應(yīng)用程序的其余部分。
- 只有在可以合理地預(yù)期調(diào)用者可以處理異常時(shí),DAO 接口中的方法才應(yīng)該拋出檢查過(guò)的異常。如果調(diào)用者不能以有意義的方式處理這個(gè)異常,那么考慮拋出一個(gè)未檢查的(運(yùn)行時(shí))異常。
- 如果數(shù)據(jù)訪問(wèn)代碼捕獲了一個(gè)異常,不要忽略它。忽略捕獲的異常的 DAO 是很難進(jìn)行故障診斷的。
- 使用鏈接的異常將低級(jí)別的異常轉(zhuǎn)化為高級(jí)別的異常。
- 考慮定義標(biāo)準(zhǔn) DAO 異常類。Spring Framework (參閱 參考資料)提供了很好的一套預(yù)定義的 DAO 異常類。
- SCP 用法:http://www.cnblogs.com/codinglog/archive/2009/11/17/1605021.html
- 利用secureCRT自帶工具 sz 和 rz,注:大文件rar等,加上參數(shù) be 上傳如 rz -be (b表示binary)不要用ascii
- 理工puzzty附帶的exe :pscp 多用于windows向linux傳東西 pscp file root@IP:/home
- 1. 資源重用?
由于數(shù)據(jù)庫(kù)連接得到重用,避免了頻繁創(chuàng)建、釋放連接引起的大量性能開(kāi)銷。在減少系統(tǒng)消耗的基礎(chǔ)上,另一方面也增進(jìn)了系統(tǒng)運(yùn)行環(huán)境的平穩(wěn)性(減少內(nèi)存碎片以及數(shù)據(jù)庫(kù)臨時(shí)進(jìn)程/線程的數(shù)量)。?
2. 更快的系統(tǒng)響應(yīng)速度?
數(shù)據(jù)庫(kù)連接池在初始化過(guò)程中,往往已經(jīng)創(chuàng)建了若干數(shù)據(jù)庫(kù)連接置于池中備用。此時(shí)連接的初始化工作均已完成。對(duì)于業(yè)務(wù)請(qǐng)求處理而言,直接利用現(xiàn)有可用連接,避免了數(shù)據(jù)庫(kù)連接初始化和釋放過(guò)程的時(shí)間開(kāi)銷,從而縮減了系統(tǒng)整體響應(yīng)時(shí)間。?
3. 新的資源分配手段?
對(duì)于多應(yīng)用共享同一數(shù)據(jù)庫(kù)的系統(tǒng)而言,可在應(yīng)用層通過(guò)數(shù)據(jù)庫(kù)連接的配置,實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池技術(shù),幾年錢(qián)也許還是個(gè)新鮮話題,對(duì)于目前的業(yè)務(wù)系統(tǒng)而言,如果設(shè)計(jì)中還沒(méi)有考慮到連接池的應(yīng)用,那么…….快在設(shè)計(jì)文檔中加上這部分的內(nèi)容吧。某一應(yīng)用最大可用數(shù)據(jù)庫(kù)連接數(shù)的限制,避免某一應(yīng)用獨(dú)占所有數(shù)據(jù)庫(kù)資源。?
4. 統(tǒng)一的連接管理,避免數(shù)據(jù)庫(kù)連接泄漏?
在較為完備的數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)中,可根據(jù)預(yù)先的連接占用超時(shí)設(shè)定,強(qiáng)制收回被占用連接。從而避免了常規(guī)數(shù)據(jù)庫(kù)連接操作中可能出現(xiàn)的資源泄漏。一個(gè)最小化的數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn):? - 介紹及java實(shí)現(xiàn)???? http://www.soft6.com/tech/8/89970.html
????????????執(zhí)行后 返回false 頁(yè)面不跳轉(zhuǎn) 保存在當(dāng)前位置 38.直接定義action的目標(biāo),不寫(xiě)java類。相當(dāng)于一個(gè)轉(zhuǎn)發(fā) ????????<!-- 直接導(dǎo)航的的 Action 定義 --> ????????<action name="index" > ????????????<result >/jsp/login.jsp</result> ????????</action> ????十分有用,對(duì)于攔截器只攔截jsp的問(wèn)題 迎刃而解。 39.struts2 標(biāo)簽中插入css屬性: ????struts2標(biāo)簽有兩個(gè)應(yīng)用css的屬性:cssClass和cssStyle。cssClass是你在css文件中創(chuàng)建的class的名稱;cssStyle是一個(gè)css格式化串(內(nèi)聯(lián)的style)。 ????使用示例如下: ?????<s:checkbox cssClass="mycheckbox" label="checkbox test" name="checkboxField1" value="aBoolean" fieldValue="true"/> ????這是css文件: ??????<style> ??????????.mycheckbox{ ????????????/* Your style here */ ??????????} ??????</style> 40.在Struts2中使用servlet?: ????我們?nèi)粝朐趕truts2中使用servlet只需要在struts2配置文件中加入一個(gè)constant即可: ????<constantname="struts.action.excludePattern"value="/YourServletPattern"/> ????注: ????????include在英語(yǔ)中是“包含” ????????exclude是它的反義詞 41.改變struts中的.action擴(kuò)展名 ??????<constant?name="struts.action.extension"?value="html"/>放于<struts 之后和<package 之前 42.struts2 的action實(shí)現(xiàn)SessionAware接口,獲取 session的原理。 ????原來(lái)默認(rèn)攔截器在處理過(guò)程中發(fā)現(xiàn)action實(shí)現(xiàn)了sessionaware接口,便會(huì)調(diào)用實(shí)現(xiàn)的setSession方法,將actioncontext中的session注入到目標(biāo)Action 中的session。源碼分析:http://hi.baidu.com/winters1224/blog/item/7299e907c2681798d43f7cc2.html 43.遠(yuǎn)程登錄linux的shell,中文亂碼問(wèn)題 ????vi /etc/sysconfig/i18n 改為: LANG="zh_CN.GB18030"? LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"? SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"? SYSFONT="lat0-sun16" 44.生成的.class字節(jié)碼文件 當(dāng)中一些名字中包含$之類的是什么? 45.全局?jǐn)r截器過(guò)濾非法用戶請(qǐng)求(未登錄等) <interceptors> <!-- 配置未登錄進(jìn)行操作的攔截Q--> <interceptor name="loginInterceptor" class="cn.redcdn.scweb.interceptor.SessionInterceptor"> </interceptor> <!-- 重新封裝一個(gè)默認(rèn)的攔截器棧Q --> <interceptor-stack name="myDefaultStack"> <interceptor-ref name="loginInterceptor" /> <interceptor-ref name="defaultStack" /> </interceptor-stack> </interceptors> <!-- 為這個(gè)包設(shè)置默認(rèn)的攔截器Q--> <default-interceptor-ref name="myDefaultStack" /> <!-- 設(shè)置全局的返回Z--> <global-results> <result name="gotologin">/index.jsp</result> </global-results> 如果要不攔截某個(gè)action那么,在某一個(gè)action中加入默認(rèn)的攔截器就可以覆蓋全局?jǐn)r截器。?? <action name="regist" class="cn.redcdn.scweb.action.RegistAction"> <interceptor-ref name="defaultStack"></interceptor-ref> <result name="success">/login_complete.jsp</result> <result name="error"></result> </action> 46.threadlocal是什么?用處及用法?綁定數(shù)據(jù)庫(kù)連接的意義?弊端? 47.struts2 action 返回類型 result 有幾種 。默認(rèn)的不寫(xiě)是的是什么類型。參數(shù)傳遞相關(guān)? 48.默認(rèn)的action,當(dāng)訪問(wèn)不存在action時(shí)候就會(huì)訪問(wèn)默認(rèn)action。否則會(huì)報(bào)一堆錯(cuò)誤。 http://archive.cnblogs.com/a/2125048/ 49. 一個(gè)典型的log4j配置
log4j.rootLogger=DEBUG?
#將DAO層log記錄到DAOLog,allLog中 ?使用時(shí)可以get("DAO")
log4j.logger.DAO=DEBUG,A2,A4?
#將邏輯層log記錄到BusinessLog,allLog中?
log4j.logger.Businesslog=DEBUG,A3,A4?
#A1--打印到屏幕上?
log4j.appender.A1=org.apache.log4j.ConsoleAppender?
log4j.appender.A1.layout=org.apache.log4j.PatternLayout?
log4j.appender.A1.layout.ConversionPattern=%-5p [%t] %37c %3x - %m%n?
#A2--打印到文件DAOLog中--專門(mén)為DAO層服務(wù)?
log4j.appender.A2=org.apache.log4j.DailyRollingFileAppender?
log4j.appender.A2.file=DAOLog?
log4j.appender.A2.DatePattern='.'yyyy-MM-dd?
log4j.appender.A2.layout=org.apache.log4j.PatternLayout?
log4j.appender.A2.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}?
method:%l%n%m%n?
#A3--打印到文件BusinessLog中--專門(mén)記錄邏輯處理層服務(wù)log信息?
log4j.appender.A3=org.apache.log4j.DailyRollingFileAppender?
log4j.appender.A3.file=BusinessLog?
log4j.appender.A3.DatePattern='.'yyyy-MM-dd?
log4j.appender.A3.layout=org.apache.log4j.PatternLayout?
log4j.appender.A3.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}?
method:%l%n%m%n?
#A4--打印到文件alllog中--記錄所有l(wèi)og信息?
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender?
log4j.appender.A4.file=alllog?
log4j.appender.A4.DatePattern='.'yyyy-MM-dd?
log4j.appender.A4.layout=org.apache.log4j.PatternLayout?
log4j.appender.A4.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS}?
method:%l%n%m%n
struts.properties配置文件
#指定Struts2處于開(kāi)發(fā)狀態(tài)
struts.devMode? =? false
#指定Struts 2 配置文件改變后,?? Web框架是否重新加載Struts 2配置文件
struts.configurations.xml.reload = true
開(kāi)發(fā)狀態(tài)是什么: Once you set this attribute to true Struts will check the config file for every request. This will save lot of development time as you need not restart server for struts.xml changes.? ? ??轉(zhuǎn)載于:https://www.cnblogs.com/biGpython/archive/2012/03/24/2415647.html
總結(jié)
- 上一篇: ESET最近发现了一款新的Android
- 下一篇: 使用Kinect制作变身钢铁侠