主頁 > 後端開發 > 超說網路NO.5 | 超詳細全方位介紹Web 與 HTTP(運維面試必考點)

超說網路NO.5 | 超詳細全方位介紹Web 與 HTTP(運維面試必考點)

2021-09-13 09:00:09 後端開發

創作不易,來了的客官點點關注,收藏,訂閱一鍵三連?😜

前言

運維必備——計算機網路,我是一名即將畢業的大學生,超超,計算機網路是計算機行業的入門基礎,超說網路是筆者對于計算機網路知識的梳理總結,和超超一起學習計算機網路,搞定網路知識,秋招拿下理想offer!


系列文章

超說網路NO.4 | 深入了解應用層原理(中科大 鄭烇)

超說網路NO.3 | 深入了解網路的分層體系結構

超說網路NO.2 | 深入了解計算機網路:網路邊緣、網路核心、接入網和物理媒體


概述

超說網路NO.5 | 深入了解應用層Web服務和HTTP、HTTPs協議,以及面試常考題!


目錄

前言

系列文章

概述

web和HTTP的一些術語

HTTP:超文本傳輸協議

HTTP是什么?

HTTP的優缺點

HTTP屬于客戶/服務器模式

基于TCP連接的HTTP

非持久與持久HTTP

非持久HTTP

持久HTTP

HTTP的版本

HTTP/0.9

HTTP/1.0

HTTP/1.1

HTTP/2.0

HTTP/1.1與HTTP/1.0的區別

HTTP/2有什么不足?

HTTP常見欄位

HTTP請求報文

HTTP請求報文

HTTP請求報文通用格式

提交表單的輸入:Post方式與URL方式

Post方式

URL方式

HTTP的方法型別

HTTP的回應報文

回應報文格式

狀體碼

用戶-服務器狀態:cookies

了解cookies

cookies維護實體

Cookies的用處與維護

Cookies與隱私

Web快取

web快取目標

使用Web快取的優勢

快取的實體

條件GET方法

面試常考題

01.HTTP與HTTPs

02.HTTPS 是如何解決上HTTP的不安全性?

03.數字證書和 CA 機構

04.GET 和 POST 的區別

05.GET 和 POST ?法都是安全和冪等的嗎?


web和HTTP的一些術語

Web頁:由一些物件組成,物件可以是HTML檔案、JPEG影像、Java小程式、聲音剪輯檔案等,Web頁含有一個基本的HTML檔案,該基本HTML檔案又包含若干物件的參考(鏈接),通過URL對每個物件進行參考

URL格式:訪問協議,用戶名,口令字,埠等,

HTTP:超文本傳輸協議

HTTP是什么?

HTTP: HTTP 是超?本傳輸協議,也就是HyperText Transfer Protocol,是一個基于請求與回應,無狀態的,Web服務的應用層的協議,常基于TCP傳輸資料,互聯網上應用最為廣泛的一種網路協議,所有的WWW檔案都必須遵守這個標準,

HTTP超?本協議傳輸,它可以拆成三個部分:超文本、傳輸、協議

協議:HTTP 是?個?在計算機世界?的協議,它使?計算機能夠理解的語?確?了?種計算機之間交流通信的規范(兩個以上的參與者),以及相關的各種控制和錯誤處理?式(?為約定和規范),

傳輸:就是把?堆東?從 A 點搬到 B 點,或者從 B 點 搬到 A 點,別輕視了這個簡單的動作,它?少包含兩項重要的資訊,HTTP 協議是?個雙向協議,

超文本:HTTP傳輸的內容是超?本,它就是超越了普通?本的?本,它是?字、圖?、視頻等的混合體,最關鍵有超鏈接,能從?個超?本跳轉到另外?個超?本,

HTTP的優缺點

HTTP優點

HTTP的主要優點是簡單、靈活、易于拓展、應該廣泛以及跨平臺,

1. 簡單

HTTP 基本的報文格式就是 header + body ,頭部資訊也是 key-value 簡單?本的形式,

2. 靈活和易于擴展

HTTP協議?的各類請求?法、URI/URL、狀態碼、頭欄位等每個組成要求都沒有被固定死,都允許開發?員?定義和擴充,同時 HTTP 由于是?作在應?層( OSI 第七層),則它下層可以隨意變化,

