主頁 > 軟體設計 > 作業系統 - Linux

作業系統 - Linux

2021-01-03 10:30:23 軟體設計

Linux Operating System

C7 行程管理

  1. 行程控制塊,其中與行程管理、存盤器管理和檔案管理有關的一些欄位,執行緒組識別符號,
  • Linux為每一個行程建立行程控制塊,又稱行程描述符

    • 用一個task_struct型別的資料結構表示

      task_struct{
      	thread_info   // 基本資訊
      	mm_struct     // 虛擬記憶體描述符
      	fs_struct     // 指向檔案系統資訊
      	files_struct  // 行程打開的檔案
      	signal_struct // 所接受的信號
      	dentry	      // 指向目錄結構的指標
      }
    • 包含了與行程相關的所有資訊

  • 每個行程有一個唯一的行程識別符號PID

    • 新創建的通常是PID+1
    • 使用pidmap_array位圖管理PID號(分配和空閑)
  • 執行緒組識別符號

    • pid_t tgid
    • 同一執行緒組中所有輕權行程tgid相同
  • PID哈希表

  1. 與行程創建有關的函式:fork( )、vfork( )、clone( )系統呼叫
  • fork()函式
    • 傳統的UNIX創建子行程系統呼叫函式
    • 呼叫sys_fork()do_fork()
    • 創建成功后,子行程使用寫時復制技術共享父行程的資源
  • vfork()
    • sys_vfork()do_fork()
    • 創建成功后, 暫時掛起父行程, 直到子行程退出或執行新程式
  • clone()創建輕權行程
    • sys_clone()do_fork()
    • 輕權行程可以共享父行程在內核的很多資料結構,如頁表, 打開信號表
  • do_fork()
    • 負責處理以上三種系統呼叫,也負責實作內核行程的創建
  1. 理解行程切換的程序,涉及到頁目錄表、核心堆疊、硬體背景關系
  • 行程切換(行程背景關系切換):

    • 暫停正在CPU上運行的行程, 恢復已就緒的某個行程
    • 行程切換只發生在核心態
  • 程序:

    • 第一步, 切換頁目錄表以安裝一個新的地址空間
    • 第二步, 切換核心堆疊和硬體背景關系
    • 保存將要切換出的行程的硬體背景關系*(儲存到核心堆疊)**,用將要切換進來的行程的硬體背景關系來代替,*
  • 硬體背景關系:

    • 盡管每個行程可以擁有屬于自己的地址空間,但是所有行程必須共享CPU暫存器,因此,在恢復一個行程的執行前,內核必須確保每個暫存器裝入了掛起行程時的值

    • 行程恢復執行前必須裝入暫存器的那一組資料成為硬體背景關系

    • 涉及到大部分暫存器,但是eax ebx等通用暫存器還是存在核心堆疊中

  1. 行程調度方式,行程調度時機,
  • 可搶先式的動態優先級調度

    • 內核完全可重入
    • 無論行程處于用戶態還是核心態,都可能被搶占CPU, 從而保證高優先級行程及時執行
    • 基于行程過去行為的啟發式演算法
      • 確定把行程看作批處理行程還是互動行程
  • 行程分為三類:

    • 批處理行程: 后臺程式: 編譯, 科學計算等
    • 互動式行程: shell, 文本編輯, 圖形界面
    • 實時行程: 實時監測, 音視頻等, 有很強的調度需求
  • 普通行程的調度: (基本:100~139)

    • 分時行程
    • 照顧到基本時間片和動態優先級
    • 新行程繼承父行程的靜態優先級; 也會動態調整優先級(依賴于行程的過去行為)
  • 實時行程的調度: (基本: 1~99)

    • 相同優先級 - 時間片輪轉
    • 不同優先級 - FIFO
  • 互動式行程:

    • 動態優先數≤3×靜態優先數 /4+28, 否則為批處理
  • 調度時機:

    • 出現了更高優先級的實時行程
    • 行程阻塞
    • 行程停止運行或殺死
    • 自愿放棄處理機
    • 時間片用完
  1. Linux 有很多內核執行緒,了解 0 號行程和 1 號行程的作用,
  • 0號行程:

    • 所有行程的祖先行程,又叫idle行程或swapper行程.
    • 每個CPU都有一個0號行程
    • 行程描述符存放在init_task變數中
  • 1號行程

    • 由0號行程創建的內核執行緒init
    • 1號行程創建后,執行init()函式, 完成內核的初始化
    • 與0號行程共享每個行程所有的內核資料結構
    • 在系統關閉前一直存在,創建和監控OS的所有用戶態行程

