1. 程式人生 > >搞定計算機網路面試,看這篇就夠了(補充版)

搞定計算機網路面試,看這篇就夠了(補充版)

相對與上一個版本的計算機網路面試知識總結,這個版本增加了 “TCP協議如何保證可靠傳輸”包括超時重傳、停止等待協議、滑動視窗、流量控制、擁塞控制等內容並且對一些已有內容做了補充。

一 OSI與TCP/IP各層的結構與功能,都有哪些協議

五層協議的體系結構

學習計算機網路時我們一般採用折中的辦法,也就是中和 OSI 和 TCP/IP 的優點,採用一種只有五層協議的體系結構,這樣既簡潔又能將概念闡述清楚。

五層協議的體系結構

結合網際網路的情況,自上而下地,非常簡要的介紹一下各層的作用。

1 應用層

應用層(application-layer)的任務是通過應用程序間的互動來完成特定網路應用。應用層協議定義的是應用程序(程序:主機中正在執行的程式)間的通訊和互動的規則。對於不同的網路應用需要不同的應用層協議。在網際網路中應用層協議很多,如域名系統DNS

,支援全球資訊網應用的 HTTP協議,支援電子郵件的 SMTP協議等等。我們把應用層互動的資料單元稱為報文。

域名系統

域名系統(Domain Name System縮寫 DNS,Domain Name被譯為域名)是因特網的一項核心服務,它作為可以將域名和IP地址相互對映的一個分散式資料庫,能夠使人更方便的訪問網際網路,而不用去記住能夠被機器直接讀取的IP數串。(百度百科)例如:一個公司的 Web 網站可看作是它在網上的門戶,而域名就相當於其門牌地址,通常域名都使用該公司的名稱或簡稱。例如上面提到的微軟公司的域名,類似的還有:IBM 公司的域名是 www.ibm.com、Oracle 公司的域名是 www.oracle.com、Cisco公司的域名是 www.cisco.com 等。

HTTP協議

超文字傳輸協議(HTTP,HyperText Transfer Protocol)是網際網路上應用最為廣泛的一種網路協議。所有的 WWW(全球資訊網) 檔案都必須遵守這個標準。設計 HTTP 最初的目的是為了提供一種釋出和接收 HTML 頁面的方法。(百度百科)

2 運輸層

運輸層(transport layer)的主要任務就是負責向兩臺主機程序之間的通訊提供通用的資料傳輸服務。應用程序利用該服務傳送應用層報文。“通用的”是指並不針對某一個特定的網路應用,而是多種應用可以使用同一個運輸層服務。由於一臺主機可同時執行多個執行緒,因此運輸層有複用和分用的功能。所謂複用就是指多個應用層程序可同時使用下面運輸層的服務,分用和複用相反,是運輸層把收到的資訊分別交付上面應用層中的相應程序。

運輸層主要使用以下兩種協議

  1. 傳輸控制協議 TCP(Transmisson Control Protocol)–提供面向連線的,可靠的資料傳輸服務。
  2. 使用者資料協議 UDP(User Datagram Protocol)–提供無連線的,盡最大努力的資料傳輸服務(不保證資料傳輸的可靠性)。

UDP 的主要特點

  1. UDP 是無連線的;
  2. UDP 使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持複雜的連結狀態(這裡面有許多引數);
  3. UDP 是面向報文的;
  4. UDP 沒有擁塞控制,因此網路出現擁塞不會使源主機的傳送速率降低(對實時應用很有用,如 直播,實時視訊會議等);
  5. UDP 支援一對一、一對多、多對一和多對多的互動通訊;
  6. UDP 的首部開銷小,只有8個位元組,比TCP的20個位元組的首部要短。

TCP 的主要特點

  1. TCP 是面向連線的。(就好像打電話一樣,通話前需要先撥號建立連線,通話結束後要掛機釋放連線);
  2. 每一條 TCP 連線只能有兩個端點,每一條TCP連線只能是點對點的(一對一);
  3. TCP 提供可靠交付的服務。通過TCP連線傳送的資料,無差錯、不丟失、不重複、並且按序到達;
  4. TCP 提供全雙工通訊。TCP 允許通訊雙方的應用程序在任何時候都能傳送資料。TCP 連線的兩端都設有傳送快取和接收快取,用來臨時存放雙方通訊的資料;
  5. 面向位元組流。TCP 中的“流”(Stream)指的是流入程序或從程序流出的位元組序列。“面向位元組流”的含義是:雖然應用程式和 TCP 的互動是一次一個資料塊(大小不等),但 TCP 把應用程式交下來的資料僅僅看成是一連串的無結構的位元組流。

