谷歌瀏覽器 開啟 Disable cache 還是會顯示 Provisional headers are shown
---
* 將短時間內發往 Redis 的多個查詢請求(可能是相同 key 或不同 key)合并成一個批量查詢。
* 在應用層使用 Goroutine 或其他協程機制等待查詢結果。
* 一次性從 Redis 獲取多個 key 的數據后,將結果分發回每個請求。
- https://hankmo.com/posts/golang/go-singleflight/
- https://www.cyningsun.com/03-31-2019/live-streaming-danmaku.html
- https://www.cyningsun.com/01-11-2021/golang-concurrency-singleflight.html
"golang.org/x/sync/singleflight
---
csdn
---
keep-alive
---
--
---
---
---
---
---
---
> # -------------------------
> 相關閱讀
- https://www.cnblogs.com/reim/p/17377883.html
### **內存緊湊性**
* **整型集合(`intset`)的核心特點**是存儲緊湊,節省內存:
* 整型集合采用連續內存存儲,每個元素的大小為 2、4 或 8 字節,具體取決于集合中最大整數的位寬(16 位、32 位或 64 位)。
* Redis 動態調整編碼類型(如從 `int16_t` 升級到 `int32_t`)以最小化內存占用。
* **浮點型集合的內存開銷更大**:
如果數據范圍和精度可以確定,使用定點數存儲會更高效。例如,將浮點數放大 1000 倍后用整數存儲(`int` 類型),節省空間
* 浮點數(如 `double`)的存儲占用固定 8 字節,即使數值較小也無法優化。
* 對于典型的 Redis 集合場景(如用戶 ID 集合、去重計數),浮點型集合會浪費不必要的內存。
除了 **Gzip**,當前流行的壓縮方式還有以下幾種,根據場景和需求的不同,它們在性能、壓縮比、解壓速度等方面表現優異:
* * *
### **1\. Brotli**
* **特點**:
* 相比 Gzip,**壓縮比更高**,尤其適合靜態資源(如 HTML、CSS、JavaScript)。
* **解壓速度快**,適用于 Web 資源的傳輸。
* **應用場景**:
* 常用于 HTTP 壓縮,特別是在 HTTPS 和 Web 瀏覽器之間傳輸靜態資源。
* **支持度**:
* 主流瀏覽器(Chrome、Firefox、Edge 等)支持 Brotli 壓縮。
* Nginx、Apache 等服務器支持 Brotli 模塊。
* * *
### **2\. Zstandard (zstd)**
* **特點**:
* **壓縮和解壓速度非常快**,同時具備較高的壓縮比。
* 支持多線程壓縮和解壓,適合大文件的處理。
* **應用場景**:
* 大型文件的壓縮,如數據庫備份、日志文件、數據歸檔。
* 游戲行業的數據傳輸(如 Steam 使用 zstd)。
* **優勢**:
* 靈活性高,可調整壓縮級別以適應性能和壓縮比需求。
* * *
### **3\. LZ4**
* **特點**:
* **極快的壓縮和解壓速度**,但壓縮比低于 Gzip 和 Brotli。
* 面向實時性要求高的場景。
* **應用場景**:
* 數據庫的內部壓縮。
* 流式日志壓縮和傳輸(如 Kafka 支持 LZ4)。
* **優勢**:
* 解壓性能優異,非常適合需要頻繁解壓的小型數據塊。
* * *
### **4\. Snappy**
* **特點**:
* **快速壓縮和解壓**,壓縮比適中。
* 主要目標是**低延遲**。
* **應用場景**:
* 分布式系統中的數據傳輸(如 Hadoop、Cassandra、Kafka)。
* 大量小文件或實時數據處理場景。
* **優勢**:
* Google 開發,兼容性強,適用于分布式存儲和流式數據。
* * *
### **5\. Bzip2 和 Xz**
* **Bzip2**:
* **特點**: 較高的壓縮比,但壓縮速度較慢。
* **應用場景**: 數據歸檔、日志備份(較少用于實時數據處理)。
* **Xz**:
* **特點**: 提供更高的壓縮比,比 Bzip2 更快,適合歸檔大文件。
* **應用場景**: 數據歸檔(如 Linux 的軟件包使用)。
* * *
### **對比總結**
| 壓縮算法 | 優勢 | 劣勢 | 適用場景 |
| --- | --- | --- | --- |
| **Gzip** | 兼容性強,速度快 | 壓縮比不如 Brotli | 通用 HTTP 壓縮,實時場景 |
| **Brotli** | 高壓縮比,瀏覽器支持好 | 壓縮速度較慢 | 靜態資源壓縮(HTML/CSS/JS) |
| **Zstd** | 快速,靈活性高 | 依賴庫支持 | 數據庫備份,游戲數據壓縮 |
| **LZ4** | 壓縮解壓極快 | 壓縮比低 | 日志壓縮,實時流式數據處理 |
| **Snappy** | 低延遲 | 壓縮比不高 | 分布式系統,流式傳輸 |
| **Bzip2** | 高壓縮比 | 壓縮速度慢 | 歷史歸檔數據 |
| **Xz** | 壓縮比高 | 速度稍慢 | 大文件歸檔 |
* * *
### **趨勢**
* **Brotli 和 Zstd** 是目前最流行的壓縮方式:
* Brotli 是 Web 前端和傳輸層的首選。
* Zstd 則是服務器端數據存儲和實時數據壓縮的熱門選擇。
* 對于實時性要求高的場景,**LZ4** 和 **Snappy** 仍是重要選擇。
---
| 方法 | 格式 | 序列化速度 | 反序列化速度 | 數據大小 | 適用場景 |
| --- | --- | --- | --- | --- | --- |
| **`encoding/json`** | 文本 | 慢 | 慢 | 大 | 通用、跨語言兼容 |
| **`json-iterator`** | 文本 | 較快 | 較快 | 大 | 高性能 JSON 場景 |
| **`msgpack`** | 二進制 | 快 | 快 | 小 | 高效傳輸、跨語言兼容 |
| **`gob`** | 二進制 | 快 | 快 | 小 | Go 內部數據通信 |
- 目錄
- 第一例 gRPC使用例子
- 第二例 基于go-micro做服務注冊和服務發現
- 第三例 留言板項目源碼
- 第四例 聊天室
- 第五例 工具庫
- dao
- common
- common.go
- config
- config.go
- gorm
- grom.go
- sqlx
- sqlx.go
- kafka
- kafka.go
- log
- log.go
- log2.go
- redis
- redis.go
- zookeeper
- zookeeper.go
- init
- main.go
- 工具庫
- cache
- cfg.go
- redis
- 示例
- database
- cfg.go
- gorm.go
- sql.go
- 示例
- mq
- cfg.go
- kafka_consumer.go
- kafka_producter.go
- 示例
- time
- time.go
- 第六例 原生sql操作
- 第七例 sqlx操作
- 第八例 Redis數據庫(gomodule/redigo)
- 第九例 Redis消息隊列
- 第十例 Redis集群連接
- 十一例 Zookeeper操作
- 十二例 Kafka操作
- 十三例 NSQ操作
- 十四例 二分查找
- 十五例 交換排序 - 冒泡排序
- 十六例 插入排序 - 直接插入排序
- 十七例 插入排序 - 希爾排序
- 十八例 交換排序 - 快速排序
- 十九例 算法求解應用
- 二十例 pprof性能分析
- 二一例 CPU信息采集
- 二二例 Heap信息采集
- 二三例 Http信息采集
- 二四例 單元測試(功能測試)
- 二五例 基準測試(壓力測試/性能測試)
- 二六例 gdb調試
- 二七例 json序列化和反序列化
- 二八例 protobuf序列化和反序列化
- 二九例 包管理工具 go vendor
- 三十例 包管理工具 go mod
- 三一例 zip壓縮
- 三二例 交叉編譯
- 三三例 線上環境部署
- 三四例 業務:實現固定周期維護
- 三五例 聊天室(精簡版)
- 三六例 并發安全字典
- 三七例 導出Excel表格
- 三八例 導出CSV表格
- 三九例 聊天室(高并發)
- 四十例 JWT (Json Web Token)
- 四一例 雪花算法生成 Id
- 四二例 對稱加密 AES
- 四三例 非對稱加密 RSA
- 四四例 簽名算法 SHA1
- 四五例 數據庫操作 gorm
- gorm V2
- 四六例 數據庫操作 gorm 集合
- 數據庫連接和創建表
- 查詢 - 分頁
- 查詢所有數據
- 查詢單條數據
- 插入一條或多條數據
- 更新一條或多條數據
- 更新一條或多條數據(有零值)
- 四七例 RSA(MD5WithRSA 算法)簽名和驗簽方式
- 四八例 線上部署腳本
- 四九例 Elasticsearch
- 五十例 對象池
- 五一例 中間庫(github.com/wong-winnie/library)
- 五二例 二維碼(生成和解析)
- 五三例 回調用例
- 五四例 文件服務器(MINIO)
- 五五例 chm文檔轉json
- 提取內容頁Json
- 將目錄索引和內容頁混合生成Json
- 目錄層級小案例
- 五六例 部署 gogs 代碼管理工具
- 五七例 通過命令行操作SVN
- 五八例 根據數據庫表生產模型
- 五九例 Trie樹
- 六十例 二進制排序
- 六一例 遞歸+迭代實現無限級分類
- 六二例 Arrow 數據結構
- 簡單介紹
- Go 用Arrow數據格式與其它語言交互
- 六三例 LMDB 內存映射型數據庫
- 獲取指定Key位置
- 六四例 切片數據按字段分類
- 六五例 Xorm 批量插入數據
- 六六例 FlatBuffers 序列化和反序列化
- FlatBuffers 步驟1
- FlatBuffers 步驟2
- 六七例 數據同步
- 增量同步v1
- 全量同步v1
- 定時器
- 六八例 Http請求
- 六九例 Gin + 數據庫操作
- 七十例 ClickHouse 列式數據庫
- 七一例 用圖表展示數據庫數據
- 七二例 go:linkname
- 七三例 四舍五入、保留3小數位
- 七四例 判斷兩個時間戳是否同一天
- 七五例 Gin Http請求
- 七六例 過濾器
- 七七例 Excel 導入導出
- 七八例 小程序向公眾號推消息
- 七九列 解析二進制數據
- 例子一
- 例子二
- 八十例 路由轉發
- 八一例 協程池(安全執行任務,捕獲異常)
- 八二例 切片 slice
- 八三例 集合 map
- 八四例 Redis 六種數據類型
- 八五例 Zstd壓縮
- 八六例 提高接口并發量
- 八七例 協程 goroutine 和 通道 channel
- 八七例 Mysql 事務和索引等
- 編寫中
- 數據交互
- mysql 索引和事務
- 發請求
- defer
- 其它
- linux
- OAuth2.0 和 JWT
- 其它2
- 其他
- Web3.0 智能合約
- 多人貪吃蛇
- V1
- 客戶端
- 服務端
- V2
- 同步方式
- 游戲框架
- deepseek
- k8s
- TRPC
- Kafka
- 加密
- mm
- 技術擴展閱讀