1.步驟
注冊數(shù)據(jù)庫驅(qū)動(dòng)
建立數(shù)據(jù)庫連接
創(chuàng)建一個(gè)Statement(聲明)
執(zhí)行SQL語句
處理結(jié)果集
關(guān)閉數(shù)據(jù)庫連接
2.Thread和Runnable實(shí)現(xiàn)線程類的區(qū)別
繼承Thread,線程代碼存放在Thread子類的run方法中,
實(shí)現(xiàn)Runnable,線程代碼存放在接口子類的run方法中
實(shí)現(xiàn)Runnable接口,適合多個(gè)相同代碼的線程去處理同一個(gè)資源的情況,可以避免由于單繼承的局限,增強(qiáng)了程序的健壯性,代碼能夠被多個(gè)線程共享,代碼與數(shù)據(jù)是獨(dú)立的。
3.什么是死鎖
兩個(gè)進(jìn)程都在等待對方執(zhí)行完畢才能繼續(xù)往下執(zhí)行的時(shí)候就會發(fā)生死鎖,結(jié)果就是兩個(gè)進(jìn)程都陷入了無限的等待。
4.如若確保多個(gè)線程可以訪問多個(gè)資源同時(shí)又不導(dǎo)致死鎖
使用多線程的時(shí)候,一種非常簡單的避免死鎖的方式就是,指定獲取鎖的順序,并強(qiáng)制線程按照指定的順序獲取鎖,因此,如果所有的線程都以同樣的順序加鎖和釋放鎖,就不會出現(xiàn)死鎖。
5.readonly和disable區(qū)別
readonly只針對input(text/password)和textarea有效,disable對于所有的表單元素都有效,當(dāng)表單使用disable后,我們將表單以post或get方式提交時(shí),這個(gè)元素的值不會被傳出去,readonly會將該值傳過去。
6.Mybatis的#{}和${}
動(dòng)態(tài)SQL是Mybatis強(qiáng)大的特性之一。這也是他由于其他框架的原因,Mybatis在對SQL語句預(yù)編譯之前,會對SQL進(jìn)行動(dòng)態(tài)解析。
#{}相當(dāng)于?,${}將傳入的參數(shù)當(dāng)做字符串解析
#{}很大程度防止SQL注入,${}不可以防止SQL注入
${}一般用于傳入數(shù)據(jù)庫對象,例如傳入表名
7.什么是SpringMVC框架
SpringMVC是基于過濾器對servlet進(jìn)行封裝的一個(gè)框架,我們使用的時(shí)候就在web.xml文件中配置DispatcherServlet(前端控制器)類,SpringMVC工作時(shí)主要通過DispatcherServlet管理接收請求并處理。
8.@RequestMapping注解的作用
用于類上,表示類中的所有響應(yīng)請求的方式都是以該地址作為父路徑
用在方法上,需要在這個(gè)注解里寫上要攔截的路徑