偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

探討Mybatis最硬核的API,你知道幾個(gè)?

開發(fā) 架構(gòu)
本文中,我們主要先把 Mybatis 的架構(gòu)/層次鋪開,俯視 Mybatis 架構(gòu)的設(shè)計(jì)全貌,再把幾個(gè)硬核的 API 詳細(xì)消化。

1、Mybatis 架構(gòu)與核心API

不出意外的話,在后續(xù)源碼剖析相關(guān)文章中,我們會(huì)對(duì) Mybatis 的源碼進(jìn)行一次大掃蕩,一起挖掘每一處值得大家深入理解/記憶的知識(shí)點(diǎn)。而在本文中,我們主要先把 Mybatis 的架構(gòu)/層次鋪開,俯視 Mybatis 架構(gòu)的設(shè)計(jì)全貌,再把幾個(gè)硬核的 API 詳細(xì)消化。

整體順序脈絡(luò),希望讓你有所期待 ~

[[375611]]

我們先簡(jiǎn)單揭開 Mybatis 神秘的源碼包,

瞅瞅 Ta 大致目錄結(jié)構(gòu) :

Mybatis最硬核的API你知道幾個(gè)?

看,Mybatis 的源代碼包整齊劃一排在 org.apache.ibatis 目錄下,基本設(shè)計(jì)用途我簡(jiǎn)單梳理成上面這張圖,方便大家直觀理解,當(dāng)然只看源碼包目錄結(jié)構(gòu),難免會(huì)顯得枯燥無(wú)物,所以我們?cè)倏匆幌拢鋵?shí) Mybatis 的源碼包功能上可以是這么劃分:

Mybatis最硬核的API你知道幾個(gè)?

上圖讓我們對(duì) Mybatis 的架構(gòu)有了抽象的理解。

然而,實(shí)際上具體的職能分工,核心 API 的場(chǎng)景應(yīng)用,到底會(huì)是怎樣一套流程呈現(xiàn)呢?

看下面這幅功能架構(gòu)設(shè)計(jì),或許你能更好的理解。

 Mybatis最硬核的API你知道幾個(gè)?

根據(jù) Mybatis 功能架構(gòu)我們劃分成三層:

  • 接口層:該層提供一系列接口讓用戶直接參與使用,包含信息配置與實(shí)際數(shù)據(jù)操作調(diào)用。配置方式包括:基于 XML 配置方式、基于 Java API 配置方式兩種方式,用戶也可以通過(guò)接口層 API 對(duì)數(shù)據(jù)庫(kù)發(fā)起增刪改查等操作的請(qǐng)求, 本層接口會(huì)把接收到的調(diào)用請(qǐng)求交給數(shù)據(jù)處理層的構(gòu)件去處理。
  • 數(shù)據(jù)處理層:該層是 Mybatis 的核心層,負(fù)責(zé)數(shù)據(jù)處理,主要包括SQL 參數(shù)映射解析、SQL 語(yǔ)句的實(shí)際執(zhí)行、執(zhí)行結(jié)果集的映射處理等。
  • 框架支撐層:該層屬于 Mybatis 的后勤保障層,包括數(shù)據(jù)庫(kù)連接管理、事務(wù)把控管理、配置加載與緩存處理、日志處理、異常處理等,提供基礎(chǔ)支撐能力,保障上層的數(shù)據(jù)處理。

我們知道,Mybatis 框架讓用戶只需要提供配置信息,并且專注于 SQL 的編寫即可,對(duì)于連接管理數(shù)據(jù)庫(kù)/事務(wù),或?qū)嶋H的 SQL 參數(shù)映射/語(yǔ)句執(zhí)行/結(jié)果集映射等操作,作為用戶都并不需要操心和參與。

但是,好奇的我們其實(shí)想知道,Mybatis 核心部分的數(shù)據(jù)處理在整體流程中,是如何支撐用戶請(qǐng)求?同時(shí)各個(gè)構(gòu)件之間交互,又是怎樣流轉(zhuǎn)呢?

很巧,我這里有一張圖,介紹了整體流程:

Mybatis最硬核的API你知道幾個(gè)?