C8 存盤器管理

  1. 行程地址空間的劃分?管理行程私有地址空間的資料結構?指向映射檔案物件的指標欄位?指向行程頁目錄表的指標欄位?
  • 行程地址空間的劃分:
    • 32位/x86, 每個地址空間4GB, 彼此互相獨立
      • 私有空間前3G, 公有空間后1G內核虛空間
  • 資料結構:
    • 虛擬記憶體區域數較少: 單鏈表
    • 虛擬記憶體區域數較多: 紅黑樹
  • 指標欄位:
    • 虛擬記憶體描述符mm_struct
  1. Linux 堆的管理:malloc( ),free( )
  • malloc(size): 請求size位元組的動態記憶體, 回傳起始虛地址
  • calloc(n,size): 請求元素大小為size, 長度為n的陣列
  • realloc(ptr,size)
  • free(addr): 釋放malloc()或者calloc()分配的起始虛地址為addr的記憶體空間
  1. 管理物理記憶體頁框的資料結構? 記憶體管理區 zone 結構,伙伴系統?磁區頁框分配器分配頁框的程序
  • struct_page: 頁框(幀)描述符, 存放在mem_map陣列中

  • 三個管理區zone:

    • ZONE_DMA:包含低于16MB的常規記憶體 頁框,用于對老式的基于ISA設備的DMA支持.

    • ZONE_NORMAL:包含高于16MB且低于896MB的常規記憶體頁框.

    • ZONE_HIGHMEM:包含從896MB開始的高端物理頁框,內核不能直接訪問這部分頁框,在64位體系結構上,該區總是空的.

    • 每個區域內, 除了留出小部分用于每CPU頁框高速快取,(滿足CPU的請求), 其他由伙伴系統管理

  • 伙伴系統:

    • 管理連續的空閑記憶體頁框, 以解決外碎片 (已分配區域之外的or之間的) 問題,
    • 分配程序:
      • 連接1,2,4,8,…,1024個連續頁框的鏈表
      • 若請求8個,則在8個的鏈表中找. 之后依次向更大的鏈表中找.
      • 若在更大的中找到,則分為幾部分重新練到鏈表中

在這里插入圖片描述

  1. 理解 slab 分配器的原理,slab 分配器的作用?
  • slab分配器用于為只有幾十或幾百個位元組的 小記憶體區分配記憶體,如,file物件,
  • 為什么需要slab
    • 伙伴系統以頁為單位, 對于內核來說力粒度還是太大了
      • 為用戶提供任意大小的記憶體
    • 原理:
      • 為某一模塊預先申請一定記憶體備用(從磁區頁框分配器獲得幾組連續空閑頁框), 從而無需每一次都從系統中分配記憶體,而是從預留的記憶體中取出一部分使用. 這樣能夠大大提高記憶體申請速度.
      • 每一個請求的記憶體稱為物件
    • slab著色: 利用空閑未用的位元組數對slab進行著色**,把slab中的一些空閑區域從末尾移到開頭**
    • kernel → slab → budy → pages
  1. 行程頁表建立的時機?了解頁目錄表項或頁表項所包含的欄位,邏輯地址的劃分,利用兩級頁表實作地址轉換的程序,
  • 二級頁表

  • 建立的時機: 訪問時才建立(節約記憶體)

  • 頁表: (頁框4096, 32位)

    • 頁框物理地址20位
    • 其他(Present(是否在記憶體), accessed(訪問位), dirty(正在寫), r/w(權限), user/supervisor, pcd, pwt, pagesize, global)
  • 邏輯地址劃分:

    • 頁目錄索引 - 10位
    • 頁表索引 - 10位
    • 頁內偏移 - 12位
  • 程序:

