SlideShare a Scribd company logo
1
深入模組化
學習目標
• 認識模組的種類
• 處理模組依賴與封裝細節
• 使用模組API
• 建立JAR、JMOD與JIMAGE
2
模組的種類
3
模組的種類
• Java SE 9也將JDK本身做了模組化,src.zip
中的原始碼被劃分到各個模組
• 除了可使用JAR來封裝模組之外,JDK9還有
了JIMAGE與JMOD格式
4
具名模組、未具名模組
• 如果應用程式採取模組化設計,預設就會依
賴在java.base模組之上,java.base模
組exports的套件,任何模組都可以讀取
5
具名模組、未具名模組
• 在JDK9之後多了模組,模組中的public類
別、方法、值域是否能被另一模組看見,還
要視模組設定而定
• 在定義模組時必須記得,同一個套件不可以
同時出現在被requires的兩個模組中,這
稱為分裂套件(Split package)
• 會導致編譯失敗,而執行時期會產生
LayerInstantiationException
6
具名模組、未具名模組
• 就算是Java SE API,若不是java.base模
組中的類別,還是必須requires相關的模
組
• 若使用到 javax.xml.bind、javax.rmi
等套件,還是會出現編譯錯誤
• 必須使用--add-modules java.se.ee,
才找得到這些套件。
7
顯式模組、自動模組
• 顯式模組無法依賴在未命名模組,因為未具
名模組並沒有名稱,無法在顯式模組的模組
描述檔中進行requires
8
顯式模組、自動模組
• 自動模組有隱含的模組定義,可以讀取其他
模組,其他模組也可以讀取自動模組
• 應用程式在遷移至模組化設計的過程中,自
動模組會是未具名模組至顯式模組之間的橋
樑
9
顯式模組、自動模組
• 並不是任何JAR都可以自動產生正確的模組
名稱
– 取得JAR的主檔名
– 去除版本號
– 替換名稱中非字母部份為句號(.)
10
顯式模組、自動模組
• 無法自動產生正確的模組名稱,此時若被放
到模組路徑的JAR檔案
– 編譯時期沒有名稱可以requires
– 執行時期會產生
IllegalArgumentException,從而使得
JVM無法初始模組層而發生FindException
11
顯式模組、自動模組
• 如果同一個套件出現在模組路徑上多個既有
的JAR檔案中,由於一個套件不能出現在多
個模組,因此只有其中一個JAR能成為自動
模組,而其他會被忽略
12
一般模組、開放模組
• 讀取能力
• 存取能力
13
一般模組、開放模組
• java.base模組exports了所有的套件,
但沒有opens套件,也沒有open模組本身,
• 任何模組都不能對java.base做深層反射
14
• 因應模組化的特性,類別載入器階層有了變
化
• 被棄用的模組可以使用@Deprecated標註
• 某個模組如果還是得使用被棄用的模組,又
不想收到警訊,那就加上個
@SuppressWarnings("deprecation")
15
requires、exports與opens
• requires transitive
• requires static
• exports to、opens to
16
requires transitive
17
requires static
• requires定義了模組間的依賴關係,而且
是包含了編譯時期與執行時期的依賴關係
• 如果某個模組是可選的,僅在編譯時期需要
,執行時期該模組可以不用存在,那麼可以
使用requires static來設定僅在編譯時
期依賴
18
exports to、opens to
19
修補模組
• 想臨時地替換掉模組中某(些)類別,像是
修補臭蟲,或進行測試時需要,也可能是臨
時性地修補分裂套件的問題
20
放寬模組封裝與依賴
• Oracle JDK非標準引數
– --add-exports
– --add-opens
– --add-reads
21
使用Module
22
使用Module
• 只有在模組內的類別,才能呼叫所在模組的
addExports​()、addOpens()、
addReads()、addUses​()
23
使用Module
24
使用ModuleDescriptor
• getDescriptor()可以傳回
java.lang.module.ModuleDescripto
r,這個實例代表著具名模組(包含自動模組
)的模組描述檔
• 未具名模組的getDescriptor()會傳回
null
• 包含的是靜態的模組描述資訊
25
淺談ModuleLayer
• 絕大多數的應用程式專案並不需要意識到模
組層的存在
• 像是某種服務容器或者plugins架構的應用程
式才會使用模組層
26
打包模組
• JAR
• JMOD
• JIMAGE
27

More Related Content

What's hot

Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
 
自訂泛型、列舉與標註
自訂泛型、列舉與標註自訂泛型、列舉與標註
自訂泛型、列舉與標註
Justin Lin
 
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Justin Lin
 
CH16:整合資料庫
CH16:整合資料庫CH16:整合資料庫
CH16:整合資料庫
Justin Lin
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
 
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Justin Lin
 