根據(jù)以上框架流程圖進(jìn)行講解:

  • 創(chuàng)建配置并調(diào)用API :這一環(huán)節(jié)發(fā)生在應(yīng)用程序端,是開發(fā)人員在實(shí)際應(yīng)用程序中進(jìn)行的兩步操作,第一步創(chuàng)建核心配置文件 Configuration.xml 和映射文件 mapper.xml (通過(guò)注解方式也可創(chuàng)建以上兩種配置),準(zhǔn)備好基礎(chǔ)配置和 SQL 語(yǔ)句之后;第二步就是直接調(diào)用 Mybatis 框架中的數(shù)據(jù)庫(kù)操作接口。
  • 加載配置并初始化 :Mybatis 框架會(huì)根據(jù)應(yīng)用程序端提供的核心配置文件與 SQL 映射文件的內(nèi)容,使用資源輔助類 Resources 把配置文件讀取成輸入流,然后通過(guò)對(duì)應(yīng)的解析器解析并封裝到 Configuration 對(duì)象和 MappedStatement 對(duì)象,最終把對(duì)象存儲(chǔ)在內(nèi)存之中。
  • 創(chuàng)建會(huì)話并接收請(qǐng)求 :在 Mybatis 框架加載配置并初始化配置對(duì)象之后,會(huì)話工廠構(gòu)建器 SqlSessionFactoryBuilder 同時(shí)創(chuàng)建會(huì)話工廠 SqlSessionFactory,會(huì)話工廠會(huì)根據(jù)應(yīng)用程序端的請(qǐng)求,創(chuàng)建會(huì)話 SqlSession,以便應(yīng)用程序端進(jìn)行數(shù)據(jù)庫(kù)交互。
  • 處理請(qǐng)求 :SqlSession 接收到請(qǐng)求之后,實(shí)際上并沒(méi)有進(jìn)行處理,而是把請(qǐng)求轉(zhuǎn)發(fā)給執(zhí)行器 Executor,執(zhí)行器再分派到語(yǔ)句處理器 StatementHandler ,語(yǔ)句處理器會(huì)結(jié)合參數(shù)處理器 ParameterHandler ,進(jìn)行數(shù)據(jù)庫(kù)操作(底層封裝了 JDBC Statement 操作)。
  • 返回處理結(jié)果 :每個(gè)語(yǔ)句處理器 StatementHandler 處理完成數(shù)據(jù)庫(kù)操作之后,會(huì)協(xié)同 ResultSetHandler 以及類型處理器 TypeHandler ,對(duì)底層 JDBC 返回的結(jié)果集進(jìn)行映射封裝,最終返回封裝對(duì)象。

針對(duì)以上總體框架流程涉及到的這些硬核 API,下面我們逐個(gè)展開介紹,但不會(huì)詳細(xì)剖析源碼與原理,包括構(gòu)建細(xì)節(jié),因?yàn)檫@些我們?cè)诤罄m(xù)的源碼剖析章節(jié)中都會(huì)詳細(xì)分析。

2、Configuration – 全局配置對(duì)象

對(duì)于 Mybatis 的全局配置對(duì)象 Configuration,我相信無(wú)論是初學(xué)者還是資深玩家,都不會(huì)陌生。整個(gè) Mybatis 的宇宙,都圍繞著 Configuration 轉(zhuǎn)。Configuration 對(duì)象的結(jié)構(gòu)和 config.xml 配置文件的內(nèi)容幾乎相同,涵蓋了properties (屬性),settings (設(shè)置),typeAliases (類型別名),typeHandlers (類型處理器),objectFactory (對(duì)象工廠),mappers (映射器)等等,之前我們有專門的一篇文章詳細(xì)進(jìn)行介紹,感興趣的朋友往上翻到目錄列表,找到 《Mybatis系列全解(四):全網(wǎng)最全!Mybatis配置文件XML全貌詳解》 一文詳細(xì)品味一番吧。

Mybatis最硬核的API你知道幾個(gè)?

配置對(duì)象 Configuration 通過(guò)解析器 XMLConfigBuilder 進(jìn)行解析,把全局配置文件 Config.xml 與 映射器配置文件 Mapper.xml 中的配置信息全部構(gòu)建成完整的 Configuration 對(duì)象,后續(xù)我們?cè)创a分析時(shí)詳細(xì)剖析整個(gè)過(guò)程。

3、Resources – 資源輔助類

