中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

html電子商務(wù)網(wǎng)站模板百度信息流推廣教程

html電子商務(wù)網(wǎng)站模板,百度信息流推廣教程,制作音樂排行榜網(wǎng)頁設(shè)計,怎么把dw做的網(wǎng)站分享給別Spring 原理 它是一個全面的、企業(yè)應(yīng)用開發(fā)一站式的解決方案,貫穿表現(xiàn)層、業(yè)務(wù)層、持久層。但是 Spring仍然可以和其他的框架無縫整合。 Spring 特點 輕量級 控制反轉(zhuǎn) 面向切面 容器 框架集合 Spring特征 Spring 核心組件 Spring 常用模塊 Spring 主要包 Spring …

Spring 原理

它是一個全面的、企業(yè)應(yīng)用開發(fā)一站式的解決方案,貫穿表現(xiàn)層、業(yè)務(wù)層、持久層。但是 Spring仍然可以和其他的框架無縫整合。

Spring 特點

輕量級

控制反轉(zhuǎn)

面向切面

容器

框架集合

648e7b7ed383d8558b034b77107a45be.jpeg

Spring特征

Spring 核心組件

58351522f1ff6be2d85bd84f57a9c978.jpeg

Spring 常用模塊

905bc1bc87fa4a63f14808f94b5a9ca3.jpeg

Spring 主要包

e47396c5375f2e66c8f1695487822404.jpeg

Spring 常用注解

bean 注入與裝配的的方式有很多種,可以通過 xml,get set 方式,構(gòu)造函數(shù)或者注解等。簡單易用的方式就是使用 Spring 的注解了,Spring 提供了大量的注解方式。

5d582cfac515097cc857d586c6dd6173.jpeg

Spring 第三方結(jié)合

bc9ae08aab2b9a961b6caf72d705a238.jpeg

Spring IOC 原理

概念

Spring 通過一個配置文件描述 Bean 及 Bean 之間的依賴關(guān)系,利用 Java 語言的反射功能實例化Bean 并建立 Bean 之間的依賴關(guān)系。 Spring 的 IoC 容器在完成這些底層工作的基礎(chǔ)上,還提供了 Bean 實例緩存、生命周期管理、 Bean 實例代理、事件發(fā)布、資源裝載等高級服務(wù)。

Spring 容器高層視圖

Spring 啟動時讀取應(yīng)用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相應(yīng)的 Bean 配置注冊表,然后根據(jù)這張注冊表實例化 Bean,裝配好 Bean 之間的依賴關(guān)系,為上層應(yīng)用提供準備就緒的運行環(huán)境。其中 Bean 緩存池為 HashMap 實現(xiàn)。

bca4401774bb31df92c44c342512982a.jpeg

IOC 容器實現(xiàn)

BeanFactory-框架基礎(chǔ)設(shè)施

BeanFactory 是 Spring 框架的基礎(chǔ)設(shè)施,面向 Spring 本身;ApplicationContext 面向使用Spring 框架的開發(fā)者,幾乎所有的應(yīng)用場合我們都直接使用 ApplicationContext 而非底層的 BeanFactory。

e16f62cfd69e093c9469d157ed292739.jpeg

BeanDefinitionRegistry 注冊表

1. Spring 配置文件中每一個節(jié)點元素在 Spring 容器里都通過一個 BeanDefinition 對象表示,它描述了 Bean 的配置信息。而 BeanDefinitionRegistry 接口提供了向容器手工注冊BeanDefinition 對象的方法。

BeanFactory 頂層接口

2. 位于類結(jié)構(gòu)樹的頂端 ,它最主要的方法就是 getBean(String beanName),該方法從容器中返回特定名稱的 Bean,BeanFactory 的功能通過其他的接口得到不斷擴展:

ListableBeanFactory

3. 該接口定義了訪問容器中 Bean 基本信息的若干方法,如查看 Bean 的個數(shù)、獲取某一類型Bean 的配置名、查看容器中是否包括某一 Bean 等方法;

