亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

給研發(fā)工程師的代碼質(zhì)量利器 | SOFAChannel#5 直播整理

ivan_qhz / 3587人閱讀

摘要:接入分為兩部分,其一是可視化編輯器,在官網(wǎng)上我們可以獲取該編輯器的安裝包,并通過的插件管理進(jìn)行安裝。借助可視化編輯器,在整個過程中我們可以替換大部分手工編寫代碼的工作,進(jìn)行一站式操作。

,有趣實用的分布式架構(gòu)頻道。
本文根據(jù) SOFAChannel#5 直播分享整理,主題:給研發(fā)工程師的代碼質(zhì)量利器 —— 自動化測試框架 SOFAActs。


回顧視頻以及 PPT 查看地址見文末。


歡迎加入直播互動釘釘群:23195297,不錯過每場直播。

大家晚上好,我是螞蟻金服自動化測試框架 SOFAActs 開源核心成員青勤,目前從事測試技術(shù)相關(guān)的研發(fā)工作,今晚將由我來給大家分享交流自動化測試框架 SOFAActs 的基本原理和使用,今天的內(nèi)容主要分為以下四個章節(jié):

項目介紹

SOFAActs 接入

功能介紹與使用

升階功能使用

歡迎大家 Star 我,SOFAActs:github.com/sofastack/s…

1 項目介紹

在分享使用操作前,我將引導(dǎo)大家來熟悉下 SOFAActs 的項目背景、基本原理等。

對于研發(fā)質(zhì)量保障而言,金融系統(tǒng)和金融業(yè)務(wù)的多樣性、復(fù)雜性同樣也會在測試場景、測試驗證和測試流程的復(fù)雜程度上得到充分體現(xiàn)。

譬如,對于包含出參、RPC 調(diào)用、DB 變更和異常等多個測試驗證點(diǎn)的用例而言,在研發(fā)和測試人員維護(hù)和驗證用例場景的過程中,時常發(fā)生業(yè)務(wù)結(jié)果校驗遺漏,對我們及早發(fā)現(xiàn)和糾錯問題造成干擾,進(jìn)而無法嚴(yán)格保障產(chǎn)品質(zhì)量。這些問題對研發(fā)質(zhì)量保障提出了很高的挑戰(zhàn),相應(yīng)的自動化、精細(xì)化的白盒測試工具需求日益增長,這其中就包括 SOFAActs。

為了解決上述痛點(diǎn)、滿足精細(xì)化測試需要,在多年測試實踐積累與沉淀下,我們研發(fā)了基于模型驅(qū)動的 SOFAActs 測試框架,它可以靈活、可擴(kuò)展的提供一站式用例管理,標(biāo)準(zhǔn)化測試執(zhí)行和精細(xì)化校驗。目前 SOFAActs 測試框架逐漸成熟并在螞蟻金服內(nèi)部得到廣泛應(yīng)用。

1.1 項目架構(gòu)

介紹完背景,我們來看下 SOFAActs 的大體框架,SOFAActs 底層封裝并集成適配 SOFABoot 等運(yùn)行環(huán)境。


在重要的引擎層,SOFAActs 封裝了工具類和數(shù)據(jù)模型,并將測試模式的過程進(jìn)行了標(biāo)準(zhǔn)化,提供通用測試能力和擴(kuò)展點(diǎn)。對于有自動化測試經(jīng)驗的同學(xué)來講,測試模式其實并不復(fù)雜,這其中有很多工作是可以抽象和固定的,SOFAActs 將這部分內(nèi)容內(nèi)聚到引擎層,封裝成標(biāo)準(zhǔn)測試流程等,尤其是模型驅(qū)動和精細(xì)化校驗等,從而釋放精力,將更多關(guān)注點(diǎn)聚焦在待測目標(biāo)上。

引擎層之上,是 SOFAActs 提供的可視化用例管理功能,可以一站式的維護(hù)測試腳本、測試數(shù)據(jù)和數(shù)據(jù)模型,借助可視化編輯器可成倍提高用例管理等等操作效率,整體而言 SOFAActs 圍繞模型驅(qū)動引擎和可視化編輯器,將測試代碼的編寫工作量極盡降低,目標(biāo)聚焦在測試對象上。

