技術面試問題總結一

MySQL的幾種鎖機制

一、從鎖的粒度角度劃分

表級鎖

????????機制:它是對整張表進行鎖定的一種鎖。當一個事務對表執行寫操作時,會獲取寫鎖,在寫鎖持有期間,其他事務無法對該表進行讀寫操作;而當事務執行讀操作時,會獲取讀鎖,讀鎖之間是共享的,多個事務可以同時對表加讀鎖。????????

行級鎖

????????機制:行級鎖僅對操作的行進行鎖定。它能最大程度地支持并發處理。行級鎖又可細分為共享鎖和排他鎖。共享鎖允許多個事務同時讀取同一行數據;排他鎖則會阻止其他事務對該行數據進行讀寫操作。

頁級鎖

????????機制:頁級鎖的鎖定粒度介于表級鎖和行級鎖之間,它鎖定的是數據頁

二、從鎖的模式角度劃分

共享鎖(S 鎖)

????????機制:也被稱為讀鎖。如果事務 T 對數據對象 A 加上共享鎖,那么事務 T 可以讀取 A,但不能修改 A。同時,其他事務只能對 A 加共享鎖,而不能加排他鎖,直到事務 T 釋放 A 上的共享鎖。

排他鎖(X 鎖)

????????機制:又稱寫鎖。若事務 T 對數據對象 A 加上排他鎖,那么事務 T 既可以讀取 A,也可以修改 A。在事務 T 釋放 A 上的排他鎖之前,其他事務不能對 A 加任何類型的鎖。 意向鎖 機制:這是一種表級別的鎖,用于表示某個事務正在鎖定某一行,或者將要對某一行加鎖。

意向鎖分為意向共享鎖(IS 鎖)和意向排他鎖(IX 鎖)????????

????????意向鎖的主要作用是提高表級鎖的判斷效率

????????應用:當一個事務想要獲取表的共享鎖時,必須先獲取該表的意向共享鎖;想要獲取表的排他鎖時,則必須先獲取表的意向排他鎖。

說一下websocket和 http的區別

1、連接方式

????????HTTP:是無狀態的請求-響應協議。客戶端向服務器發送請求,服務器處理請求后返回響應,連接在請求響應完成后就會關閉。每次通信都需要重新建立連接,例如在瀏覽網頁時,瀏覽器向服務器請求 HTML、CSS、JavaScript 等資源,服務器返回相應內容,之后連接斷開。

????????WebSocket:是一種持久連接協議。在客戶端和服務器通過 HTTP 協議完成握手后,會建立起一條全雙工的通信通道,連接會一直保持,直到其中一方主動關閉。這就好比在客戶端和服務器之間建立了一座橋梁,雙方可以隨時通過這座橋梁進行數據傳輸。

2、通信方式

????????HTTP:是單向的半雙工通信,通常是客戶端主動發起請求,服務器被動響應,服務器不能主動向客戶端發送數據,除非客戶端再次發起請求。例如在電商網站上查詢商品信息,需要用戶點擊搜索按鈕發起請求,服務器才會返回商品列表。

????????WebSocket:支持全雙工通信,客戶端和服務器可以在任意時刻相互發送數據。比如在實時聊天應用中,客戶端和服務器可以同時發送和接收消息,無需等待對方的請求。

3、數據傳輸格式

????????HTTP:數據傳輸格式多樣,常見的有JSON、XML、HTML等。一般來說,HTTP 請求和響應會包含請求頭和請求體,請求頭包含了請求的元信息,如請求方法、請求的資源路徑、客戶端信息等,請求體則包含了具體的數據內容。

????????WebSocket:數據傳輸格式更加靈活,可以是文本數據,也可以是二進制數據。它在傳輸數據時會有自己的幀協議,將數據封裝成順進行傳輸,并且可以根據需要選擇不同的操作碼來表示數據的類型。

4、性能開銷

????????HTTP:由于每次請求都需要建立和斷開連接,會帶來一定的開銷,尤其是在頻繁請求的場景下,如實時數據更新應用,會消耗大量的網絡資源和服務器資源。而且為了保持會話狀態,可能需要使用Cookie、Session等機制,進一步增加了開銷