HTTPS 也就是在 HTTP所在的應用層與TCP所在的傳輸層之間增加了 SSL/TLS 安全傳輸層,HTTP/3 甚?把 TCP 層換成了基于 UDP 的QUIC,

3. 應用?泛和跨平臺

互聯?發展?今,HTTP 的應?范圍?常的?泛,HTTP 的應?遍地開花,同時天然具有跨平臺的優越性,

HTTP缺點

由于HTTP是無狀態、明文傳輸的因此資料不安全,

無狀態的優缺點

?狀態的好處,因為服務器不會去記憶 HTTP 的狀態,因此不需要額外的資源來記錄狀態資訊,這能減輕服務器的負擔,能夠把更多的 CPU 和記憶體用來對外提供服務,

?狀態的壞處,既然服務器沒有記憶能?,它在完成有關聯性的操作時會?常麻煩

HTTP 的安全問題,可以用HTTPS 的方式解決,也就是通過引? SSL/TLS 層,使得在安全上達到了極致,

HTTP屬于客戶/服務器模式

客戶: 請求、接收和顯示Web物件的瀏覽器;

服務器: 對請求進行回應,發送物件的Web服務器,

基于TCP連接的HTTP

1.客戶發起一個與服務器的 TCP連接 (建立套接字) , 埠號為 80

2.服務器接受客戶的TCP連接

3.在瀏覽器(HTTP客戶端) 與 Web服務器(HTTP服 務器 server)交換HTTP報文 (應用層協議報文)

4.TCP連接關閉

HTTP是無狀態的,即服務器并不維護關于客戶的任何資訊

維護狀態的協議很復雜:

1.必須維護歷史資訊(狀態)

2.如果服務器/客戶端死機,它們的狀態資訊可能不一致, 但二者的資訊必須是一致,因此會需要重新連接

3.無狀態的服務器能夠支持更多的客戶端

非持久與持久HTTP

非持久HTTP

非持久HTTP,最多只有一個物件在,TCP連接上發送,下載多個物件需要多個TCP連接,HTTP/1.0使用非持久連接,

非持久鏈接:

回應時間模型

往返時間RTT(round-trip time):一個小的分組從客戶端到服務器,在回到客戶端的時間(傳輸時間忽略)

回應時間:一個RTT用來發起TCP連接,一個 RTT用來HTTP請求并等待HTTP回應

檔案傳輸時間共:2RTT+傳輸時間

非持久HTTP的缺點

時間長,每個物件要2個RTT;作業系統必須為每個TCP連接分配資源,但瀏覽器通常打開并行TCP連接,以獲取參考物件,

持久HTTP

持久HTTP,多個物件可以在一個(在客戶端和服務器之間的)TCP連接上傳輸,服務器在發送回應后,仍保持TCP連接,在相同客戶端和服務器之間的后續請求和回應報文通過相同的連接進行傳送,客戶端在遇到一個參考物件的時候,就可以盡快發送該物件的請求,HTTP/1.1 默認使用持久連接,

持久分為流水線和非流水線,

非流水方式的持久HTTP:客戶端只能在收到前一個回應后才能發出新的請求,每個參考物件花費一個RTT,

流水方式的持久HTTP:HTTP/1.1的默認模式,客戶端遇到一個參考物件就立即產生一個請求,所有參考(小)物件只花費一個RTT是可能的,

HTTP的版本

HTTP/0.9

只接受GET一種請求方法,沒有在通信中指定版本號,且不支持請求頭,由于該版本不支持POST方法,因此客戶端無法向服務器傳遞太多資訊,

HTTP/1.0

第一個在通信中指定的版本號,至今被廣泛采用,特別是在代理服務器中,

HTTP/1.1

當前版本號,持久連接被默認采用,并能很好地配合代理服務器作業,還支持以管道方式在同時發送多個請求,以便降低線路負載,提高傳輸速度,

但是HTTP/1.1仍有性能瓶頸,如

請求 / 回應頭部(Header)未經壓縮就發送,?部資訊越多延遲越?,只能壓縮 Body 的部分;

發送冗?的?部,每次互相發送相同的?部造成的浪費較多;

沒有請求優先級控制,服務器是按請求的順序回應的,如果服務器回應慢,會招致客戶端?直請求不到資料,也就是隊頭阻塞;

HTTP/2.0

