java常见面试考点(九):SSM面试题
java常見(jiàn)面試考點(diǎn)
往期文章推薦:
??java常見(jiàn)面試考點(diǎn)(四):方法的參數(shù)傳遞機(jī)制
??java常見(jiàn)面試考點(diǎn)(五):基本類型和包裝類型的區(qū)別
??java常見(jiàn)面試考點(diǎn)(六):深入理解String類型
??java常見(jiàn)面試考點(diǎn)(七):遞歸與迭代
??java常見(jiàn)面試考點(diǎn)(八):成員變量與局部變量
【版權(quán)申明】未經(jīng)博主同意,謝絕轉(zhuǎn)載!(請(qǐng)尊重原創(chuàng),博主保留追究權(quán));
本博客的內(nèi)容來(lái)自于:java常見(jiàn)面試考點(diǎn)(九):SSM面試題;
學(xué)習(xí)、合作與交流聯(lián)系q384660495;
本博客的內(nèi)容僅供學(xué)習(xí)與參考,并非營(yíng)利;
文章目錄
- java常見(jiàn)面試考點(diǎn)
- 一、Spring Bean的作用域
- 二、Spring 的事務(wù)傳播屬性和隔離級(jí)別
- 1、事務(wù)的傳播行為
- 2、事務(wù)的隔離級(jí)別
- 三、SpringMVC的執(zhí)行原理與亂碼問(wèn)題
- 1、post與get請(qǐng)求的亂碼問(wèn)題
- 2、SpringMVC的執(zhí)行流程
- 四、Mybatis屬性與字段對(duì)應(yīng)
- 總結(jié)
一、Spring Bean的作用域
如圖一共有五種作用域,其中request、session和global session三種作用域僅在基于web的應(yīng)用中使用,只能用在基于web的Spring ApplicationContext環(huán)境。
面試的話重點(diǎn)掌握前倆個(gè),本部分內(nèi)容參考了Spring中bean的作用域與生命周期
對(duì)于Bean的生命周期,可以參考我的另外一篇文章:
二、Spring 的事務(wù)傳播屬性和隔離級(jí)別
1、事務(wù)的傳播行為
propagation:用來(lái)設(shè)置事務(wù)的傳播行為:一個(gè)方法運(yùn)行在了一個(gè)開(kāi)啟了事務(wù)的方法中時(shí),當(dāng)前方法是使用原來(lái)的事務(wù),還是開(kāi)啟一個(gè)新的事務(wù),這就是事務(wù)的傳播行為。
比如:Propagation.REQUIRED:默認(rèn)值,代表繼續(xù)使用原來(lái)的事。Propagation.REQUIRES_NEW:將原來(lái)的事務(wù)掛起,開(kāi)啟一個(gè)新的事務(wù)。最常用的事務(wù)傳播屬性就是REQUIRED和REQUIRES_NEW。
REQUIRED傳播行為:當(dāng)bookService的purchase()方法被另外一個(gè)事務(wù)方法checkout()調(diào)用時(shí),它會(huì)默認(rèn)在現(xiàn)有的事務(wù)內(nèi)運(yùn)行。因此在checkout()方法的開(kāi)始和結(jié)束內(nèi)只有一個(gè)事務(wù),這個(gè)事務(wù)只會(huì)在checkout()方法調(diào)用結(jié)束時(shí)被提交,那就導(dǎo)致用戶一本都買(mǎi)不了。
REQUIRES_NEW傳播行為:表示該方法必須啟動(dòng)一個(gè)新的事務(wù),并在自己的事務(wù)內(nèi)運(yùn)行,如果已經(jīng)有在運(yùn)行,就先把他掛起。
事務(wù)的其他傳播行為可以參考Spring事務(wù)傳播機(jī)制詳解,Spring事務(wù)傳播性與隔離級(jí)別
2、事務(wù)的隔離級(jí)別
在講事務(wù)的隔離級(jí)別之前,我們先來(lái)看一下數(shù)據(jù)庫(kù)事務(wù)并發(fā)問(wèn)題:
假設(shè)現(xiàn)在有兩個(gè)事務(wù):Transaction01和Transaction02并發(fā)執(zhí)行。
①臟讀:當(dāng)前事務(wù)讀到了其他事務(wù)更新但是還沒(méi)有提交的值(其他事務(wù)不回滾還好,其他事務(wù)回滾你讀到的就是一個(gè)無(wú)效值)。
Transaction01將某條記錄的AEG值從20修改為30
Transaction02讀取了Transaction01更新后的值:30
Transaction01回滾事務(wù),AEG的值又恢復(fù)到了20
Transaction02讀取到的30就是一個(gè)無(wú)效的值
②不可重復(fù)讀:
Transaction01讀取了AEG的值為20
Transaction02將AEG的值修改為30
Transaction01再次讀取AEG值為30,和第一次讀取結(jié)果不一致
③幻讀:
Transaction01讀取了STUDENT表中的一部分?jǐn)?shù)據(jù)
Transaction02向STUDENT表中插入了新的行
不可重復(fù)讀重點(diǎn)在于update和delete,而幻讀的重點(diǎn)在于insert;
避免不可重復(fù)讀需要鎖行就行,避免幻影讀則需要鎖表
參考不可重復(fù)度和幻讀的區(qū)別,不可重復(fù)讀和幻讀區(qū)別
事務(wù)的隔離級(jí)別:數(shù)據(jù)庫(kù)系統(tǒng)必須具有隔離并發(fā)運(yùn)行各個(gè)事務(wù)的能力,使它們不會(huì)相互影響,避免各種并發(fā)問(wèn)題。一個(gè)事務(wù)與其他事務(wù)隔離的程度成為事務(wù)的隔離級(jí)別。SQL標(biāo)準(zhǔn)中規(guī)定了多種事務(wù)隔離級(jí)別,不同隔離級(jí)別對(duì)應(yīng)不同的干擾程度,隔離級(jí)別越高,數(shù)據(jù)一致性就越好,但是并發(fā)性就越弱。
1、讀未提交:READ UNCOMMITTED,允許Transaction01讀取Transaction02未提交的修改。(臟讀、不可重復(fù)讀、幻讀都有可能出現(xiàn))
2、讀已提交:READ COMMITTED,要求Transaction01只能讀取Transaction02已經(jīng)提交的修改。(臟讀就可以避免了)
3、可重復(fù)讀:REPEATABLE READ,確保Transaction01可以多次從一個(gè)字段讀取到相同的值,即Transaction01執(zhí)行期間禁止其他事務(wù)對(duì)這個(gè)字段進(jìn)行更新。(臟讀、不可重復(fù)讀都不會(huì)出現(xiàn)了)
4、串行化:SERIALIZABLE,確保Transaction01可以多次從一個(gè)表中讀取到相同的行,在Transaction01執(zhí)行期間,禁止其他事務(wù)對(duì)這個(gè)表進(jìn)行添加、更新、刪除操作。可以避免所有并發(fā)問(wèn)題,但是性能最低。(臟讀、不可重復(fù)讀、幻讀都不可能出現(xiàn))
隔離級(jí)別越高,數(shù)據(jù)一致性就越好,但是并發(fā)性就越弱
三、SpringMVC的執(zhí)行原理與亂碼問(wèn)題
1、post與get請(qǐng)求的亂碼問(wèn)題
2、對(duì)于get請(qǐng)求,在tomcat的server.xml配置文件中配置:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />添加URIEncoding="utf-8" <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>2、SpringMVC的執(zhí)行流程
四、Mybatis屬性與字段對(duì)應(yīng)
總結(jié)
這里介紹了一些簡(jiǎn)單的SSM的面試問(wèn)題,希望對(duì)大家有所幫助。
總結(jié)
以上是生活随笔為你收集整理的java常见面试考点(九):SSM面试题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql 端口time_wait_li
- 下一篇: 若依框架入门(前后端分离版本)