????????WebSocket:建立連接后是持久的,避免了頻繁建立和斷開連接的開銷。在數據傳輸過程中,由于不需要像HTTP 那樣攜帶大量的請求頭信息,所以傳輸效率更高,更適合對實時性要求高、數據傳輸頻繁的場景。

5、應用場景

????????HTTP:適用于對實時性要求不高的場景,如靜態網頁瀏覽、文件下載、表單提交等。在這些場景中,客戶端只需要在需要時向服務器請求數據,服務器返回響應即可。

????????WebSocket:常用于實時性要求較高的場景,如在線聊天、實時數據監控、多人游戲等。在這些場景中,需要客戶端和服務器之間能夠實時地交換數據,以保證用戶體驗。

什么是HTTPS?HTTPS如何保證安全?

????????HTTPS(HyperText Transfer Protocol Secure,超文本傳輸安全協議)是在 HTTP 基礎上加入了加密層(SSL/TLS 協議)的安全版本,目的是解決 HTTP 的安全隱患,保證數據傳輸的機密性、完整性和真實性。簡單來說,HTTPS = HTTP + SSL/TLS,它通過 SSL/TLS 協議對傳輸的數據進行加密,讓第三方無法竊聽或篡改,同時驗證服務器的身份,防止客戶端被欺騙。

HTTP(HyperText Transfer Protocol,超文本傳輸協議)是互聯網上應用最廣泛的一種網絡協議,用于客戶端(如瀏覽器)和服務器之間的通信,主要作用是傳輸超文本(如網頁、圖片、視頻等)。

HTTP 的安全隱患
由于數據明文傳輸,在傳輸過程中可能被第三方(如黑客、網絡運營商)竊聽、篡改或偽造,例如:

  • 竊聽:獲取用戶的賬號密碼、支付信息等敏感數據。
  • 篡改:修改網頁內容(如替換廣告、植入惡意代碼)。
  • 偽造:冒充服務器向客戶端發送虛假信息(如釣魚網站)。

?HTTPS 的安全機制主要依賴于?SSL/TLS 協議?和?數字證書,具體實現情況如下:

1、身份驗證:借助數字證書確認服務器身份,客戶端會驗證證書的頒發機構、域名匹配度和有效期等;

2、加密傳輸:采用 “非對稱加密 + 對稱加密” 結合的方式,非對稱加密用于傳輸對稱密鑰,對稱加密用于傳輸實際數據;

3、完整性校驗:通過生成 “消息認證碼(MAC)”,客戶端比對接收數據的 MAC 與服務器發送的 MAC,判斷數據是否被篡改。

HTTPS 通過 SSL/TLS 協議的加密機制保證數據傳輸的機密性和完整性,通過數字證書的身份驗證機制確保通信雙方的真實性,從而解決了 HTTP 明文傳輸的安全隱患。如今,HTTPS 已成為主流網站(尤其是涉及支付、登錄的場景)的標配,瀏覽器會通過地址欄的 “鎖” 圖標提示用戶當前連接是否使用 HTTPS 加密。

咱們用大白話來理解就是:

HTTP 就像寄明信片,內容是明文的,誰都能看,還可能被人改內容、冒名發,不太安全。

HTTPS 則是寄加密的快遞,它在 HTTP 基礎上多加了層保護(SSL/TLS)。

它怎么保證安全呢?靠兩樣:

一是 “數字證書”,相當于服務器的身份證,由權威機構發的,能證明這服務器是真的,不是騙子假裝的。瀏覽器會檢查這證書是不是真的、沒過期、和網站對得上。

二是加密傳輸,像寄快遞前把東西鎖起來。先通過非對稱加密(類似用公鑰鎖箱子,只有服務器的私鑰能打開)商量好一把 “對稱密鑰”,之后傳輸的所有數據都用這把鑰匙加密,別人就算截到了也打不開,改了也能發現。

簡單說,HTTP 是裸奔,HTTPS 是穿了防護衣,讓信息在網上跑的時候,別人偷不走、改不了,也騙不了你。

OSPF和BGP的區別

OSPF(Open Shortest Path First,開放式最短路徑優先)和 BGP(Border Gateway Protocol,邊界網關協議)是互聯網中兩種重要的路由協議,但它們的設計目標、應用場景和工作原理有顯著區別。以下從多個方面詳細對比兩者的差異:

