tar是 Unix 和類 Unix 系統上常用的壓縮工具,名字來自於 tape archive 的縮寫, tar 可以將多個文件或目錄打包成一個檔案。單純 .tar 檔案是沒有壓縮資料的,只是把好多目錄與資料夾打包起來變成一個大檔案而已;如果要有壓縮資料的功能,要使用 .tar.gz 壓縮檔案,是最常見的壓縮檔案格式。

tar是 Unix 和類 Unix 系統上常用的壓縮工具,名字來自於 tape archive 的縮寫, tar 可以將多個文件或目錄打包成一個檔案。單純 .tar 檔案是沒有壓縮資料的,只是把好多目錄與資料夾打包起來變成一個大檔案而已;如果要有壓縮資料的功能,要使用 .tar.gz 壓縮檔案,是最常見的壓縮檔案格式。
這題是要求 Binary Tree 的 diameter ,要注意一下 diameter 的定義並不等於深度 ! 根據題目中的例子,可了解所謂 diameter 的定義,是兩點之間的最遠距離。雖然 Binary Tree 的 diameter 並不等於深度,但是和深度有非常大的關係,所以解法用 DFS 是比較直觀的想法。(雖然題目難度說是 easy,但我個人覺得應該算初階 medium…)
deep copy 是程式初新手常會有疑問的地方,這邊剛好可以藉由解題來複習指標的概念。另外這題有很巧妙的解法,就是利用 HashMap 來建立原 node 和拷貝 node 之間的映射 ! 也可以使用遞迴的解法,寫起來相當的簡潔。
RUN、CMD 和 ENTRYPOINT 指令都可以用來執行具體的命令。RUN 指令是在 Docker 鏡像構建時把執行結果會記錄到鏡像中;而 CMD 和 ENTYPOINT 指令是在容器啟動時自動執行。
ENTRYPOINT 和 CMD 的區別在於使用 ENTRYPOINT 時, CMD 指令會被作為其默認參數,也可以在啟動容器時通過覆蓋 CMD 指令來輸入參數。
這題為一個設計題,給了一個 Data Stream,希望設計一個 class 能夠支援連續的 operation,並找出該 Stream 目前的中位數。注意 Data Stream 中的 Data 是無序的且可以為負數,所以我們要做的第一件事是讓每一次 data 輸入進來,都要讓其有序。這裡介紹的解法十分巧妙,使用 maxHeap 和 minHeap 來解決問題,這樣中位數的計算便只要看 maxHeap 的最大值和 minHeap 的最小值來判斷。
Dockerfile 讓我們可以透過設定指令的方式,快速地更新和建構 Image 。由於 Dockerfile 中可以清楚的知道 Image 建構的過程和引用的 package 組成,因此在安全性上會有所提升;也因為是純文字檔,所以 size 很小、易於分享。Dockerfile 裡面有一些指令蠻容易混淆的,這次重點介紹:
- RUN
- CMD
- ENTRYPOINT
這三個指令都可以用來執行具體的命令,但其中又有些差異,以下做一些說明和整理。