部分整理自網絡,如有侵權,請聯系刪除。
正向代理 & 反向代理
正向代理:作為一個媒介將互聯網上獲取的資源返回給相關聯的客戶端,代理和客戶端在一個局域網,對於服務端是透明的。
反向代理:根據客戶端的請求,從后端的服務器上獲取資源,然后再將這些資源返回給客戶端,代理和服務器在一個局域網,對客戶端是透明的。
web服務器 & 應用服務器
進程 & 線程 & 協程
進程:
線程:
協程:
GET & POST
get,可以在瀏覽器中發請求
post,只能借助工具,比如postman、jmeter
1、GET使用URL或Cookie傳參。而POST將數據放在BODY中(post請求也可以把數據放到url里面)。
2、GET的URL會有長度上的限制,則POST的數據則可以非常大。
3、POST比GET安全,因為數據在地址欄上不可見(其實,通過抓包工具可以抓post請求的數據,所以,也不安全)。
4、一般get請求用來獲取數據,post請求用來發送數據。
HTTP & HTTPS
HTTP:是互聯網上應用最為廣泛的一種網絡協議,是一個客戶端和服務器端請求和應答的標准(TCP),用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議,它可以使瀏覽器更加高效,使網絡傳輸減少。
HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。
HTTPS協議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。
HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,為了保證這些隱私數據能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用於對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。
HTTPS和HTTP的區別主要如下:
1、https協議需要到ca申請證書,一般免費證書較少,因而需要一定費用。
2、http是超文本傳輸協議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。
參考:https://www.cnblogs.com/zhenguoli/p/8622933.html
http和webservice接口
httpservice通過post和get得到你想要的東西
webservice就是使用soap協議得到你想要的東西,相比httpservice能處理些更加復雜的數據類型
http1.0和http1.1區別
1.0版本,http協議默認是無連接的,即一個http請求申請一個tcp連接,然后http連接斷開時,tcp連接也跟着斷開。又叫短連接。
1.1版本,http協議默認是長連接的,通過信息頭:Connection:keep-alive來實現。效果就是,一個http請求在完成時,可以標注是keep-alive的,這樣的話,底層的tcp連接不需要斷開,可以供多個http連接使用。
rpc框架原理,和http區別
http響應慢、請求頭大,所以在微服務時代,大家都使用rpc來調用服務。
tcp三次握手
參考:https://www.cnblogs.com/uncleyong/p/7611408.html
TCP & UDP
區別一:tcp是可靠的傳輸(發送方發一個數據,接收方收到數據后要回復確認信息,發送者才會把自己操作系統緩存中的數據清理掉,如果發送方沒收到確認信息<接收者沒回復確認信息>,就會從操作系統緩存中取出數據再發一次這個數據),udp是不可靠的傳輸
tcp先建立連接,
udp不建立連接(不需要建立雙向連接),直接往目標地址發數據(也不需要管對方是否存在,不管對方是否收到,只管往外發),不需要收到對方的確認信息
區別二:傳輸效率:upd高(不需要建立連接,不需要確認,開銷小),tpc低(要建立連接,需要對方確認,都有開銷)
nio,bio,aio
https://www.jianshu.com/p/a660c17bb9ea
COOKIE & SESSION
1、存儲位置不同
cookie的數據信息存放在客戶端瀏覽器上。
session的數據信息存放在服務器上。
2、存儲容量不同
單個cookie保存的數據<=4KB,一個站點最多保存20個Cookie。
對於session來說並沒有上限,但出於對服務器端的性能考慮,session內不要存放過多的東西,並且設置session刪除機制。
3、存儲方式不同
cookie中只能保管ASCII字符串,並需要通過編碼方式存儲為Unicode字符或者二進制數據。
session中能夠存儲任何類型的數據,包括且不限於string,integer,list,map等。
4、隱私策略不同
cookie對客戶端是可見的,別有用心的人可以分析存放在本地的cookie並進行cookie欺騙,所以它是不安全的。
session存儲在服務器上,對客戶端是透明對,不存在敏感信息泄漏的風險。
5、有效期上不同
開發可以通過設置cookie的屬性,達到使cookie長期有效的效果。
session依賴於名為JSESSIONID的cookie,而cookie JSESSIONID的過期時間默認為-1,只需關閉窗口該session就會失效,因而session不能達到長期有效的效果。
6、服務器壓力不同
cookie保管在客戶端,不占用服務器資源。對於並發用戶十分多的網站,cookie是很好的選擇。
session是保管在服務器端的,每個用戶都會產生一個session。假如並發訪問的用戶十分多,會產生十分多的session,耗費大量的內存。
7、瀏覽器支持不同
假如客戶端瀏覽器不支持cookie:
cookie是需要客戶端瀏覽器支持的,假如客戶端禁用了cookie,或者不支持cookie,則會話跟蹤會失效。關於WAP上的應用,常規的cookie就派不上用場了。
運用session需要使用URL地址重寫的方式。一切用到session程序的URL都要進行URL地址重寫,否則session會話跟蹤還會失效。
假如客戶端支持cookie:
cookie既能夠設為本瀏覽器窗口以及子窗口內有效,也能夠設為一切窗口內有效。
session只能在本窗口以及子窗口內有效。
8、跨域支持上不同
cookie支持跨域名訪問。
session不支持跨域名訪問。
同步、異步、阻塞、非阻塞
1. 同步與異步針對的是函數/任務的調用方式:同步就是當一個進程發起一個函數(任務)調用的時候,一直等到函數(任務)完成,而進程繼續處於激活狀態。而異步情況下是當一個進程發起一個函數(任務)調用的時候,不會等函數返回,而是繼續往下執行當,函數返回的時候通過狀態、通知、事件等方式通知進程任務完成。
2. 阻塞與非阻塞針對的是進程或線程:阻塞是當請求不能滿足的時候就將進程掛起,而非阻塞則不會阻塞當前進程
CI & CD
CI,就是持續集成(CONTINUOUS INTEGRATION)。
CD,持續交付(CONTINUOUS DELIVERY),既可以指代碼持續交付,也可理解為代碼持續部署。
參考:http://www.360doc.com/content/18/0903/11/19960613_783492490.shtml
契約測試
兩個角色:消費者(Consumer)和 生產者(Provider)
一個思想:需求驅動(消費者驅動)
契約文件:由Consumer端和Provider端共同定義的規范,包含API路徑,輸入,輸出。通常由Consumber生成。
實現原理:Consumer 端提供一個類似“契約”的東西(如json 文件,約定好request和response)交給Provider 端,告訴Provider 有什么需求,然后Provider 根據這份“契約”去實現。