一、協議類型與工作范圍

  • OSPF:屬于內部網關協議(IGP),僅在一個自治系統(AS)內部運行,用于管理 AS 內部的路由信息。例如,企業內網、校園網或運營商的單個 AS 內部,通常用 OSPF 計算最優路徑。

  • BGP【需滿足設備支持】:屬于外部網關協議(EGP),用于不同自治系統(AS)之間交換路由信息。例如,當數據需要從一個運營商的網絡傳遞到另一個運營商的網絡時,BGP 負責在 AS 之間選擇路徑。

二、路由計算依據

  • OSPF:基于鏈路狀態算法,通過 “最短路徑優先(SPF)” 算法計算路由。

    • 每個路由器會向全網廣播自己的鏈路狀態(如接口帶寬、開銷等),形成統一的 “鏈路狀態數據庫”。
    • 以自身為根,使用 SPF 算法生成最短路徑樹,優先選擇開銷最小的路徑(開銷通常與帶寬相關,帶寬越高開銷越小)。
  • BGP:基于路徑向量算法,不計算 “最短路徑”,而是根據路由屬性,選擇最優路徑。

    • 路由屬性包括 AS 路徑長度(AS_PATH)、下一跳(NEXT_HOP)、本地優先級(LOCAL_PREF)等,管理員可通過配置屬性控制路由選擇(例如優先選擇 AS 路徑短的路由)。
    • 核心目標是避免 AS 之間的路由環路,并確保大規模網絡的穩定性。

三、應用場景

  • OSPF

    • 適用于小規模到中大規模的單一 AS 內部,例如企業網絡、數據中心內部或運營商的某個區域網絡。
    • 優勢是收斂速度快(鏈路狀態變化時能快速更新路由),適合對實時性要求高的場景(如視頻會議、在線游戲)。
  • BGP

    • 適用于跨 AS 的大規模網絡,是互聯網的 “核心路由協議”,負責全球運營商之間的路由互聯。
    • 支持大規模路由表(可處理數十萬條路由),且允許管理員通過策略靈活控制路由(例如限制某些 AS 的流量),適合對穩定性和可控性要求高的場景。

四、路由更新方式

  • OSPF

    • 采用觸發更新 + 定期更新:鏈路狀態變化時立即廣播更新(觸發更新),同時每 30 分鐘發送一次完整的鏈路狀態通告(LSA)進行確認(定期更新)。
    • 更新范圍限于 AS 內部,且僅傳遞變化的鏈路狀態,而非完整路由表,帶寬開銷較小。
  • BGP

    • 采用增量更新:僅當路由信息發生變化時(如新增、刪除或屬性修改),才發送更新消息,且只傳遞變化的路由條目。
    • 初始建立連接時會交換完整路由表,但后續更新僅傳遞差異,適合大規模網絡減少帶寬消耗。

五、路由環路處理

  • OSPF:由于運行在單一 AS 內部,通過鏈路狀態算法和層次化設計(如劃分區域 Area)避免環路:每個區域內的路由器只維護本區域的鏈路狀態,區域間通過骨干區域(Area 0)轉發,天然避免環路。

  • BGP:跨 AS 場景中,通過AS_PATH 屬性避免環路:每條路由都會攜帶經過的 AS 列表,若收到的路由中包含本地 AS 號,則拒絕接收該路由,從而防止環路。

對比表格

對比維度OSPFBGP
協議類型內部網關協議(IGP)外部網關協議(EGP)
工作范圍單一 AS 內部跨 AS 之間
算法基礎鏈路狀態算法(SPF)路徑向量算法
路由選擇依據鏈路開銷(最短路徑)路由屬性(如 AS_PATH、優先級)
路由表規模較小(AS 內部路由)極大(全球互聯網路由)
收斂速度慢(強調穩定性)
典型應用企業內網、數據中心內部互聯網骨干網、運營商互聯
環路處理基于區域劃分避免基于 AS_PATH 屬性避免

keepalived的工作原理

keepalived 是一個基于 VRRP(虛擬路由)協議來實現 LVS 服務高可用方案,可以解決靜態路由出現的單點故障問題。

