2進数
ビット、位の重み、桁上がり——機械が2進数で数える仕組み。
カリキュラム
OS、ネットワーク、データベース、分散システム、コンパイラ、計算機アーキテクチャ
2進数
ビット、位の重み、桁上がり——機械が2進数で数える仕組み。
2 の補数
符号付き整数の表現
浮動小数点(IEEE 754)
符号、指数、仮数の可視化
ブール論理と論理回路
AND/OR/NOT とデジタル回路
命令実行
フェッチ・デコード・実行——1命令が CPU を通り抜ける旅。
CPU パイプライン
5 段が重なり、ほぼ毎サイクル 1 命令が完了する — データハザードが止めるまで。
分岐予測
投機的実行と予測ミスのコスト
キャッシュ階層
L1/L2/L3、局所性、キャッシュライン
OSI / TCP-IP モデル
ネットワーク階層を一層ずつ解説
TCP ハンドシェイク
3 ウェイハンドシェイク、シーケンス番号、再送
TCP コネクション切断
4 ウェイハンドシェイク、FIN/ACK、TIME_WAIT
輻輳制御
教科書 Reno:スロースタート、AIMD、タイムアウト
HTTP / HTTP/2 / HTTP/3
リクエスト・応答、多重化、QUIC
TLS ハンドシェイク
証明書、鍵交換、暗号化
DNS 名前解決
再帰問い合わせと反復問い合わせ
ルーティングプロトコル
古い距離ベクトルはループし、リンクステートの地図は捨てる
SQL 結合
INNER・LEFT・FULL——行が一致し、外れ、NULL で埋まる様子を見る。
GROUP BY と集約
行がバケットに落ち、バケットが集約値へ畳み込まれる。
ウィンドウ関数
フレームが順序付きの行を滑る——行を畳まずに累計やランクを計算する。
B+ 木
葉でのコピー、内部ページでの昇格、葉リンクの範囲走査を見る。
LSM ツリー
高速な書き込みが整列とマージを後回しにし、シーケンス規則で重複版を正しく保つ流れを見る。
MVCC
スナップショットが行バージョンを選び、読み取りと更新を並行させ、回収を待たせる様子を見る。
データベースインデックス
全表走査、ハッシュバケット、B+ 木の葉、カバリング値がページ読み取りをどう変えるかを見る。
Git の4つの領域
1つの変更が作業ツリー、インデックス、ローカル、リモートを進む様子を見る。
コミットはスナップショット
コミットはステージ済みのスナップショットと親を記録し、新しいIDを得る。
ブランチと HEAD
新しいコミットで動くのは現在のブランチだけ。HEAD が次に動く参照を示す。
Fast-Forward マージ
履歴が分岐していなければ、マージはコミットを作らずブランチだけを進める。
3-way マージ
共通祖先から分岐した2つの履歴を、親を2つ持つコミットで統合する。
マージコンフリクト
同じ箇所への変更を解決し、結果をステージして中断したマージを完了する。
リモートでの共同作業
Fetch、Pull、Push がローカルとリモートの何を変えるかを見比べる。
タグとリリース
commit は branch を進めますが tag は自動では動きません。注釈付き tag は object を追加し、checkout で HEAD が分離します。
リベース
コミットを新しい基点へ再生し、コピーされた各コミットが新しいIDを得る様子を見る。
変更を元に戻す
Restore、Reset、Revert がそれぞれリポジトリのどの層を変えるか比較する。