一个支持用户上传文件和 AI 分析的应用,真正需要保存的通常不止一份原始文件:用户上传的计划书、AI 生成的结果、外部获取的资料,最终都应该有统一的对象存储位置、元数据、权限和下载方式。
本文以一个 Go net/http + Vue 3 + PostgreSQL/MySQL 应用的实际实现为例,记录如何在保留本地存储回退能力的前提下接入 Cloudflare R2,并把 R2 配置和素材管理放进 Owner 管理后台。
Go + Vue 管理后台接入 Cloudflare R2:把上传、AI 生成和外部素材统一保存
Redis Stream Worker 并发失效:为什么任务只能一个一个执行
Redis Stream 的 XREADGROUP 配置了批量读取,并不代表业务处理会并发执行。一次实际排查中,Worker 的读取数量是 10,但消息处理函数仍在一个循环里同步调用,因此生成任务表现为“只能一个接一个执行”。修复后,单个 Worker 默认可以同时处理 4 个任务,并且并发上限可以通过环境变量调整。
Go 服务启动 panic:对象存储 400 不应该阻塞 API 启动
对象存储的临时故障不应该让整个 API 进程无法启动。本文记录一次 Go 服务启动时检查 S3 Bucket 收到 400 Bad Request、容器随后退出的真实排查过程,并给出一套适用于 S3 兼容存储的启动策略。
AI 生图显示 PROVIDER_SUBMISSION_UNKNOWN:真正失败在 R2 资产入库
任务状态显示 PROVIDER_SUBMISSION_UNKNOWN 时,不一定意味着模型服务没有返回结果。一次实际故障证明,供应商已经完成生图,失败发生在结果写入 R2 的最后一步。本文记录如何通过 Attempt 持久化数据还原真实数据流,并修正错误分类和凭据校验。
如何把编程问题沉淀成可复现的 Hexo 技术文章
**解决一个编程问题之后,最容易被忽略的工作,是把“我当时怎么试出来的”整理成下一次可以复用的知识。**如果文章只有最终代码,读者看不到排查路径;如果文章只有流水账,又很难快速定位根因。
本文以一个 Hexo 博客的实际维护场景为例,整理一套从问题记录到 Git 发布的工作流:先保留事实,再抽取根因,最后用构建和版本控制保证文章真的能发布。
Go + Vue 3 全栈实战:从任务 CRUD 到 Docker Compose 部署
用 Go + Vue 3 开发网站,真正费时间的通常不是写出第一个接口或页面,而是把数据库迁移、前后端联调、健康检查、容器构建和生产配置连成一套可重复的流程。
这篇教程会完成一条真实的全栈链路:Vue 3 页面通过类型化 API 客户端调用 Go 服务,Go 将数据写入 PostgreSQL,并通过 Docker Compose 同时管理 Web、API、数据库与 Redis。最后,我们会把同一套项目切换到生产形态并部署到服务器。
如果你只想尽快跑起来,可以直接使用我整理的开源模板:glosc-ai/template-go-vue3-docker。它自带任务 CRUD,不是一个只能看到空白首页的“目录模板”。下文所有命令和目录都基于该项目截至 2026 年 8 月 5 日的 main 分支。
极简美学与黄金比例:LiftKit 如何定义未来的 UI 开发
引言在 2026 年的前端设计领域,扁平化和拟物化的争论早已平息,取而代之的是对“算法美学”的追求。近期在开发者社区引起轰动的 LiftKit 框架,提出了一个极具挑战性的命题:“UI 中的一切都应派生自黄金比例”。这不仅是一个设计口...
从 C 语言生成的视角,看现代编译器架构的演进
引言:为什么在 2026 年我们依然关注 C 语言生成?尽管 Rust 和 Zig 等现代语言在底层开发领域突飞猛进,但 C 语言作为“通用中间语言”的地位在 2026 年依然不可撼动。无论是从更高级的领域特定语言(DSL)编译而来,...
GitHub 频繁宕机背后:云原生时代的单点故障风险与工程反思
引言:当“代码家园”陷入沉默2026 年 2 月 9 日,对于全球数千万开发者来说是焦虑的一天。作为全球最大的代码托管平台,GitHub 在不到 24 小时内连续发生了两次大规模宕机。从 Actions 自动化流水线的停摆到网页版的连...
浏览器内的 AI 革命:Transformers.js v4 与前端智能体架构深度解析
浏览器内的 AI 革命:Transformers.js v4 与前端智能体架构深度解析引言:当模型住进浏览器在之前的文章中,我们探讨了 2026 年后端 AI 架构的演进 以及 全自主 AI 智能体在垂直领域的应用。然而,一个一直被低...