LLM 原理 - 输入预处理 前言最近在学习大模型的实现原理,为了更好地理解整个流程,我把学习中的关键概念和实现细节整理成了笔记。一方面帮助自己梳理思路、加深印象,另一方面也作为日后复习和查阅的基础。内容会按照模型的实际处理流程展开,希望能以清晰易懂的方式记录大模型的核心机制。 大模型原理概述大模型最经典的架构图来自《Attention Is All You Need》,从这张图可以看到 Transformer 的基础结构是由 2025-11-26 AI 工具与技术 > 大模型 #AI #大模型 #LLM原理
Gin - 自定义中间件 前言在 Gin 中实现一个中间件是一件非常轻量的事情,几乎没有“生命周期钩子”这种复杂概念,也不需要学习多少新 API。只需要返回一个 gin.HandlerFunc 类型的函数即可。 得益于 Gin 的“洋葱模型”执行链路机制,我们可以利用 ctx.Abort 中断请求,也可以利用 ctx.Next 控制中间件在请求前/请求后两个阶段执行逻辑,从而轻松实现日志、鉴权、限流等能力。 本篇 2025-11-25 后端编程相关 > go > gin #Go #Gin框架
Gin - 使用中间件 前言在第一篇 Gin - Hello World 中,我们提到过:gin.Default() 本质上就是帮你提前挂载了两个默认中间件(Logger 和 Recovery)。这一篇我们就动手来体验一下 手动注册中间件,顺便更清楚地理解 Logger 和 Recovery 的实现原理。 使用中间件Gin 的中间件机制本质上是一个典型的洋葱模型(pipeline)处理结构。每一个中间件都是一个 gin. 2025-11-24 后端编程相关 > go > gin #Go #Gin框架
Gin - 自定义验证器 前言在 Gin 中实现一个自定义验证器,本质上就是 实现一个函数 + 注册它 + 在结构体标签里使用它。Validator 底层用的是 go-playground/validator/v10,所以整个流程也完全遵循该库的规则。 1. 实现一个验证器函数要写一个验证器,说白了就是写一个回调函数,这个函数最终会被 Gin 的 Validator 调用。它的签名非常固定: 1func(fl valida 2025-11-23 后端编程相关 > go > gin #Go #Gin框架
Gin - dive 标签用法笔记 介绍dive 是 Gin 依赖的 go-playground/validator 库中专门用于切片(slice)/数组的校验标签,作用是「穿透切片外层,对切片内的每个元素执行后续校验规则」。 一、核心场景:切片必传 + 元素规则校验场景 1:仅要求「切片必传 + 每个元素长度 ≥1」需求拆解: 必传 tags 字段(不允许 JSON 中缺失该字段,即切片不能为 nil) 切片内每个 ta 2025-11-23 后端编程相关 > go > gin #Go #Gin框架
Gin - 验证请求参数 结构体验证器Gin 的结构体验证器是基于 go-playground/validator/v10 实现的。这个库本身非常强大,内置了大量常用的验证器,例如: 网络相关字段:ip, ipv4, ipv6, cidr, uri, http_url 等 字符串类验证:contains, startswith, lowercase, uppercase, len=X, min, ma 2025-11-23 后端编程相关 > go > gin #Go #Gin框架
群晖 DSM 更新后 Cloudflare DDNS 失效的排查记录 前言前两天我的群晖 NAS 提示 DSM 有新版本更新。由于已经好久没更新,一瞄发行说明发现新 feature 和 bugfix 还挺多,想着时间也不短了,那就顺手更一下吧。 系统更新得倒是很顺利,更新后啥异常也没发现,内网/外网访问都正常,我也就没再管。 直到昨晚事情才开始不对:我突然发现通过 DDNS 完全无法访问 NAS 上的任何应用。不过当时家里网络卡得要命,我也没太当回事,只以 2025-11-22 服务器运维 > 群辉Nas #Nas #计算机网络 #DDNS
Gin - 参数绑定到结构体 绑定到结构体Go 的结构体支持通过标签(tag) 定义解析规则,Gin 框架会依据这些标签自动完成请求数据到结构体的绑定。例如 Name string "form:name" 会指定该字段对应请求中的 name 参数(不同绑定类型对 tag 的解析逻辑有差异,后续会详细说明)。 Gin 中核心绑定方法分为两大类别:ctx.Bind 系列和 ctx.ShouldBind 系列,它 2025-11-21 后端编程相关 > go > gin #Go #Gin框架
Gin - 获取 POST 请求参数 获取 POST 参数在 Gin 中,POST 请求的 Body 可以包含多种格式,不同格式对应不同的读取方式。常见的包括: application/x-www-form-urlencoded(form 表单) multipart/form-data(文件上传) application/json(JSON) 原始字节流(raw body) 读取 form body当请求使用 applicatio 2025-11-20 后端编程相关 > go > gin #Go #Gin框架
Gin - 获取 GET 请求参数 请求参数在 Web 开发中,GET 请求参数通常有两类: 路径参数(Path Parameter):参数写在 URL 路径上,例如 /user/123 查询参数(Query Parameter):在 ? 后面的键值对,例如 /search?name=tom&age=20 路径请求参数路径参数写在 URL 的路径结构中,而不是 ? 后。 特点: 用于表示资源层级关系,例如:/user/ 2025-11-20 后端编程相关 > go > gin #Go #Gin框架