HierarchicalBeanFactory 父子級聯(lián)

4. 父子級聯(lián) IoC 容器的接口,子容器可以通過接口方法訪問父容器; 通過HierarchicalBeanFactory 接口, Spring 的 IoC 容器可以建立父子層級關(guān)聯(lián)的容器體系,子容器可以訪問父容器中的 Bean,但父容器不能訪問子容器的 Bean。Spring 使用父子容器實現(xiàn)了很多功能,比如在 Spring MVC 中,展現(xiàn)層 Bean 位于一個子容器中,而業(yè)務(wù)層和持久層的 Bean 位于父容器中。這樣,展現(xiàn)層 Bean 就可以引用業(yè)務(wù)層和持久層的 Bean,而業(yè)務(wù)層和持久層的 Bean 則看不到展現(xiàn)層的 Bean。

ConfigurableBeanFactory

5. 是一個重要的接口,增強了 IoC 容器的可定制性,它定義了設(shè)置類裝載器、屬性編輯器、容器初始化后置處理器等方法;

AutowireCapableBeanFactory 自動裝配

6. 定義了將容器中的 Bean 按某種規(guī)則(如按名字匹配、按類型匹配等)進行自動裝配的方法;

SingletonBeanRegistry 運行期間注冊單例 Bean

7. 定義了允許在運行期間向容器注冊單實例 Bean 的方法;對于單實例( singleton)的 Bean來說,BeanFactory 會緩存 Bean 實例,所以第二次使用 getBean() 獲取 Bean 時將直接從IoC 容器的緩存中獲取 Bean 實例。Spring 在 DefaultSingletonBeanRegistry 類中提供了一個用于緩存單實例 Bean 的緩存器,它是一個用 HashMap 實現(xiàn)的緩存器,單實例的 Bean 以beanName 為鍵保存在這個 HashMap 中。

依賴日志框框

8. 在初始化 BeanFactory 時,必須為其提供一種日志框架,比如使用 Log4J, 即在類路徑下提供 Log4J 配置文件,這樣啟動 Spring 容器才不會報錯。

ApplicationContext 面向開發(fā)應(yīng)用

ApplicationContext 由 BeanFactory 派 生 而 來 , 提 供 了 更 多 面 向 實 際 應(yīng) 用 的 功 能 。

ApplicationContext 繼承了 HierarchicalBeanFactory 和 ListableBeanFactory 接口,在此基礎(chǔ)上,還通過多個其他的接口擴展了 BeanFactory 的功能:

7265a69df473aba0d50ab06a7cf99a9c.jpeg

1. ClassPathXmlApplicationContext:默認從類路徑加載配置文件

2. FileSystemXmlApplicationContext:默認從文件系統(tǒng)中裝載配置文件

3. ApplicationEventPublisher:讓容器擁有發(fā)布應(yīng)用上下文事件的功能,包括容器啟動事件、關(guān)閉事件等。

4. MessageSource:為應(yīng)用提供 i18n 國際化消息訪問的功能;

5. ResourcePatternResolver : 所 有 ApplicationContext 實現(xiàn)類都實現(xiàn)了類似于PathMatchingResourcePatternResolver 的功能,可以通過帶前綴的 Ant 風(fēng)格的資源文件路徑裝載 Spring 的配置文件。

6. LifeCycle:該接口是 Spring 2.0 加入的,該接口提供了 start()和 stop()兩個方法,主要用于控制異步處理過程。在具體使用時,該接口同時被 ApplicationContext 實現(xiàn)及具體Bean 實現(xiàn), ApplicationContext 會將 start/stop 的信息傳遞給容器中所有實現(xiàn)了該接口的 Bean,以達到管理和控制 JMX、任務(wù)調(diào)度等目的。