這里我們示例看下,SOFAActs 對測試代碼和效率的優(yōu)化。這里以 Credit 接口為例,業(yè)務(wù)處理開始之前會檢查傳參,構(gòu)造上下文、隨后發(fā)起業(yè)務(wù)處理,涉及對三張表的讀取或變更,并在數(shù)據(jù)庫事物結(jié)束之后,返回業(yè)務(wù)處理結(jié)果。

針對這一業(yè)務(wù)邏輯,這里我們構(gòu)造一個 Credit 接口的完整測試用例,在代碼驅(qū)動測試時,它需要一下 9 個步驟,手動準(zhǔn)備依賴數(shù)據(jù)、構(gòu)造請求參數(shù)、執(zhí)行業(yè)務(wù)邏輯、校驗業(yè)務(wù)結(jié)果以及數(shù)據(jù)清理等等,人工介入成本居高,尤其當(dāng)存在多個用例時,測試代碼可復(fù)用性低,測試效率是難以得到有效提升。而與之對比,在模型驅(qū)動測試下,Credit 接口的 SOFAActs 測試腳本會對固有的測試模式進(jìn)行封裝,用例復(fù)雜度得到極大精簡,眾多用例數(shù)據(jù)可以得到高效的可視化管理。

1.2 執(zhí)行原理

在開始使用 SOFAActs 之前,我們來了解一下有關(guān) SOFAActs 執(zhí)行引擎的運(yùn)作原理。SOFAActs 框架也提供了非常多的擴(kuò)展點(diǎn),如果需要個性化的定義,可以對每一個環(huán)節(jié)進(jìn)行擴(kuò)展。

上文中已提到過 SOFAActs 執(zhí)行引擎是對測試模式過程的封裝,Setup 方法是引擎入口,用于加載初始化 SOFAActs 運(yùn)行時的必需資源,如獲取數(shù)據(jù)源。

以下是主體測試過程:clear、prepare、execute、check 這 4 個方法依次負(fù)責(zé)環(huán)境清理、依賴準(zhǔn)備、執(zhí)行、結(jié)果校驗等。這些內(nèi)容是代碼驅(qū)動測試時需要手寫的測試代碼和內(nèi)容,每個測試腳本的完成意味著上面的過程會被我們重復(fù)一遍,于是 SOFAActs 將這部分內(nèi)容進(jìn)行了封裝,實現(xiàn)了最通用基礎(chǔ)的功能。

右側(cè),我們對高頻數(shù)據(jù)如方法入?yún)?、出參、異常和依賴DB數(shù)據(jù)進(jìn)行了抽象,給出 SOFAActs 的模型,這是代碼驅(qū)動轉(zhuǎn)向模型驅(qū)動、精細(xì)化校驗的基礎(chǔ)。左側(cè)的數(shù)據(jù)總線會貫穿每個用例的執(zhí)行生命周期,即貫穿中間的主體測試過程,如果大家對框架封裝的基礎(chǔ)功能有自定義需要,可以通過數(shù)據(jù)總線對 SOFAActs 的對象、方法進(jìn)行獲取、重寫,以便更靈活的控制框架行為。當(dāng)然 SOFAActs 對這些內(nèi)容作了較好的封裝,覆蓋了大部分的測試需求,無需大家過度關(guān)注。

以上就是 SOFAActs 的執(zhí)行原理,接下來我會給大家詳細(xì)介紹 SOFAActs 的接入和使用。

2 SOFAActs 接入

SOFAActs 分為兩部分,其一是可視化編輯器,在 SOFAStack 官網(wǎng)上 [1] 我們可以獲取該編輯器的安裝包,并通過 IDEA 的插件管理進(jìn)行安裝。其二是 SOFAActs 的基礎(chǔ) jar,它提供了 SOFAActs 用例運(yùn)行的環(huán)境支持,在 test 模塊 pom 中添加下列依賴即可,有關(guān) test 模塊或者多模塊詳細(xì)內(nèi)容大家可以參考 SOFAActs 的快速開始文檔 [1] 。

3 功能介紹和使用

下面,我們進(jìn)入 SOFAActs 的功能介紹和使用章節(jié),這部分我將分為三小節(jié)展開:一站式構(gòu)建、SOFAActs 核心的模型驅(qū)動以及 SOFAActs 提供的精準(zhǔn)校驗。

3.1 一站式構(gòu)建