3 網路層

網路層(network layer)負責為分組交換網上的不同主機提供通訊服務。 在傳送資料時,網路層把運輸層產生的報文段或使用者資料報封裝成分組和包進行傳送。在 TCP/IP 體系結構中,由於網路層使用 IP 協議,因此分組也叫 IP 資料報 ,簡稱 資料報

這裡要注意:不要把運輸層的“使用者資料報 UDP ”和網路層的“ IP 資料報”弄混。另外,無論是哪一層的資料單元,都可籠統地用“分組”來表示。

網路層的另一個任務就是選擇合適的路由,使源主機運輸層所傳下來的分株,能通過網路層中的路由器找到目的主機。

這裡強調指出,網路層中的“網路”二字已經不是我們通常談到的具體網路,而是指計算機網路體系結構模型中第三層的名稱.

網際網路是由大量的異構(heterogeneous)網路通過路由器(router)相互連線起來的。網際網路使用的網路層協議是無連線的網際協議(Intert Prococol)和許多路由選擇協議,因此網際網路的網路層也叫做網際層IP層

4 資料鏈路層

資料鏈路層(data link layer)通常簡稱為鏈路層。兩臺主機之間的資料傳輸,總是在一段一段的鏈路上傳送的,這就需要使用專門的鏈路層的協議。 在兩個相鄰節點之間傳送資料時,資料鏈路層將網路層交下來的 IP 資料報組裝程幀,在兩個相鄰節點間的鏈路上傳送幀。每一幀包括資料和必要的控制資訊(如同步資訊,地址資訊,差錯控制等)。

在接收資料時,控制資訊使接收端能夠知道一個幀從哪個位元開始和到哪個位元結束。這樣,資料鏈路層在收到一個幀後,就可從中提出資料部分,上交給網路層。
控制資訊還使接收端能夠檢測到所收到的幀中有誤差錯。如果發現差錯,資料鏈路層就簡單地丟棄這個出了差錯的幀,以避免繼續在網路中傳送下去白白浪費網路資源。如果需要改正資料在鏈路層傳輸時出現差錯(這就是說,資料鏈路層不僅要檢錯,而且還要糾錯),那麼就要採用可靠性傳輸協議來糾正出現的差錯。這種方法會使鏈路層的協議複雜些。

5 物理層

在物理層上所傳送的資料單位是位元。
物理層(physical layer)的作用是實現相鄰計算機節點之間位元流的透明傳送,儘可能遮蔽掉具體傳輸介質和物理裝置的差異。 使其上面的資料鏈路層不必考慮網路的具體傳輸介質是什麼。“透明傳送位元流”表示經實際電路傳送後的位元流沒有發生變化,對傳送的位元流來說,這個電路好像是看不見的。

在網際網路使用的各種協中最重要和最著名的就是 TCP/IP 兩個協議。現在人們經常提到的TCP/IP並不一定單指TCP和IP這兩個具體的協議,而往往表示網際網路所使用的整個TCP/IP協議族。

總結一下

二 TCP 三次握手和四次揮手(面試常客)

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

漫畫圖解:

圖片來源:《圖解HTTP》
TCP三次握手

簡單示意圖:
TCP三次握手

  • 客戶端–傳送帶有 SYN 標誌的資料包–一次握手–服務端
  • 服務端–傳送帶有 SYN/ACK 標誌的資料包–二次握手–客戶端
  • 客戶端–傳送帶有帶有 ACK 標誌的資料包–三次握手–服務端

為什麼要三次握手

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

第一次握手:Client 什麼都不能確認;Server 確認了對方傳送正常

第二次握手:Client 確認了:自己傳送、接收正常,對方傳送、接收正常;Server 確認了:自己接收正常,對方傳送正常

