Terraform Backend 可將 Terraform State 存儲在雲端位置,例如 S3 bucket, azure blob storage, gcp cloud storage,並提供 lock 以防止 race conditions 。 Terragrunt 還進一步讓流程更簡便…


Terraform Backend 可將 Terraform State 存儲在雲端位置,例如 S3 bucket, azure blob storage, gcp cloud storage,並提供 lock 以防止 race conditions 。 Terragrunt 還進一步讓流程更簡便…

Terragrunt 是 gruntwork 推出的一個 Terraform thin wrapper,在執行 Terraform 前可以先調整 root module 內的 .tf 檔案,保持程式碼的精簡,並提供許多額外的工具和框架幫助開發,藉此可以讓你的 IaC code 更貼近 DRY 原則。

這題使用深度優先 Depth First Traversal 來遍歷,並使用 Pre-Order 方式記錄樹的節點值;Deserialize 時有用到 queue 來儲存節點 value 值。 之前文章也分享過,在想要 Copy Tree 時適合使用Pre-Order。這題有點符合 Copy Tree 的情境,但是是把 value 存下來。

近期有機會來比較一下 AWS 和 GCP 的一些差別,也看了一些文章(
練英文QQ)。 GCP 和 AWS 都有 auto scaling 的功能,當我們在某些時候,需要比較多的資源處理事情時,可以自動增加機器來維持高 reliability。 那這部分 GCP 和 AWS 有甚麼區別呢 ?

Map 是 Java 的其中一 interface,不是 collection,也不會繼承 Collection interface。 JDK8 的 Map API 有不少便利的預設方法,以下可以介紹一下。

Terratag 是個 CLI 工具,可簡化 resource tag 的方式,允許將標籤應用於整個 Terraform 或 Terragrunt,對於 Terraform 社群來說,他們希望集中化來標註 resource 而不是分別寫在每個resource內,以更方便的追蹤和管理…

可以抽象成,計算從初始節點到最遠節點的最優路徑,很標準的 best first search。 題目常用在水管滲透,或是網路流通,求出初始節點到每一個點到最短時間,然後取其中最大的一個就是需要的時間了。這題就是要你=實作 Dijkstra’s algorithm。

Array 是 Java 中的基本功能,而 ArrayList 是 Collection 的一部分; ArrayList 和 LinkedList 都是 Java 中的集合類型,它們都實現了 List 接口。基本特徵簡單如下 :
- Array 是一個有固定大小的,每次創建都需要設定,而且在創建後,是不能再更改大小
- ArrayList ,是一個有浮動大小的 Array,且適用於需要快速訪問集合中的元素的場景。
- LinkedList 適用於頻繁插入和刪除元素的場景。
如果需要實現隊列或棧等數據結構,也可以選擇 LinkedList。

使用 HashMap 的方法 :
computeIfAbsent(K key, Function remappingFunction)其中 remappingFunction 是一個 Functional interface
- input 為 map 的 key
- output 會成為 map 的 value
HashMap 的 computeIfAbsent 方法,在 key 不存在時,會做 remappingFunction 的操作,所以再也不會因為漏寫
if x == null而出現空指針的 bug 了。

這種飛航問題基本上都是屬於 Graph 題,題目敘述也很生活化(
根本旅行必備知識)。 因為所有的路徑有且只會被用一次,故是一個 Euler Circuit。進一步抽象,可說這題是屬於 Post-order traversal on Edges 問題。 從入口做 post-order ,會是出口先被紀錄,然後再往回 backtracking 回入口,把路上的所有 node 都記下來。 老實說技巧性有點太強,且還是高頻…。 另外注意英文閱讀,有些單字很重要例如 lexical order,沒注意到可能會出現錯誤。

