sql5 3.4.0

SQLite compatible database with CJK FTS5 full-text search
# Codec - 編碼理論

`src/pager/codec.rs`

## 編碼理論背景

編碼 (Encoding) 將結構化資料轉換為位元組序列:

```
應用層資料 → [編碼] → 傳輸/儲存格式
傳輸/儲存格式 → [解碼] → 應用層資料
```

## 錯誤檢測

### 校驗和 (Checksum)

簡單的錯誤檢測機制:

```
資料: [0x12, 0x34, 0x56]
校驗: 0x12 + 0x34 + 0x56 = 0x9C
```

缺點:無法檢測交換錯誤(如 0x12, 0x34, 0x34)

### CRC (Cyclic Redundancy Check)

更強的錯誤檢測:

- 基於多項式除法
- 可檢測突發錯誤
- 檢測 1-2 位錯誤

本專案使用簡單的校驗和。

## 資料對齊 (Alignment)

| 問題 | 說明 |
|------|------|
| 對齊訪問 | CPU 期望資料在特定邊界 |
| 跨平台 | 不同平台的對齊要求不同 |

建議:資料按其自然邊界對齊。

## 頁面校驗和放置

校驗和放在頁面開頭或結尾?

| 位置 | 優點 | 缺點 |
|------|------|------|
| 開頭 | 容易讀取 | 修改資料時需更新 |
| 結尾 | 計算後再寫入 | 讀取時需計算後再驗證 |

本專案放在開頭。

## 大端序 vs 小端序

| 類型 | 0x12345678 儲存為 |
|------|-------------------|
| Big-endian | 12 34 56 78 |
| Little-endian | 78 56 34 12 |

網路協定使用 Big-endian(網路序)。

## 負數表示

### 二補數 (Two's Complement)
```
+1 = 00000001
-1 = 11111111
```

優點:加法電路可處理正負數。

## 理論參考

- Tanenbaum, "Computer Architecture"
- Stallings, "Computer Organization and Architecture"
- RFC 1071: Computing the Internet Checksum