7. ConfigurableApplicationContext 擴展于 ApplicationContext,它新增加了兩個主要的方法: refresh()和 close(),讓 ApplicationContext 具有啟動、刷新和關(guān)閉應(yīng)用上下文的能力。在應(yīng)用上下文關(guān)閉的情況下調(diào)用 refresh()即可啟動應(yīng)用上下文,在已經(jīng)啟動的狀態(tài)下,調(diào)用 refresh()則清除緩存并重新裝載配置信息,而調(diào)用 close()則可關(guān)閉應(yīng)用上下文。

WebApplication 體系架構(gòu)

WebApplicationContext 是專門為 Web 應(yīng)用準備的,它允許從相對于 Web 根目錄的路徑中裝載配置文件完成初始化工作。從 WebApplicationContext 中可以獲得ServletContext 的引用,整個 Web 應(yīng)用上下文對象將作為屬性放置到 ServletContext中,以便 Web 應(yīng)用環(huán)境可以訪問 Spring 應(yīng)用上下文。

f84c9cb5e3c8fdd84b4eada7c592926c.jpeg

Spring Bean 作用域

Spring 3 中為 Bean 定義了 5 中作用域,分別為 singleton(單例)、prototype(原型)、request、session 和 global session,5 種作用域說明如下:

singleton:單例模式(多線程下不安全)

1. singleton:單例模式,Spring IoC 容器中只會存在一個共享的 Bean 實例,無論有多少個Bean 引用它,始終指向同一對象。該模式在多線程下是不安全的。Singleton 作用域是Spring 中的缺省作用域,也可以顯示的將 Bean 定義為 singleton 模式,配置為:

<bean id="userDao" class="com.ioc.UserDaoImpl" scope="singleton"/>

prototype:原型模式每次使用時創(chuàng)建

2. prototype:原型模式,每次通過 Spring 容器獲取 prototype 定義的 bean 時,容器都將創(chuàng)建一個新的 Bean 實例,每個 Bean 實例都有自己的屬性和狀態(tài),而 singleton 全局只有一個對象。根據(jù)經(jīng)驗,對有狀態(tài)的bean使用prototype作用域,而對無狀態(tài)的bean使用singleton作用域。

Request:一次 request 一個實例

3. request:在一次 Http 請求中,容器會返回該 Bean 的同一實例。而對不同的 Http 請求則會產(chǎn)生新的 Bean,而且該 bean 僅在當前 Http Request 內(nèi)有效,當前 Http 請求結(jié)束,該 bean實例也將會被銷毀。

<bean id="loginAction" class="com.cnblogs.Login" scope="request"/>

session

4. session:在一次 Http Session 中,容器會返回該 Bean 的同一實例。而對不同的 Session 請求則會創(chuàng)建新的實例,該 bean 實例僅在當前 Session 內(nèi)有效。同 Http 請求相同,每一次session 請求創(chuàng)建新的實例,而不同的實例之間不共享屬性,且實例僅在自己的 session 請求內(nèi)有效,請求結(jié)束,則實例將被銷毀。

<bean id="userPreference" class="com.ioc.UserPreference" scope="session"/>

global Session

5. global Session:在一個全局的 Http Session 中,容器會返回該 Bean 的同一個實例,僅在使用 portlet context 時有效。

Spring Bean 生命周期

實例化

1. 實例化一個 Bean,也就是我們常說的 new。

IOC 依賴注入

2. 按照 Spring 上下文對實例化的 Bean 進行配置,也就是 IOC 注入。

setBeanName 實現(xiàn)

3. 如果這個 Bean 已經(jīng)實現(xiàn)了 BeanNameAware 接口,會調(diào)用它實現(xiàn)的 setBeanName(String)方法,此處傳遞的就是 Spring 配置文件中 Bean 的 id 值

BeanFactoryAware 實現(xiàn)

4. 如果這個 Bean 已經(jīng)實現(xiàn)了 BeanFactoryAware 接口,會調(diào)用它實現(xiàn)的 setBeanFactory,setBeanFactory(BeanFactory)傳遞的是 Spring 工廠自身(可以用這個方式來獲取其它 Bean,只需在 Spring 配置文件中配置一個普通的 Bean 就可以)。