一站式構(gòu)建中,SOFAActs 通過可視化編輯器為我們提供了便捷操作,以幫助一鍵配置初始化、構(gòu)建測試腳本與模型,可視化管理用例數(shù)據(jù)等等。借助可視化編輯器,在整個過程中我們可以替換大部分手工編寫代碼的工作,進(jìn)行一站式操作。

一鍵初始化

這里我們示例看下,如何操作一鍵初始化以及一鍵初始化做哪些內(nèi)容。首先一鍵初始化框架只需要 3 個鼠標(biāo)點(diǎn)擊步驟。在 Package 視圖下選中測試模塊并右鍵選擇 SOFAActs 功能,一鍵初始化,輸入該應(yīng)用的應(yīng)用名稱和工程編碼格式。在一鍵初始化完成后,SOFAActs 將會在 test 模塊寫入 SOFAActs 配置文件,DB 連接配置文件,測試套件配置文件以及創(chuàng)建模型存儲目錄等。

acts-config 配置文件是 SOFAActs 的核心配置,提供了測試環(huán)境切換、數(shù)據(jù)庫連接切換、冒煙測試以及預(yù)跑反填等配置,來開關(guān) SOFAActs 的相關(guān)功能;model 目錄用于存放對象模型、數(shù)據(jù)模型,以便對模型進(jìn)行統(tǒng)一管理;DB 配置文件指明了數(shù)據(jù)庫連接信息,用于生成數(shù)據(jù)模型時自動填充表結(jié)構(gòu)和模版數(shù)據(jù)。

一鍵生成測試腳本

在完成配置初始化操作后,我們可以開始第一個用例的編寫,SOFAActs 提供了一鍵測試腳本生成功能。以待測的 getMessage 接口為例,在其方法定義上右鍵選擇 SOFAActs 功能,生成測試用例,在彈出框中檢查用例信息,修正無誤后點(diǎn)擊確定可以生成該接口的測試腳本。校正依賴的啟動類并運(yùn)行 SOFAActs 測試腳本,可以看到能夠正常啟動 SOFABoot,SOFAActs 會拉起 SOFABoot 以盡量模擬業(yè)務(wù)代碼運(yùn)行時的容器環(huán)境,因此如果存在 SOFABoot 上下文加載失敗,需要排查應(yīng)用配置。

一鍵生成數(shù)據(jù)模型

通常在我們創(chuàng)建 SOFAActs 測試腳本時方法入?yún)⒑统鰠⒌膶ο竽P蜁徊⑸珊?,因此這里著重介紹下如何一鍵生成數(shù)據(jù)模型。事先,我們在 acts-config 配置文件中,指明 DB 環(huán)境如 dev 并配置 dev 環(huán)境下 DB 連接信息。就緒后,我們打開測試腳本,在被 @test 注解的方法上右鍵選擇 SOFAActs 功能,生成 DB 表結(jié)構(gòu)模型,在彈出視圖中選擇需要的 DB 表,當(dāng)有多個表時,可以一并添加至右側(cè),點(diǎn)擊 OK 以生成 DB 模型,之后可在 model/dbModel 目錄查看生成的數(shù)據(jù)模型。

稍后模型驅(qū)動內(nèi)容中,我將給大家詳細(xì)介紹 SOFAActs 中模型的概念和使用。

可視化用例管理

在 SOFAActs 編輯器中,我們能夠可視化地修改入?yún)?、DB 和結(jié)果數(shù)據(jù)等。在用例級別,編輯器提供了用例復(fù)制功能,對于設(shè)計等價用例而言,通常正常測試用例之間,異常測試用例之間的差異可能只在于某一關(guān)鍵字段的取值,而大部分?jǐn)?shù)據(jù)是相同的,這時用例數(shù)據(jù)復(fù)用十分必要。SOFAActs 提供了用例復(fù)制等管理功能,可用于快速發(fā)起用例構(gòu)建。

3.2 模型驅(qū)動

