主頁 > 軟體設計 > Web 基礎與 HTTP 協議

Web 基礎與 HTTP 協議

2021-10-03 07:33:35 軟體設計

目錄

  • 引言
  • 一、 Web 基礎
    • 1. 域名和 DNS
      • 1.1 域名的概念
      • 1.2 域名的結構
      • 1.3 域名的申請
    • 2. Hosts 檔案
      • 2.1 作用
      • 2.2 修改 Hosts 檔案
      • 2.3 網卡中配置
    • 3. 網頁與 HTML
      • 3.1 網頁概述
      • 3.2 網頁相關概念
      • 3.3 HTML 概述
      • 3.4 Web 概述
      • 3.5 靜態頁面與動態頁面
  • 二、HTTP 協議
    • 1. 概述
    • 2. 三次握手,四次斷開
    • 3. 無狀態協議
    • 4. HTTP 版本
    • 5. HTTP 方法
    • 6. HTTP 狀態碼
  • 總結


引言

隨著互聯網的飛速發展,企業資訊化應用大多已采用網頁的形式構建,掌握網頁的相關的知識和 HTTP 的請求流程,是掌味訓聯網技術的第一步,


一、 Web 基礎

1. 域名和 DNS

1.1 域名的概念

  • 網路是基于 TCP/IP 協議進行通信和連接的,每一臺主機都有一個唯一的固定的 IP 地址,以區別于網路上成千上萬個用戶和計算機,
  • 網路中的地址方案分為兩套:IP 地址系統和域名地址系統,兩套地址系統是一一對應的
  • 由于 IP 地址是數字標識,使用時難以記憶和書寫,因此在IP地址的基礎上發展出一種符號化的地址方案,來代替數字型的IP地址
  • 每個符號化的地址都與特定的 IP 地址對應,這樣網路上資源訪問起來就比較容易的多,這個與網路上的數字型 IP 地址相對應的字符型地址,就是域名,

1.2 域名的結構

域名的結構和型別可以參照之前的總結

1.3 域名的申請

  • 域名注冊是 Internet 中用于解決地址對應問題的一種方法
  • 遵循先申請先注冊原則
  • 域名注冊步驟: 準備申請資料——》尋找域名注冊網站——》查詢域名——》正式申請——》申請成功

2. Hosts 檔案

Hosts 檔案是一個用于存盤計算機網路中節點資訊的檔案,可以將主機名映射到相應的 IP 地址,實作 DNS 的功能,可以由計算機的用戶進行修改控制,

2.1 作用

  • 在網路上訪問網站,要先通過 DNS 服務器把要訪問的域名決議成 IP 地址后,計算機才能對這個網路域名進行訪問
  • 由于 DNS 做域名決議和回傳 IP 需要時間,為了提高決議效率,可以通過在 Hosts 檔案中建立域名和 IP 的映射關系來達到目的,
  • 在進行 DNS 請求前,系統會先檢查自己的 Hosts 檔案是否有這個網路域名映射關系;如果有,就呼叫這個 IP 地址映射,如果沒有,再向已知的 DNS 服務器提出域名決議,也就是說 Hosts 的請求級別比 DNS 高,

2.2 修改 Hosts 檔案

  • /etc/hosts
#linux系統中負責快速決議的檔案,包含了ip與主機名的映射關系,在沒有DNS服務器的情況下,\
使用本地/etc/hosts完成決議/映射,實作快速訪問

[root@nginx /opt]#vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.8.134 www.gkd.com
  • /etc/resolv.conf
#DNS客戶端組態檔,主要用于設定DNS服務器的iP和域名,還包含了主機域名的搜索順序等等,\
這個檔案是由域名決議器(resolver,一個根據主機名決議IP地址的庫)使用的組態檔,

[root@nginx /etc]#vim resolv.conf 

# Generated by NetworkManager
search localdomain
nameserver 192.168.8.2

2.3 網卡中配置

[root@nginx /etc]#vim /etc/sysconfig/network-scripts/ifcfg-ens33 
DNS1=114.114.114.114
DNS2=8.8.8.8

#生效順序: hosts檔案 > 網卡組態檔 > /etc/resolv.conf

3. 網頁與 HTML