第三次握手:Client 確認了:自己傳送、接收正常,對方傳送、接收正常;Server 確認了:自己傳送、接收正常,對方傳送接收正常

所以三次握手就能確認雙發收發功能都正常,缺一不可。

為什麼要傳回 SYN

接收端傳回傳送端所傳送的 SYN 是為了告訴傳送端,我接收到的資訊確實就是你所傳送的訊號了。

傳了 SYN,為啥還要傳 ACK

雙方通訊無誤必須是兩者互相傳送資訊都無誤。傳了 SYN,證明發送方到接收方的通道沒有問題,但是接收方到傳送方的通道還需要 ACK 訊號來進行驗證。

TCP四次揮手

斷開一個 TCP 連線則需要“四次揮手”:
- 客戶端-傳送一個 FIN,用來關閉客戶端到伺服器的資料傳送
- 伺服器-收到這個 FIN,它發回一 個 ACK,確認序號為收到的序號加1 。和 SYN 一樣,一個 FIN 將佔用一個序號
- 伺服器-關閉與客戶端的連線,傳送一個FIN給客戶端
- 客戶端-發回 ACK 報文確認,並將確認序號設定為收到序號加1

為什麼要四次揮手

任何一方都可以在資料傳送結束後發出連線釋放的通知,待對方確認後進入半關閉狀態。當另一方也沒有資料再發送的時候,則發出連線釋放通知,對方確認後就完全關閉了TCP連線。

舉個例子:A 和 B 打電話,通話即將結束後,A 說“我沒啥要說的了”,B回答“我知道了”,但是 B 可能還會有要說的話,A 不能要求 B 跟著自己的節奏結束通話,於是 B 可能又巴拉巴拉說了一通,最後 B 說“我說完了”,A 回答“知道了”,這樣通話才算結束。

三 TCP、UDP 協議的區別

TCP、UDP協議的區別

UDP 在傳送資料之前不需要先建立連線,遠地主機在收到 UDP 報文後,不需要給出任何確認。雖然 UDP 不提供可靠交付,但在某些情況下 UDP 確是一種最有效的工作方式(一般用於即時通訊),比如: QQ 語音、 QQ 視訊 、直播等等

TCP 提供面向連線的服務。在傳送資料之前必須先建立連線,資料傳送結束後要釋放連線。 TCP 不提供廣播或多播服務。由於 TCP 要提供可靠的,面向連線的運輸服務(TCP的可靠體現在TCP在傳遞資料之前,會有三次握手來建立連線,而且在資料傳遞時,有確認、視窗、重傳、擁塞控制機制,在資料傳完後,還會斷開連線用來節約系統資源),這一難以避免增加了許多開銷,如確認,流量控制,計時器以及連線管理等。這不僅使協議資料單元的首部增大很多,還要佔用許多處理機資源。TCP 一般用於檔案傳輸、傳送和接收郵件、遠端登入等場景。

四 TCP 協議如何保證可靠傳輸

  1. 應用資料被分割成 TCP 認為最適合傳送的資料塊。
  2. TCP 給傳送的每一個包進行編號,接收方對資料包進行排序,把有序資料傳送給應用層。
  3. 校驗和: TCP 將保持它首部和資料的檢驗和。這是一個端到端的檢驗和,目的是檢測資料在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP 將丟棄這個報文段和不確認收到此報文段。
  4. TCP 的接收端會丟棄重複的資料。
  5. 流量控制: TCP 連線的每一方都有固定大小的緩衝空間,TCP的接收端只允許傳送端傳送接收端緩衝區能接納的資料。當接收方來不及處理髮送方的資料,能提示傳送方降低傳送的速率,防止包丟失。TCP 使用的流量控制協議是可變大小的滑動視窗協議。 (TCP 利用滑動視窗實現流量控制)
  6. 擁塞控制: 當網路擁塞時,減少資料的傳送。
  7. 停止等待協議 也是為了實現可靠傳輸的,它的基本原理就是每發完一個分組就停止傳送,等待對方確認。在收到確認後再發下一個分組。 超時重傳: 當 TCP 發出一個段後,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發這個報文段。

停止等待協議

  • 停止等待協議是為了實現可靠傳輸的,它的基本原理就是每發完一個分組就停止傳送,等待對方確認。在收到確認後再發下一個分組;
  • 在停止等待協議中,若接收方收到重複分組,就丟棄該分組,但同時還要傳送確認;