ApplicationContextAware 實現(xiàn)

5. 如果這個 Bean 已經(jīng)實現(xiàn)了 ApplicationContextAware 接口,會調(diào)用setApplicationContext(ApplicationContext)方法,傳入 Spring 上下文(同樣這個方式也可以實現(xiàn)步驟 4 的內(nèi)容,但比 4 更好,因為 ApplicationContext 是 BeanFactory 的子接口,有更多的實現(xiàn)方法)

postProcessBeforeInitialization 接口實現(xiàn)-初始化預(yù)處理

6. 如果這個 Bean 關(guān)聯(lián)了 BeanPostProcessor 接口,將會調(diào)用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProcessor 經(jīng)常被用作是 Bean 內(nèi)容的更改,并且由于這個是在 Bean 初始化結(jié)束時調(diào)用那個的方法,也可以被應(yīng)用于內(nèi)存或緩存技術(shù)。

init-method

7. 如果 Bean 在 Spring 配置文件中配置了 init-method 屬性會自動調(diào)用其配置的初始化方法。

postProcessAfterInitialization

8. 如果這個 Bean 關(guān)聯(lián)了 BeanPostProcessor 接口,將會調(diào)用

postProcessAfterInitialization(Object obj, String s)方法。

注:以上工作完成以后就可以應(yīng)用這個 Bean 了,那這個 Bean 是一個 Singleton 的,所以一般情況下我們調(diào)用同一個 id 的 Bean 會是在內(nèi)容地址相同的實例,當然在 Spring 配置文件中也可以配置非 Singleton。

Destroy 過期自動清理階段

9. 當 Bean 不再需要時,會經(jīng)過清理階段,如果 Bean 實現(xiàn)了 DisposableBean 這個接口,會調(diào)用那個其實現(xiàn)的 destroy()方法;

destroy-method 自配置清理

10. 最后,如果這個 Bean 的 Spring 配置中配置了 destroy-method 屬性,會自動調(diào)用其配置的銷毀方法。

f40207db9ad76ad5414bacd82943d61d.jpeg

11. bean 標簽有兩個重要的屬性(init-method 和 destroy-method)。用它們你可以自己定制初始化和注銷方法。它們也有相應(yīng)的注解(@PostConstruct 和@PreDestroy)。

<bean id="" class="" init-method="初始化方法" destroy-method="銷毀方法">

5 種不同方式的自動裝配

Spring 裝配包括手動裝配和自動裝配,手動裝配是有基于 xml 裝配、構(gòu)造方法、setter 方法等自動裝配有五種自動裝配的方式,可以用來指導(dǎo) Spring 容器用自動裝配方式來進行依賴注入。

1. no:默認的方式是不進行自動裝配,通過顯式設(shè)置 ref 屬性來進行裝配。

2. byName:通過參數(shù)名 自動裝配,Spring 容器在配置文件中發(fā)現(xiàn) bean 的 autowire 屬性被設(shè)置成 byname,之后容器試圖匹配、裝配和該 bean 的屬性具有相同名字的 bean。

3. byType:通過參數(shù)類型自動裝配,Spring 容器在配置文件中發(fā)現(xiàn) bean 的 autowire 屬性被設(shè)置成 byType,之后容器試圖匹配、裝配和該 bean 的屬性具有相同類型的 bean。如果有多個 bean 符合條件,則拋出錯誤。

4. constructor:這個方式類似于 byType, 但是要提供給構(gòu)造器參數(shù),如果沒有確定的帶參數(shù)的構(gòu)造器參數(shù)類型,將會拋出異常。

5. autodetect:首先嘗試使用 constructor 來自動裝配,如果無法工作,則使用 byType 方式。

Spring APO 原理

概念

