面試複習(深圳第四天)

2021-08-16 17:44:39 字數 1202 閱讀 6133

今日陽光明媚,複習一下原始碼、多執行緒、io、rpc、jvm

※※※io※※※

nio由原來的阻塞讀寫(占用執行緒)變成了單執行緒輪詢事件,找到可以進行讀寫的網路描述符進行讀寫。除了事件的輪詢是阻塞的(沒有可幹的事情必須要阻塞),剩餘的i/o操作都是純cpu操作,沒有必要開啟多執行緒。

總結來說,傳統的io跟nio的區別:

1、傳統io面向流,讀一寫一,nio面向緩衝,也就是塊,所以速率顯著提高;

2、傳統io,當read()或者writ()呼叫時,就會發生執行緒的阻塞;而nio不會阻塞,當無資料時直接返回,當有資料時會註冊讀、寫、連線等事件,讓selector產生興趣,進而去獲取selectorkey來遍歷已經就緒的channel.

3、資料模型,傳統io基於過程,nio基於事件.

4、channel是雙向的,而stream是單向的。channel的載體buffer,有三個關鍵:capatity容量,limit實際長度,position位置.filp()方法就是將position位置移回最開始.

5、tips,selector.seletor()沒有可幹的事情必須要阻塞

※※※rpc※※※

rpc主要是基於tcp/ip協議的,而http服務主要是基於http協議的,

我們都知道http協議是在傳輸層協議tcp之上的應用層。

網路五層結構:應用層,傳輸層,網路層,鏈路層,物理層。

遠端過程呼叫,dubbo,使用的就是rpc原理,通過動態**介面,傳送對應的資料報,呼叫遠端專案的函式過程返回資料,獲得資料!

※※※jvm-gc※※※

計數演算法,引用+1,引用刪除-1,等於0則清除;

標記-清除,根元素到可達之地留下,其他清除;

標記-壓縮,上面清除後,整理,提高效率;

複製演算法,分兩片,滿了複製到另一片;

jvm,分代演算法,複製演算法,多次被複製的物件進入老年代。

※※※執行緒※※※

兩種方式,

1、new thread()}.star();

2、class a implements runnable }

new thread(new a()).start();

同步控制工具

aqs框架

reentrantlock

condition

semaphore

readwritelock

等等

Python打卡第四天(複習)

python只有變數,沒有名字 變數需要注意的地方 1.變數只能用字母表示,且字母不能分開 2.在使用變數之前,需要對其先賦值 3.變數名可以包括字母 數字 下劃線,但變數名不能以數字開頭 字母可以是大寫或者小寫,但大小寫是不同的。也就是說fish和fish對於python來說是完全不同的。4.等號...

學習筆記複習第四天

判斷元素相等容易系統崩潰 html中相同標籤位置不同 即為不相同 html 中元素標籤不僅有內容屬性 還有位置屬性 即在整段 的行數 concat 方法用於合併兩個或多個陣列。此方法不會更改現有陣列,而是返回乙個新陣列。var alpha a b c var numeric 1,2,3 alpha....

mysql複習第四天 單行函式

select sname,if score 60,及格了 沒有及格 as a from student case 要判斷的字段或者表示式 when 常量1 then 要顯示的值或者語句 when 常量2 then 要顯示的值或者語句 else 要顯示的的值n或者語句n endselect sname...