1) 無差錯情況:

傳送方傳送分組,接收方在規定時間內收到,並且回覆確認.傳送方再次傳送。

2) 出現差錯情況(超時重傳):

停止等待協議中超時重傳是指只要超過一段時間仍然沒有收到確認,就重傳前面傳送過的分組(認為剛才傳送過的分組丟失了)。因此每傳送完一個分組需要設定一個超時計時器,其重轉時間應比資料在分組傳輸的平均往返時間更長一些。這種自動重傳方式常稱為 自動重傳請求 ARQ 。另外在停止等待協議中若收到重複分組,就丟棄該分組,但同時還要傳送確認。連續 ARQ 協議 可提高通道利用率。傳送維持一個傳送視窗,凡位於傳送視窗內的分組可連續傳送出去,而不需要等待對方確認。接收方一般採用累積確認,對按序到達的最後一個分組傳送確認,表明到這個分組位置的所有分組都已經正確收到了。

3) 確認丟失和確認遲到

  • 確認丟失:確認訊息在傳輸過程丟失

    當A傳送M1訊息,B收到後,B向A傳送了一個M1確認訊息,但卻在傳輸過程中丟失。而A並不知道,在超時計時過後,A重傳M1訊息,B再次收到該訊息後採取以下兩點措施:

    1. 丟棄這個重複的M1訊息,不向上層交付。
    2. 向A傳送確認訊息。(不會認為已經發送過了,就不再發送。A能重傳,就證明B的確認訊息丟失)。
  • 確認遲到 :確認訊息在傳輸過程中遲到

    A傳送M1訊息,B收到併發送確認。在超時時間內沒有收到確認訊息,A重傳M1訊息,B仍然收到並繼續傳送確認訊息(B收到了2份M1)。此時A收到了B第二次傳送的確認訊息。接著傳送其他資料。過了一會,A收到了B第一次傳送的對M1的確認訊息(A也收到了2份確認訊息)。處理如下:
    1. A收到重複的確認後,直接丟棄。
    2. B收到重複的M1後,也直接丟棄重複的M1。

自動重傳請求 ARQ 協議

停止等待協議中超時重傳是指只要超過一段時間仍然沒有收到確認,就重傳前面傳送過的分組(認為剛才傳送過的分組丟失了)。因此每傳送完一個分組需要設定一個超時計時器,其重轉時間應比資料在分組傳輸的平均往返時間更長一些。這種自動重傳方式常稱為自動重傳請求ARQ。

優點: 簡單

缺點: 通道利用率低

連續ARQ協議

連續 ARQ 協議可提高通道利用率。傳送方維持一個傳送視窗,凡位於傳送視窗內的分組可以連續傳送出去,而不需要等待對方確認。接收方一般採用累計確認,對按序到達的最後一個分組傳送確認,表明到這個分組為止的所有分組都已經正確收到了。

優點: 通道利用率高,容易實現,即使確認丟失,也不必重傳。

缺點: 不能向傳送方反映出接收方已經正確收到的所有分組的資訊。 比如:傳送方傳送了 5條 訊息,中間第三條丟失(3號),這時接收方只能對前兩個傳送確認。傳送方無法知道後三個分組的下落,而只好把後三個全部重傳一次。這也叫 Go-Back-N(回退 N),表示需要退回來重傳已經發送過的 N 個訊息。

滑動視窗

  • TCP 利用滑動視窗實現流量控制的機制。
  • 滑動視窗(Sliding window)是一種流量控制技術。早期的網路通訊中,通訊雙方不會考慮網路的擁擠情況直接傳送資料。由於大家不知道網路擁塞狀況,同時傳送資料,導致中間節點阻塞掉包,誰也發不了資料,所以就有了滑動視窗機制來解決此問題。
  • TCP 中採用滑動視窗來進行傳輸控制,滑動視窗的大小意味著接收方還有多大的緩衝區可以用於接收資料。傳送方可以通過滑動視窗的大小來確定應該傳送多少位元組的資料。當滑動視窗為 0 時,傳送方一般不能再發送資料報,但有兩種情況除外,一種情況是可以傳送緊急資料,例如,允許使用者終止在遠端機上的執行程序。另一種情況是傳送方可以傳送一個 1 位元組的資料報來通知接收方重新宣告它希望接收的下一位元組及傳送方的滑動視窗大小。