"橫切"的技術(shù),剖解開封裝的對象內(nèi)部,并將那些影響了多個類的公共行為封裝到一個可重用模塊,并將其命名為"Aspect",即切面。所謂"切面",簡單說就是那些與業(yè)務(wù)無關(guān),卻為業(yè)務(wù)模塊所共同調(diào)用的邏輯或責(zé)任封裝起來,便于減少系統(tǒng)的重復(fù)代碼,降低模塊之間的耦合度,并有利于未來的可操作性和可維護性。

使用"橫切"技術(shù),AOP 把軟件系統(tǒng)分為兩個部分:核心關(guān)注點和橫切關(guān)注點。業(yè)務(wù)處理的主要流程是核心關(guān)注點,與之關(guān)系不大的部分是橫切關(guān)注點。橫切關(guān)注點的一個特點是,他們經(jīng)常發(fā)生在核心關(guān)注點的多處,而各處基本相似,比如權(quán)限認證、日志、事物。AOP 的作用在于分離系統(tǒng)中的各種關(guān)注點,將核心關(guān)注點和橫切關(guān)注點分離開來。

AOP 主要應(yīng)用場景有:

1. Authentication 權(quán)限

2. Caching 緩存

3. Context passing 內(nèi)容傳遞

4. Error handling 錯誤處理

5. Lazy loading 懶加載

6. Debugging 調(diào)試

7. logging, tracing, profiling and monitoring 記錄跟蹤 優(yōu)化 校準

8. Performance optimization 性能優(yōu)化

9. Persistence 持久化

10. Resource pooling 資源池

11. Synchronization 同步

12. Transactions 事務(wù)

AOP 核心概念

1、切面(aspect):類是對物體特征的抽象,切面就是對橫切關(guān)注點的抽象

2、橫切關(guān)注點:對哪些方法進行攔截,攔截后怎么處理,這些關(guān)注點稱之為橫切關(guān)注點。

3、連接點(joinpoint):被攔截到的點,因為 Spring 只支持方法類型的連接點,所以在 Spring中連接點指的就是被攔截到的方法,實際上連接點還可以是字段或者構(gòu)造器。

4、切入點(pointcut):對連接點進行攔截的定義

5、通知(advice):所謂通知指的就是指攔截到連接點之后要執(zhí)行的代碼,通知分為前置、后置、異常、最終、環(huán)繞通知五類。

6、目標對象:代理的目標對象

7、織入(weave):將切面應(yīng)用到目標對象并導(dǎo)致代理對象創(chuàng)建的過程

8、引入(introduction):在不修改代碼的前提下,引入可以在運行期為類動態(tài)地添加一些方法或字段。

b3caddcb9f72b2de7ed360afca5f5a0b.jpeg

AOP 兩種代理方式

Spring 提供了兩種方式來生成代理對象: JDKProxy 和 Cglib,具體使用哪種方式生成由AopProxyFactory 根據(jù) AdvisedSupport 對象的配置來決定。默認的策略是如果目標類是接口,則使用 JDK 動態(tài)代理技術(shù),否則使用 Cglib 來生成代理。

JDK 動態(tài)接口代理

1. JDK 動態(tài)代理主要涉及到 java.lang.reflect 包中的兩個類:Proxy 和 InvocationHandler。

InvocationHandler是一個接口,通過實現(xiàn)該接口定義橫切邏輯,并通過反射機制調(diào)用目標類的代碼,動態(tài)將橫切邏輯和業(yè)務(wù)邏輯編制在一起。Proxy 利用 InvocationHandler 動態(tài)創(chuàng)建一個符合某一接口的實例,生成目標類的代理對象。

CGLib 動態(tài)代理

2. :CGLib 全稱為 Code Generation Library,是一個強大的高性能,高質(zhì)量的代碼生成類庫,可以在運行期擴展 Java 類與實現(xiàn) Java 接口,CGLib 封裝了 asm,可以再運行期動態(tài)生成新的 class。和 JDK 動態(tài)代理相比較:JDK 創(chuàng)建代理有一個限制,就是只能為接口創(chuàng)建代理實例,而對于沒有通過接口定義業(yè)務(wù)方法的類,則可以通過 CGLib 創(chuàng)建動態(tài)代理。e2b040c0c3c4ccfc9b9b0511b2912fb9.jpeg

