面試準(zhǔn)備
Writen By CoolGhost,Started With 2016/10
- 連接Oracle數(shù)據(jù)庫(kù)操作
ResultSet rs = null; Statement stmt = null; Connection conn = null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); conn = DriverManager.getConnection("jdbc:oracle:thin:@ip:port", "username", "password"); stmt = conn.createStatement(); rs = stmt.executeQuery("select * from dept"); while (rs.next()) { System.out.println(rs.getString("deptno")); } } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null) { rs.close(); rs = null; } if (stmt != null) { stmt.close(); stmt = null; } if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); } }
- java單例模式
public class Singleton { private Singleton() {} private static Singleton single=null; public static Singleton getInstance() { if (single == null) { single = new Singleton(); } return single; } }
- java路徑
兩種方法:一種是\\\
另外一種是/
- java正則
注意意推,java中只用正則public class RegexMatches { private static final String REGEX = "\\bcat\\b"; private static final String INPUT = "cat cat cat cattie cat"; public static void main( String args[] ){ Pattern p = Pattern.compile(REGEX); Matcher m = p.matcher(INPUT); // 獲取 matcher 對(duì)象 int count = 0; while(m.find()) { count++; System.out.println("Match number "+count); System.out.println("start(): "+m.start()); System.out.println("end(): "+m.end()); } } }
\
需要進(jìn)行轉(zhuǎn)義,如\\d
- String骗露、StringBuffer船惨、StringBuilder
- 其中咒钟,String被final修飾拣宰,為不可變類夜涕,不能被繼承挟裂,并且其值不能被改變蒋譬。進(jìn)行添加操作的時(shí)候會(huì)轉(zhuǎn)換成 StringBuffer類型
- StringBuffer割岛、StringBuilder均為可變類,其功能基本類似犯助,但是StringBuilder線程不安全
- String因?yàn)槭遣豢勺冾愌⑵幔虼瞬贿m合用來(lái)頻繁的進(jìn)行修改操作,而StirngBuilder和StringBuffer主要看是否運(yùn)用在多線程中剂买。另外三者都是借助
char[]
實(shí)現(xiàn)
- 浮點(diǎn)默認(rèn)為dobule類型惠爽,如需float類型,(float)0.1或0.1f
- Switch
基本類型中l(wèi)ong瞬哼、float婚肆、double類型不能用于switch、而非基本類型的String可以用于switch - 線程
線程也被稱為輕量級(jí)進(jìn)程坐慰,是程序執(zhí)行的最小單元较性,一個(gè)進(jìn)程可以擁有多個(gè)線程,各個(gè)線程之間共享程序的內(nèi)存空間。 - 多線程有點(diǎn)
- 多線程可以減少程序響應(yīng)時(shí)間
- 線程的創(chuàng)建和切換開銷較小
- 單線程浪費(fèi)多CPU執(zhí)行能力
- 多線程能簡(jiǎn)化程序結(jié)構(gòu)赞咙,便于理解和維護(hù)
- Servlet的生命周期
初始化階段:調(diào)用init()方法责循;響應(yīng)客戶請(qǐng)求階段:調(diào)用service()方法,并依據(jù)請(qǐng)求類型調(diào)用dopost和doget方法攀操;終止階段:調(diào)用destroy()方法 - java讀取文件
//字節(jié)流,不會(huì)出現(xiàn)亂碼 File file=new File(filePath); if(file.isFile() && file.exists()){ //判斷文件是否存在 InputStreamReader read = new InputStreamReader(new FileInputStream(file),encoding);//考慮到編碼格式 BufferedReader bufferedReader = new BufferedReader(read); String lineTxt = null; while((lineTxt = bufferedReader.readLine()) != null){ System.out.println(lineTxt); } read.close(); }else{ System.out.println("找不到指定的文件"); }
//字符流院仿,可能出現(xiàn)亂碼 FileReader fr=new FileReader(filePath); BufferedReader bufferedReader = new BufferedReader(fr);
- servlet和cgi
servlet處于服務(wù)器進(jìn)程中,它通過(guò)多線程方式運(yùn)行其service方法速和,一個(gè)實(shí)例可以服務(wù)于多個(gè)請(qǐng)求歹垫,并且其實(shí)例一般不會(huì)銷毀,而CGI對(duì)每個(gè)請(qǐng)求都產(chǎn)生新的進(jìn)程颠放,服務(wù)完成后就銷毀排惨,所以效率上低于servlet。 - jsp跳轉(zhuǎn)方式
有兩種:- forward跳轉(zhuǎn):<jsp:forward page ="跳轉(zhuǎn)頁(yè)面地址">
- 服務(wù)器端跳轉(zhuǎn)慈迈,地址欄不改變若贮。
- 執(zhí)行到跳轉(zhuǎn)語(yǔ)句后馬上執(zhí)行跳轉(zhuǎn)省有,之后的代碼不再執(zhí)行(跳轉(zhuǎn)之前一定要釋放全部資源)痒留。
- request設(shè)置的屬性在跳轉(zhuǎn)后的頁(yè)面仍然可以使用。
- response跳轉(zhuǎn):response.sendRedirect("跳轉(zhuǎn)頁(yè)面地址")
- 客戶端跳轉(zhuǎn)蠢沿,地址欄改變伸头。
- 所有代碼執(zhí)行完畢后跳轉(zhuǎn)。
- 跳轉(zhuǎn)后頁(yè)面不能使用上一個(gè)頁(yè)面的request舷蟀。
- 使用地址重寫傳遞參數(shù)(response.sendRedirect("URL?參數(shù)名=參數(shù)值"))恤磷。
- forward跳轉(zhuǎn):<jsp:forward page ="跳轉(zhuǎn)頁(yè)面地址">
- java數(shù)組初始化賦值
int[] nums = {0,1,2,3,4,5,6,7,8,9}; int[] nums = new int[]{0,1,2,3,4,5,6,7,8,9};
- 抽象類
其子類權(quán)限只能擴(kuò)大,不能縮小野宜。 - java static
public class Alpha { static int i = 1; static { i++; } public Alpha() { i++; } public static void main(String[] args) { Alpha t1 = new Alpha(); System.out.println(t1.i); //3 Alpha t2 = new Alpha(); System.out.println(t2.i);//4 靜態(tài)資源只執(zhí)行一次 } }
- SQL truncate 扫步、delete與drop區(qū)別
- truncate 和 delete 只刪除數(shù)據(jù)不刪除表的結(jié)構(gòu)
- delete 語(yǔ)句是數(shù)據(jù)庫(kù)操作語(yǔ)言(dml),事務(wù)提交之后才生效。truncate匈子、drop 是數(shù)據(jù)庫(kù)定義語(yǔ)言(ddl)河胎,立即生效,不處罰事務(wù)虎敦。
- mybatis
-
statementType
設(shè)置為CALLABLE
游岳,默認(rèn)情況下是PREPARED
- 一般使用#,$符號(hào)只有在特定情況下其徙,如表前綴才使用胚迫,可能帶來(lái)SQL注入
- jdbctype如果不設(shè)定,并且如果參數(shù)為null唾那,則會(huì)1111錯(cuò)誤
-
- spring mvc
-
運(yùn)行流程
- 用戶發(fā)送請(qǐng)求時(shí)访锻,首先被DispatcherServlet捕獲
- DispatcherServlet對(duì)請(qǐng)求URL進(jìn)行解析,得到請(qǐng)求資源標(biāo)識(shí)符(URI)。然后根據(jù)該URI朗若,調(diào)用HandlerMapping
- HandlerMapping根據(jù)請(qǐng)求恼五,訪問(wèn)不同Controller進(jìn)行處理
- Controller進(jìn)行業(yè)務(wù)的處理,完成后將返回的數(shù)據(jù)和跳轉(zhuǎn)到的界面封裝到ModelAndView
- ViewResolver解析Controller返回的ModelAndView哭懈,讀取其信息灾馒,然后渲染界面完成一次請(qǐng)求
-
mvc:view-controller
,讓請(qǐng)求不通過(guò)Handler,直接訪問(wèn)到響應(yīng)視圖遣总。而在配置這個(gè)標(biāo)簽之后睬罗,默認(rèn)的@RequestMapping將會(huì)失效,這個(gè)時(shí)候需要配置mvc:annotation-driven
旭斥。而mvc:resources
則是用來(lái)配置靜態(tài)資源比如:css容达,js之類。
-