流量控制

  • TCP 利用滑動視窗實現流量控制。
  • 流量控制是為了控制傳送方傳送速率,保證接收方來得及接收。
  • 接收方傳送的確認報文中的視窗欄位可以用來控制傳送方視窗大小,從而影響傳送方的傳送速率。將視窗欄位設定為 0,則傳送方不能傳送資料。

擁塞控制

在某段時間,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的效能就要變壞。這種情況就叫擁塞。擁塞控制就是為了防止過多的資料注入到網路中,這樣就可以使網路中的路由器或鏈路不致過載。擁塞控制所要做的都有一個前提,就是網路能夠承受現有的網路負荷。擁塞控制是一個全域性性的過程,涉及到所有的主機,所有的路由器,以及與降低網路傳輸效能有關的所有因素。相反,流量控制往往是點對點通訊量的控制,是個端到端的問題。流量控制所要做到的就是抑制傳送端傳送資料的速率,以便使接收端來得及接收。

為了進行擁塞控制,TCP 傳送方要維持一個 擁塞視窗(cwnd) 的狀態變數。擁塞控制視窗的大小取決於網路的擁塞程度,並且動態變化。傳送方讓自己的傳送視窗取為擁塞視窗和接收方的接受視窗中較小的一個。

TCP的擁塞控制採用了四種演算法,即 慢開始擁塞避免快重傳快恢復。在網路層也可以使路由器採用適當的分組丟棄策略(如主動佇列管理 AQM),以減少網路擁塞的發生。

  • 慢開始: 慢開始演算法的思路是當主機開始傳送資料時,如果立即把大量資料位元組注入到網路,那麼可能會引起網路阻塞,因為現在還不知道網路的符合情況。經驗表明,較好的方法是先探測一下,即由小到大逐漸增大發送視窗,也就是由小到大逐漸增大擁塞視窗數值。cwnd初始值為1,每經過一個傳播輪次,cwnd加倍。
  • 擁塞避免: 擁塞避免演算法的思路是讓擁塞視窗cwnd緩慢增大,即每經過一個往返時間RTT就把傳送放的cwnd加1.
  • 快重傳與快恢復:
    在 TCP/IP 中,快速重傳和恢復(fast retransmit and recovery,FRR)是一種擁塞控制演算法,它能快速恢復丟失的資料包。沒有 FRR,如果資料包丟失了,TCP 將會使用定時器來要求傳輸暫停。在暫停的這段時間內,沒有新的或複製的資料包被髮送。有了 FRR,如果接收機接收到一個不按順序的資料段,它會立即給傳送機傳送一個重複確認。如果傳送機接收到三個重複確認,它會假定確認件指出的資料段丟失了,並立即重傳這些丟失的資料段。有了 FRR,就不會因為重傳時要求的暫停被耽誤。  當有單獨的資料包丟失時,快速重傳和恢復(FRR)能最有效地工作。當有多個數據信息包在某一段很短的時間內丟失時,它則不能很有效地工作。
    快重傳與快恢復

五 在瀏覽器中輸入url地址 ->> 顯示主頁的過程(面試常客)

百度好像最喜歡問這個問題。

開啟一個網頁,整個過程會使用哪些協議

圖片來源:《圖解HTTP》

狀態碼

六 狀態碼

狀態碼

七 各種協議與HTTP協議之間的關係

一般面試官會通過這樣的問題來考察你對計算機網路知識體系的理解。

圖片來源:《圖解HTTP》

各種協議與HTTP協議之間的關係

八 HTTP長連線、短連線

在HTTP/1.0中預設使用短連線。也就是說,客戶端和伺服器每進行一次HTTP操作,就建立一次連線,任務結束就中斷連線。當客戶端瀏覽器訪問的某個HTML或其他型別的Web頁中包含有其他的Web資源(如JavaScript檔案、影象檔案、CSS檔案等),每遇到這樣一個Web資源,瀏覽器就會重新建立一個HTTP會話。

