cookiee session區別
1 用戶端服務端
2 session瀏覽器關閉時無效,cookiee有效期間可以設定
db髒讀,在spring中託管事務可以配置/代碼 SQL標準定義了4類隔離等級
1 髒讀,一個事務獨到了另外一個事務未commit的但已經儲存的資料
2 Read Commited,一個事務只能讀取到所有已經commit的資料 MVCC MySQL InnoDB的可重複讀並不保證避免幻讀,需要應用使用加鎖讀來保證。而這個加鎖度使用到的機制就是next-key locks。
SELECT * FROM child WHERE id < 100 FOR UPDATE;可以鎖住100以內的資料,讓其他事務排隊等候
3 Repeatable Read(可重複讀),select始終返回事務開始時候的資料,適合并發讀取,但是可能產生幻讀,當更新的時候,發現和查到的資料時不一致的
4 Serializable強制事務排序,使之不可能相互衝突會有效率問題
異常分類
1 Throwable 類是 Java 語言中所有錯誤或異常的超類(這就是一切皆可拋的東西)。它有兩個子類:Error和Exception。 Exception又分為兩類:一種是CheckedException,一種是UncheckedException。
這兩種Exception的區別主要是CheckedException需要用try...catch...顯示的捕獲,而UncheckedException不需要捕獲。
2 Error類對象由Java虛擬機器產生並拋出,Exception類對象由應用程式處理或拋出 error表示恢複不是不可能但很困難的情況下的一種嚴重問題。比如說記憶體溢出。不可能指望程式能處理這樣的情況。
3 如果是運行時異常,我們可以不用方在 try catch 塊中,因為我們根本就不知道該 如何去處理這個異常來保障程式的正常運行。如果是 檢查異常,我們就要對這個異常進行處理,既然 是檢查異常,
我們應該已經有了處理這個異常的方案,所以就要用 try catch 處理這個異常來保障 程式運行。
IO NIO
http://blog.csdn.net/showwair/article/details/7488523
http://furturestrategist.iteye.com/blog/1463369
sendRedirect response.redirect 跳轉
1 sendRedirect 用戶端跳轉,用戶端發送兩次請求,最終地址顯示跳轉地址
2 response.redirect 服務端跳轉,用戶端發送一次請求,最終顯示地址為初始請求地址
RequestDispatcher reqDispatcher=request.getRequestDispacher("");
reqDispatcher.forward(request,response)
比較
“==”比較兩個變數本身的值,即兩個對象在記憶體中的首地址。
“equals()”比較字串中所包含的內容是否相同。
struts 防止重複提交
1 原理,<s: token />產生一個GUID值的隱藏輸入框,將GUID放到會話(session)中;在執行action之前,“token”攔截器將會話token與請求token比較,如果兩者相同,
則將會話中的token刪除並往下執行,否則向actionErrors加入錯誤資訊 主要用到的是
<%@ tag-lib uri="/struts-tags" prefix="s" %>
<s:form action="tokenAction"> <s:textfield name=""/> <s:token /> <input type="submit" value="發送"/> </s:form>
2 struts2在防止表單重複提交的攔截中有2個,分別是:token,tokenSession。tokenSession繼承token而來。 通常情況下,使用tokenSession用戶端感覺會比較友好,
因為tokenSession如果重複提交,不會跳轉到error.jsp頁面
<action name="tokenAction" class=""> <interceptor-ref name="defaultStack" /> <interceptor-ref name="token" />
<result name="invalid.token">/WEB-INF/notfirstsubmit.jsp</result>
</action>
Map Set Collection區別
1 Java所有“儲存及隨機訪問一連串對象”的做法,array是最有效率的一種。缺點是,無法判斷其中實際存有多少元素,length只是告訴我們array的容量
2 Collection包含List、Set,List以特定次序儲存資料,Set資料不可重複;set只能通過itorator遍曆元素,List可以使用get();
3 List包含ArrayList、LinkedList、Vector(包含棧),對於需要快速插入,刪除元素,應該使用LinkedList
4 Map 包含HashMap、HashTable、TreeMap,HashMap最快,HashMap和Hashtable類似,不同之處在於HashMap是非同步的,並且允許null
servlet是什麼
將 Servlet 封裝成 Context 容器中的 StandardWrapper,這裡 StandardWrapper 是 Tomcat 容器中的一部分,它具有容器的特徵,
而 Servlet 為了一個獨立的 web 開發標準,不應該強耦合在 Tomcat 中。 StandardWrapper 並作為子容器添加到 Context 中,
其它的所有 web.xml 屬性都被解析到 Context 中,所以說 Context 容器才是真正運行 Servlet 的 Servlet 容器。
如果 Servlet 的 load-on-startup 配置項大於 0,那麼在 Context 容器啟動的時候就會被執行個體化,前面提到在解析設定檔時會讀取預設的 globalWebXml,
在 conf 下的 web.xml 檔案中定義了一些預設的配置項,其定義了兩個 Servlet,分別是:org.apache.catalina.servlets.DefaultServlet
和 org.apache.jasper.servlet.JspServlet 它們的 load-on-startup 分別是 1 和 3,也就是當 Tomcat 啟動時這兩個 Servlet 就會被啟動。
建立 Servlet 執行個體的方法是從 Wrapper. loadServlet 開始的。loadServlet 方法要完成的就是擷取 servletClass 然後把它交給 InstanceManager
去建立一個基於 servletClass.class 的對象。如果這個 Servlet 配置了 jsp-file,那麼這個 servletClass 就是 conf/web.xml 中定義的
org.apache.jasper.servlet.JspServlet 了。
Servlet 的確已經能夠幫我們完成所有的工作了,但是現在的 web 應用很少有直接將互動全部頁面都用 servlet 來實現,而是採用更加高效的 MVC 架構來實現。
什麼JSP呢?和Servlet的關係又是什麼呢?JSP是Servlets技術的一個擴充。JSP可以做的任何事情,Servlet都可以完成。但是JSP允許你將Java代碼輕鬆地和HTML語言混合在一起使用,並完成強大的功能。可以使你容易的閱讀代碼並在瀏覽器中瀏覽到程式執行的結果。
當第一次訪問一個JSP檔案時,它會被轉換為Java servlet源碼,接著被編譯成Java位元組碼,work 存放jsp編譯後產生的class檔案