我們知道,像 Configuration 和 Mapper 的配置信息存放在 XML 文件中,Mybatis 框架在構(gòu)建配置對(duì)象時(shí),必須先把 XML 文件信息加載成流,再做后續(xù)的解析封裝,而 Resources 作為資源的輔助類,恰恰干的就是這個(gè)活,無(wú)論是通過(guò)加載本地資源或是加載遠(yuǎn)程資源,最終都會(huì)通過(guò) 類加載器 訪問(wèn)資源文件并輸出文件流。

Mybatis最硬核的API你知道幾個(gè)?
  1. //加載核心配置文件 
  2. InputStream resourceAsStream =  
  3.     Resources.getResourceAsStream("Config.xml"); 

 Resources 實(shí)實(shí)在在提供了一系列方法分分鐘解決你的文件讀取加載問(wèn)題:

Mybatis最硬核的API你知道幾個(gè)?

4、SqlSessionFactoryBuilder – 會(huì)話工廠構(gòu)建器

我們一撞見 xxxBuilder ,就大致能知道它是某類對(duì)象的構(gòu)建器,這里 SqlSessionFactoryBuilder 也是一樣,它是 Mybatis 中的一個(gè)會(huì)話工廠構(gòu)建器,在資源輔助類 Resources 讀取到文件流信息之后,它負(fù)責(zé)解析文件流信息并構(gòu)建會(huì)話工廠 SqlSessionFactory。(解析的配置文件包含:全局配置 Configuration 與映射器 Mapper)

Mybatis最硬核的API你知道幾個(gè)?

在程序應(yīng)用端,我們一般使用 SqlSessionFactoryBuilder 直接構(gòu)建會(huì)話工廠:

  1. // 獲得sqlSession工廠對(duì)象 
  2. SqlSessionFactory sqlSessionFactory =  
  3.     new SqlSessionFactoryBuilder().build(resourceAsStream); 

 當(dāng)然,如果你集成了 Spring 框架的項(xiàng)目,則不需要自己手工去構(gòu)建會(huì)話工廠,直接在 Spring 配置文件中指定即可,例如指定一個(gè) bean 對(duì)象,id 是 sqlSessionFactory,而 class 類指定為 org.mybatis.spring.SqlSessionFactoryBean 。

