促銷
學習
課程
任務
問卷 & 測驗
遊戲
說明
行程
社群
用戶
論壇
聊天
文章
成功故事
動態
評價
訂閱
淺色主題
課程
評論
關於我們
開始
開始學習
立即開始學習
My Progress
Courses
任務地圖
課程
Java 25
所有任務
所有等級
透過反射建立物件
JAVA 25 SELF
等級 62,
課程 3
如何「動態」建立物件並操作類別:為什麼
Class.newInstance()
已過時,如何正確使用
getConstructor
/
getDeclaredConstructor
與
Constructor.newInstance
,透過
Method.invoke
呼叫方法,以及用
Field
讀取/修改欄位。會說明常見例外(
ReflectiveOperationException
等)、模組系統的限制、實用做法,以及一個用於動態實例化的小工具。此外,還有整體流程的示意圖。
反射與 Dependency Injection
JAVA 25 SELF
等級 62,
課程 4
在這堂課我們討論 Java 中反射的實務:如何透過
Class
、
Field
與
Method
讀取私有欄位(
setAccessible
(
true
))並組裝一個簡單的序列化器;DI 容器如何藉由註解(
@Inject
、
@Autowired
)透過建構子與欄位注入相依性;基於
Proxy
與
InvocationHandler
的動態代理如何攔截呼叫;這些技術在實務中(
Spring
、
JUnit
、
Jackson
)如何應用,以及會遇到哪些限制與錯誤。
日誌記錄基礎:java.util.logging、Log4j、SLF4J
JAVA 25 SELF
等級 63,
課程 0
為什麼應用程式需要日誌,以及為什麼只靠
System.out.println
在生產環境無法救場。我們將拆解
ERROR
/
WARN
/
INFO
/
DEBUG
/
TRACE
等級、內建的
java.util.logging
堆疊與設定檔
logging.properties
,並認識
Log4j 2
、
Logback
與外觀層
SLF4J
。我們會與主控台輸出比較、加入相依性,並解析常見的設定與使用錯誤。
日誌格式與層級:best practices
JAVA 25 SELF
等級 63,
課程 1
解析一則良好的日誌訊息由哪些部分組成(時間、層級
INFO
/
ERROR
、logger 名稱、文字、stack),如何透過 SLF4J/Log4j2 的樣板正確格式化(以
"{}"
取代字串連接)、如何記錄例外(
logger.error(..., ex)
)、何時使用
ERROR
/
WARN
/
INFO
/
DEBUG
/
TRACE
各層級,以及最佳實務:不包含敏感資料、訊息清楚、使用關聯 ID(
orderId
、
userId
)與妥善設定
log4j2.xml
。
在多執行緒與 Web 應用中的日誌紀錄
JAVA 25 SELF
等級 63,
課程 2
如何在多執行緒與 Web 環境中讓日誌更可靠:現成庫的執行緒安全性 (
Logback
、
Log4j 2
、
java.util.logging
)、
MDC
上下文與
requestId
傳遞、與 Spring 篩選器與錯誤處理器的整合、與
System.out
的差異、執行緒池的細節與微服務中的追蹤(traceId、
OpenTelemetry
)。解析實務範例與常見錯誤,並使用
SLF4J
與
Logger
作為
static
final
欄位。
JVM 監控:JMX、VisualVM、Java Flight Recorder
JAVA 25 SELF
等級 63,
課程 3
這堂課是關於監控
JVM
的實用指南:如何透過
JMX
與
JConsole
讀取標準指標,如何在
VisualVM
中視覺化觀察記憶體、執行緒並剖析方法(包含
heap dump
與
thread dump
),以及如何使用
Java Flight Recorder
記錄「黑盒」並在
JDK Mission Control
中進行分析。我們會示範啟動指令(
-XX:StartFlightRecording
),說明分析
GC
/執行緒的典型情境與常見錯誤。
程式碼效能剖析與最佳化:工具與方法
JAVA 25 SELF
等級 63,
課程 4
說明效能剖析與監控的差異、哪些指標重要(方法執行時間、記憶體、執行緒、鎖定),以及應使用哪些工具:
VisualVM
、
Java Flight Recorder
,以及商業版剖析器。實作上我們會研究「慢速」計算器,學習尋找「熱點」、分析
heap dump
,並透過替換演算法、減少配置與快取來消除瓶頸。最後以最佳化流程的視覺化圖示與常見錯誤解析作結。
JVM 記憶體結構:堆疊(Stack)、堆(Heap)、PermGen/MetaSpace
JAVA 25 SELF
等級 64,
課程 0
在 JVM 執行期間,區域變數、物件與類別的中繼資料分別去哪裡?我們將拆解執行緒堆疊、堆,以及 PermGen → MetaSpace 的演進。也會談到
GC
的運作方式、常見的記憶體錯誤(
StackOverflowError
、
OutOfMemoryError
),以及啟動旗標(
-Xss
、
-Xmx
、
-XX:MaxMetaspaceSize
)的影響。附上示意圖、mermaid 圖表與可運行範例。
垃圾回收器:G1、ZGC、Shenandoah,比較
JAVA 25 SELF
等級 64,
課程 1
在本講座中,我們會解析垃圾回收器(
GC
)在
JVM
中如何運作,傳統的
Serial
/
Parallel
/
CMS
與現代的
G1
、
ZGC
、
Shenandoah
有何差異,什麼是年輕代與老年代,為什麼會出現
Stop-the-World
停頓,以及如何將其最小化。實作上我們會看看如何用旗標啟用不同 GC(
-XX:+UseG1GC
、
-XX:+UseZGC
、
-XX:+UseShenandoahGC
)、調整停頓(
-XX:MaxGCPauseMillis
)與堆大小(
-Xms
/
-Xmx
)、閱讀日誌(
-Xlog:gc*
),並避免典型錯誤(例如強制呼叫
System.gc()
)。
區域變數、記憶體洩漏、弱引用
JAVA 25 SELF
等級 64,
課程 2
在本講座中,你將了解區域變數位於哪裡(執行緒堆疊)以及它與堆(heap)有何不同,為什麼即便有 GC,Java 仍可能發生記憶體洩漏,以及如何避免。會解析真實情境:「永恆」的
static
集合、未取消註冊的監聽器與快取。將認識引用家族:
SoftReference
、
WeakReference
、
PhantomReference
,以及容器
WeakHashMap
。還會練習修復洩漏並討論,為何呼叫
System.gc()
— 只是對 JVM 的提示而非命令,以及
OutOfMemoryError
可能帶來的後果。
記憶體分析工具:jmap、jvisualvm
JAVA 25 SELF
等級 64,
課程 3
JVM 記憶體疑難排解實作指南:用
jmap
擷取堆快照(
heap dump
),透過
-heap
與
-histo
閱讀摘要,在
jvisualvm
(分頁
Monitor
、
Heap Dump
、
Threads
、
Profiler
)中檢視應用程式,拆解範例洩漏,並認識
Eclipse MAT
與
jconsole
。最後——常見錯誤與建議。
解析處理記憶體時的常見錯誤
JAVA 25 SELF
等級 64,
課程 4
實務解析,說明為什麼 Java 應用可能「記憶體外洩」並變慢:遺漏移除的監聽器 (
addActionListener
/
removeActionListener
)、長壽的靜態集合、未關閉的資源(建議:
try-with-resources
)、會保留參照的匿名/內部類別,以及濫用
System.gc()
。將學會閱讀 GC 日誌(
-Xlog:gc*
、
-XX:+PrintGCDetails
)、選擇合適的回收器、用
WeakHashMap
建立快取、進行監控(
jvisualvm
、
jconsole
)、分析 heap dump,並正確調整
-Xmx
/
-Xms
。最後 — 提供真實的外洩案例與修正方式。
顯示更多
1
...
27
28
29
30
Please enable JavaScript to continue using this application.