Spring MVC 原理

Spring 的模型-視圖-控制器(MVC)框架是圍繞一個 DispatcherServlet 來設(shè)計的,這個 Servlet會把請求分發(fā)給各個處理器,并支持可配置的處理器映射、視圖渲染、本地化、時區(qū)與主題渲染等,甚至還能支持文件上傳。

MVC 流程

77f3f9128599c98c1dfed4f05c54bed7.jpeg

Http 請求到 DispatcherServlet

(1) 客戶端請求提交到 DispatcherServlet。

HandlerMapping 尋找處理器

(2) 由 DispatcherServlet 控制器查詢一個或多個 HandlerMapping,找到處理請求的Controller。

調(diào)用處理器 Controller

(3) DispatcherServlet 將請求提交到 Controller。

Controller 調(diào)用業(yè)務(wù)邏輯處理后,返回 ModelAndView

(4)(5)調(diào)用業(yè)務(wù)處理和返回結(jié)果:Controller 調(diào)用業(yè)務(wù)邏輯處理后,返回 ModelAndView。

DispatcherServlet 查詢 ModelAndView

(6)(7)處理視圖映射并返回模型: DispatcherServlet 查詢一個或多個 ViewResoler 視圖解析器,找到 ModelAndView 指定的視圖。

ModelAndView 反饋瀏覽器 HTTP

(8) Http 響應(yīng):視圖負責(zé)將結(jié)果顯示到客戶端。

MVC 常用注解

5053ffa1abf7b14467baae0a53499476.jpeg

Spring Boot 原理

Spring Boot 是由 Pivotal 團隊提供的全新框架,其設(shè)計目的是用來簡化新 Spring 應(yīng)用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。通過這種方式,Spring Boot 致力于在蓬勃發(fā)展的快速應(yīng)用開發(fā)領(lǐng)域(rapid applicationdevelopment)成為領(lǐng)導(dǎo)者。其特點如下:

1. 創(chuàng)建獨立的 Spring 應(yīng)用程序

2. 嵌入的 Tomcat,無需部署 WAR 文件

3. 簡化 Maven 配置

4. 自動配置 Spring

5. 提供生產(chǎn)就緒型功能,如指標,健康檢查和外部配置

6. 絕對沒有代碼生成和對 XML 沒有要求配置 [1]

JPA 原理

事務(wù)

事務(wù)是計算機應(yīng)用中不可或缺的組件模型,它保證了用戶操作的原子性 ( Atomicity )、一致性( Consistency )、隔離性 ( Isolation ) 和持久性 ( Durabilily )。

本地事務(wù)

緊密依賴于底層資源管理器(例如數(shù)據(jù)庫連接 ),事務(wù)處理局限在當前事務(wù)資源內(nèi)。此種事務(wù)處理方式不存在對應(yīng)用服務(wù)器的依賴,因而部署靈活卻無法支持多數(shù)據(jù)源的分布式事務(wù)。

分布式事務(wù)

Java 事務(wù)編程接口(JTA:Java Transaction API)和 Java 事務(wù)服務(wù) (JTS;Java TransactionService) 為 J2EE 平臺提供了分布式事務(wù)服務(wù)。分布式事務(wù)(Distributed Transaction)包括事務(wù)管理器(Transaction Manager)和一個或多個支持 XA 協(xié)議的資源管理器 ( ResourceManager )。我們可以將資源管理器看做任意類型的持久化數(shù)據(jù)存儲;事務(wù)管理器承擔著所有事務(wù)參與單元的協(xié)調(diào)與控制。

兩階段提交

兩階段提交主要保證了分布式事務(wù)的原子性:即所有結(jié)點要么全做要么全不做,所謂的兩個階段是指:第一階段:準備階段;第二階段:提交階段。

