進程 線程
進程?是分配資源(內(nèi)存?文件等)的基本單位盹靴,比如?new了一塊內(nèi)存惹骂,就是操作系統(tǒng)將一塊物理內(nèi)存映射到?進程的?地址空間上榜贴,進程內(nèi)所有線程都可以訪問這塊內(nèi)存
進程是一輛火車鉴分,線程就像火車上的車廂?劣砍,?車廂離開火車是無法跑動的惧蛹,火車也不可能只有一節(jié)車廂,多線程的出現(xiàn)是為了提高效率
在同一進程中的線程共享相同的地址空間刑枝,可以讀寫同樣的數(shù)據(jù)結(jié)構(gòu)和變量香嗓,便于通信,反之進程通信困難且消耗更多資源
并行?并發(fā)
并發(fā)的關(guān)鍵是?有處理多個任務(wù)的能力装畅,不一定要同時
并行的關(guān)鍵是有?同時?處理多個任務(wù)的能力
同步?異步
同步:再執(zhí)行完一個函數(shù)或方法之后靠娱,一直等待系統(tǒng)返回值或消息,程序是處于阻塞的掠兄,只有接收到返回的值或消息后才往下執(zhí)行其他命令
異步:執(zhí)行完函數(shù)或方法后像云,不必阻塞性等待,只需要向系統(tǒng)委托一個異步過程蚂夕,當系統(tǒng)接收到返回值迅诬,自動觸發(fā)委托的不過程,完成整個流程(多線程?必然)
線程安全
安全:當多線程訪問時婿牍,采用了加鎖機制侈贷,當一個線程訪問某個數(shù)據(jù)時,其他線程不能進行訪問等脂,避免數(shù)據(jù)不一致
不安全:出現(xiàn)多個線程先后修改數(shù)據(jù)铐维,造成臟數(shù)據(jù)
http、socket慎菲、TCP
http協(xié)議:超文本傳輸協(xié)議;用于規(guī)定客戶端與服務(wù)端之間的傳輸規(guī)則
http請求:
請求行(Method锨并、URL露该、HTTP版本號)、請求頭(附加信息:cookie第煮、host解幼、數(shù)據(jù)類型等)、請求體(數(shù)據(jù))
響應(yīng)(服務(wù)端):狀態(tài)行(版本號包警、狀態(tài)嗎)撵摆、響應(yīng)頭、響應(yīng)實體
流程:
1 .建立連接2 .發(fā)送請求到服務(wù)器(參數(shù))3 .服務(wù)器接收響應(yīng)(參數(shù))4 .客戶端接收展示害晦,斷開連接
區(qū)別:
TCP(傳輸層協(xié)議)特铝;HTTP(應(yīng)用層協(xié)議基于TCP);Socket(TCP抽象接口基于TCP);
1.客戶端往服務(wù)端發(fā)送HTTP請求時第一步建立與服務(wù)端的TCP連接
三次握手暑中,持久連接:一次TCP可以發(fā)送多次的HTTP請求;
2.Socket: HTTP是短連接鲫剿,Socket(接口)是基于TCP的長連接鳄逾,除非一方主動斷開,否則連接一直保持
3.HTTP采用“請求--響應(yīng)”機制灵莲,在客戶端沒有發(fā)送信息給服務(wù)短前雕凹,服務(wù)端無法推送消息給客戶端。
socket連接政冻,雙方可以隨時喊話
場景:
HTTP :雙方不需要保持連接在線(客戶端資源獲取枚抵、文件上傳) ;Socket(QQ、微信)
JDK JRE JVM
JDK: JAVA開發(fā)工具包(核心)= jre + java工具(java/javac等)+ 基礎(chǔ)類庫(java api明场、rt.jar)
jre: JAVA運行時環(huán)境 = JVM工作環(huán)境 =?類加載器 +?字節(jié)碼校驗器+基礎(chǔ)JAVA類庫
jvm: java虛擬機汽摹,通過計算機仿真模擬各種計算機功能來實現(xiàn);把 java字節(jié)碼解釋成?機器指令(跨操作系統(tǒng))并執(zhí)行