下面我們介紹模型驅(qū)動,在代碼驅(qū)動測試時,方法入?yún)ⅰ⒊鰠⒑?DB等測試數(shù)據(jù)是通過代碼組織的,隨著業(yè)務(wù)復(fù)雜度提升,尤其在金融級業(yè)務(wù)場景中,類和表動輒十幾個屬性或者字段,屬性嵌套也時??梢?,代碼驅(qū)動測試難移應(yīng)對:測試腳本可復(fù)用性低、測試數(shù)據(jù)管理困難等問題。于是,SOFAActs 將方法入?yún)ⅰ⒊鰠?、異常?DB 等數(shù)據(jù)抽象為模型,用以結(jié)構(gòu)化地記錄數(shù)據(jù)類型、取值和校驗規(guī)則,可以快速發(fā)起用例數(shù)據(jù)構(gòu)建。

SOFAActs 中的模型主要分為:數(shù)據(jù)模型和對象模型。

對象模型:主要用于構(gòu)造方法入?yún)?、期望結(jié)果和期望異常。期望結(jié)果和期望異常是指在符合測試預(yù)期下被測方法的返回結(jié)果或者異常拋出。

數(shù)據(jù)模型:對于一個有 DB 依賴的業(yè)務(wù)場景的測試驗證,需要生成相關(guān) DB 表的數(shù)據(jù)模型,用于快速構(gòu)建 DB 準(zhǔn)備數(shù)據(jù)和期望數(shù)據(jù)。DB 準(zhǔn)備數(shù)據(jù)是業(yè)務(wù)執(zhí)行期間依賴的前置 DB 數(shù)據(jù),例如在驗證轉(zhuǎn)賬場景時參與雙方的賬戶余額等,DB 期望數(shù)據(jù)是指在符合測試預(yù)期下,被測方法對 DB 的變更。

經(jīng)過模型化,一個復(fù)雜對象或數(shù)據(jù)可以被快速模版化地創(chuàng)建、拷貝和校驗,達(dá)到測試數(shù)據(jù)與測試代碼解耦合的效果,另一方面,配套使用 SOFAActs 編輯器,實現(xiàn)測試數(shù)據(jù)一站式管理,來提高用例編寫效率和降低維護(hù)成本。

下面我詳細(xì)介紹下數(shù)據(jù)模型和對象模型的結(jié)構(gòu)和使用。

3.2.1 數(shù)據(jù)模型

通常 SOFAActs 只需要填充 DB 準(zhǔn)備數(shù)據(jù),而 DB 期望數(shù)據(jù)可以利用預(yù)跑反填功能進(jìn)行自動采集。

為了更好地理解數(shù)據(jù)模型, 在model/dbModel 下的 csv 文件中,我們可以看到某一張表的全部字段、取值以及校驗規(guī)則。數(shù)據(jù)模型聚合了表的結(jié)構(gòu)、數(shù)據(jù)和校驗規(guī)則,結(jié)合可視化編輯器可快速創(chuàng)建、復(fù)制 DB 數(shù)據(jù),一次編輯多次使用。這里我們來看下示例,在編輯器如何使用數(shù)據(jù)模型。

3.2.2 對象模型

對象模型,它是方法入?yún)?、出參等對象?SOFAActs 中的映射,可以在 model/objModel 目錄下查看生成的對象模型。對象模型的結(jié)構(gòu)和數(shù)據(jù)模型相似,是屬性、取值、校驗規(guī)則的聚合,與數(shù)據(jù)模型不同的是,對象模型可能存在多層嵌套,因為類的某一屬性可以是 map、集合、類等引用類型。

在 SOFAActs 編輯器中可以為一個新的用例添加入?yún)?shù)據(jù),如果入?yún)⑹呛唵晤愋?,?int、String 等可以選擇簡單類型填充,這里示例下復(fù)雜類型,即業(yè)務(wù)對象的模型使用,在左側(cè)的列表中選擇目標(biāo)對象,添加至右側(cè),如果有多個入?yún)⒖梢砸徊⑻砑拥接覀?cè)后,再點(diǎn)擊確定,即可以在入?yún)⒃O(shè)置中看到入?yún)?shù)據(jù)并可進(jìn)行編輯。對于有多個入?yún)⒌姆椒ǎ雲(yún)⒃O(shè)置中從上之下的順序和方法聲明入?yún)㈨樞蚴切枰恢碌摹?/p>3.3 精細(xì)化校驗

下面我們介紹精細(xì)化校驗,在一開始時,我們提及到復(fù)雜業(yè)務(wù)場景下極易出現(xiàn)校驗遺漏,形成校驗假綠。為此,SOFAActs 內(nèi)置了精細(xì)化校驗,從校驗規(guī)則和行為還原兩點(diǎn),來保證復(fù)雜場景的校驗覆蓋。