在這里插入圖片描述

  • Cr3: 基址暫存器
  1. 請求調頁,所缺的頁可能存放的地方,
  • 把頁框的分配一直推遲到行程要訪問的頁不在RAM中時引起一個缺頁例外,才將所需的頁調入記憶體,(有缺頁"請求"是才調頁)
  1. 了解盤交換區空間的管理方法,
  • 盤交換區用來存放從記憶體暫時換出的資料頁 (顧名思義,交換區)
  • 每個盤交換區都由一組4KB的頁槽組成
  • 第一個頁槽用來存放該交換區的有關資訊,有相應的描述符
  • 盡力把換出的頁面相鄰存盤(減少尋道時間)
    • 存放在磁盤磁區中的交換區只有一個子區, 存放在普通檔案中的交換區可能有多個子區, 原因是磁盤上的檔案不要求連續存放

C9~10 檔案系統

  1. Ext2 檔案卷的布局?各部分的作用是什么?

在這里插入圖片描述

  • Ext2檔案卷的布局:
    • 引導塊: 讀入并啟動OS, 只有根目錄的引導塊才起作用
    • 超級塊: 資源管理資訊
      • 索引節點綜述, 盤塊總數, 空閑塊技術, 空閑索引節點數, 每組盤塊數
      • 盤塊大小, 每組索引節點數, 索引節點結構大小
    • 塊組描述符
      • 盤塊位圖的塊號, 索引節點位圖的塊號
    • 索引節點位圖: 管理控制資訊
      • 只有塊組0包含的超級快和組描述符才被內核使用; 在一致性檢查時把塊0的拷貝到后續塊中
  1. Linux 系統把一般的檔案目錄項分成哪兩部分?這樣做的好處是什么?
  • 分為簡單目錄項索引節點
  • 簡單目錄項包含了檔案名和索引節點號等, 可以提高檔案目錄的檢索速度,
  • 系統只保留一個索引節點,就可實作多條路徑共享檔案,減少資訊冗余,
  1. Linux 檔案系統的索引節點中,索引表劃分成幾級?計算檔案最大長度

    檔案的索引表是如何增長的?要求能夠利用索引表實作將檔案中的位元組地址轉換成檔案的物理塊的操作,

  • 索引表:i_block欄位是一個有15個指標元素的陣列,每個元素占4B,共60B,

  • 存放檔案邏輯塊號與相應物理塊號之間的映射關系,

    • 每個指標指向一個檔案目錄
  • 分為四級:

在這里插入圖片描述

  • 小型檔案: 最初的12個元素是直接索引項,給出檔案最初的 12個邏輯塊號對應的物理塊號
  • 中型檔案: 索引12是一次間接索引塊,是一個存放盤塊號的 一維陣列,對應的檔案邏輯塊號從12到 b / 4 + 11 b/4 + 11 b/4+11,b是盤塊大小,每個邏輯塊號占4B,
  • 大型檔案: 索引13是二次間接索引塊,對應的檔案邏輯塊號 從 b / 4 + 12 b/4+12 b/4+12到$ (b/4)^2+(b/4)+11$,
  • 巨型檔案: 索引14是三次間接索引塊,對應的檔案邏輯塊號 從 ( b / 4 ) 2 + ( b / 4 ) + 12 (b/4)^2+(b/4)+12 (b/4)2+(b/4)+12 ( b / 4 ) 3 + ( b / 4 ) 2 + ( b / 4 ) + 11 (b/4)^3+(b/4)^2+(b/4)+11 (b/4)3+(b/4)2+(b/4)+11
  • 其中 b b b為一個盤塊以位元組為單位的大小,每個盤塊用四個位元組表示