而從HTTP/1.1起,預設使用長連線,用以保持連線特性。使用長連線的HTTP協議,會在響應頭加入這行程式碼:

Connection:keep-alive

在使用長連線的情況下,當一個網頁開啟完成後,客戶端和伺服器之間用於傳輸HTTP資料的TCP連線不會關閉,客戶端再次訪問這個伺服器時,會繼續使用這一條已經建立的連線。Keep-Alive不會永久保持連線,它有一個保持時間,可以在不同的伺服器軟體(如Apache)中設定這個時間。實現長連線需要客戶端和服務端都支援長連線。

HTTP協議的長連線和短連線,實質上是TCP協議的長連線和短連線。

寫在最後

計算機網路常見問題回顧

  • ①TCP三次握手和四次揮手、
  • ②在瀏覽器中輸入url地址->>顯示主頁的過程
  • ③HTTP和HTTPS的區別
  • ④TCP、UDP協議的區別
  • ⑤常見的狀態碼。

建議

非常推薦大家看一下 《圖解HTTP》 這本書,這本書頁數不多,但是內容很是充實,不管是用來系統的掌握網路方面的一些知識還是說純粹為了應付面試都有很大幫助。下面的一些文章只是參考。大二學習這門課程的時候,我們使用的教材是 《計算機網路第七版》(謝希仁編著),不推薦大家看這本教材,書非常厚而且知識偏理論,不確定大家能不能心平氣和的讀完。

開源文件推薦

Java-Guide:一份涵蓋大部分Java程式設計師所需要掌握的核心知識,正在一步一步慢慢完善,期待您的參與。

參考:

你若盛開,清風自來。 歡迎關注我的微信公眾號:“Java面試通關手冊”,一個有溫度的微信公眾號。公眾號有大量資料,回覆關鍵字“1”你可能看到想要的東西哦!

相關推薦

計算機網路面試補充

相對與上一個版本的計算機網路面試知識總結,這個版本增加了 “TCP協議如何保證可靠傳輸”包括超時重傳、停止等待協議、滑動視窗、流量控制、擁塞控制等內容並且對一些已有內容做了補充。 一 OSI與TCP/IP各層的結構與功能,都有哪些協議 五層協議的體系

計算機網路面試

