https://www.gravatar.com/avatar/206912d6900c65386f24516df605c206?s=240&d=mp

Kourtney's Space

WSL 2 on Windows Part 2 - Terminal 介面設定

/images/wsl2_terminal_screenshot.png

把在 Linux 和 Mac 上 terminal 的設定也搬到 Windows 上,
方便操作。

Windows Terminal 功能

用 Windows terminal 可以

  • 啟用多個分頁 (在多個 Linux CLI、Windows CLI、PowerShell等之間快速切換)
  • 自訂按鍵 (開啟或關閉分頁、複製+貼上等快速鍵)
  • 使用搜尋功能
  • 自訂佈景主題

這些功能比原生 WSL 能支援的多的多,
也可以設定的和我在 Linux 或 Mac 的開發環境比較相似,
於是就決定選用 windows terminal 了。

WSL 2 on Windows Part 1 - 安裝啟用

工作的時候習慣用 Linux 或 mac 的 terminal,
找了個時間在家裡的 PC 上把 WSL 的環境也設定一下方便切換工作環境。  

WSL 2 和 WSL 1 的差異

WSL 2 是基於 Hyper-V 在 virtual machine 中跑完整的 Linux kernal
WSL 1 則是在 Windows 系統上對 Linux 功能的模擬,
因此 WSL 2 比 WSL 1 支援更多 Linux 原生的功能和 system call

Deep Copy and Shallow Copy

Shallow Copy

複製越少越好,
Shallow copy 出來的新的 structure 擁有跟舊的 structure 相同的結構,
並一起共享 elements 的記憶體位置

舉個 Java 的例子,

int[] arr1 = {1, 2, 3};
int[] arr2 = arr1;

arr2 就是一個 arr1 的 shallow copy。

C++ STL Containers 比較 - array, vector, deque, list, forward_list

Array

固定大小連續記憶體空間所構成

優缺點

  • 不能像其他 C++ container 那樣動態改變儲存空間的大小
  • random access 很有效率 (O(1))

Vector

可以動態改變儲存空間大小的 array

底層實作方式

  • 動態的 allocate array,
    當目前的 capacity 不夠大的時候就重新 reallocate 一個新的 array 然後把舊的 element 搬過去
  • 實際上的 capacity 會比目前塞進 vector 裡面的 element 數量大

優缺點

  • random access 很有效率 (O(1))
  • 尾端加入或刪除 element 相對有效率
  • 在不是尾端的地方加入或刪除 element 比較慢

Deque

Double-ended queue,
一樣可以動態的改變 container 大小。
不同的 library 實作 deque 的方式可能會不一樣。