流式 HTTP 是指在一次 HTTP 请求/响应过程中,服务端或客户端能够**逐步发送或接收数据**,而不是等待整个内容准备好后一次性传输。这种模式适用于大文件传输、实时日志推送、SSE(Server-Sent Events)、视频流等场景。
下面我们将从 **HTTP/1.1、HTTP/2、HTTP/3** 三个协议版本的角度详细解释流式传输的机制,并结合 **Go 语言** 编写服务端示例代码,说明其原理和实现方式。
---
## 一、HTTP/1.1 的流式传输
### 1.1 原理
- HTTP/1.1 支持 **Chunked Transfer Encoding**(分块传输编码)。
- 服务端可以在不知道内容总长度的情况下,通过 `Transfer-Encoding: chunked` 头部逐块发送响应体。
- 每个块以十六进制长度开头,后跟 `\r\n`,然后是数据,再以 `\r\n` 结尾。
- 最终用一个长度为 0 的块表示结束。
### 1.2 Go 实现示例(HTTP/1.1 流式响应)
```go
package m...
发布日期:
2025-11-22
分类:
后端
浏览量:
7
在 Go 语言中使用 `go-sql-driver/mysql`(即 `github.com/go-sql-driver/mysql`)作为 MySQL 驱动时,连接字符串中的 `loc` 参数用于指定驱动在处理 `DATETIME` 和 `TIMESTAMP` 类型时所使用的 **本地时区(Local Time Zone)**。
---
## 一、`loc` 参数的作用
- `loc` 指定的是 **Go 程序解析和格式化时间时使用的时区**。
- 它 **不会改变 MySQL 服务器本身的时区设置**,而是影响 Go 驱动如何将数据库中的时间值转换为 Go 的 `time.Time` 类型,以及如何将 `time.Time` 写入数据库。
语法示例:
```go
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname?loc=Asia%2FShanghai")
```
其中 `Asia/Shanghai` 是 IANA 时区名称,URL 编码后为 `Asi...
发布日期:
2025-11-20
分类:
Go
浏览量:
21
# Go Web 应用性能pprof分析完整指南
在构建高性能的 Go Web 应用时,性能分析(Profiling)是不可或缺的一环。Go 语言原生提供了强大且易用的性能分析工具,本文将系统性地介绍如何对 Go Web 应用进行 CPU、内存、阻塞、协程等维度的性能分析,并提供可直接复用的代码模板和操作步骤。
## 一、准备工作:启用 pprof
Go 的标准库 `net/http/pprof` 提供了 HTTP 接口访问性能分析数据的能力。只需在你的 Web 应用中导入该包即可自动注册相关路由:
```go
import _ "net/http/pprof"
```
> 注意:仅在开发或测试环境中暴露 pprof 端点。生产环境应通过权限控制或独立管理端口暴露,避免安全风险。
### 示例:最小可运行 Web 应用 + pprof
```go
package main
import (
"net/http"
_ "net/http/pprof" // 自动注册 /debug/pprof 路由
)
fu...
发布日期:
2025-11-20
分类:
Go
浏览量:
17
MCP是一种开放协议,它标准化了应用程序如何向LLM提供上下文。把MCP想象成人工智能应用程序的USB-C端口。正如USB-C提供了一种将您的设备连接到各种外围设备和附件的标准化方式,MCP提供了一种将人工智能模型连接到不同数据源和工具的标准化方式。
MCP分服务器和客户端:
- 服务器提供MCP定义的功能,主要包括工具(tool)、资源(resource)、提示(prompt)和采样(sampling)。
- 客户端则充当服务器和LLM之前通信的桥梁,告知LLM有哪些MCP功能可用,调用MCP服务器提供的获取返回再提交给LLM。
## 概念
### tool 工具
工具让LLM可以通过用户提供的服务器执行操作,通过工具LLM可以和外部系统交互。
比如需要获取实时新闻,天气等,LLM是不知道这些实时数据的,就可以通过工具来获取。
### resource 资源
资源是指可以公开给LLM的数据和内容,可以是任意类型的数据。
比如:
- 文件内容
- 图像内容
- 日志文件
- 等等......
资源是用URI来标识...
发布日期:
2025-06-22
分类:
后端
浏览量:
2419
有些场景,比如用户充值、注册等需要比较精确的数据时,可以在服务端通过GA提供的数据收集接口上报数据。
**1. 获取api密钥**
GA管理后台 => 管理 => 媒体和资源设置 => 数据收集和修改 => 数据流
在数据流里面选择一个项目,点进去可以看到`Measurement Protocol API 密钥`,点进去就可以管理api密钥了。
**2. POST数据**
把数据提交到`https://www.google-analytics.com/mp/collect?measurement_id=${measurement_id}&api_secret=${api_secret}`
`measurement_id`:数据流的衡量ID,在设置里面的数据流可以看到,类似`G-XXXXXXXXXX`的字符串
`api_secret`: 上一步获取的api密钥
**3. 调试**
把第二部里面的url改成`/debug/mp/collect`,提交数据有错误,会返回错误信息
**4. 文档链接**
发送事件:https:...
发布日期:
2025-04-22
分类:
后端
浏览量:
4823
GORM模型查询生成器生成的模型代码,创建数据的时候如果time.Time类型的属性未赋值,`create`将会报错:
`incorrect datetime value '0000-0-0 00:00:00' for column`
有几种方法能让GORM忽略未赋值的time字段,使用数据库默认的NULL:
- 使用`Omit`忽略指定的未赋值字段
- 模型数据类型`time.Time`改成`*time.Time`
- 把模型gorm的tag改成`gorm:"default:null"`
- 把模型数量类型改成`sql.NullTime`,新加模型赋值时需要赋值`sql.NullTime{}`...
发布日期:
2025-02-24
分类:
Go
浏览量:
6156
桌面版的Google地球没有代理设置,设置系统的全局代理经测试只有偶尔会有效,大部分时候无效,再一个全局代理也很不方便,会影响到所有流量。
本文的目的是让Google地球每次启动后都能走代理。
需要利用一个第三方软件:proxychains4,github仓库地址:https://github.com/rofl0r/proxychains-ng
## 1. 安装
```shell
sudo apt install proxychains4
```
## 2. 修改配置文件
修改配置文件`sudo vim /etc/proxychains4.conf`,找到最底部的`[ProxyList]`配置段,加上自己的代理地址,比如我的:
```shell
[ProxyList]
# add proxy here ...
socks5 127.0.0.1 1080
```
## 3. 为了方便,新加一个启动图标
在桌面添加一个`.desktop`启动图标文件。
```shell
[Desktop Entry]
Versi...
发布日期:
2025-02-14
分类:
其他
浏览量:
4107
# 互联网产品运营中常用的关键指标(英文简称及计算方法)
在互联网产品运营中,常用的关键指标(通常用英文简称表示)可以帮助团队评估产品的表现、用户行为、增长潜力和盈利能力。以下是一些常见的指标及其英文简称和计算方法:
---
## 1. 用户增长相关指标
- **DAU(Daily Active Users)**:日活跃用户数。
- **计算方法**:统计一天内登录或使用产品的独立用户数(去重)。
- **MAU(Monthly Active Users)**:月活跃用户数。
- **计算方法**:统计一个月内登录或使用产品的独立用户数(去重)。
- **DNU(Daily New Users)**:日新增用户数。
- **计算方法**:统计一天内首次使用产品的独立用户数(去重)。
- **WAU(Weekly Active Users)**:周活跃用户数。
- **计算方法**:统计一周内登录或使用产品的独立用户数(去重)。
- **CAC(Customer Acquisition Cost)**...
发布日期:
2025-01-16
分类:
其他
浏览量:
3216
v17.1.10使用方法:使用下载的文件替换掉原文件。链接:https://pan.quark.cn/s/08ea43f09c1c提取码:ifDU v17.0.131) 安装2) 用Crack目录的的文件替换原文件3) {可选} 移除注册表项 : HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium\Registration17X??\含原版安装包文件:链接:https://pan.quark.cn/s/c8beef0a69a4提取码:pNr1...
发布日期:
2024-08-23
分类:
其他
浏览量:
7230
快钱官方没有提供完整的SDK,仅有一些demo,要集成进现有go mod项目要花一点时间集成和测试,记录一下签名验证的关键点,支付方式是SDK网关支付和H5支付。
快钱会提供三个密钥文件:
- 商户应用私钥文件,`pfx`格式,有密码,用于签名数据。
- ssl证书,`pfx`格式,有密码,用于`https`双向认证,快钱的证书测试下来会报错,所以用`openssl`提取了证书和密钥使用,下面有写。
- 快钱公钥证书,用于加/解密和验证数据。
场景是把以上证书内容`base64`编码成字符串存数据库,提供页面UI配置。
## 1、支付下单数据签名
按照文档里面的字段顺序排序字段,拼接成查询字符串,用商户私钥加签。
```go
//SignData data 拼接的待签名字符串
func SignData(data string) (string, error) {
// merchantKey私钥
certBytes, err := base64.StdEncoding.DecodeString(merchantKey)
i...
发布日期:
2024-08-09
分类:
后端
浏览量:
6502