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