HTTP/2 協議是基于 HTTPS 的,所以 HTTP/2 的安全性也是有保障的,

HTTP/2的改進:

1.頭部壓縮

HTTP/2 會壓縮頭(Header)如果你同時發出多個請求他們的頭是?樣的或是相似的,那么,協議會幫你消除重復的部分, 這就是所謂的 HPACK 演算法:在客戶端和服務器同時維護?張頭資訊表,所有欄位都會存?這個表,?成?個索引號,以后就不發送同樣欄位了,只發送索引號,這樣就提?速度了,

2.?進制格式

HTTP/2 不再像 HTTP/1.1 ?的純?本形式的報?,?是全?采?了?進制格式,頭資訊和資料體都是?進制,并且統稱為幀(frame):頭資訊幀和資料幀,

3.資料流

HTTP/2 的資料包不是按順序發送的,同?個連接??連續的資料包,可能屬于不同的回應,因此,必須要對資料包做標記,指出它屬于哪個回應,每個請求或回應的所有資料包,稱為?個資料流( Stream ),每個資料流都標記著?個獨???的編號,其中規定客戶端發出的資料流編號為奇數, 服務器發出的資料流編號為偶數,

客戶端還可以指定資料流的優先級,優先級?的請求,服務器就先回應該請求,

4.多路復?

HTTP/2 是可以在?個連接中并發多個請求或回應,?不?按照順序??對應,移除了 HTTP/1.1 中的串?請求,不需要排隊等待,也就不會再出現隊頭阻塞問題,降低了延遲,?幅度提?了連接的利?率,

5. 服務器推送

HTTP/2 還在?定程度上改善了傳統的「請求 - 應答」?作模式,服務不再是被動地回應,也可以主動向客戶端發送訊息,

HTTP/1.1HTTP/1.0的區別

1.persistent connection(持久連接)

HTTP/1.0:每對請求/ 回應都需要建立新的TCP連接,

HTTP/1.1:支持持久連接(默認),持久連接的特點是,只要任意?端沒有明確提出斷開連接,則保持 TCP 連接狀態,

2.Host域

HTTP/1.1在請求訊息頭多一個Host域HTTP/1.0 則沒有這個域,建立TCP連接的時候已經指定了IP地址,而且默認一個IP地址只對應一個主機名,IP地址上只有一個host,

3.請求方法和狀態碼

HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT這些Request方法,

HTTP/1.0中只定義了16個狀態回應碼,對錯誤或警告的提示不夠具體,HTTP/1.1引入了一個Warning頭域,增加對錯誤或警告資訊的描述,

在HTTP/1.1中新增了24個狀態回應碼,如409(Conflict)表示請求的資源與資源的當前狀態發生沖突;410(Gone)表示服務器上的某個資源被永久性的洗掉,

4.內容協商

為了滿足互聯網使用不同母語和字符集的用戶,一些網路資源有不同的語言版本(如中文版、英文版),

HTTP/1.0定義了內容協商 (content negotiation)的概念,也就是說客戶端可以告訴服務器自己可以接收以何種語言(或字符集)表示的資源,例如如果服務器不能明確 客戶端需要何種型別的資源,會回傳300(Multiple Choices),并包含一個串列,用來宣告該資源的不同可用版本,然后客戶端在請求訊息中包含Accept-Language和Accept- Charset頭域指定需要的版本,

5.帶寬優化

HTTP/1.1中在請求訊息中引入了range頭域它允許只請求資源的某個部分,在回應訊息中Content-Range頭域宣告了回傳的這部分物件的偏移值和長度,如果服務器相應地回傳了物件所請求范圍的內容,則回應碼為206(Partial Content),它可以防止Cache將回應誤以為是完整的一個物件,請求訊息中如果包含比較大的物體內容,但不確定服務器是否能夠接收該請求(如是否有權限),此時若貿然發出帶物體的請求,如果被拒絕也會浪費帶寬, HTTP/1.1加入了一個新的狀態碼100(Continue),客戶端事先發送一個只帶頭域的請求,如果服務器因為權限拒絕了請求,就回送回應碼 401(Unauthorized);如果服務器接收此請求就回送回應碼100,客戶端就可以繼續發送帶物體的完整請求了,注意,HTTP/1.0的客戶 端不支持100回應碼,

