W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
筆者能力有限,總結(jié)有誤的地方,請(qǐng)讀者協(xié)作更正。
1.理解同步、異步、阻塞、非阻塞?
同步:執(zhí)行一個(gè)操作之后,等待結(jié)果,然后才繼續(xù)執(zhí)行后續(xù)的操作
異步:執(zhí)行一個(gè)操作的同時(shí)之后,可以執(zhí)行其他操作,然后等待通知在回來執(zhí)行剛才沒有執(zhí)行完成的操作。
阻塞:進(jìn)程給CPU傳達(dá)一個(gè)任務(wù)之后,一直等待CPU處理完成,然后才之后后面的操作。
非阻塞:進(jìn)程給CPU傳達(dá)任務(wù)之后,繼續(xù)處理后續(xù)的操作,隔一段時(shí)間再來詢問之前的操作是否完成。
2.Java中如何實(shí)現(xiàn)無阻塞方式的Socket編程?
NIO解決了多線程服務(wù)器存在的線程開銷問題;
NIO中使用多線程的目的是實(shí)現(xiàn)少量線程為多個(gè)客戶端服務(wù),達(dá)到線程的復(fù)用。
3.Java中有幾種類型的流?說出分別有哪些類?
JDK提供的流繼承了四大類:
InputStream(字節(jié)輸入流),OutputStream(字節(jié)輸出流), Reader(字符輸入流),Writer(字符輸出流)。
按流向分類:
輸入流:?程序可以從中讀取數(shù)據(jù)的流。 輸出流:?程序能向其中寫入數(shù)據(jù)的流。
按數(shù)據(jù)傳輸單位分類:
字節(jié)流:以字節(jié)(8位二進(jìn)制)為單位進(jìn)行處理。主要用于讀寫諸如圖像或聲音的二進(jìn)制數(shù)據(jù)。
字符流:以字符(16位二進(jìn)制)為單位進(jìn)行處理。
都是通過字節(jié)流的方式實(shí)現(xiàn)的。字符流是對(duì)字節(jié)流進(jìn)行了封裝,方便操作。在最底層,所有的輸入輸出都是字節(jié)形式的。后綴是Stream是字節(jié)流,而后綴是Reader,Writer是字符流。
按功能分類:
節(jié)點(diǎn)流:從特定的地方讀寫的流類,如磁盤或者一塊內(nèi)存區(qū)域。
過濾流:使用節(jié)點(diǎn)流作為輸入或輸出。過濾流是使用一個(gè)已經(jīng)存在的輸入流或者輸出流連接創(chuàng)建的。
4.用JAVA SOCKET?編程,讀服務(wù)器幾個(gè)字符,再寫入本地顯示。
客戶端向服務(wù)器端發(fā)送連接請(qǐng)求后,就被動(dòng)地等待服務(wù)器的響應(yīng)。
典型的TCP客戶端要經(jīng)過下面三步操作:
1)創(chuàng)建一個(gè)Socket實(shí)例:構(gòu)造函數(shù)向指定的遠(yuǎn)程主機(jī)和端口建立一個(gè)TCP連接;
2)通過套接字的I/O流與服務(wù)端通信;
3)用Socket類的close方法關(guān)閉連接。
服務(wù)端的工作是建立一個(gè)通信終端,并被動(dòng)地等待客戶端的連接。
典型的TCP服務(wù)端執(zhí)行如下兩步操作:
1、創(chuàng)建一個(gè)ServerSocket實(shí)例并指定本地端口,用來監(jiān)聽客戶端在該端口發(fā)送的TCP連接請(qǐng)求;
2、重復(fù)執(zhí)行: 1)調(diào)用ServerSocket的accept()方法以獲取客戶端連接,并通過其返回值創(chuàng)建一個(gè)Socket實(shí)例;
2)為返回的Socket實(shí)例開啟新的線程,并使用返回的Socket實(shí)例的I/O流與客戶端通信;
3)通信完成后,使用Socket類的close()方法關(guān)閉該客戶端的套接字連接。
5.TCP/IP的3次握手?釋放時(shí)候幾次握手?
連接時(shí)候3次握手:
釋放時(shí)候4次揮手:
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: