共 106 篇文章
Go 1.26 栈内存优化:深入理解 slice 的栈分配与逃逸
Go 语言以高效的垃圾回收(GC)著称,但在追求极致性能的路上,内存分配始终是绕不开的话题。2026年2月发布的 Go 1.26 带来了一个重要的编译器优化:现在可以在更多情况下将 slice 的后备存储分配在栈上,而不是堆上。
这意味着当你在函数内创建一个 slice 时,如果它不会逃逸出函数作用域,Go 1.26 会直接把它放在栈上,无需经过堆分配。这不仅减少了 GC 压力,还提升了缓存局部性,是一个"免费"的性能提升。本文将深入讲解栈与堆的区别、逃逸分析的原理,以及如何写出更高效的 Go 代码。
MCP 完全指南:从协议原理到 Go 服务开发实战
MCP(Model Context Protocol)是 AI 与大模型交互的桥梁,让 AI 能够调用外部工具和资源。本文详细介绍 MCP 的核心概念、三种传输模式的区别,以及如何用 Go 开发自己的 MCP 服务。
MCP(Model Context Protocol,模型上下文协议)是一个标准化协议,旨在增强大语言模型(LLM)与外部应用之间的交互。
Next.js 核心渲染模式解析:SSG、ISR、SSR、CSR
在 Next.js 开发中,选择合适的渲染模式是提升应用性能的关键。本文详细解析 Next.js 的四种核心渲染模式。
什么是渲染模式?
渲染模式决定了页面何时生成 HTML以及由谁来生成。不同的模式在性能、实时性和 SEO 方面各有优劣。
向量数据库检索原理:从 Embedding 到最近邻搜索
在 AI 时代,向量数据库是 RAG(检索增强生成)系统的核心基础设施。但它究竟是如何工作的?为什么能实现"语义搜索"而非传统的关键词匹配?本文用通俗的方式解释其背后的原理。
基于 Elasticsearch 标签的推荐系统设计
背景
在内容平台中,如何让用户快速找到感兴趣的知识是一个核心问题。基于标签的推荐是一种简单而有效的方案——通过分析用户的兴趣标签,与知识内容的标签进行匹配,实现个性化的内容推荐。Elasticsearch 凭借强大的倒排索引和灵活的查询能力,成为构建标签推荐系统的理想选择。本文将介绍一种基于 Elasticsearch 标签的推荐系统设计方案,涵盖标签匹配、用户画像构建、以及推荐算法的实现。
Go 并发进阶:WaitGroup vs ErrGroup 详解
Go 语言提供了丰富的并发原语,本文详细介绍 sync.WaitGroup 和 golang.org/x/sync/errgroup 的区别和使用场景。
简介
Go 的并发模型以 goroutine 和 channel 为核心,但在实际项目中,我们经常需要协调多个 goroutine 的执行。这就涉及到两组常用的工具:
- sync.WaitGroup:Go 标准库,简单同步
- errgroup:Go 扩展库,功能更强大
基于 LangChain 的结构化输出实践
在 AI 应用开发中,让大模型稳定地输出我们想要的格式是一个常见需求。本文介绍如何使用 LangChain 的 Golang 版本 langchaingo 实现 Prompt Template,并结合主流 LLM 的 JSON Mode 实现可靠的结构化输出。
什么是 Prompt Template
Prompt Template 是将提示词模板化的技术,通过占位符动态注入变量,让同一套提示词可以处理不同输入。类似于 Web 开发中的模板引擎。
MySQL vs Elasticsearch:使用场景深度解析
在做系统设计时,数据库选型是一个关键决策。MySQL 和 Elasticsearch 是两种不同定位的存储方案,今天结合实际项目经验,系统性地对比一下它们的适用场景。
MySQL 和 Elasticsearch 的定位差异
| 特性 | MySQL | Elasticsearch |
|---|---|---|
| 定位 | 关系型数据库 | 分布式搜索和分析引擎 |
| 数据结构 | 行存储,B+树索引 | 倒排索引,文档型 |
| 擅长 | 事务、关联查询、结构化数据 | 全文搜索、聚合分析、海量数据 |
| 数据模型 | Table(表) | Index(索引),Document(文档) |
gRPC HTTP Transcoding 注解详解
背景问题
gRPC 以其高效的二进制序列化(Protocol Buffers)和强大的流式通信能力,已成为微服务间通信的主流选择。但在实际项目中,我们常常面临一个尴尬的局面:
- 内部服务用 gRPC 通信,高性能
- 对外开放 API 需要提供 HTTP/RESTful 接口,方便前端和其他语言调用
- 维护两套服务成本太高
有没有一种方式,可以让 同一个 gRPC 服务同时支持 gRPC 协议和 HTTP/RESTful 调用?
这就是 gRPC HTTP Transcoding 要解决的问题。
DDD 分层架构的依赖关系
DDD(领域驱动设计)架构中,Infrastructure 层可以依赖 Domain 层吗?
答案是:可以,而且在现代 DDD 架构实践中,Infrastructure 依赖 Domain 是推荐的做法。
但这需要区分两种不同的分层架构模型来理解。