3.1 網頁概述

  • 網頁是一個檔案,存放在世界上某個角落的某一部計算機中,而這部計算機必須是與互聯網相連的,網頁經由網址(URL)來識別與存放,是互聯網的一"頁",

  • 網頁可以包括如下內容:
    ① 文本: 文本是網頁上最重要的資訊載體與交流工具,網頁中的主要資訊一般都以文本形式為主,
    ② 影像: 影像在網頁中具有提供資訊并展示直觀形象的作用,靜態影像: 在網頁中可能是圖片或矢量圖形,通常為GIF、JPEG或PNG或矢量格式,如SVG或Flash,影片影像: 通常為GIF和SVG,
    ③ Flash影片: 影片在網頁中的作用是有效地吸引訪問者更多的注意
    ④ 聲音: 聲音是多媒體和視頻網頁重要的組成部分,
    ⑤ 視頻: 視頻檔案的采用使網頁效果更加精彩且富有動感,
    ⑥ 表格:表格用來在網頁中控制頁面資訊的布局方式,
    ⑦ 導航欄: 導航欄在網頁中是一組超鏈接,其連接的目的端是網頁中重要的頁面,
    ⑧ 互動式表單: 表單在網頁中通常用來連接資料庫并接受用戶在瀏覽器端輸入的資料,利用資料庫為客戶端與服務器端提供更多的互動,

3.2 網頁相關概念

  • 域名:瀏覽網頁時輸入的網址
  • HTTP :用來傳輸網頁的通信協議,使用瀏覽器訪問網址時,在域名前面要加上 http:// ,表示使用 http 協議傳輸網頁
  • URL:是一種萬維網尋址系統,表示網路上資源的位置路徑
  • HTML:是撰寫網頁的超文本標記語言
  • 超鏈接:將網站中不同網頁鏈接起來的功能
  • 發布:將制作好的網頁上傳到服務器提供用戶訪問的程序

3.3 HTML 概述

  • HTML 是超文本標記語言,是一種規范,也是一種標準,通過標記符來標記要顯示的網頁中的各個部分
  • 網頁檔案本身是一種文本檔案,通過在文本檔案中添加標記符,可以告訴瀏覽器如何顯示其中的內容
  • HTML 檔案可以使用任何能夠生成 txt 檔案的文本編輯器來編輯,生成超文本標記語言檔案,只需修改檔案名后綴為 “.html” 或 “.htm” 即可

3.4 Web 概述

  • web (world wide Web)即全球廣域網,也稱為萬維網,是一種分布式圖形資訊系統,建立在Internet上的一種網路服務

  • web1.0 與 web2.0

web1.0
以編輯為特征,網站提供給用戶的內容是編輯處理后的,然后用戶閱讀網站提供的內容這個程序是網站到用戶的單向行為(靜態頁面的概念)黃頁

web2.0
更注重用戶的互動作用,用戶既是網站內容的消費者(瀏覽者),也是網站內容的制造者
加強了網站與用戶之間的互動,網站內容基于用戶提供,網站的諸多功能也由用戶參與建設,實作了網站與用戶雙向的交流與參與 web2.0特征
用戶分享、以興趣為聚合點的社群、開放的平臺,活躍的用戶

3.5 靜態頁面與動態頁面

  • 靜態頁面

是標準的HTAL檔案 ,擴展名是 .htm、 .html,例如文本、影像、聲音、Flash影片、客戶端腳本和Activex控制元件及Java小程式等
是網站建設的基礎,早期網站一般都由靜態網頁制作
沒有后臺資料庫、不含程式和不可互動的網頁
相對更新起來比較麻煩,適用于一般更新較少的展示型網站

  • 靜態頁面特點

① 每個靜態網頁都有一個固定的URL,且URL以.htm、.html、.shtml等常見形式為后綴,而不含有"?"
② 網頁內容一經發布到網站服務器上,無論是否有用戶訪問,每個靜態網頁都是保存在網站服務器上的
③ 靜態網頁的內容相對穩定,容易被搜索引擎檢索
④ 靜態網頁沒有資料庫的支持,在網站制作和維護方面作業量較大,因此當網站資訊量很大時完全依靠靜態網頁制作方式比較困難
⑤ 靜態網頁的互動性較差,在功能方面有較大的限制
⑥ 頁面瀏覽速度迅速,程序無需連接資料庫,開啟頁面速度快于動態頁面

  • 動態頁面