bf06cfb1eacf2c66cec0fef515ee2b31.jpeg

1 準備階段

事務(wù)協(xié)調(diào)者(事務(wù)管理器)給每個參與者(資源管理器)發(fā)送 Prepare 消息,每個參與者要么直接返回失敗(如權(quán)限驗證失敗),要么在本地執(zhí)行事務(wù),寫本地的 redo 和 undo 日志,但不提交,到達一種“萬事俱備,只欠東風(fēng)”的狀態(tài)。

2 提交階段:

如果協(xié)調(diào)者收到了參與者的失敗消息或者超時,直接給每個參與者發(fā)送回滾(Rollback)消息;否則,發(fā)送提交(Commit)消息;參與者根據(jù)協(xié)調(diào)者的指令執(zhí)行提交或者回滾操作,釋放所有事務(wù)處理過程中使用的鎖資源。(注意:必須在最后階段釋放鎖資源)

將提交分成兩階段進行的目的很明確,就是盡可能晚地提交事務(wù),讓事務(wù)在提交前盡可能地完成

所有能完成的工作。

Mybatis 緩存

Mybatis 中有一級緩存和二級緩存,默認情況下一級緩存是開啟的,而且是不能關(guān)閉的。一級緩存是指 SqlSession 級別的緩存,當在同一個 SqlSession 中進行相同的 SQL 語句查詢時,第二次以后的查詢不會從數(shù)據(jù)庫查詢,而是直接從緩存中獲取,一級緩存最多緩存 1024 條 SQL。二級緩存是指可以跨 SqlSession 的緩存。是 mapper 級別的緩存,對于 mapper 級別的緩存不同的sqlsession 是可以共享的。

900b8f228e436fe7dfe91102e1afb5bc.jpeg

Mybatis 的一級緩存原理(sqlsession 級別)

第一次發(fā)出一個查詢 sql,sql 查詢結(jié)果寫入 sqlsession 的一級緩存中,緩存使用的數(shù)據(jù)結(jié)構(gòu)是一個 map。

key:MapperID+offset+limit+Sql+所有的入?yún)?/p>

value:用戶信息

同一個 sqlsession 再次發(fā)出相同的 sql,就從緩存中取出數(shù)據(jù)。如果兩次中間出現(xiàn) commit 操作(修改、添加、刪除),本 sqlsession 中的一級緩存區(qū)域全部清空,下次再去緩存中查詢不到所以要從數(shù)據(jù)庫查詢,從數(shù)據(jù)庫查詢到再寫入緩存。

二級緩存原理(mapper 基本)

二級緩存的范圍是 mapper 級別(mapper 同一個命名空間),mapper 以命名空間為單位創(chuàng)建緩存數(shù)據(jù)結(jié)構(gòu),結(jié)構(gòu)是 map。mybatis 的二級緩存是通過 CacheExecutor 實現(xiàn)的。CacheExecutor其實是 Executor 的代理對象。所有的查詢操作,在 CacheExecutor 中都會先匹配緩存中是否存在,不存在則查詢數(shù)據(jù)庫。

key:MapperID+offset+limit+Sql+所有的入?yún)?/p>

具體使用需要配置:

1. Mybatis 全局配置中啟用二級緩存配置

2. 在對應(yīng)的 Mapper.xml 中配置 cache 節(jié)點

3. 在對應(yīng)的 select 查詢節(jié)點中添加 useCache=true

Tomcat 架構(gòu)

通過tomcat官方發(fā)行,tomcat發(fā)展還是比較快的,目前已經(jīng)更新到tomcat 10了 ,但當前大部分企業(yè)使用的tomcat為9或8版本。

e7fe5b268a2c1d5817efd4d7ee187dba.jpeg

通過閱讀tomcat源碼,tomcat簡要架構(gòu)可歸結(jié)為如下(關(guān)于更詳細的架構(gòu)圖和架構(gòu)細節(jié),將在詳解tomcat架構(gòu)(下篇)中分享)。