工作原理:在一個 LVS 服務器里面,它通常有主服務器和備用服務器,就是我們常說的 master 和 backup 這兩種角色的服務器,對外服務時會提供給一個虛擬的 IP 也就是我們前面所提及到的?VRRP ,然后 master 會發送我們的 VRRP 的通告信息給我們的備用服務器,當 backup 接收不到我們的 VRRP 信息以及主服務器異常的時候,那么優先級最高的這個 backup 會接管虛擬IP成為新的 master。

工作原理:通過 VRRP 協議來選舉出一個 master 主節點和多個 backup 從節點,那么主節點負責分配這個流量同時會給下面的 backup節點發送 VRRP 協議加密和通告信息,當下面的 backup 收不到通告信息了就會認為 master 節點是不可用的,那么優先級最高的這個 backup 節點就會成為新的 master,它就負責接下來的分發流量的工作了

兩種方式一樣,看自己更喜歡哪種回答

LVM邏輯卷

是 Linux 系統中用于管理磁盤存儲的一種技術,它通過將物理磁盤抽象為邏輯卷,提供了比傳統分區更靈活的磁盤管理方式。

物理卷(PV)與卷組(VG)
? PV 是 VG 的物理基礎:一個 VG 由多個 PV 組成,PV 可以是整塊物理磁盤(如/dev/sdb)或分區(如/dev/sdb1)。
? VG 是 PV 的邏輯容器:通過vgcreate myvg /dev/sdb /dev/sdc將多個 PV 合并為一個 VG,形成統一的存儲池。
? 動態擴展:可隨時通過vgextend添加新 PV,或通過vgreduce移除 PV(需先遷移數據)。
物理擴展塊(PE)與邏輯擴展塊(LE)
? PE 是物理存儲的最小單位:每個 PV 被劃分為大小相等的 PE(默認 4MB),PE 編號全局唯一(如/dev/sdb:0表示 sdb 磁盤的第一個 PE)。
? LE 是邏輯存儲的最小單位:LV 被劃分為與 PE 大小相同的 LE,通過映射表與物理 PE 一一對應。
? 映射關系:當創建 LV 時,系統從 VG 中分配空閑 PE,并建立 LE 到 PE 的映射(如LV_LE0 → PV1_PE10)。

LVM 通過?分層抽象 + 映射機制?實現靈活性:

  • 物理層:將磁盤轉化為可管理的 PV 和 PE。
  • 邏輯層:通過 VG 整合 PV 資源,建立 LE→PE 映射表。
  • 應用層:LV 提供統一接口,支持動態調整和快照。

常用命令?

功能物理卷(PV)卷組(VG)邏輯卷(LV)
創建pvcreatevgcreatelvcreate
查看信息pvdisplay,?pvsvgdisplay,?vgslvdisplay,?lvs
刪除pvremovevgremovelvremove
擴展-vgextendlvextend
縮小-vgreducelvreduce
物理卷移動數據pvmove--

docker 的相關問題

什么是docker?

????????Docker 是一種輕量級的容器化技術,通過將應用及其依賴打包成獨立的容器,實現 “一次構建,到處運行” 的目標。它解決了軟件開發和部署過程中的環境一致性問題,極大提高了開發效率和系統可靠性。

什么是docker鏡像?

????????Docker 鏡像是 Docker 容器的基礎,它是一個只讀的文件系統包,包含了運行應用程序所需的所有內容:代碼、運行時環境、庫、環境變量和配置文件。Docker 鏡像使應用能夠在任何環境中一致運行,解決了 “在我機器上能運行” 的問題。

什么是docker容器?

????????Docker 容器是 Docker 鏡像的運行實例,是一種輕量級、可移植的獨立運行環境。它封裝了應用程序及其所有依賴項,確保應用在不同環境中一致運行。容器通過 Linux 內核的隔離技術實現進程級隔離,相比傳統虛擬機具有更高的資源利用率和更快的啟動速度。

docker容器有幾種狀態?

buffer 和 cache 的區別

buffer(緩沖區)?和?cache(緩存)?都是內存中的臨時存儲區域,用來提升系統效率,但作用場景完全不同

Buffer 為 “寫” 服務更多,Cache 為 “讀” 服務更多

Buffer(緩沖區):像 “臨時中轉站”,專門解決設備速度不匹配的問題。比如 CPU 寫數據到磁盤時,先放緩沖區,CPU 不用等磁盤寫完就可以干別的,緩沖區再慢慢傳給磁盤。(如寫磁盤時的臨時存儲)。