指跟靜態頁面相對的一種網頁編程技術
動態網頁URL的后綴不是 .html 、.htm 、.shtml 、.xml等靜態網頁的常見網頁制作格式,而是以 .aspx 、.asp 、 .jsp 、 .php 、.perl 、.cgi 等形式為后綴,并且在動態頁面網頁網址中有一個標志性的符號—— " ? "
常用的語言有PHP、JsP、Python、 Ruby等

  • 動態頁面特點

① 互動性:網頁會根據用戶的要求和選擇而動態改變和回應,將瀏覽器作為客戶端界面,這將是今后的大勢所趨
② 自動更新:無須手動地更新HTML檔案,便會自動生成新的頁面,可以大大節省作業量
③ 因時因人而變:當不同的時間,不同的人訪問同一網址時會產生不同的頁面 訪問的用戶的權限、身份

二、HTTP 協議

1. 概述

  • HTTP 超文本傳輸協議 (HyperText TransferProtocol) 是互聯網上應用最為廣泛的一種網路協議,它是基于 TCP/IP協議的應用層傳輸協議,簡單來說就是客戶端和服務端進行資料傳輸的一種規則,

  • HTTP/HTTPS 是應用層上的協議,建立在傳輸層 TCP 之上,客戶端通過與服務端進行 TCP 連接(三次握手),之后發送 HTTP 請求與接收 HTTP 回應都是通過訪問 Socket 介面來呼叫 TCP 協議實作,(每次都會呼叫)

2. 三次握手,四次斷開

  • 三次握手
SYN: Synchronize Sequence Numbers,同步序列編號,建立連接的信號,客戶端在接受到 SYN 訊息時,就會在自己的段內生成一個隨機值 X,

SYN-ACK:服務器收到 SYN 后,打開客戶端連接,發送一個 SYN-ACK 作為答復,確認號設定為比接收到的序列號多一個,即 X + 1,服務器為資料包選擇的序列號是另一個亂數 Y,

ACK:Acknowledge character, 確認字符,表示發來的資料已確認接收無誤,最后,客戶端將 ACK 發送給服務器,序列號被設定為所接收的確認值即 Y + 1,

FIN: 斷開連接信號

當客戶端與服務端建立TCP協議時:
① 首先客戶端會發送一個SYN,例如X,
② 當服務端收到后回傳確認訊息X+1,以及連接資料包亂數Y,這就是SYN-ACK
③ 客戶端收到后回傳最后確認字符Y+1,這就是ACK,
如果客戶端這個時候發現服務端回傳的并不是X+1,會重新發起SYN,直至正確方可連接,這也就是他的重試機制

其實說白了三次握手就是當客戶端發起申請后不僅客戶端要確認服務端,服務端也要確認客戶端,所以為什么兩次就不行,多一次又繁瑣,
好比如撥通電話:
A: 喂,你好,能聽見我說話嗎?(SYN請求)
B:能聽見,(ACK回應)你能聽見我說話嗎?(SYN請求)
A:能聽見,(ACK回應)
三次握手,確認建立連接,

在這里插入圖片描述

  • 四次斷開

① 當客戶端決定斷開時,向服務端發送FIN信號,進入 FIN_WAIT_1 狀態,等待來自服務器的 ACK 回應
② 客戶端收到服務器發送的 ACK 回應后,客戶端就進入 FIN_WAIT_2 狀態,然后等待來自服務器的 FIN 信號
③ 服務器發送 ACK 確認訊息后,一段時間(可以配置關閉)會發送 FIN 信號給客戶端,告知客戶端可以進行關閉,
④ 客戶端收到從服務端發送的 FIN 訊息時,客戶端就會由 FIN_WAIT_2 狀態變為 TIME_WAIT 狀態,在這里要注意這個時候客戶端可以重新連接到服務端為了防止資訊丟失,如果不進行連接,那么在一段時間連接關閉,客戶端所有資料包括埠號快取資料等全部釋放

掛斷電話例子:
A:我要掛電話了,(FIN請求)
B:好的,(ACK回應)
B:那我也掛電話了,(FIN請求)
A:好的,(ACK回應)
四次揮手,連接關閉,

在這里插入圖片描述

  • 為什么是三次握手,而不是二次?

為了實作可靠資料傳輸, TCP 協議的通信雙方, 都必須維護一個序列號, 以標識發送出去的資料包中, 哪些是已經被對方收到的, 三次握手的程序即是通信雙方相互告知序列號起始值, 并確認對方已經收到了序列號起始值的必經步驟
如果只是兩次握手, 至多只有連接發起方的起始序列號能被確認, 另一方選擇的序列號則得不到確認

  • 為什么是四次斷開?