如右圖,SOFAActs 將重復(fù)性 assert 代碼抽象歸納為校驗規(guī)則,與測試數(shù)據(jù)一同作為數(shù)據(jù)模型的一部分,可以細(xì)化校驗每個字段。目前acts支持的校驗標(biāo)簽如下,其中常用有 Y、N、C 標(biāo)簽,Y 表示了校驗時必須一致的對象或?qū)傩浴 表示校驗時不關(guān)心的屬性或記錄值、C 標(biāo)簽標(biāo)示 DB 數(shù)據(jù)校驗時的 DB 查詢條件,即 where 條件,參考右圖我們可以理解標(biāo)簽的使用。

為了真實還原業(yè)務(wù)行為以提高驗證覆蓋和用例數(shù)據(jù)的編寫效率,SOFAActs 提供了行為還原,作為精細(xì)化校驗的一部分,行為還原在 SOFAActs 中稱為預(yù)跑反填功能,是指在方法入?yún)?、依賴?DB 數(shù)據(jù)等用例正常執(zhí)行的基本數(shù)據(jù)準(zhǔn)備完成后,可先不必填寫期望數(shù)據(jù)而直接運(yùn)行測試腳本,框架可自動捕獲運(yùn)行時方法返回結(jié)果、所有 DB 表變更等數(shù)據(jù),通過 SOFAActs 編輯器可填充用例的期望數(shù)據(jù),小幅度修正和標(biāo)記校驗規(guī)則后即可完成全部校驗點(diǎn)的參考數(shù)據(jù)的編寫。

這里我給大家演示如何使用 SOFAActs 的預(yù)跑反填功能:

啟用 SOFAActs 的預(yù)跑反填功能需要在 acts-config 中打開結(jié)果收集開關(guān),然后執(zhí)行用例,運(yùn)行完畢喚起 SOFAActs 編輯器,點(diǎn)擊左上角的預(yù)跑反填,選中需要的用例數(shù)據(jù),點(diǎn)擊確定就完成了相應(yīng)用例的期望結(jié)果、期望 DB 數(shù)據(jù)的構(gòu)造,但預(yù)跑反填功能本身并不保障校驗數(shù)據(jù)的準(zhǔn)確性,需要針對待測業(yè)務(wù)場景將數(shù)據(jù)修正。

4 進(jìn)階功能

下面,我們進(jìn)入本次分享的最后一部分,SOFAActs 進(jìn)階功能的使用。這里為大家介紹使用頻度最高的兩個功能:自定義引擎流程和參數(shù)化。

稍做回憶,在一開始我們熟悉了 SOFAActs 的運(yùn)行原理,提及到 SOFAActs 執(zhí)行引擎是對測試模式過程的封裝,同時為數(shù)據(jù)模型、數(shù)據(jù)總線提供了擴(kuò)展點(diǎn),這里我們舉例使用、重寫這些 API 。另一個高頻功能是參數(shù)化,提供了運(yùn)行動態(tài)替換 String 類型取值的功能,以滿足部分隨機(jī)動態(tài)的測試需要。

@Override
public void check(ActsRuntimeContext actsRuntimeContext) {
  if (actsRuntimeContext.caseId.endsWith("001")) {
    if (((AccountTransResult) actsRuntimeContext.getResultObj()).isSuccess()) {
      actsRuntimeContext.paramMap.put("status", "0");
    } else {
      actsRuntimeContext.paramMap.put("status", "1");
    }
    actsRuntimeContext.refreshDataParam();
  }
  super.check(actsRuntimeContext);
}

我們以 check 流程為例,重寫了 check 方法來滿足動態(tài)校驗,這里依據(jù)返回結(jié)果設(shè)置了自定義參數(shù),放置到數(shù)據(jù)總線 Actsruntimecontext 中,我們將期望 DB 數(shù)據(jù)中的 mast 表的 status 字段設(shè)置為自定義參數(shù),表示該字段的期望值應(yīng)該和方法返回結(jié)果中的狀態(tài)保持一致或者關(guān)聯(lián)。然后運(yùn)行用例來查看我們重寫的校驗是否達(dá)到了預(yù)期。

5 總結(jié)

