1. 程式人生 > 其它 >【博學谷學習記錄】超強總結,用心分享。Web重要知識點。

【博學谷學習記錄】超強總結,用心分享。Web重要知識點。

1. 絡通訊部分

1.1 TCPUDP區別?


TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連線(連線導向)的、可靠的、 基於 IP 的傳輸層協議。

UDP 是 User Datagram Protocol 的簡稱,中文名是使用者資料報協議,是 OSI 參考模型中的傳輸層協議,它是一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。

TCP 和 UDP 都是來自於傳輸層的協議。傳輸層位於應用層和網路層之間,負責位於不同主機中程序之間的通訊。

TCP 與 UDP 區別

1.TCP 基於連線 UDP 無連線

2. TCP 要求系統資源較多,UDP 較少

3. TCP 保證資料正確性,UDP 可能丟包

4.TCP 保證資料順序,UDP 不保證

1.2 什麼是 HTTP 協議?

客戶端和伺服器端之間資料傳輸的格式規範,格式簡稱為“超文字傳輸協議”。是一個基於請求與響應模式的、無狀態的、應用層的協議,基於 TCP 的連線方式


1.3 TCP 的三次握手

為了準確無誤地把資料送達目標處,TCP 協議採用了三次握手策略。

為什麼要三次握手?

三次握手的目的是建立可靠的通訊通道,說到通訊,簡單來說就是資料的傳送與接收,而三次握手最主要的目的就是 雙方確認自己與對方的傳送與接收是正常的。

SYN:同步序列編號(Synchronize Sequence Numbers)。是 TCP/IP 建立連線時使用的握手訊號。

第一次握手:客戶端給伺服器傳送一個 SYN。客戶端傳送網路包,服務端收到了。伺服器得出結論:客戶端的傳送能力,服務端的接收能力正常。

第二次握手:服務端收到 SYN 報文之後,會應答一個 SYN+ACK 報文。服務端發包,客戶端收到了。客戶端得出結論:服務端的接收和傳送能力,客戶端的接收和傳送能力正常。但是此時服務端不能確認客戶端的接收能力是否正常。

第三次握手;客戶端收到 SYN+ACK 報文之後,迴應一個 ACK 報文。客戶端發包,服務端收到了。伺服器得出結論:客戶端的接收和傳送能力,自己的接收發送能力都正常。

通過三次握手,雙方都確認對方的接收以及傳送能力正常。

1.4 HTTP

中重定向和請求轉發的區別?

實現

轉發:用 request 的 getRequestDispatcher()方法得到 ReuqestDispatcher 物件,呼叫forward()方法


request.getRequestDispatcher("other.jsp").forward(request, response);重定向:呼叫 response 的 sendRedirect()方法

response.sendRedirect("other.jsp"); 1> 重定向 2 次請求,請求轉發 1 次請求

2> 重定向位址列會變,請求轉發位址列不變

3> 重定向是瀏覽器跳轉,請求轉發是伺服器跳轉

4> 重定向可以跳轉到任意網址,請求轉發只能跳轉當前專案5>請求轉發不會丟失請求資料,重定向會丟失

1.5 Get 和 Post 的區別?

1. Get 是不安全的,因為在傳輸過程,資料被放在請求的 URL 中;Post 的所有操作對使用者來說都是不可見的。

2. Get 傳送的資料量較小,一般傳輸資料大小不超過 2k-4k(根據瀏覽器不同,限制不一樣,但相差不大這主要是因為受 URL 長度限制;Post 傳送的資料量較大,一般被預設為不受限制。

3. Get 限制 Form 表單的資料集的值必須為 ASCII 字元;而 Post 支援整個 ISO10646 字符集。

4. Get 執行效率卻比 Post 方法好。Get 是 form 提交的預設方法。

2. cookiesession的區別?(必會)

1. 儲存位置不同

cookie 存放在客戶端電腦,是一個磁碟檔案。Ie 瀏覽器是可以從資料夾中找到。

session 是存放在伺服器記憶體中的一個物件。 chrome 瀏覽器進行安全處理,只能通過瀏覽器找到。Session 是伺服器端會話管理技術,並且 session 就是 cookie 實現的。

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,耗費大量的記憶體。

3. JspServlet

1.Jsp 和 Servlet 的區別?

相同點

jsp 經編譯後就變成了 servlet,jsp 本質就是 servlet,jvm 只能識別 java 的類,不能識別jsp 程式碼,web 容器將 jsp 的程式碼編譯成 jvm 能夠識別的 java 類。其實就是當你通過 http請求一個 JSP 頁面是,首先 Tomcat 會呼叫 servlet 的 service()方法將 JSP 編譯成為Servlet,然後執行 Servlet。

不同點

JSP 側重檢視,Sevlet 主要用於控制邏輯。Servlet 中沒有內建物件 。

JSP 中的內建物件都是必須通過 HttpServletRequest 物件,HttpServletResponse 物件以及 HttpServlet 物件得到。

2.Servlet 的生命週期

// 1. servlet 物件建立時,呼叫此方法

public void init(ServletConfig servletConfig);

// 2. 使用者訪問 servlet 時,呼叫此方法

public void service(ServletRequest servletRequest, ServletResponse servletResponse);

// 3. servlet 物件銷燬時,呼叫此方法public void destroy();


3.JSP 九大內建物件

out 物件:用於向客戶端、瀏覽器輸出資料。

request 物件:封裝了來自客戶端、瀏覽器的各種資訊。response 物件:封裝了伺服器的響應資訊。

exception 物件:封裝了 jsp 程式執行過程中發生的異常和錯誤資訊。config 物件:封裝了應用程式的配置資訊。

page 物件:指向了當前 jsp 程式本身。

session 物件:用來儲存會話資訊。也就是說,可以實現在同一使用者的不同請求之間共享數application 物件:代表了當前應用程式的上下文。可以在不同的使用者之間共享資訊。pageContext 物件:提供了對 jsp 頁面所有物件以及名稱空間的訪問。

4. Ajaxaxios的介紹(必會)

Ajax 即"Asynchronous JavaScript And XML"(非同步 JavaScript 和 XML),是指一種建立互動式、快速動態網頁應用的網頁開發技術,無需重新載入整個網頁的情況下,能夠更新部分網頁的技術。

Ajax 應用程式的優勢在於:

1. 通過非同步模式,提升了使用者體驗

2. 優化了瀏覽器和伺服器之間的傳輸,減少不必要的資料往返,減少了頻寬佔用

3. Ajax 引擎在客戶端執行,承擔了一部分本來由伺服器承擔的工作,從而減少了大使用者量下的伺服器負載。

axios 是什麼?怎樣使用它?怎麼解決跨域的問題?

axios 的是一種非同步請求,用法和 ajax 類似,安裝 npm install axios --save 即可使用,請求中包括 get,post,put, patch ,delete 等五種請求方式.

<script>
// 引入 axios
import Axios from 'axios'


export default { methods: {
testAxios() {
const url = 'https://www.baidu.com/'


Axios.get(url).then(response => {
if (response.data) {
 
console.log(response.data)
}
}).catch(err => {
alert('請求失敗')
})
}
}
}
</script>

axios 是一種非同步請求方式,有 cdn 引入和 npm 方法引入並使用解決跨域常用的有兩種方式

1. CORS 解決跨域問題,這需要通過後端來解決,通過設定 header 頭來通配。使伺服器允許跨域請求介面資料,而前端正常使用 axios 請求方式。

2. 通過介面代理的方式,在 vue 專案中建立一個 vue.config.js,匯入一個 devserve,並配置裡面的選項即可。