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