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

Kourtney's Space

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 的方式可能會不一樣。

常用 DNS Resource Record 紀錄

DNS server 中每個 DNS zone 都有一個 zone file,
DNS zone 通常會是一個 single domain (有時候不是),
zone file 是由很多個 dns resource record (RR) 組成,
RR 有很多種不同的類型,
紀錄一下常用幾種。

A record

將 hostname 對應到 IPv4。 (32-bit)

hostname IN A xxx.xxx.xxx.xxx

RDBMS 與 NoSQL 差異筆記

RDBMS

Relational Database Management System

  • 在資料之前有很強的 Relation (關聯性) 的時候使用:
    • 設計不太會去變動的 schema 將 table 互相關聯,
      就可以去透過 SQL 取得想要的資料
  • 資料的正確性很重要的時候使用
    • 通常會提供ACID
  • 要變動 schema 是一件很浩大的工程:
    • 要把的 table 的 schema 更新還要 migrate 資料
    • 所有用到要被更換 schema 的 table 的程式都要修改