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