舉個栗子:

資料塊大小4KB,

  • 小型: 12 ? 4 K B = 48 K B 12 * 4KB = 48KB 12?4KB=48KB
  • 中型: ( 4 / 1 ) ? 4 K B = 4 M B (4/1)*4KB = 4MB (4/1)?4KB=4MB
  • 大型: ( 4 / 1 ) 2 ? 4 K B = 4 G B (4/1)^2*4KB = 4GB (4/1)2?4KB=4GB
  • 巨型: ( 4 / 1 ) 3 ? 4 K B = 4 T B (4/1)^3*4KB = 4TB (4/1)3?4KB=4TB
  1. 硬鏈接和符號鏈接的區別?
  • 硬鏈接:多個檔案項指向一個檔案
    • 所有目錄項inode指向同一索引節點
  • 軟連接:存盤真實檔案的邏輯名稱.
    • 它不與檔案的索引節點建立鏈接,可以跨檔案系統(當為一個檔案 建立符號鏈接時,索引節點的硬鏈接計數 不改變)
  1. Linux 檔案系統如何管理空閑存盤空間?

磁盤塊和索引節點的分配和回收;

檔案的資料塊和其索引節點盡量在同一個塊組中,

檔案和它的目錄項盡量在同一個塊組中 ; 父目錄和子目錄盡量在同一個塊組中,

每個檔案的資料塊盡量連續存放,

  • 結構: 磁區(MBR, GPT) - Group - block(引導 + …) - 索引節點 - 索引節點表 - physical
  1. VFS 通用檔案模型中的四個主要物件?為什么可以支持眾多的檔案卷
  • VFS: 虛擬檔案系統

    • 使得Linux具有操作其他OS檔案系統的能力
      在這里插入圖片描述
  • 主要是想: 引入通用檔案模型,可以支持所有的檔案系統

  • VFS的四個主要物件:

    • 超級塊物件: 代表已安裝的檔案系統,存放管理和控制資訊
      • 存放在FCB中, 即一個暗黃好的檔案系統建立一個超級塊物件
    • 索引節點物件: 打開檔案對應的檔案控制塊FCB
      • 每個檔案都有一個索引節點物件,唯一索引節點號,標識檔案系統中的一個特定檔案
    • 目錄項物件:代表一個目錄項
      • 目錄項與對應檔案進行連接的資訊
    • 檔案物件: 行程和打開的檔案之間的互動資訊
  1. Linux 系統中,行程打開一個磁盤檔案要涉及哪些資料結構?它們各有哪些關 鍵欄位?他們的作用是什么?
Struct tast_struct{ 
    struct fs_struct *fs; //指向檔案系統資訊 
    struct files_struct *files; //指向行程打開檔案資訊
}
struct fs_struct { 
    atomic_t count; // 共享該結構的行程數 
    struct dentry *root, *pwd; //每個行程的當前作業目錄和根目錄,通過這兩個目錄與檔案系統進行互動, 
    struct vfsmount *rootmnt; //根目錄下安裝 的檔案系統物件 
    struct vfsmount *pwdmnt; //當前目錄下安 裝的檔案系統物件
}
struct files_struct { 
    struct file **fd; // 指向檔案物件指標陣列的 指標 
    struct file *fd_array[ ];//檔案物件指標陣列
}// 每個行程最多打開 1024個檔案
  1. 一個檔案在使用與不用時各占用系統哪些資源?

  2. 了解安裝表的作用

  • 安裝需要通過mount函式實作,將檔案系統安裝到根檔案系統的某個目錄節點上,將安裝點與被安裝文 件系統資訊保存在已安裝檔案系統描述符vfsmount結構中,形成鏈式安裝表
  • 安裝表功能是保存已安裝檔案系統描述符

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

標籤:其他

上一篇:H5移動app畢設指導(二)---選題

下一篇:南京林業大學2020~2021學年VC程式設計復習

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