偏向鎖、輕量級鎖、重量級鎖的升級以及區別 https://blog.csdn.net/u012722531/article/details/78244786
代碼塊同步是使用monitorenter和monitorexit指令實現, monitorenter指令是在編譯後插入到同步代碼塊的開始位置,而monitorexit是插入到方法結束處和異常處, JVM要保證每一個monitorenter必須有對應的monitorexit與之配對。任何對象都有一個 monitor 與之關聯,當且一個monitor 被持有後,它將處於鎖定狀態。線程執行到 monitorenter 指令時,將會嘗試獲取對象所對應的 monitor 的全部權,即嘗試得到對象的鎖。html
Java中的鎖機制 synchronized & 偏向鎖 & 輕量級鎖 & 重量級鎖 & 各自優缺點及場景 & AtomicReference前端
關於表單重複提交問題:
1. 在第一次顯示頁面的時候,隨機制做一個標記token(如時間戳),而後把token放入session和hidden中;
2. 當點擊提交按鈕的時候,獲取session和的token和hidden中的token,若是session中的token不爲null,則比較兩個token是否一致;
3. 若是兩個token一致,受理請求,並移除session的token屬性;
4. 若是不一致,或者session的token爲null,則不受理請求
SpringMVC的工做流程
1. 用戶發送請求至前端控制器DispatcherServlet
2. DispatcherServlet收到請求調用HandlerMapping處理器映射器。
3. 處理器映射器找到具體的處理器,生成處理器對象及處理器攔截器(若是有則生成)一併返回給DispatcherServlet。
4. DispatcherServlet調用HandlerAdapter處理器適配器
5. HandlerAdapter通過適配調用具體的處理器(Controller,也叫後端控制器)。
6. Controller執行完成返回ModelAndView
7. HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet
8. DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
9. ViewReslover解析後返回具體View
10. DispatcherServlet根據View進行渲染視圖(即將模型數據填充至視圖中)。
11. DispatcherServlet響應用戶
接口和抽象類應用場景java
首先 類描述的是 這個東西是什麼(強調所屬)?包含了靜態屬性,靜態行爲 ,屬性和行爲。sql
而接口 描述的它能作什麼事兒(強調行爲)? 只是 靜態常量屬性 和 行爲後端
- 若是你擁有一些方法而且想讓它們中的一些有默認實現,那麼使用抽象類吧。
若是你想實現多重繼承,那麼你必須使用接口。
因爲Java不支持多繼承,子類不可以繼承多個類,但能夠實現多個接口。所以你就可使用接口來解決它。
若是基本功能在不斷改變,那麼就須要使用抽象類。若是不斷改變基本功能而且使用接口,那麼就須要改變全部實現了該接口的類。
-
抽象類表示共有許要實現的方法 接口用來特定類有須要才實現 人都會吃飯 但有的人抽菸api
-
抽象類是用來捕捉子類的通用特性的session
-
抽象類是 is a關係;而接口是has a關係app
-
看看jdk的api會發現大部分接口都是able結尾的,表示一種能力。馬士兵曰過:當你不知道用抽象類仍是接口好時就用接口post