go

stark张宇3 小时前
后端·go
Go语言runtime全景图:从编译到GC,带你彻底吃透Go的底层血脉runtime 就是 Go 语言运行时,是 Go 自带的一套 C+Go 写的底层库,不是操作系统,介于你的 Go 业务代码和操作系统内核之间。 我们写的 Go 代码,编译之后会把 runtime 打包进可执行文件,程序跑起来时 runtime 就在后台工作。
名字还没想好☜6 小时前
开发语言·后端·算法·golang·go
Go 用 slices/maps 标准库泛型函数:告别手写 Contains、Sort、去重(Go 1.21)你有没有在每个 Go 项目里都复制粘贴过一份 sliceContains、sortByField、uniqueStrings 的工具函数?Go 泛型落地前,这些代码只能靠手写,一个项目一份,还容易写错。从 Go 1.21 开始,标准库正式收纳了 slices 和 maps 两个泛型包,把这些高频操作一次性补齐。这篇就把最常用的函数过一遍,顺便讲清楚几个容易踩的坑。
运维开发笔记1 天前
go
5.2 Go 数组进阶学习笔记(多维、排序、搜索)多维数组是"数组的数组",Go 通过 [行][列] 语法定义:执行结果:要点:用嵌套 range 遍历多维数组更简洁:
newerp1 天前
后端·程序员·go
Redis 操作与缓存策略Redis 是高性能内存键值存储,在 Web 架构中承担缓存、分布式锁、限流、消息队列等多重角色。Go 生态中主流的 Redis 客户端是 github.com/redis/go-redis/v9。
newerp1 天前
后端·程序员·go
GORM ORM 基础GORM 是 Go 生态中最流行的 ORM 框架。它的设计哲学是:用 Go 结构体描述数据库表,用方法链表达查询逻辑,让开发者用面向对象的方式操作数据库,同时保留逃生通道(Raw SQL)。
newerp1 天前
后端·程序员·go
CRUD 操作与预处理语句CRUD(Create/Read/Update/Delete)是数据库操作的基本功。在 database/sql 体系下,除了直接拼 SQL 字符串,还有**预处理语句(Prepared Statement)**这一利器。预处理将 SQL 模板和参数分离,带来三个好处:
程序员爱钓鱼2 天前
后端·google·go
Go 编程实战:闭包 Closure——函数如何记住外部变量上一篇我们学习了匿名函数 Anonymous Function,知道函数不仅可以拥有名字,也可以直接写成:
橘bird2 天前
go
Go 语言学习教程 万字精讲(新手完整版)本文档是一份面向零基础/初学者的 Go 语言系统学习资料。从环境搭建开始,逐步覆盖基础语法、函数、复合数据类型、指针、结构体、接口、错误处理、包管理、并发编程、标准库、测试、泛型等全部核心主题,并配有大量可运行的代码示例(标注为”完整可运行程序“的代码块可以直接复制运行),最后附一个综合实战项目和常见坑清单。
用户330144867632 天前
go
08. mcentral:中心缓存的 span 管理摘要:mcentral 是 TCMalloc 内存分配器的中心缓存层,作为 mcache(线程缓存)和 mheap(全局堆)之间的桥梁。它通过 partial[2]/full[2] 双缓冲设计实现零数据搬移的角色互换,采用四级查找策略(partialSwept → partialUnswept → fullUnswept → grow)高效分配 span,并通过 spanBudget=100 机制平衡清扫开销与空间浪费。mcentral 的核心价值在于为同 size class 的所有 P 提供共享的 s
用户330144867632 天前
go
07. mcache.refill:缓存补充与 span 归还摘要:本文深入剖析 Go 语言内存管理中 mcache 的 refill 机制,这是连接本地无锁分配与中心化 span 管理的关键桥梁。当 mcache 中的 span 完全分配完毕时,refill 负责将旧 span 归还给 mcentral 并获取新 span。文章详细讲解了触发条件、完整流程、sweepgen +3 标记、allocCountBeforeCache 跨代统计、heapLive 乐观更新策略以及 mcache 的刷新机制(prepareForSweep 与 releaseAll)。理解
程序员爱钓鱼3 天前
后端·面试·go
Go 编程实战:匿名函数 Anonymous Function——没有名字的函数与灵活回调上一篇我们学习了 Go 中的函数,掌握了参数、返回值、多返回值、可变参数、函数作为参数以及 defer 等知识。普通函数通常都有一个名字:
用户330144867633 天前
go
03. Size Class 分级机制8 字节到 32KB 的对象,只需要 67 个"规格"就能几乎零浪费地分配——本文拆解 size class 的约束、查表算法与生成器
用户330144867634 天前
go
04. mallocgc:分配总入口mallocgc 是 Go 运行时内存分配的唯一入口。所有用户态分配——new(T)、make([]T, n)、逃逸到堆的局部变量——最终都调到这里。
程序员爱钓鱼4 天前
后端·面试·go
Go 编程实战:函数 Function——参数、返回值与代码复用上一篇我们学习了指针 Pointer,理解了变量地址、& 取地址、* 解引用以及函数参数的值传递。实际上前面的代码中,我们已经大量使用了函数,例如:
名字还没想好☜4 天前
开发语言·后端·golang·go·迭代器
Go 1.23 range-over-func 迭代器实战:自定义可迭代类型、提前退出与惰性求值在 Go 1.23 之前,想让自己的类型支持 for range,你要么把数据全塞进 slice 返回(内存全量拷贝),要么暴露一个 Next() (T, bool) 的手写迭代器(调用方要写一堆样板)。前者对大数据流不友好,后者不能用 for range 语法糖。
赫媒派4 天前
后端·go·敏捷开发
Go 1.27 来了:泛型方法补齐,JSON 提速不踩坑2026 年 8 月 19 日,Go 1.27 正式发布。我打开官方 release notes,看到的不只是语言能力的补齐,更是一次标准库的现代化大动作。作为每半年一个 major 版本的稳定节奏,这次更新不仅是语言能力的补齐,更是一次标准库的现代化大动作。对于我们这些每天在处理高并发、深埋内存泄漏问题的后端工程师来说,Go 1.27 带来的泛型方法增强、JSON 性能跃迁以及后量子加密支持,不仅仅是版本的数字跳动,更是生产环境稳定性与可观测性的实质性提升。
小满zs5 天前
后端·go
Go语言第九章(错误处理)Go 没有 try / catch。日常约定是:本文用「九九乘法表」同一个业务场景,对比这两种写法的差别。
程序员爱钓鱼5 天前
后端·面试·go
Go 编程实战:指针 Pointer——理解地址、取址与解引用上一篇我们学习了 Map,到这里已经接触了数组、Slice、Map 等常用数据结构。在继续学习函数之前,还有一个非常重要的基础概念必须掌握——指针 Pointer。 很多刚接触 Go 的开发者看到指针会觉得复杂,其实 Go 的指针相比 C/C++ 简单很多。Go 不支持复杂的指针运算,日常开发主要掌握三个概念即可:变量、内存地址、通过地址访问变量。 理解指针之后,后面学习函数参数、Struct、方法、接口以及并发编程都会更加容易。
Flynt5 天前
后端·go
Go 1.27 升了一波,泛型方法和 JSON v2 真香但有个坑昨天下午刷到 Go 官方博客更新了,1.27 正式发布。 我手上有个跑了两年的后端服务,用的 Go 1.25,一直没动过。看到 changelog 写着 "generic methods" 和 "encoding/json/v2",心想这俩要是能用上,代码能精简不少。趁着这两天没什么紧急需求,拉了个分支开始升。 整个过程比预想的顺利,但 json v2 那边还是踩了个小坑,记录一下。
用户125758524365 天前
后端·go·ai编程
对象存储 URL 为什么别到处拼:后台附件预览要验这一层对象存储 URL 不应该散落在各个业务接口里拼字符串。更稳的做法是把它收口成一个小函数:输入 storage 类型和数据库里的相对路径,输出浏览器能访问的 URL。业务层只管附件记录,别同时关心 CDN 域名、厂商前缀和本地路径。Agent 写文件上传接口时也一样,不能只看上传 API 返回 200,还要验 URL 生成边界、配置读回、权限兜底和最少一组测试。这个判断适合 Go 后台、附件预览、头像、导入导出文件链接;不适合替代私有桶签名、防盗链、大文件分片和跨区域容灾设计。