文章目錄結構:  一 OSI與TCP/IP各層的結構與功能,都有哪些協議 運輸層主要使用以下兩種協議: UDP的主要特點: TCP的主要特點: 域名系統(Domain Name System縮寫DNS,Doma

乾貨 | 目標檢測入門

作者 | 李家丞( 同濟大學數學系本科在讀,現格靈深瞳演算法部實習生)近年來,深度學習模型逐漸取

Elasticsearch Query DSL 整理總結—— 要懂 Match Query

目錄 引言 構建示例 match operator 引數 analyzer lenient 引數 Fuzziness fuzzniess 引數 什麼是模糊搜尋? Levenshtein Edit Dist

Elasticsearch Query DSL 整理總結—— 要懂 Match Query

目錄 引言 昨天是感恩節,上幼兒園的女兒在老師的叮囑下,晚上為我和老婆洗了腳(形式上的^_^),還給我們每人端了一杯水。看著孩子一天天的長大,懂事,感覺很開心,話說咱們程式設計師這麼辛苦是為了什麼?不就是為了老婆,孩子,熱炕頭,有一個溫暖幸福的家庭,再捎帶著用程式碼改變一下世界嗎?想到這裡,頓時覺得學習,創

Tomcat相關面試題!保證能讓面試官顫抖!

Tomcat相關的面試題出場的機率並不高,正式因為如此,很多人忽略了對Tomcat相關技能的掌握。 這次整理了Tomcat相關

學習Java JDBC

影響 數據庫中間件 project prepare 管理系 lba 分布 為我 vax JDBC (Java DB Connection)---Java數據庫連接 JDBC是一種可用於運行SQL語句的JAVA API(ApplicationProgramming

入門Webpack

ref ebp shu 走了 pack webp body 入門 ble 原文地址:https://www.jianshu.com/p/42e11515c10f一直以前對webpack不是很了解,通過看了原文,自己動手走了一邊,算是對webpack有了個入門。我把自己做了的

Map總結

java map 概要 學完了Map的全部內容,我們再回頭開開Map的框架圖。 第1部分 Map概括 (01) Map 是“鍵值對”映射的抽象接口。(02) AbstractMap 實現了Map中的絕大部分函數接口。它減少了“Map的實現類”的重復編碼。(03) SortedMap 有序的“鍵值對”映

入門 Webpack

通過 位置 post 進行 參考 sets 想要 避免 pat 轉:https://segmentfault.com/a/1190000006178770 2018年8月25日更新,目前 webpack 已經更新值 4.17.1 ,本文所用到的各種庫或多或少有些過時,跟著代

Python Web怎麼學

Python目前應用領域實在太多,這也是他這麼火的原因吧。我認為目前Python作為應用領域來說幾個方向是值得肯定的:人工智慧、大資料分析、DevOps、Web、自動化測試、爬蟲。 在Python基礎方向,我認為必須掌握的技能有: 基本資料型別、內建資料結構 函式、高階函式、裝飾器 迭代器、

Python Web怎麽學

哪些 都是 這一 djang quest int 數據類型 簡單 dev Python目前應用領域實在太多,這也是他這麽火的原因吧。我認為目前Python作為應用領域來說幾個方向是值得肯定的:人工智能、大數據分析、DevOps、Web、自動化測試、爬蟲。 在Python基礎

繼萬字諫言後Python Web 怎麼學

  1. 之前那篇「萬字諫言,給那些想學Python的人,建議收藏後細看!」得到很多後臺讀者的留言,表示想再來點,甚至說萬字系?你知道萬字有多少麼?不要槓我根本沒有萬字!不叫萬字你能看到這篇良心嘛! 那憋了3天了,今天放個web好了,相信很多讀者都有關注web開發,那我們

Python 中的 orand 運算

問題出現: Python 中的 or,and 運算,可以寫出非常複雜的演算表示式; 看了一些大神的演算規則解釋,覺得不是很好理解,有些人甚至理解錯了規則。 這篇部落格聊一下自己的理解。 其他人是怎麼做的: 先看兩個例子熱下身: return 1 or 2 return

Python 中的 or and 運算

可能 參考答案 大神 cto 51cto 是不是 拆分 並且 情況 問題出現: Python 中的 or,and 運算,可以寫出非常復雜的演算表達式; 看了一些大神的演算規則解釋,覺得不是很好理解,有些人甚至理解錯了規則。 這裏聊一下自己的理解。 其他人是怎麽做的:

10大經典排序演算法動圖演示配相應程式碼

排序演算法是《資料結構與演算法》中最基本的演算法之一。 排序演算法可以分為內部排序和外部排序。 內部排序是資料記錄在記憶體中進行排序。 而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 常見的內部排序演算法有:插入排序、希爾排序、選擇排序、氣泡排序、歸併排序、快速排

Java 動態代理

這篇文章需要用到 Java 的反射知識,如果對反射還不清楚的小夥伴,可以先移步到這裡 《Java進階-反射》。 程式設計思想都是來自於生活的,“代理” 在生活中很常見。比如我們買一個東西時,一般都不會是直接從工廠裡買的,而是去商店或者其他的商家買,這些商家做的事情就是代理。

mybatis 快取的使用

快取的重要性是不言而喻的。 使用快取, 我們可以避免頻繁的與資料庫進行互動, 尤其是在查詢越多、快取命中率越高的情況下, 使用快取對效能的提高更明顯。 mybatis 也提供了對快取的支援, 分為一級快取和二級快取。 但是在預設的情況下, 只開啟一級快取(一級快

jdk安裝與環境變數配置

文章目錄 - 場景 - jdk 下載安裝 - 如何環境變數的配置 - 總結 場景 在做 java 開發或者 android 開發,經常會碰到 jdk 安裝與環境變數的配置,每次配置的時候,經常需要去檢視一下,而且偶爾還會

Java執行緒池詳解

構造一個執行緒池為什麼需要幾個引數?如果避免執行緒池出現OOM?Runnable和Callable的區別是什麼?本文將對這些問題一一解答,同時還將給出使用執行緒池的常見場景和程式碼片段。 基礎知識 Executors建立執行緒池 Java中建立執行緒池很簡單,只需要呼叫Execu