Java平台概論
Java平台概論Java平台概論
Java平台概論
Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Justin Lin
 
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJava SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Justin Lin
 
CH1:Java平台概論
CH1:Java平台概論CH1:Java平台概論
CH1:Java平台概論
Justin Lin
 
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Justin Lin
 
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin
 
認識物件
認識物件認識物件
認識物件
Justin Lin
 
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章  - 通用APIJava SE 7 技術手冊投影片第 12 章  - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
Justin Lin
 
Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論
Justin Lin
 
進階主題
進階主題進階主題
進階主題
Justin Lin
 
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
 
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Justin Lin
 
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Java SE 8 技術手冊第 17 章 - 反射與類別載入器Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Justin Lin
 

What's hot (20)

Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
 
自訂泛型、列舉與標註
自訂泛型、列舉與標註自訂泛型、列舉與標註
自訂泛型、列舉與標註
 
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
Java SE 7 技術手冊投影片第 05 章  - 物件封裝Java SE 7 技術手冊投影片第 05 章  - 物件封裝
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
 
CH16:整合資料庫
CH16:整合資料庫CH16:整合資料庫
CH16:整合資料庫
 
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDEJava SE 8 技術手冊第 2 章 - 從JDK到IDE
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
 
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
Java SE 7 技術手冊投影片第 15 章 - 反射器與類別載入器
 
Java平台概論
Java平台概論Java平台概論
Java平台概論
 
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
 
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行APIJava SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
 
CH1:Java平台概論
CH1:Java平台概論CH1:Java平台概論
CH1:Java平台概論
 
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
Java SE 8 技術手冊第 18 章 - 自訂泛型、列舉與標註
 
2. 從 REPL 到 IDE
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
 
認識物件
認識物件認識物件
認識物件
 
Java SE 7 技術手冊投影片第 12 章 - 通用API
Java SE 7 技術手冊投影片第 12 章  - 通用APIJava SE 7 技術手冊投影片第 12 章  - 通用API
Java SE 7 技術手冊投影片第 12 章 - 通用API
 
Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論Java SE 7 技術手冊試讀 - Java 平台概論
Java SE 7 技術手冊試讀 - Java 平台概論
 
進階主題
進階主題進階主題
進階主題
 
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
 
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
Java SE 7 技術手冊投影片第 16 章 - 自訂泛型、列舉與標註
 
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Java SE 8 技術手冊第 17 章 - 反射與類別載入器Java SE 8 技術手冊第 17 章 - 反射與類別載入器
Java SE 8 技術手冊第 17 章 - 反射與類別載入器
 

More from Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
Justin Lin
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
Justin Lin
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
Justin Lin
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
Justin Lin
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
Justin Lin
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
Justin Lin
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
Justin Lin
 

More from Justin Lin (20)

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
 
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
 
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
Ch08 自訂標籤
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
 
Ch07 使用 JSTL
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
 
Ch06 使用 JSP
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSP
 
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
 
Ch04 會話管理
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
 
Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
 
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
 
14. 進階主題
14. 進階主題14. 進階主題
14. 進階主題
 
13.並行、平行與非同步
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
 
12. 除錯、測試與效能
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
 
11. 常用內建模組
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
 
10. 資料永續與交換
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
 
9. 資料結構
9. 資料結構9. 資料結構
9. 資料結構
 

Recently uploaded

【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
Yen-lung Tsai
 
有請Gemini大師,看圖占卜,指引職涯發展方向
有請Gemini大師,看圖占卜,指引職涯發展方向有請Gemini大師,看圖占卜,指引職涯發展方向
有請Gemini大師,看圖占卜,指引職涯發展方向
佳新 陳
 
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
Yen-lung Tsai
 
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
Edward Kuo
 
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
Yen-lung Tsai
 
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
Yen-lung Tsai
 

Recently uploaded (6)

【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
【炎龍老師的 AI 模組課程】02 用遷移式學習做八哥辨識: CNN 的原理、用名門 CNN 模型作遷移式學習
 
有請Gemini大師,看圖占卜,指引職涯發展方向
有請Gemini大師,看圖占卜,指引職涯發展方向有請Gemini大師,看圖占卜,指引職涯發展方向
有請Gemini大師,看圖占卜,指引職涯發展方向
 
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
【炎龍老師的 AI 模組課程】03 和 AI PK 誰比較會認 IVE 成員: Contrastive Learning、人臉辨識
 
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
DevOpsDays Taipei 2024 DevOps加入Biz讓DevOps在企業價值定位
 
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
【炎龍老師的 AI 模組課程】01 用全連結神經網路打造手寫辨識 AI: AI 原理與 MNIST 數據集
 
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
【炎龍老師的 AI 模組課程】04 打造自己的 ChatGPT: 文字生成 AI 的原理、LLM 為什麼這麼厲害、OpenAI API
 

CH19:深入模組化