谷歌浏览器 开启 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
- 技术扩展阅读