SqlSessionFactoryBuilder 內(nèi)部通過(guò)解析器 XMLConfigBuilder 解析了文件流,同時(shí)封裝成為配置對(duì)象 Configuration ,再把 Configuration 對(duì)象進(jìn)行傳遞并構(gòu)建實(shí)例。

  1. public SqlSessionFactory build( 
  2.     InputStream inputStream,  
  3.     String environment,  
  4.     Properties properties) { 
  5.     
  6.       
  7.       // 配置解析器解析 
  8.       XMLConfigBuilder parser =  
  9.           new XMLConfigBuilder( 
  10.             inputStream,environment, properties); 
  11.      
  12.       // 最終實(shí)例會(huì)話工廠 
  13.       return build(parser.parse());  
  14.      

 最終實(shí)例會(huì)話工廠,其實(shí) Mybatis 默認(rèn)實(shí)現(xiàn)是 new 了一個(gè)DefaultSqlSessionFactory 實(shí)例。

  1. // 最終實(shí)例會(huì)話工廠 
  2. public SqlSessionFactory build(Configuration config) { 
  3.     
  4.     return new DefaultSqlSessionFactory(config); 

 會(huì)話工廠構(gòu)建器 SqlSessionFactoryBuilder 應(yīng)用了構(gòu)建者模式,主要目的就是為了構(gòu)建 SqlSessionFactory 對(duì)象,以便后續(xù)生產(chǎn) SqlSession 對(duì)象,這個(gè)構(gòu)造器基本上算是 Mybatis 框架的入口構(gòu)建器,它提供了一系列多態(tài)方法 build(),支持用戶使用 XML 配置文件或 Java API (Properties)來(lái)構(gòu)建會(huì)話工廠 SqlSessionFactory 實(shí)例。

SqlSessionFactoryBuilder 的一生只為成就 SqlSessionFactory,當(dāng) SqlSessionFactory 一經(jīng)實(shí)例,SqlSessionFactoryBuilder 使命完成,便可消亡,便可被丟棄。

Mybatis最硬核的API你知道幾個(gè)?

因此 SqlSessionFactoryBuilder 實(shí)例的最佳作用域是 方法作用域 (也就是局部方法變量)。 你可以重用 SqlSessionFactoryBuilder 來(lái)創(chuàng)建多個(gè) SqlSessionFactory 實(shí)例,但最好不要一直保留著它,以保證所有的 XML 解析資源可以被釋放給更重要的事情。

SqlSessionFactoryBuilder 中靈活構(gòu)建會(huì)話工廠的一系列接口:

Mybatis最硬核的API你知道幾個(gè)?

5、SqlSessionFactory – 會(huì)話工廠

會(huì)話工廠 SqlSessionFactory 是一個(gè)接口,作用是生產(chǎn)數(shù)據(jù)庫(kù)會(huì)話對(duì)象 SqlSession ,有兩個(gè)實(shí)現(xiàn)類:

  • **DefaultSqlSessionFactory **(默認(rèn)實(shí)現(xiàn))
  • **SqlSessionManager **(僅多實(shí)現(xiàn)了一個(gè) Sqlsession 接口,已棄用)

在介紹會(huì)話工廠構(gòu)建器 SqlSessionFactoryBuilder 的時(shí)候,我們了解到構(gòu)建器默認(rèn)創(chuàng)建了 DefaultSqlSessionFactory 實(shí)例,并且會(huì)話工廠本身會(huì)綁定一個(gè)重要的屬性 Configuration 對(duì)象,在生產(chǎn)會(huì)話時(shí),最終也會(huì)把 Configuration 配置對(duì)象傳遞并設(shè)置到會(huì)話 SqlSession 上。

Mybatis最硬核的API你知道幾個(gè)?

會(huì)話工廠可以簡(jiǎn)單創(chuàng)建 SqlSession 實(shí)例:

  1. // 創(chuàng)建 SqlSession 實(shí)例 
  2. SqlSession session = sqlSessionFactory.openSession(); 

 會(huì)話工廠創(chuàng)建 SqlSession 時(shí),會(huì)綁定數(shù)據(jù)源、事務(wù)處理、執(zhí)行器等等,默認(rèn)會(huì)話工廠實(shí)現(xiàn)類 DefaultSqlSessionFactory 在創(chuàng)建會(huì)話對(duì)象時(shí),最終都會(huì)調(diào)用 openSessionFromDataSource 方法 ,即是如此實(shí)現(xiàn):

  1. // 每一個(gè) openSession 最終都會(huì)調(diào)用此處 
  2. private SqlSession openSessionFromDataSource( 
  3.     ExecutorType execType,  
  4.     TransactionIsolationLevel level,  
  5.     boolean autoCommit) { 
  6.     
  7.      
  8.     // 環(huán)境配置 
  9.     final Environment environment =  
  10.         configuration.getEnvironment(); 
  11.      
  12.     // 事務(wù)工廠 
  13.     final TransactionFactory transactionFactory =  
  14.         getTransactionFactoryFromEnvironment(environment); 
  15.      
  16.     // 事務(wù) 
  17.     Transaction tx = 
  18.         transactionFactory.newTransaction( 
  19.         environment.getDataSource(),  
  20.         level,  
  21.         autoCommit); 
  22.      
  23.     // 執(zhí)行器 
  24.     final Executor executor =  
  25.         configuration.newExecutor(tx, execType); 
  26.      
  27.     // 最終生成會(huì)話 
  28.     return new DefaultSqlSession( 
  29.           configuration, executor, autoCommit); 
  30.      
  31.   } 

 另外,會(huì)話工廠其實(shí)提供了一系列接口來(lái)靈活生產(chǎn)會(huì)話 SqlSession,你可以指定:

  • 事務(wù)處理 :你希望在 session 作用域中使用/開啟事務(wù)作用域(也就是不自動(dòng)提交事務(wù)),還是使用自動(dòng)提交(auto-commit),sqlSession 默認(rèn)不提交事務(wù),對(duì)于增刪改操作時(shí)需要手動(dòng)提交事務(wù)。
  • 數(shù)據(jù)庫(kù)連接 :你希望 MyBatis 幫你從已配置的數(shù)據(jù)源獲取連接,還是使用自己提供的連接,可以動(dòng)態(tài)創(chuàng)建數(shù)據(jù)源對(duì)象 Connection。
  • 執(zhí)行器類型 :你希望指定某類執(zhí)行器來(lái)創(chuàng)建/執(zhí)行/預(yù)處理語(yǔ)句,可以有普通執(zhí)行器(SimpleExecutor),或復(fù)用執(zhí)行器(ReuserExecutor)、還是批量執(zhí)行器(BatchExecutor)等,下面介紹執(zhí)行器時(shí)會(huì)詳細(xì)說(shuō)明。
  • 事務(wù)隔離級(jí)別支持 :支持 JDBC 的五個(gè)隔離級(jí)別(NONE、READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ 和 SERIALIZABLE),對(duì)于事務(wù)相關(guān)的內(nèi)容,我們后續(xù) 《spring 系列全解》 會(huì)詳細(xì)講,這里簡(jiǎn)單說(shuō)明一下就是事務(wù)隔離級(jí)別主要為了解決例如臟讀、不可重復(fù)讀、幻讀等問(wèn)題,使用不同的事務(wù)隔離級(jí)別勢(shì)必會(huì)導(dǎo)致不同的數(shù)據(jù)庫(kù)執(zhí)行效率,因此我們?cè)俨煌南到y(tǒng)/功能中,對(duì)隔離級(jí)別有不同的需求。
Mybatis最硬核的API你知道幾個(gè)?

SqlSessionFactory一旦被創(chuàng)建就應(yīng)該在 應(yīng)用的運(yùn)行期間 一直存在,沒(méi)有任何理由丟棄它或重新創(chuàng)建另一個(gè)實(shí)例。 使用 SqlSessionFactory 的最佳實(shí)踐是在應(yīng)用運(yùn)行期間不要重復(fù)創(chuàng)建多次,多次重建 SqlSessionFactory 被視為一種代碼“壞習(xí)慣”。因此 SqlSessionFactory 的最佳作用域是 應(yīng)用作用域 。 最簡(jiǎn)單的就是使用單例模式或者靜態(tài)單例模式。

請(qǐng)記住,創(chuàng)建 SqlSessionFactory ,一次就好!

每個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)一個(gè) SqlSessionFactory 實(shí)例。SqlSessionFactory 一旦被創(chuàng)建, 它的生命周期應(yīng)該與應(yīng)用的生命周期相同 。所以,如果你想連接兩個(gè)數(shù)據(jù)庫(kù),就需要?jiǎng)?chuàng)建兩個(gè) SqlSessionFactory 實(shí)例,每個(gè)數(shù)據(jù)庫(kù)對(duì)應(yīng)一個(gè);而如果是三個(gè)數(shù)據(jù)庫(kù),就需要三個(gè)實(shí)例,依此類推。