SOFAActs 提供了很多擴(kuò)展點(diǎn)可以讓大家適配應(yīng)用的測試需求,如果你需要一個更強(qiáng)大的 SOFAActs,可以動手重寫這些 API 將基礎(chǔ)功能進(jìn)行延伸,當(dāng)然更歡迎大家在 Github 中提 Issue、Commit 來一同完善 SOFAActs。

以上內(nèi)容由 SOFAChannel#5 直播分享整理,如果大家有疑問可以在釘釘群(搜索群號即可加入:23195297)或者 Github 上與我們討論交流,我們將進(jìn)行解答。

SOFAActs:github.com/sofastack/s…

文章相關(guān)涉及鏈接

[1] SOFAActs 下載地址以及快速開始文檔:www.sofastack.tech/sofa-acts/d…

[2] 示例視頻:www.yuque.com/huarou/gd4s…

本期視頻回顧以及 PPT 查看地址

tech.antfin.com/activities/…

往期直播精彩回顧

分布式事務(wù) Seata TCC 模式深度解析 | SOFAChannel#4 直播整理:tech.antfin.com/activities/…

SOFAChannel#3 SOFARPC 性能優(yōu)化實踐(下):tech.antfin.com/activities/…

SOFAChannel#2 SOFARPC 性能優(yōu)化實踐(上):tech.antfin.com/activities/…

SOFAChannel#1 從螞蟻金服微服務(wù)實踐談起:tech.antfin.com/activities/…

6 SOFAMeetup#2 上海站 報名 ing

SOFA Meetup #2 上海站《使用 SOFAStack 快速構(gòu)建微服務(wù)》報名進(jìn)行中?~

5 月 26 日,SOFAStack 開源核心成員集體出動。本期我們將側(cè)重于各個落地的實際場景進(jìn)行架構(gòu)解析。

分布式事務(wù) Seata 詳解、與 Spring Cloud 生態(tài)的融合案例、使用 SOFAStack 快速構(gòu)建微服務(wù) Demo 實操、更有最新開源的《讓 AI 像 SQL 一樣簡單 — SQLFlow Demo 》首秀,期待與你不見不散~

戳鏈接即可報名:tech.antfin.com/community/a…

公眾號:金融級分布式架構(gòu)(Antfin_SOFA)


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/7255.html

相關(guān)文章

  • 虎牙直播運(yùn)維負(fù)責(zé)人張觀石 | 解密SRE六種能力及虎牙運(yùn)維實踐

    摘要:本文是根據(jù)虎牙直播運(yùn)維負(fù)責(zé)人張觀石月日在攜手魅族百度云主辦的第十三期魅族開放日虎牙直播平臺實踐演講中的分享內(nèi)容整理而成。英雄聯(lián)盟是全球最大的電子競技賽事,目前正在如火如荼進(jìn)行,從今天開始進(jìn)入了總決賽的淘汰賽階段了。 showImg(https://segmentfault.com/img/bVblQM9?w=1080&h=720); 本文是根據(jù)虎牙直播運(yùn)維負(fù)責(zé)人張觀石10月20日在ms...

    ixlei 評論0 收藏0
  • 虎牙直播運(yùn)維負(fù)責(zé)人張觀石 | 解密SRE六種能力及虎牙運(yùn)維實踐

    摘要:虎牙直播運(yùn)維負(fù)責(zé)人張觀石張觀石,擁有余年網(wǎng)站開發(fā)架構(gòu)運(yùn)維經(jīng)驗?zāi)壳瓣P(guān)注互聯(lián)網(wǎng)服務(wù)可靠性系統(tǒng)工程運(yùn)維平臺的規(guī)劃建設(shè)網(wǎng)站高可用架構(gòu)等方面在音視頻傳輸質(zhì)量評估微服務(wù)運(yùn)維方面積累了豐富的經(jīng)驗。 showImg(https://segmentfault.com/img/bVbjqGq); 虎牙直播運(yùn)維負(fù)責(zé)人張觀石 張觀石,擁有10余年網(wǎng)站開發(fā)、架構(gòu)、運(yùn)維經(jīng)驗;目前關(guān)注互聯(lián)網(wǎng)服務(wù)可靠性系統(tǒng)工程、運(yùn)維...

    Jonathan Shieber 評論0 收藏0

發(fā)表評論

0條評論

ivan_qhz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<