節省帶寬資源的一個非常有效的做法就是壓縮要傳送的資料,Content-Encoding是對訊息進行端到端(end-to-end)的編碼,它可能是 資源在服務器上保存的固有格式(如jpeg圖片格式);在請求訊息中加入Accept-Encoding頭域,它可以告訴服務器客戶端能夠解碼的編碼方 式,而Transfer-Encoding是逐段式(hop-by-hop)的編碼,如Chunked編碼,在請求訊息中加入TE頭 域用來告訴服務器能夠接收的transfer-coding方式,

HTTP/2有什么不足?

HTTP/2 主要的問題在于,多個 HTTP 請求在復??個 TCP 連接,下層的 TCP 協議是不知道有多少個 HTTP 請求的,所以?旦發?了丟包現象,就會觸發 TCP 的重傳機制,這樣在?個 TCP 連接中的所有的 HTTP 請求都必須等待這個丟了的包被重傳回來,

HTTP/1.1 中的管道( pipeline)傳輸中如果有?個請求阻塞了,那么佇列后請求也統統被阻塞住了,

HTTP/2 多個請求復??個TCP連接,?旦發?丟包,就會阻塞住所有的 HTTP 請求,

這都是基于 TCP 傳輸層的問題,所以 HTTP/3 把 HTTP 下層的 TCP 協議改成了 UDP,

HTTP常見欄位

Host欄位:客戶端發送請求時,?來指定服務器的域

Connection最常?于客戶端要求服務器使用TCP 持久連接,以便其他請求復?,

Content-Length服務器在回傳資料時,會有 Content-Length 欄位,表明本次回應的資料長度

Content-Type欄位?于服務器回應時,告訴客戶端本次的資料格式,

Content-Encoding :說明資料的壓縮?法,表示服務器回傳的資料使?了什么壓縮格式,

HTTP請求報文

HTTP報文有兩種型別:請求、回應,

HTTP請求報文

第一種:ASCII (人能閱讀)

請求行(GET、POST、HEAD命名組成)、首部行換行回車符(表示報文結束)組成,

HTTP請求報文通用格式