Mybatis最硬核的API你知道幾個(gè)?

6、SqlSession – 會(huì)話

SqlSession 是一個(gè)接口,有兩個(gè)實(shí)現(xiàn)類:

  • DefaultSqlSession (默認(rèn)實(shí)現(xiàn))
  • SqlSessionManager (已棄用)

簡(jiǎn)單來(lái)說(shuō),通過(guò)會(huì)話工廠構(gòu)建出 SqlSession 實(shí)例之后,我們就可以進(jìn)行增刪改查了,默認(rèn)實(shí)例 DefaultSqlSession 提供了如此多的方法供用戶使用,有超過(guò)30個(gè):

Mybatis最硬核的API你知道幾個(gè)?

sqlSession 的方法除了 CURD,還提供了事務(wù)的控制例如提交/關(guān)閉/回滾等、提供了配置對(duì)象的獲取例如 getConfiguration()、提供了批量語(yǔ)句的執(zhí)行更新例如 flushStatements()、提供了緩存清除例如 clearCache() 、提供了映射器的使用 getMapper() 等等。

Mybatis最硬核的API你知道幾個(gè)?

對(duì)于客戶端應(yīng)用層面來(lái)說(shuō),熟悉 sqlSession 的 API 基本就可以任意操作數(shù)據(jù)庫(kù)了,不過(guò)我們希望想進(jìn)一步了解 sqlSession 內(nèi)部是如何執(zhí)行 sql 呢?其實(shí) sqlSession 是 Mybatis 中用于和數(shù)據(jù)庫(kù)交互的 頂層類 ,通常將它與本地線程 ThreadLocal 綁定,一個(gè)會(huì)話使用一個(gè) SqlSession,并且在使用完畢之后進(jìn)行 關(guān)閉 。

