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    分类: 后端    浏览量: 96  
有些场景,比如用户充值、注册等需要比较精确的数据时,可以在服务端通过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    分类: 后端    浏览量: 2512  
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    浏览量: 4087  
快钱官方没有提供完整的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    分类: 后端    浏览量: 6127  
**知识点:** - udp 协议是无连接的协议,发送数据前不需要先和数据接收方建立连接。 - 每个 UDP socket 都有一个接收缓冲区,没有发送缓冲区,从概念上来说就是只要有数据就发,不管对方是否可以正确接收,所以不缓冲,不需要发送缓冲区。 - 当socket 接收缓冲区满时,新来的数据报无法进入接收缓冲区,此数据报就被丢弃。UDP是没有流量控制的;快的发送者可以很容易地就淹没慢的接收者,导致接收方的 UDP 丢弃数据报。 - UDP每个数据包之间有界限,每次接收都是一个完整的数据包,即使被下层的ip协议分片传输(udp包大于ip包的最大传输单元)。 - ip分片传输,某个片丢失,那么整个udp包都会被丢弃,上层应用不知道udp包被丢弃。 ## 单播 单播就是点对点通信,用于两个主机之间端对端的通信。 **服务端主要函数:** - `net.ListenUDP`: 监听`udp`端口 - `ReadFromUDP`: 读取连接数据 - `WriteToUDP`: 写入数据 由于udp是无连接的协议,所以服务端读和写都要...
 发布日期: 2024-07-31    分类: Go    浏览量: 5069  
> 原文 [Guide](https://github.com/golang/example/blob/master/slog-handler-guide/README.md) 标准库的 `log/slog` 包采用两部分设计。由 `Logger` 类型实现的“前端”收集经过结构化的日志信息(如消息、级别和属性),并将它们传递给“后端”,即 `Handler` 接口的实现。该软件包带有两个内置处理程序,通常应该足够了。但是您可能需要编写自己的处理程序,这并不总是那么简单。本指南随时为您提供帮助。 # 记录器(logger)及其处理程序(handler) 编写处理程序需要了解 `Logger` 和 `Handler` 类型如何协同工作。 每个记录器都包含一个处理程序。某些 `Logger` 方法会执行一些预备工作,例如将键值对收集到 `Attrs` 中,然后调用一个或多个 `Handler` 方法。这些 `Logger` 方法是 `With`、`WithGroup` 和输出方法。 输出方法履行记录器的主要作用:生成日志输出。下面是对输出方法的调用: `...
 发布日期: 2024-07-17    分类: 后端    浏览量: 938  
使用Golang读取pfx格式证书里面的私钥,用RSA算法签名数据。 代码如下: ```go package main import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha256" "encoding/base64" "log" "os" pkcs12 "software.sslmate.com/src/go-pkcs12" ) func main() { rsaSingFromPfxKey() } func rsaSingFromPfxKey() { data := "测试数据" // 读取pfx私钥 certPath := "./20190801.3300000002925831.pfx" certBytes, err := os.ReadFile(certPath) if err != nil { log.Fatal(err) } pkey, _, _ := pkcs12.Decode(certBytes,...
 发布日期: 2024-04-30    分类: 后端    浏览量: 1136  
```nginx server { location / { proxy_buffering off; proxy_http_version 1.1; proxy_read_timeout 36000s; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; if ($subdomain = "plex") { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; ...
 发布日期: 2024-04-03    分类: 后端    浏览量: 1421  
可观测性主要包括三个方面:追踪(traces)、指标(metrics)和日志(logs)。 OpenTelemetry 的指标功能还是测试状态,没有实现日志的功能,日志可以用其他流行的日志库记录,然后收集到类似ELK的日志系统里面。 追踪数据存储后端是用`jaeger`,指标数据存储后端是用`prometheus`。 前面几个文章实现的是追踪,本文主要讲一下指标。 指标数据直接用`prometheus`的go客户端生成也是一样的,不一定需要用`OpenTelemetry`提供的库。 `OpenTelemetry`的方式是先创建`exporter`和`provider`,之后就可以生成指标了,`main.go`: ```go import ( "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "go.opentelemetry.io/otel/attribute" p...
 发布日期: 2023-05-17    分类: Go    浏览量: 2041  
[上一篇文章](https://360us.net/article/87.html)用的是http协议做服务间的调用协议,这篇改成gRPC。 首先安装包`otelgrpc`: ```shell go get go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc ``` 创建一个`api`目录,创建`rpc.proto`文件: ```protobuf syntax = "proto3"; package api; // advanced目录执行编译: protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative api/rpc.proto option go_package ="github.com/ilaziness/gopkg/opentelemetry/as/api"; service AsRp...
 发布日期: 2023-05-14    分类: Go    浏览量: 1483