HTTP請求報文格式由命令列(method,sp,url,version空格等)、若干首部行名稱和冒號后的首部的值(header lines一個回車以及有可能有的物體名稱(POST命令需提交表單有物體名稱,GET形式)

提交表單的輸入:Post方式與URL方式

Post方式

網頁通常包括表單輸入,包含在物體主體 (entity body )中的,輸入被提交到服務器,

URL方式

URL方式:輸入通過請求行的URL欄位上載

方法:GET

HTTP的方法型別

HTTP/1.0

GET

POST

HEAD:要求服務器在回應報文中 不包含請求物件

HTTP/1.1

GET, POST, HEAD

PUT:將物體主體中的檔案上載 到URL欄位規定的路徑

DELETE:洗掉URL欄位規定的檔案

HTTP的回應報文

回應報文格式

HTTP的回應報文由狀態行(協議版本、狀態碼和相應狀態資訊)、首部行資料(如請求的HTML檔案)組成,

狀體碼

狀體碼:位于服務器à客戶端的回應報文中的首行,作業中可以利用抓包查看狀態碼,檢測錯誤型別,

一些常見狀態碼的例子

2XX(3)

200 OK:請求成功,請求物件包含在回應報文的后續部分

204 No Content:表示客戶端發送給服務器的請求得到了成功處理,但在回傳的回應報文中不含物體的主體部分沒有資源可以回傳

206 Patial Content:表示客戶端進行了范圍請求,并且服務器成功執行了這部分的GET請求,回應報文中包含由Content-Range指定范圍的物體內容

3XX(5)

301 Moved Permanently:請求的物件已經被永久轉移了;即新的URL在回應報文的Location(首部行中指定),客戶端軟體自動用新的URL去獲取物件

302 Found:臨時性重定向,表示請求的資源被分配了新的URL,希望本次訪問使用新的URL

301與302的區別:前者是永久移動,后者是臨時移動(之后可能還會更改URL)

303 See Other:表示請求的資源被分配了新的URL,應使用GET方法定向獲取請求的資源

302與303的區別:后者明確表示客戶端應當采用GET方式獲取資源

304 Not Modified:表示客戶端發送附帶條件(是指采用GET方法的請求報文中包含if-Match、If-Modified-Since、If-None-Match、If-Range、If-Unmodified-Since中任一首部)的請求時服務器端允許訪問資源,但是請求為滿足條件的情況下回傳改狀態碼

307 Temporary Redirect:臨時重定向,與303有著相同的含義,307會遵照瀏覽器標準不會從POST變成GET;(不同瀏覽器可能會出現不同的情況)

4XX(3)

400 Bad Request:一個通用的差錯代碼,表示該請求不能被服務器解讀

401 Unauthorized:未經許可,需要通過HTTP認證

403 Forbidden:服務器拒絕該次訪問(訪問權限出現問題)

404 Not Found:請求的檔案在該服務上沒有找到

5XX(4)

500 Inter Server Error:表示服務器在執行請求時發生了錯誤,也有可能是web應用存在的bug或某些臨時的錯誤時

501 Not Implemented:表示客戶端請求的功能還不?持

503 Service Unavailable:表示服務器當前很忙,暫時無法回應服務器

505 HTTP Version Not Supported:表示服務器暫時處于超負載或正在進行停機維護,無法處理請求

此外還有:

499 client has closed connection:這很有可能是因為服務器端處理的時間過長,客戶端主動斷開了連接

用戶-服務器狀態:cookies

了解cookies

HTTP是一種無狀態的協議,但是服務器需要維護客戶端的狀態,因此大多數主要的門戶網站使用cookies來改善,

cookies由四個4個組成部分:

1.在HTTP回應報文中有一個cookie的首部行

2.在HTTP請求報文含有一個cookie的首部行

3.在用戶端系統中保留有一個cookie檔案,由用戶的瀏覽器管理

4.在Web站點有一個后端資料庫

cookies維護實體

chaochao總是用同一個PC使 用Internet Explore上網,他第一次訪問了一個使用了Cookie的電子商務網站,當最初的HTTP請求到達服務器時,該Web站點產生一個唯一的ID,并以此作為索引在它的后端資料庫中產生一個項,那么以后的訪問就能產生特定的動作,

Cookies的用處與維護

cookies可以用來:用戶驗證、購物車、推薦、用戶狀態 (Web e-mail)等

cookies如何維持狀態

協議端節點:在多個事務上,發送端和接收端維持狀態

cookies: http報文攜帶狀態資訊

Cookies與隱私

Cookies允許站點知道許多關于用戶的資訊,可能將它知道的東西賣給第三方,使用重定向和cookie的搜索引擎還能知道用戶更多的資訊,如通過某個用戶在大量站點上的行為,了解其個人瀏覽方式的大致模式,廣告公司從站點獲得資訊,

Web快取

web快取目標

Web快取的目標:不訪問原始服務器,就滿足客戶的請求,

①用戶設定瀏覽器:通過快取訪問Web

②將Web瀏覽器設定為服務代理,瀏覽器將所有的HTTP請求發給快取

在快取中的物件:快取直接回傳物件,如物件不在快取,快取請求原始服務器,然后再將物件回傳給客戶端,

快取既是客戶端又是服務器,通常快取是由ISP安裝 (大學、公司、居民區ISP),

使用Web快取的優勢

1.降低客戶端的請求回應時間

2.可以大大減少一個機構內部網路與Internent接入鏈路上的流量,減少了服務器和網路的負擔

3.互聯網大量采用了快取:可以使較弱的ICP也能夠有效提供內容

快取的實體

條件GET方法

目標:如果快取器中的物件拷貝是最新的,就不要發送物件

快取器: 在HTTP請求中指定快取拷貝的日期

If-modified-since:

<date>

服務器: 如果快取拷貝陳舊,則回應報文沒包含物件

HTTP/1.0 304 Not

Modified

(本文的圖片來自與中科大 鄭烇老師課件)

面試常考題

01.HTTP與HTTPs

什么是HTTP

HTTP(HyperText Transfer Protocol):超文本傳輸協議,是一個基于請求與回應,無狀態的,應用層的協議,常基于TCP協議傳輸資料,互聯網上應用最為廣泛的一種網路協議,所有的WWW檔案都必須遵守這個標準,

什么是 HTTPS?

HTTPS (基于安全套接字層的超文本傳輸協議 或者是 HTTP over SSL) 是一個 Netscape 開發的 Web 協議,

你也可以說:HTTPS = HTTP + SSLHTTPS 在 HTTP 應用層的基礎上使用安全套接字層作為子層,

HTTPS協議的主要作用可以分為兩種:一種是建立一個資訊安全通道,來保證資料傳輸的安全;另一種就是確認網站的真實性,

主要區別:

①http是超文本傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl/tls加密傳輸協議,HTTPS 在 TCP 三次握?之 后,還需進? SSL/TLS 的握?程序,才可進?加密報?傳輸;

HTTPS需要得到CA申請證書,一般免費證書較少,因而需要一定費用;

HTTPHTTPS使用的是完全不同的連接方式,用的埠也不一樣,前者是80,后者是443;

HTTP的連接很簡單,是無狀態的;HTTPS協議是由SSL/TLS+HTTP協議構建的可進行加密傳輸、身份認證的連接方式;

⑤HTTPS 協議需要向 CA(證書權威機構)申請數字證書,來保證服務器的身份是可信的

02.HTTPS 是如何解決上HTTP的不安全性?

①HTTPS 采?的是對稱加密和非對稱加密結合的混合加密方式

②基于摘要演算法的方式來實作完整性,它能夠為資料?成獨一無二的密文,密文用于校驗資料的完整性,解決了篡改的風險,

③將服務器公鑰放?到數字證書中,解決了冒充的風險

03.數字證書和 CA 機構

?個數字證書通常包含了:公鑰;持有者資訊;證書認證機構(CA)的資訊;CA 對這份?件的數字簽名及使?的演算法;證書有效期;還有?些其他額外資訊;

那數字證書的作?,是?來認證公鑰持有者的身份,以防?第三?進?冒充,

我們用證書來認證公鑰持有者的身份(服務端的身份),那證書?是怎么來的??該怎么認證證書呢?

為了讓服務端的公鑰被大家信任,服務端的證書都是由 CA Certificate Authority,證書認證機構)簽名的,CA就是?絡世界?的公安局、公證中?,具有極?的可信度,所以由它來給各個公鑰簽名,信任的??簽發的證書,那必然證書也是被信任的,