比如:你給遠方的朋友寄快遞,不會親自跑過去送(太慢),而是先把快遞放到小區快遞柜(緩沖區),快遞員定期來取走派送。
這里,你(快設備,比如 CPU)→ 快遞柜(緩沖區)→ 快遞員(慢設備,比如磁盤 / 網絡),緩沖區讓你不用等快遞員,提高效率。

Cache(緩存):像 “常用文件柜”,把你經常用的數據存起來。比如反復看同一個文件,第一次從磁盤讀,之后直接從緩存拿,不用再麻煩磁盤,速度更快。(如反復讀取的文件內容)。

比如:你每天早上都要喝牛奶,不會每次都去樓下超市(慢),而是提前買幾盒放家里冰箱(緩存),早上直接拿,不用跑超市。
這里,超市(慢設備,比如磁盤)→ 冰箱(緩存)→ 你(快訪問,比如 CPU / 用戶),緩存讓常用數據離訪問者更近。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/90557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/90557.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/90557.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python(一)

基本語法:變量,語法變量類型:不同于Java,C語言,C,Python在創建一個變量的時候,不需要聲明變量類型,由編譯器自行識別Python語句在只有一個語句的時候語句末尾不需要分號,…

Adaptive AUTOSAR中的Firewall技術:智能汽車網絡安全架構的核心

1 防火墻技術基礎 1.1 定義與演進歷程 防火墻(Firewall)作為一種位于內部網絡與外部網絡之間的網絡安全系統,本質上是依照特定規則允許或限制數據傳輸的信息安全防護機制。在汽車電子電氣架構從分布式向集中式轉變的背景下,防火墻技術已從傳統的IT領域深度融入Adaptive A…

android閃光燈源碼分析

目錄 一、APP層源碼分析 二,framework層代碼分析 ???????2.1 binder溯源 這幾天擼了android11 aosp閃光燈源碼,本著前人栽樹后人乘涼的原則,有志于android系統開發的新同學們提供一盞明燈,照亮你們前行。 本人擼代碼風格&…

文心一言4.5開源部署指南及文學領域測評

📝個人主頁:哈__ 期待您的關注 目錄 一、引言 二、文心一言開源模型 2.1 MoE架構 2.2 文心一言MoE架構 三、文心一言稠密模型部署 3.1 產品選擇 3.2 環境選擇 3.3 Python3.12安裝 3.3 PaddlePaddle-GPU安裝 3.4 FastDeploy-GPU安裝 ?編輯3.…

深入探討 C++ 中的浮點數數據類型

核心概念:IEEE 754 標準 C 中的浮點數(float, double, long double)在絕大多數現代系統上遵循 IEEE 754 標準。這個標準定義了浮點數在內存中的二進制表示方式、運算規則、特殊值(如無窮大、NaN)等。數據類型與精度 fl…

相機:以鼠標點為中心縮放(使用OpenGL+QT開發三維CAD)

很多軟件中(Auto CAD、ODA等)支持以鼠標點為中心進行放縮操作,有什么黑科技嗎? 本章節為相機原理和實現的補充內容,支持鼠標放縮時以鼠標點為中心進行放縮。 對應視頻課程已上線,歡迎觀看和支持~ https:…

??XAMPP安全升級指南:修復CVE-2024-4577漏洞,從PHP 8.2.12升級至PHP 8.4.10??