之所以稱 SqlSession 為數(shù)據(jù)交互的 頂層類 ,是它其實(shí)沒(méi)有完成實(shí)質(zhì)的數(shù)據(jù)庫(kù)操作。根據(jù)之前的架構(gòu)設(shè)計(jì)流程我們已經(jīng)清晰的知道,SqlSession 對(duì)數(shù)據(jù)庫(kù)的操作都會(huì)轉(zhuǎn)發(fā)給具體的執(zhí)行器 Executor 來(lái)完成 ;當(dāng)然執(zhí)行器也是甩手掌柜,執(zhí)行器 Executor 會(huì)再分派給語(yǔ)句處理器 StatementHandler ,語(yǔ)句處理器會(huì)結(jié)合參數(shù)處理器 ParameterHandler ,共同完成最終的數(shù)據(jù)庫(kù)執(zhí)行處理操作(底層還是封裝了 JDBC Statement 操作)。并在每個(gè)語(yǔ)句處理器 StatementHandler 處理完成數(shù)據(jù)庫(kù)操作之后, 通過(guò)結(jié)果結(jié)處理器 ResultSetHandler 以及類型處理器 TypeHandler ,對(duì)底層 JDBC 返回的結(jié)果集進(jìn)行映射封裝,最終才返回預(yù)期的封裝對(duì)象。

關(guān)注以下圖示 sqlSession 紅色高亮位置,詳細(xì)描述了會(huì)話的實(shí)際執(zhí)行路徑:

Mybatis最硬核的API你知道幾個(gè)?

SqlSession 可以理解為一次數(shù)據(jù)庫(kù)會(huì)話,一次會(huì)話當(dāng)中既可以執(zhí)行一次 sql ,也允許你批量執(zhí)行多次,但是一旦會(huì)話關(guān)閉之后想要再執(zhí)行 sql,那就必須重新創(chuàng)建會(huì)話。

Mybatis最硬核的API你知道幾個(gè)?

每個(gè)線程都應(yīng)該有它自己的 SqlSession 實(shí)例,SqlSession 的實(shí)例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是 請(qǐng)求(request)或方法(method) 作用域。 絕對(duì)不能將 SqlSession 實(shí)例的引用放在一個(gè)類的靜態(tài)域,甚至一個(gè)類的實(shí)例變量也不行。 也絕不能將 SqlSession 實(shí)例的引用放在任何類型的托管作用域中,比如 Servlet 框架中的 HttpSession。 如果你現(xiàn)在正在使用一種 Web 框架,考慮將 SqlSession 放在一個(gè)和 HTTP 請(qǐng)求相似的作用域中。 換句話說(shuō),每次收到 HTTP 請(qǐng)求,就可以打開一個(gè) SqlSession,返回一個(gè)響應(yīng)后,就關(guān)閉它。 這個(gè)關(guān)閉操作很重要,為了確保每次都能執(zhí)行關(guān)閉操作,你應(yīng)該把這個(gè)關(guān)閉操作放到 finally 塊中。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2023-08-01 11:14:07

開源Api軟件

2024-08-21 08:54:35

2025-03-25 10:49:13

2024-03-01 13:48:00

Git配置系統(tǒng)

2023-04-27 08:15:09

2021-11-04 11:54:30

Linux內(nèi)存系統(tǒng)

2023-05-30 14:54:17

Python循環(huán)語(yǔ)句工具

2023-11-26 00:26:00

2024-01-18 00:16:07

2021-10-12 09:20:02

數(shù)據(jù)庫(kù)SQL腳本

2021-02-27 17:13:21

前端代碼邏輯

2020-05-06 14:14:50

Linux依賴軟件

2022-06-04 08:29:27

awk命令BEGIN

2023-10-31 08:23:54

網(wǎng)絡(luò)命令Linux

2021-10-14 06:52:47

算法校驗(yàn)碼結(jié)構(gòu)

2022-04-13 10:05:48

網(wǎng)關(guān)Flowable事件訂閱

2024-04-15 00:04:00

APP開發(fā)

2019-06-03 10:14:07

API網(wǎng)關(guān)微服務(wù)

2016-09-19 14:42:12

大數(shù)據(jù)SQLPig

2018-11-07 15:44:29

虛擬化服務(wù)器桌面
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)