之所以要簽名,是因為簽名的作?可以避免中間?在獲取證書時對證書內容的篡改,

如下圖圖所示,為數字證書簽發和驗證流程

CA 簽發證書的程序,如上圖左邊部分:

1.?先 CA持有者的公鑰、?途、頒發者、有效時間資訊打包,然后對這些資訊進? Hash 計算得到?個 Hash 值

2.然后 CA 會使用自己的私鑰將該 Hash 值加密,?成 Certificate Signature,也就是 CA 對證書做了簽名

3.最后將 Certificate Signature 添加在?件證書上,形成數字證書

客戶端校驗服務端的數字證書的程序,如上圖右邊部分:

1.?先客戶端使用同樣的 Hash 演算法獲取該證書的 Hash 值 H1

2.通常瀏覽器和作業系統中集成了 CA 的公鑰資訊,瀏覽器收到證書后使用CA 的公鑰解密 CertificateSignature 內容,得到?個 Hash 值 H2 ;

3.最后?較 H1 和 H2,如果值相同,則為可信賴的證書,否則則認為證書不可信,

04.GET 和 POST 的區別

Get方法:Get?法的含義是請求從服務器獲取資源,這個資源可以是靜態的?本、??、圖?視頻等,

POST方法:POST方法則是相反操作,它向 URI 指定的資源提交資料資料就放在報文的 body ?,

05.GET 和 POST ?法都是安全和冪等的嗎?

先說明下安全和冪等的概念: 在 HTTP 協議?,所謂的安全是指請求方法不會破壞服務器上的資源, 所謂的冪等,意思是多次執行相同的操作,結果都是相同的,

因此,GET ?法就是安全且冪等的,因為它是只讀操作,?論操作多少次,服務器上的資料都是安全的,且每次的結果都是相同的, POST因為是新增或提交資料的操作會修改服務器上的資源,所以是不安全的,且多次提交資料就會創建多個資源,所以不是冪等的,

(面試題詳解參考小林coding博主)

創作不易,客官點個贊,評論一下吧!超超和你一起加油?😜

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/299663.html

標籤:java

上一篇:HTML+CSS+JS實作 ??酷炫情人節愛心影片特效??

下一篇:【Java】剖析類和物件

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more