目錄
- 背景
- 題目
-
- 1.sql執行過程
- 2.判斷sql是否執行成功?
- 3.get和post差別
- 補充:為什麼get比post更快
- 4.線程池
- 5.線程的建立方式
- 6.索引失效了怎麼辦
- [email protected]用法
- 8.索引有幾種
背景
21年5月,應聘杭州餘杭某外包。
題目的答案,是根據我的了解寫的。可能有不對的地方,歡迎大家指正。
題目
1.sql執行過程
2.判斷sql是否執行成功?
表述1:通過sql傳回值-受影響的行數,判斷是否執行成功
受影響的行數>=1,執行成功
表述2:在SQL語句附近加上 mysql_affected_rows() ,如果 mysql_affected_rows()的值為“-1”,則執行失敗,如果大于等于0,則語句執行成功!
3.get和post差別
一般的差別:
(1)post更安全(不會作為url的一部分,不會被緩存、儲存在伺服器日志、以及浏覽器浏覽記錄中)
(2)post發送的資料更大(get有url長度限制)
(3)post能發送更多的資料類型(get隻能發送ASCII字元)
(4)post比get慢
(5)post用于修改和寫入資料,get一般用于搜尋排序和篩選之類的操作(淘寶,支付寶的搜尋查詢都是get送出),目的是資源的擷取,讀取資料
補充:為什麼get比post更快
1.post請求包含更多的請求頭
因為post需要在請求的body部分包含資料,是以會多了幾個資料描述部分的首部字段(如:content-type),這其實是微乎其微的。
2.最重要的一條,post在真正接收資料之前會先将請求頭發送給伺服器進行确認,然後才真正發送資料
post請求的過程:
(1)浏覽器請求tcp連接配接(第一次握手)
(2)伺服器答應進行tcp連接配接(第二次握手)
(3)浏覽器确認,并發送post請求頭(第三次握手,這個封包比較小,是以http會在此時進行第一次資料發送)
(4)伺服器傳回100 Continue響應
(5)浏覽器發送資料
(6)伺服器傳回200 OK響應
get請求的過程:
(1)浏覽器請求tcp連接配接(第一次握手)
(2)伺服器答應進行tcp連接配接(第二次握手)
(3)浏覽器确認,并發送get請求頭和資料(第三次握手,這個封包比較小,是以http會在此時進行第一次資料發送)
(4)伺服器傳回200 OK響應
也就是說,目測get的總耗是post的2/3左右,
3.get會将資料緩存起來,而post不會
4.線程池
Executors.newCachedThreadPool
Executors.newFixedThreadPool
Executors.newScheduledThreadPool
Executors.newSingleThreadExecutor
5.線程的建立方式
6.索引失效了怎麼辦
[email protected]用法
8.索引有幾種
主鍵索引
唯一索引
普通索引
全文索引