您好,登錄后才能下訂單哦!
這篇“springMVC和spring的概念有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“springMVC和spring的概念有哪些”文章吧。
springMVC是一個基于MVC架構的,用來簡化WEB應用程序的框架;屬于表現層的框架。
用戶發送請求到前端控制器,前端控制器接受到請求調用處理器映射器,處理器映射器根據請求的URL找到具體的處理器,生成處理器對象及處理器攔截器(如果有則一并生成)返回給前端控制器,前端控制器通過處理器 適配器調用處理器,然后執行控制器,執行完成后返回視圖和模型,處理器適配器將控制器執行結果視圖和模型返回給前端控制器;前端控制器將視圖和模型傳給視圖解析器,解析后返回具體視圖,前端控制器對視圖進行渲染視圖(即將模型數據填充到視圖中),前端控制器響應給用戶。
springMVC的入口是一個servlet即前端控制器。 springMVC是基于方法開發(一個URL對于一個方法),請求參數傳遞到方法的形參,可以設計為單例模式或多例;建議用單例,默認是單例的。 為什么建議用單例? 1、性能(不用每次請求都New對象)。 2、不需要多例(不要在控制器中定義成員變量)。
它是一個輕量級的開源的框架,創建性能好,易于測試,可重用代碼;它基于IOC(反向控制)和AOP(面向切面)的架構多層Jzee(企業級應用)系統的框架。 優點: 1、能有效地組織中間層對象,不管是否使用了EJB(企業級JavaBean)。 2、消除了在工作中對單例模式的過多使用,降低了系統的可測試性和面向對象。 3、消除各種自定義格式的屬性文件的需要,易于單元測試。 4、把對接口編程而不是對類編程的代碼減少,養成好的編程習慣。 5、使用它創建的應用盡可能少的依賴于它的(APIS)編程接口。
它的兩大核心:IOC(控制反轉)和AOP(面向切面)。 1、IOC:降低了程序的耦合度,使項目成為可插拔的組件式工程。 2、AOP:使開發過程精力得到釋放,更專注去解決客戶需求,可維護性高。 3、它提供的事務管理機制,采用聲明的方式來配置事務,從而維護時無需改動源代碼,解決了程序硬編碼的問題。 4、它提供的DAO(數據存取對象)模板使持久層多了一種用途。 5、它可以整合當前任何一種框架,使在管理項目時更清晰明確。 spring管理事務有2種方式。 1、編程式事務,在代碼中硬編碼。 2、聲明式事務,在配置文件中配置;(推薦) 聲明式事務分為2種: 1、基于XML的聲明式事務。 2、基于注解的聲明式事務。
依賴注入是實現控制反轉的一種思想(另一種是依賴查找)。 在開發的過程中,我們需要某個類的實例時,是由使用者為我們提供該類的實例,而不是自己去獲取。 實現依賴注入的兩種方式: 1、使用構造方法注入。 2、set方法注入。
IOC是spring的核心之一。 控制反轉是指,我們在獲取對象的時候,由之前的主動變成了被動接收;也就是說在編程某個類時,只需要提供一個接口類型的類成員,并不需要關系具體的實現類,而由使用者在使用時提供,降低了類與類之間的耦合度。
MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優秀持久框架。 消除了幾乎所有的JDBC(Java數據庫連接)代碼和參數的手工設置以及對結果集的檢索封裝。可以使用簡單的XML或注解用于配置和原始映射,將接口和Java的POJO(普通的Java對象)映射成數據庫中的記錄。 MyBatis工作原理
由pivotal團隊提供的全新框架,目的是用來簡化新spring應用的初始化搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不需要定義樣板化的配置。 springBoot組件 1、springBoot自動配置:spring啟動能夠檢測某些框架的可用性,一旦檢測到框架,它就自動配置它。 2、springBoot Core:是其他spring模型基礎,它提供了某些功能,可以通過驗證自行完成。 3、springBoot starters:幫助啟動項目,它會自動添加啟動 項目和依賴項。 springBoot 特點 1、用來實現微服務 2、自動配置 3、自定義配置 4、模塊化 5、獨立打包,直接運行 6、內嵌服務器(如:Tomcat服務器) 7、spring Cloud的基礎
spring Security是一個強大的和高度可制定的身份驗證和訪問控制框架。它是保證基于spring的應用程序安全的實際標準。 主要功能: 1、認證:驗證用戶名和密碼是否合法(是否系統中用戶) 2、授權:是系統用戶不代表你能使用某些功能,因為你沒有對于的權限 3、防御會話固定,點擊劫持,跨站點請求偽造等攻擊 4、servlet API集成 5、與springWebMVC的可選集成
什么是多線程 一個進程中可以開啟多條線程,每條線程可以并行(同時)執行不同的任務。 如:進程A車間,線程A車間的工人; 多線程技術可以提高程序的執行效率,多線程是屬于一種并發手段,是多任務的一種特別的形式,但多線程使用了更少的資源開銷。 三種創建線程的方法: 1、實現Runnable接口 2、繼承Thread類本身 3、通過Callable和Fature創建線程 多線程的原理 1、同一時間,CPU只能處理一條線程,只有一條線程在工作(執行) 2、多線程并發(同時)執行,其實是CPU快速地在多條線程直接切換 3、如果CPU調度線程的時間足夠快,就造成了多線程并發執行的假象 如果線程非常多,會發生什么情況? 1、CPU會在N多線程之間切換,CPU會累死,消耗大量的CPU資源 2、線程的執行效率降低 線程的生命周期 1、新建狀態 2、就緒狀態 3、運行狀態 4、阻塞狀態: 1、等待阻塞 2、同步阻塞 3、其他阻塞 5、死亡狀態 線程的幾個主要概念: 1、線程同步 2、線程間通信 3、線程死鎖 4、線程控制:掛起,停止和恢復 樂觀鎖和悲觀鎖 1、樂觀鎖持樂觀狀態,就是假設我的數據不會被意外修改,如果修改了就放棄從頭再來。 2、悲觀鎖持悲觀狀態,就是假設我的數據一定會被修改,那干脆直接加鎖得了。
Java集合簡介
collection接口的三個子接口:
1、set
2、list
3、Queue
集合大致可分為以下四種體系:
1、set:無序,不可重復的集合
2、list:有序,可重復的集合
實現list接口常用的類有:LinkedList ArrayList Vector和Stack.
3、Map:則代表具有映射關系的集合
4、Queue:Java5中新增加了,代表一種隊列集合實現
集合與數組的區別
1、數組長度初始化指定,只能保存定長的數據,集合可以保存數量不確定的數據,還可以保存具有映射關系的數據。
2、數組元素即可以基本類型的值,也可以是對象,集合只能是對象,實際保存對象的引用變量,基本類型的變量要轉成對于的包裝類才能放入集合中。
map和collection是Java集合框架的根接口。map里的key是不可重復的,用于保存具有映射關系的數據。
什么是緩存穿透
在正常情況下,查詢的數據都存在,如果請求一個不存在的數據,也就是緩存和數據庫都查不到這個數據,每次都會去數據庫查詢,機會造成數據庫壓力增大。
解決:
1、緩存空值,即就是將緩存中沒有的key設置為對應只null。
2、布隆過濾器(BloomFilter),它類似于一個Hbase set用來判斷某個元素(key)是否存在于集合中。我們把數據的key放在布隆過濾器中,每次查詢都會進行判斷,如果沒有就直接返回null,它沒有刪除操作,可以結合緩存空值。
什么是緩存雪崩
當某一時刻發送大規模的緩存失效情況,比如緩存服務器宕機了。
解決:
1、利用集群,降低服務宕機的概率。
2、ehcache本地緩存+Hystrix限流和降級。
二級緩存本地考慮redis Cluster完全不可以的時候,可以支持一陣。
使用Hystrix進行限流或降級,如1秒5000請求,設置為2000請求,其余走邏輯流。
什么是緩存擊穿
在高并發的情況下,大量的請求同時查詢同一個key時,此時這個key正好失效了,就會導致同一時間這些請求都會去查詢數據庫,會造成某一時刻數據庫請求量過大。
解決方法:
1、采用分布式鎖
只有拿到鎖的第一個請求(線程)去請求數據庫,然后插入緩存,當然每次拿到鎖的時候都要去查詢一下緩存有沒有。
對于熱點數據,當緩存失效以后會存在大量的請求過來,然后打到數據庫去,從而導致數據庫奔潰的情況。 解決方法: 1、設置不通失效時間 2、采用緩存擊穿辦法,加鎖 3、設置緩存永不失效,就是采用定時任務對快要失效的緩存進行更新緩存和失效時間。
以上就是關于“springMVC和spring的概念有哪些”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。