java面試總結之雜項【三】

前言

由於記的時候比較雜,因此全放雜項裏面了,可能包括各種亂七八糟的東西。。。

如有錯誤的地方還請指出,免得誤人子弟。。。

正文

Http Tcp
爲什麼需要四次揮手
tcp之所以三次握手四次揮手是因爲發送端的數據發送完了請求關閉連接,但接收端不一定接收完畢,因此需要來回重複確認。

爲什麼需要三次握手
如果只有兩次握手,
tcp/udp屬於傳輸層 基於 ip網絡層 socket和http屬於應用層

 

http的幾種請求方式
get post put head delete connect options
trace
其中trace用於回顯收到的請求,一般禁用
connect用於代理

 

java IO流
1.字節流 不緩存到緩衝區,主要操作類inputStream   outputStream
2.字符流  會緩存到緩衝區,當輸出內容到文件時即使不flush文件中也依舊有內容,且一個字符佔兩個字節,默認編碼unicode  主要操作類爲   Reader   Writer

 

spring生命週期

這個太多,建議搜索

 

Mysql相關

Mysql的五種索引
1.主鍵索引    (不可以有空,唯一的)
2.普通索引
3.唯一索引   (可以有空)
4.聯合索引
5.全文索引    (對文本內容分詞搜索)
6.哈西索引myISAM和InnoDB不支持
聯合索引按照最左匹配原則

替代like走索引方法
1.SELECT LOCATE('bar',`foobarbar`); 
    ###返回4
2.INSTR(`str`,'substr')方法

據說mysql5.6中已經解決了 like %keyword% 第一個%分號的問題,但還未親自驗證。

索引的條件順序可以打亂,mysql優化器會自動調整順序

聚合索引是物理地址連續存放的索引

 

索引場景

假設添加了一個由三個字段組成的聯合索引
1.使用條件1和3,條件1會使用索引,條件3不會使用索引
2.between 屬於範圍查詢,因此不走索引
3.in不會使用索引 ,可使用not exists,in屬於範圍查詢
4.mysql like 百分號在後會走索引


mysql四個隔離級別 未提交讀 已提交讀 可重複讀 可序列化 

 

mysql鎖
mysql行鎖 走索引 for update 不走索引則表鎖
for update爲排他鎖 不可讀  lock in share.mode爲共享鎖其他事務可讀

Mysql優化
1.合理的表設計
2.水平垂直分割表 
3.讀寫分離
4.查看慢查詢sql   show variables like "long_query_time"
5.適當添加索引
6.定時整理碎片數據
7.複雜操作可以使用存儲過程

 


 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章