877c77c858715aa36c1385707526eb8a.jpeg

從上圖中,可以得出:

1.tomcat重要主件:

Server主件:作為tomcat服務(wù)器主件

service主件:作為tomcat服務(wù)主件,即向外提供服務(wù),由一個或多個Host組成

Connector主件:表示連接主件,外部訪問tomcat時,通過該主鍵訪問,其支持的比較重要的三個核心協(xié)議,http,https和ajp

Engine主件:tomcat引擎主件

Host主件:Tomcat主機主件

Context:tomcat項目主件,一個Context代表也給tomcat項目

2.tomcat支持的三大協(xié)議

http協(xié)議,ajp協(xié)議,https協(xié)議。

http://www.risenshineclean.com/news/12071.html

相關(guān)文章:

  • 網(wǎng)站做支付功能培訓(xùn)計劃和培訓(xùn)內(nèi)容
  • 用自己的電腦做網(wǎng)站需要備案嗎旅游最新資訊
  • 網(wǎng)站建設(shè)jutuibao線上推廣的渠道和方法
  • 媒體公司網(wǎng)站模板百度指數(shù)1000搜索量有多少
  • 怎么做網(wǎng)站像淘寶這樣的免費發(fā)布產(chǎn)品信息的網(wǎng)站
  • 廣州的一起做網(wǎng)站網(wǎng)絡(luò)軟文廣告
  • 幫客戶做網(wǎng)站內(nèi)容網(wǎng)頁關(guān)鍵詞排名優(yōu)化
  • 免費自助建站系統(tǒng)平臺 貼吧網(wǎng)站分析工具
  • 廣州網(wǎng)站設(shè)計我選刻在線識別圖片來源
  • 自貢做網(wǎng)站的公司百度官網(wǎng)認證申請
  • 有沒有專門做航拍婚禮網(wǎng)站公司網(wǎng)站建設(shè)公司
  • 現(xiàn)在個人做網(wǎng)站還能盈利營銷策略有哪些方法
  • 出國越南做網(wǎng)站8000保底seo是什么專業(yè)的課程
  • 保定網(wǎng)站 優(yōu)百度關(guān)鍵詞模擬點擊軟件
  • 查詢系統(tǒng)網(wǎng)站模板電商網(wǎng)站鏈接買賣
  • 獨立商城系統(tǒng)網(wǎng)站建設(shè)站長工具ping檢測
  • 重慶網(wǎng)站產(chǎn)品推廣汕頭網(wǎng)站制作設(shè)計
  • 怎么用自己電腦做服務(wù)器搭建網(wǎng)站深圳龍華區(qū)大浪社區(qū)
  • 網(wǎng)站注冊人查詢某個產(chǎn)品營銷推廣方案
  • 保險官方網(wǎng)站如何進行品牌營銷
  • 聽完米課做的網(wǎng)站網(wǎng)絡(luò)營銷公司好不好
  • 買了域名怎么用免費seo教程
  • 品牌高端網(wǎng)站建設(shè)公司網(wǎng)絡(luò)公司網(wǎng)頁設(shè)計
  • 做傳銷網(wǎng)站違法嗎自己搭建網(wǎng)站需要什么
  • 星海灣建設(shè)管理中心網(wǎng)站百度知道登錄
  • 網(wǎng)站建設(shè)優(yōu)化文檔網(wǎng)站外包
  • 網(wǎng)站和管理系統(tǒng)的區(qū)別會計培訓(xùn)班要多少錢一般要學(xué)多久
  • 網(wǎng)站專題頁面設(shè)計欣賞騰訊企業(yè)郵箱登錄入口
  • 武漢網(wǎng)站制作公司排名中國進入一級戰(zhàn)備狀態(tài)了嗎
  • oa辦公系統(tǒng)下載安裝seo引擎優(yōu)化專員