做题总结(一)
方法區(qū)在JVM中也是一個(gè)非常重要的區(qū)域,它與堆一樣,是被 線程共享 的區(qū)域。 在方法區(qū)中,存儲(chǔ)了每個(gè)類的信息(包括類的名稱、方法信息、字段信息)、靜態(tài)變量、常量以及編譯器編譯后的代碼等。
事務(wù)屬性的種類: 傳播行為、隔離級(jí)別、只讀和事務(wù)超時(shí)
傳播行為定義了被調(diào)用方法的事務(wù)邊界。
傳播行為 意義
PROPERGATION_MANDATORY
表示方法必須運(yùn)行在一個(gè)事務(wù)中,如果當(dāng)前事務(wù)不存在,就拋出異常
PROPAGATION_NESTED
表示如果當(dāng)前事務(wù)存在,則方法應(yīng)該運(yùn)行在一個(gè)嵌套事務(wù)中。否則,它看起來和 PROPAGATION_REQUIRED 看起來沒什么倆樣
PROPAGATION_NEVER
表示方法不能運(yùn)行在一個(gè)事務(wù)中,否則拋出異常
PROPAGATION_NOT_SUPPORTED
表示方法不能運(yùn)行在一個(gè)事務(wù)中,如果當(dāng)前存在一個(gè)事務(wù),則該方法將被掛起
PROPAGATION_REQUIRED
表示當(dāng)前方法必須運(yùn)行在一個(gè)事務(wù)中,如果當(dāng)前存在一個(gè)事務(wù),那么該方法運(yùn)行在這個(gè)事務(wù)中,否則,將創(chuàng)建一個(gè)新的事務(wù)
PROPAGATION_REQUIRES_NEW
表示當(dāng)前方法必須運(yùn)行在自己的事務(wù)中,如果當(dāng)前存在一個(gè)事務(wù),那么這個(gè)事務(wù)將在該方法運(yùn)行期間被掛起
PROPAGATION_SUPPORTS
表示當(dāng)前方法不需要運(yùn)行在一個(gè)是事務(wù)中,但如果有一個(gè)事務(wù)已經(jīng)存在,該方法也可以運(yùn)行在這個(gè)事務(wù)中
調(diào)用一個(gè)CGI程序的時(shí)候,服務(wù)器端就要新啟用一個(gè)進(jìn)程 ,而Servlet充分發(fā)揮了服務(wù)器端的資源并高效的利用。每次調(diào)用Servlet時(shí)并不是新啟用一個(gè)進(jìn)程 。GI不可移植,為某一特定平臺(tái)編寫的CGI應(yīng)用只能運(yùn)行于這一環(huán)境中。每一個(gè)CGI應(yīng)用存在于一個(gè)由客戶端請(qǐng)求激活的進(jìn)程中,并且在請(qǐng)求被服務(wù)后被卸載。這種模式將引起很高的內(nèi)存、CPU開銷,而且在同一進(jìn)程中不能服務(wù)多個(gè)客戶。
doGet/doPost 則是在 javax.servlet.http.HttpServlet 中實(shí)現(xiàn)的
創(chuàng)建Servlet的實(shí)例是由Servlet容器來完成的,且創(chuàng)建Servlet實(shí)例是在初始化方法init()之前
Servlet的生命周期分為5個(gè)階段:加載、創(chuàng)建、初始化、處理客戶請(qǐng)求、卸載。
(1)加載:容器通過類加載器使用servlet類對(duì)應(yīng)的文件加載servlet
(2)創(chuàng)建:通過調(diào)用servlet構(gòu)造函數(shù)創(chuàng)建一個(gè)servlet對(duì)象
(3)初始化:調(diào)用init方法初始化
(4)處理客戶請(qǐng)求:每當(dāng)有一個(gè)客戶請(qǐng)求,容器會(huì)創(chuàng)建一個(gè)線程來處理客戶請(qǐng)求
(5)卸載:調(diào)用destroy方法讓servlet自己釋放其占用的資源
Servlet是線程不安全的,在Servlet類中可能會(huì)定義共享的類變量,這樣在并發(fā)的多線程訪問的情況下,不同的線程對(duì)成員變量的修改會(huì)引發(fā)錯(cuò)誤。
Java中的多線程是一種搶占式的機(jī)制,而不是分時(shí)機(jī)制。搶占式的機(jī)制是有多個(gè)線程處于可運(yùn)行狀態(tài),但是只有一個(gè)線程在運(yùn)行
sleep是線程類(Thread)的方法,wait是Object類的方法;sleep不釋放對(duì)象鎖,wait放棄對(duì)象鎖;sleep暫停線程、但監(jiān)控狀態(tài)仍然保持,結(jié)束后會(huì)自動(dòng)恢復(fù)
JVM中一個(gè)字節(jié)以下的整型數(shù)據(jù)會(huì)在JVM啟動(dòng)的時(shí)候加載進(jìn)內(nèi)存,除非用new Integer()顯式的創(chuàng)建對(duì)象,否則都是同一個(gè)對(duì)象
所有只有i04是一個(gè)新對(duì)象,其他都是同一個(gè)對(duì)象。所有A,B選項(xiàng)為true
C選項(xiàng)i03和i04是兩個(gè)不同的對(duì)象,返回false
D選項(xiàng)i02是基本數(shù)據(jù)類型,比較的時(shí)候比較的是數(shù)值,返回true
運(yùn)行時(shí)異常的特點(diǎn)是Java編譯器不會(huì)檢查它,也就是說,當(dāng)程序中可能出現(xiàn)這類異常,即使沒有用try-catch語句捕獲它,也沒有用throws子句聲明拋出它,也會(huì)編譯通過。
非運(yùn)行時(shí)異常 (編譯異常): 是RuntimeException以外的異常,類型上都屬于Exception類及其子類。從程序語法角度講是必須進(jìn)行處理的異常,如果不處理,程序就不能編譯通過。如IOException、SQLException等以及用戶自定義的Exception異常,一般情況下不自定義檢查異常。
靜態(tài)的include:是jsp的指令來實(shí)現(xiàn)的,<% @ include file=“xx.html”%> 特點(diǎn)是 共享request請(qǐng)求域,先包含再編譯,不檢查包含頁面的變化。
動(dòng)態(tài)的include:是jsp動(dòng)作來實(shí)現(xiàn)的,<jsp:include page=“xx.jsp” flush=“true”/> 這個(gè)是不共享request請(qǐng)求域,先編譯在包含,是要檢查包含頁面的變化的。
-Xmx:最大堆大小
-Xms:初始堆大小
-Xmn:年輕代大小
-XXSurvivorRatio:年輕代中Eden區(qū)與Survivor區(qū)的大小比值
年輕代5120m, Eden:Survivor=3,Survivor區(qū)大小=1024m(Survivor區(qū)有兩個(gè),即將年輕代分為5份,每個(gè)Survivor區(qū)占一份),總大小為2048m。
-Xms初始堆大小即最小內(nèi)存值為10240m
總結(jié)
- 上一篇: HTTP请求头中各字段解释
- 下一篇: Axiso解决跨域访问 !!!!