HikariCP

數據庫鏈接池技術
數據庫鏈接池負責分配、管理和釋放數據庫的鏈接。
  1. 數據庫鏈接複用。重複使用現有的數據庫鏈接,能夠避免鏈接頻繁創建、關閉的開銷。
  2. 統一的鏈接管理。釋放空閒時間超過最大空閒時間的數據庫鏈接,避免由於沒有釋放數據庫鏈接而引發的數據庫鏈接泄漏。
HikariCP
字節碼精簡:優化代碼,直到編譯後的字節碼最少,這樣,CPU緩存能夠加載更多的程序代碼;
優化代理和攔截器:減小代碼,例如HikariCP的Statement proxy只有100行代碼,只有BoneCP的十分之一;
自定義數組類型(FastStatementList)代替ArrayList:避免每次get()調用都要進行range check,避免調用remove()時的從頭至尾的掃描;
自定義集合類型(ConcurrentBag):提升併發讀寫的效率;
其餘針對BoneCP缺陷的優化,好比對於耗時超過一個CPU時間片的方法調用的研究(但沒說具體怎麼優化)。
數據庫鏈接中斷的狀況測試:
HikariCP:等待5秒鐘後,若是鏈接仍是沒有恢復,則拋出一個SQLExceptions 異常;後續的getConnection()也是同樣處理;
C3P0:徹底沒有反應,沒有提示,也不會在「CheckoutTimeout」配置的時長超時後有任何通知給調用者;而後等待2分鐘後終於醒來了,返回一個error;
Tomcat:返回一個connection,而後……調用者若是利用這個無效的connection執行SQL語句……結果可想而知;大約55秒以後終於醒來了,這時候的getConnection()終於能夠返回一個error,但沒有等待參數配置的5秒鐘,而是當即返回error;
BoneCP:跟Tomcat的處理方法同樣;也是大約55秒以後才醒來,有了正常的反應,而且終於會等待5秒鐘以後返回error了;
HttpServletRequest的ServletRequest中和都是接口
HttpServletRequest的繼承自ServletRequest中 
HttpServletRequest比ServletRequest多了一些針對於Http協議的方法。例如:
getHeader(),  getMethod(),  getSession() 
1.得到客戶機信息
    getRequestURL方法返回客戶端發出請求的完整
    URL。getRequestURI方法返回請求行中的資源名部分
    。getQueryString方法返回請求行中的參數部分
    。getRemoteAddr方法返回發出請求的客戶機的IP地址
    getRemoteHost方法返回發出請求的客戶機的完整主機名
    getRemotePort方法返回客戶機所用的網絡端口號
    getLocalAddr方法返回WEB服務器的IP地址getLocalName方法返回WEB服務器的主機
    名
    getMethod獲得客戶機請求方式
 2.得到客戶機請求頭
    getHeader(string name)方法
    getHeaders(String name)方法
    getHeaderNames方法 
 3.得到客戶機請求參數(客戶端提交的數據)
    getParameter(name)方法
    getParameterValues(String name)方法
    getParameterNames方法
    getParameterMap方法
相關文章
相關標籤/搜索