??1. 背景與漏洞概述?? 近期,PHP官方披露了一個高危漏洞 ??CVE-2024-4577??,該漏洞影響PHP 8.2.x及更早版本,可能導致遠程代碼執行(RCE)或信息泄露。由于XAMPP默認捆綁的PHP版本(如8.2.12)可能受此漏洞影響,建議用戶盡快升級至最新的??PHP 8.4.10??(或官…

ES 壓縮包安裝

以下是 Elasticsearch (ES) 通過 .tar.gz 壓縮包安裝的詳細步驟(適用于 Linux/macOS 系統): 1. 準備工作 1.1 檢查系統依賴 Java 環境:ES 需要 JDK,推薦 OpenJDK 11/17(ES 7.x/8.x 兼容版本)。…

RoboRefer:面向機器人視覺-語言模型推理的空間參考

25年6月來自北航、北大和北京智源的論文“RoboRefer: Towards Spatial Referring with Reasoning in Vision-Language Models for Robotics”。 空間參考是實體機器人與三維物理世界交互的基本能力。然而,即使有了強大的預訓練視覺-語言模型 (VLM),近期方…

【Unity】MiniGame編輯器小游戲(十)連連看【Link】

更新日期:2025年7月9日。 項目源碼:獲取項目源碼 索引 連連看【Link】一、游戲最終效果二、玩法簡介三、正式開始1.定義游戲窗口類2.規劃游戲窗口、視口區域3.方塊 Block①.定義方塊類②.生成方塊所有類型③.生成連連看棋盤④.繪制方塊陣列4.連線 Line①.點擊方塊連線②.嘗試…

Enable ADB Debugging Before Connect

If you don’t enable Developer Options and turn on USB Debugging before plugging in the cable, adb devices won’t detect the phone because the Android system doesn’t trust the connection yet. Here’s what you need to do step-by-step to fix this:? 1. Enab…

從互聯網電腦遷移Dify到內網部署Dify方法記錄

一、在互聯網電腦上準備遷移文件1. 保存 Docker 鏡像# 獲取所有 Dify 相關鏡像(根據實際容器名調整) docker ps --filter "namedify" --format "{{.Image}}" | sort -u > dify-images.list# 保存鏡像為 .tar 文件 docker save $(…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆(一)

MatSwap: Light-aware material transfers in images介紹任務:輸入一張拍攝圖像、示例材質紋理圖像(這里跟BRDF無關,通常我們講到材質一般指的是SVBRDF,但是這里的材質指的只是紋理)、用戶為拍攝圖像指定的遮罩區域&am…

餓了么el-upload上傳組件報錯:TypeError: ***.upload.addEventListener is not a function

在本地上傳沒有報這個錯誤,部署到服務器后會報這個錯誤,一開始以為是服務器配置等什么原因,但是一想這個報錯應該還是在前端,接口都還沒請求,不可能到后臺去,后面搜了好幾個AI也沒有找到想要的答案或解決方…

淘寶直播與開源鏈動2+1模式AI智能名片S2B2C商城小程序的融合發展研究

摘要:本文聚焦于淘寶直播這一以“網紅”內容為主的社交電商平臺,深入分析其特點與流量入口優勢。同時,引入開源鏈動21模式AI智能名片S2B2C商城小程序這一新興概念,探討二者融合的可能性與潛在價值。通過分析融合過程中的技術、市場…

【macos用鏡像站體驗】Claude Code入門使用教程和常用命令

一、下載安裝nodejs # macOS 用戶安裝nodejs brew update brew install node二、安裝官方Claude Code # 安裝 Claude Code npm install -g anthropic-ai/claude-code # 查看版本 claude --version三、正式使用(國內鏡像站) 今天發現的一個鏡像站&…

算法學習筆記:11.冒泡排序——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

在排序算法的大家族中,冒泡排序是最基礎也最經典的算法之一。它的核心思想簡單易懂,通過重復地走訪待排序序列,一次比較兩個相鄰的元素,若它們的順序錯誤就把它們交換過來,直到沒有需要交換的元素為止。雖然冒泡排序的…

Linux小白學習基礎內容

記錄第一天重新學習2025/7/10 15:467/10 17:02這里面一個命令帶多個參數舉例(多個參數之間用空格隔開)ls(命令) ~ / /etc/(參數) :這里就是同時查看主機的家目錄,根目…

從零開始搭建深度學習大廈系列-2.卷積神經網絡基礎(5-9)

(1)本人挑戰手寫代碼驗證理論,獲得一些AI工具無法提供的收獲和思考,對于一些我無法回答的疑問請大家在評論區指教; (2)本系列文章有很多細節需要弄清楚,但是考慮到讀者的吸收情況和文章篇幅限制,選擇重點進行分享&…

【iOS設計模式】深入理解MVC架構 - 重構你的第一個App

目錄 一、MVC模式概述 二、創建Model層 1. 新建Person模型類 2. 實現Person類 三、重構ViewController 1. 修改ViewController.h 2. 重構ViewController.m 四、MVC組件詳解 1. Model(Person類) 2. View(Storyboard中的UI元素&#x…