因為當 Server 端收到 Client 端的 SYN連 接請求報文后,可以直接發送SYN+ACK報文,其中ACK報文是用來應答的,SYN報文是用來同步的,但是關閉連接時,當Server端收到FIN報文時,很可能并不會立即關閉SOCKET,所以只能先回復一個ACK報文,告訴Client端,“你發的FIN報文我收到了”,只有等到我Server端所有的報文都發送完了,我才能發送FIN報文,因此不能一起發送,故需要四步握手,

3. 無狀態協議

  • 無狀態協議是指瀏覽器對于事務的處理沒有記憶能力也就是說服務器并不知道客戶端進行了什么操作,比如關閉瀏覽器再開啟訪問等

  • HTTP 是一種無狀態 (stateless) 協議,HTTP 協議本身不會對發送過的請求和相應的通信狀態進行持久化處理(存盤、保存〉,

  • 這樣做的目的是為了保持 TCP 協議的簡單性,從而能夠快速處理大量的事務,提高效率,

  • 然而,在許多應用場景中,我們需要保持用戶登錄的狀態或記錄用戶購物車中的商品,由于 HTTP 是無狀態協議,所以必須引入一些技術來記錄管理狀態,例如 cookie,

Cookie 是一種在客戶端保持 HTTP 狀態資訊的技術,它好比商場發放的優惠卡,
Cookie是在瀏覽器訪問WEB服務器的某個資源時,由WEB服務器在HTTP回應訊息頭中附帶傳送給瀏覽器的一片資料,WEB服務器傳送給各個客戶端瀏覽器的資料是可以各不相同的,
一旦WEB瀏覽器保存了某個Cookie,那么它在以后每次訪問該WEB服務器時,都應在HTTP請求頭中將這個Cookie回傳給WEB服務器,

Session技術是一種將會話狀態保存在服務器端的技術 ,它可以比喻成是醫院發放給病人的病歷卡和醫院為每個病人保留的病歷檔案的結合方式 ,
客戶端需要接收、記憶和回送 Session的會話標識號,Session可以且通常是借助Cookie來傳遞會話標識號,

cookie 和session 都為了實作 http 的短期的持久化(記憶體/快取方式,查詢快、效率比較高)
兩者對比: cookie 省服務器性能而 session 更安全

4. HTTP 版本

  • HTTP 0.9:己過時,只接受 GET 一種請求方法,沒有通信中指定版本號,且不支持請求頭,
  • HTTP 1.0:這是第一個在通信中指定版本號的 HTTP 協議版本,至今仍被廣泛采用,特別是在代理服務器中,
  • HTTP 1.1:當前版本,持久連接被默認采用,并能很好地配合代理服務器作業;還支持以管道形式同時發送多個請求,以便降低線路負載,提高傳輸速度,
  • HTTP 2.0:HTTP2.0是 HTTP 協議自1999年HTTP1.1發布后的首個更新,大幅度的提高了web性能,在HTTP1.1完全語意兼容的基礎上,進一步減少了網路的延遲,實作低延遲高吞吐量,

HTTP1.0 和 HTTP1.1 之間區別:
① 快取處理
在HTTP1.0中主要使用header里的If-Modified-Since,Expires來做為快取判斷的標準,HTTP1.1則引入了更多的快取控制策略例如Entitytag,If-Unmodified-Since,If-Match,If-None-Match等更多可供選擇的快取頭來控制快取策略,
② 帶寬優化及網路連接的使用
HTTP1.0中,存在一些浪費帶寬的現象,例如客戶端只是需要某個物件的一部分,而服務器卻將整個物件送過來了,并且不支持斷點續傳功能,HTTP1.1則在請求頭引入了range頭域,它允許只請求資源的某個部分,即回傳碼是206 (PartialContent),這樣就方便了開發者自由的選擇以便于充分利用帶寬和連接
③ 錯誤通知的管理
在HTTP1.1中新增了24個錯誤狀態回應碼,如409(Conflict)表示請求的資源與資源的當前狀態發生沖突;410(Gone)表示服務器上的某個資源被永久性的洗掉
④ HOST域
在HTTP1.0中認為每臺服務器都系結一個唯一的IP地址,因此,請求訊息中的URL并沒有傳遞主機名,HTTP1.0沒有host域,隨著虛擬主機技術的發展,在一臺物理服務器上可以存在多個虛擬主機(Multi-homed Web Servers),并且它們共享一個IP地址,HTTP1.1的請求訊息和回應訊息都支持host域,且請求訊息中如果沒有host域會報告一個錯誤(400 Bad Request),

5. HTTP 方法

  • HTTP 支持幾種不同的請求命令,這些命令被稱為 HTTP 方法,每條 HTTP 請求報文都包含一個方法,告訴服務器要執行什么動作,包括獲取一個頁面、允許一個網關程式、洗掉一個檔案等,
  • 其中,最常用的方法是 GET、POST,如下:
方法描述
GET請求獲取Request-URI 所標識的資源
PUT請求服務器存盤一個資源,并用Request-URI作為其標識
DELETE請求服務器洗掉 Request-URI所標識的資源
POST在Request-URI所標識的資源后附加新的資料
HEAD請求獲取由 Request-URI所標識的資源的回應訊息報頭
  • GET 和 POST 方法比較

① 語意上的區別:
Get向服務器請求資料,依照HTTP協議,get是用來請求資料,
Post向服務器發資料,依照HTTP協議,Post的語意是向服務器添加資料,也就是說按照post的語意,該操作是會修改服務器上的資料
② 服務器請求的區別:
Get請求是可以被快取,比如訪問百度,訪問的方式就是GET,此時訪問后的內容會緩被存在瀏覽器中,短時間再次訪問,其實是拿到的瀏覽器中的快取內容另外Get請求只能接收ASCII碼的回復,
Post請求是不可以被快取的,對于Post方式提交表單,重繪頁面瀏覽器會彈出提示框 “是否重新提交表單”,Post可以接收二進制等各種資料形式,所以如果要上傳檔案一般用Post請求
③ 引數放請求頭和請求體的差別:
Get請求通常沒有請求體,在Tce傳輸中只需傳輸一次(而不是一個包),所以Get請求效率相對高,
Post請求將資料放在請求體中,而實際傳輸中,會先傳輸完請求頭,再傳輸請求體,是分為兩次傳輸的(而不是兩個包),Post請求頭會比get更小(一般不帶引數),請求頭更容易在一個TCP包中完成傳輸,更何況請求頭中有content-Length的標識,可以更好地保證 HTTP 包的完整性,

\GET 方法POST 方法
對資料長度的限制URL 的長度是受限制的(URL 的最大長度是2048個字符)無限制
快取能被快取不能被快取
安全性與POST相比, GET的安全性較差,因為所發送的資料是URL的一部分,在發送密碼或其他敏感資訊時絕不要使用GETPOST比GET更安全,因為引數不會被保存在瀏覽器歷史或Web服務器日志中
歷史引數保留在瀏覽器歷史中引數不會保存在瀏覽器歷史中
后退按鈕/重繪無害資料會被重新提交(瀏覽器應該告知用戶資料會被重新提交)
書簽可收藏為書簽不可收藏為書簽

6. HTTP 狀態碼

  • HTTP 狀態碼(HTTP Status Code)是用以表示網頁服務器 HTTP 回應狀態的3位數字代碼,當瀏覽器請求某一URL 時,服務器會根據處理情況回傳相應的處理狀態,
  • HTTP狀態碼可以分為五大類,如下表所示,其中2XX、3XX表示請求正常,4XX、5XX表示出現例外情況,
狀態碼首位已定義范圍分類
1xx100-101資訊提示
2xx200-206成功
3xx300-305重定向
4xx400-415客戶端錯誤
5xx500-505服務器錯誤
  • 生產環境常見的狀態碼如下所示
訊息描述
200 OK請求成功(其后是對GET和POST 請求的應答檔案)
301 Moved Permanently請求的永久頁面跳轉
403 Forbidden禁止訪問該頁面
404 Not Found服務器無法找到被請求的頁面
500 Internal Server Error內部服務器錯誤
502 Bad Gateway無效網關
503 Service Unavailable當前服務不可用
504 Gateway Timeout網關請求超時

總結

  • POST 和 GET 方法在快取、安全性、長度限制等方面各有不同
  • HTTP 協議請求回應以報文形式傳遞

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

標籤:其他

上一篇:Nginx學習筆記

下一篇:Docker快速入門

標籤雲
其他(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)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more