RSS
菜单
社区成员个人主页
阿成员
DEV CN / 成员主页

阿青 · 社区话题账号

查看阿青 · 社区话题账号发布的技术文章、关注圈子与公开讨论。

0技术文章4关注圈子467圈内发布1关注者
COMMUNITY POSTS

交流圈发布内容

作者在不同技术圈子中的观点与讨论

1
# Golang

Go 缓存穿透、击穿、雪崩解决方案:布隆过滤器与互斥锁

穿透(查不存在的数据):请求直接打到 DB——布隆过滤器拦截不存在的 key、缓存空值(短 TTL);击穿(热点 key 过期瞬间高并发打 DB):互斥锁/分布式锁重建缓存、逻辑过期(永不过期 + 异步刷新)、热点 key 预热;雪崩(大量 key 同时过期/缓存宕机):过期时间加随机值分散、多级缓存(本地 + Redis)、缓存集群高可用(哨兵/集群)、限流降级保护 DB。原则:DB 是底线,缓存挂了服务也要能降级运行。

2
# Golang

Go 面试通关建议:项目深度、源码阅读与算法准备

① 基础要扎实:slice/map/defer/interface 原理能讲透,面试官最爱深挖;② 并发必须动手:能现场写 channel 生产者消费者、并发限流,能讲清 GMP 和 race;③ 会排查:演示 pprof 定位一次内存泄漏的完整思路;④ 项目要有深度:一个完整 Web 项目(架构、中间件、性能优化、踩坑)比三个 demo 强;⑤ 源码阅读:channel、map、Mutex 实现各读一遍能显著加分;⑥ 算法题:常见 2…

3
# Golang

Go 1.21/1.22/1.23 新特性盘点:循环变量、路由与迭代器

1.21:内置 min/max/clear 函数、slices/maps/cmp 标准泛型包、GOMAXPROCS 自动调整建议;1.22:for 循环变量每迭代独立(修复闭包捕获坑)、路由增强(net/http ServeMux 支持方法+通配符 GET /user/{id})、整数 range 遍历;1.23:迭代器(iter.Seq 自定义 range)、timer 改进。1.24(2025):泛型类型别名等。面试常问:循环变量语…

4
# Golang

Go 学习路线规划:从零基础到高级工程师分阶段指南

阶段一(2-4 周):语法基础——变量/流程/函数/结构体/接口,官方 Tour of Go;阶段二(2 周):并发——goroutine、channel、sync、context,动手写生产者消费者、并发爬虫;阶段三(2 周):工程化——go mod、错误处理、测试、pprof;阶段四(2-4 周):Web 实战——net/http 或 Gin 写完整项目(CRUD + 中间件 + 数据库 GORM);阶段五(持续):进阶——源码阅读…

5
# Golang

Go 面试高频题盘点:基础、并发、内存、工程全覆盖

基础:slice/map 底层与扩容、defer 执行顺序、string 不可变、interface 与 nil、类型断言、指针 vs 值;并发:goroutine 调度(GMP)、channel 关闭与死锁、数据竞争与 -race、sync 包(WaitGroup/Mutex/Once)、context 取消、泄漏排查;内存:GC 三色标记、逃逸分析、pprof;工程:错误处理(errors.Is/As)、go mod、单元测试/be…

6
# Golang

Go 线上问题排查流程:监控、日志、pprof 与链路追踪

流程:① 看监控告警(CPU/内存/延迟/错误率/QPS)定位异常面;② 看日志(分级、trace_id 串联、error 堆栈);③ 内存/CPU 高:pprof 抓取 profile/heap 分析热点与泄漏;④ 延迟高:链路追踪(Jaeger)找慢调用、看慢 SQL/下游超时;⑤ goroutine 数异常:pprof goroutine 查泄漏;⑥ 死锁/卡死:抓 goroutine 栈分析阻塞点;⑦ 定位后修复 + 补测试 +…

7
# Golang

Go 语言优缺点总结:什么时候该选 Go,什么时候不该

优点:① 编译快、部署简单(单二进制、无依赖)、性能高;② 并发模型一流(goroutine + channel,内存占用小);③ GC 自动管理内存,开发效率高;④ 语法简洁、工具链完善(gofmt/go vet/pprof);⑤ 标准库强大,云原生生态第一语言。缺点:① 泛型 1.18 才引入且有限制;② 错误处理冗长(无异常);③ 生态相对 Java/Python 小(GUI、AI 弱);④ GC 对极端低延迟场景有影响;⑤ 无函…

8
# Golang

Go 服务优雅停机实现:signal 监听、Shutdown 与资源清理

优雅停机:收到退出信号(SIGTERM/SIGINT)后停止接收新请求、处理完进行中的任务再退出。实现:① signal.Notify 监听 os.Interrupt/SIGTERM;② http.Server.Shutdown(ctx):带超时等待活跃连接完成;③ 关闭下游资源:DB 连接池、Redis、MQ consumer 先停止消费再关闭;④ goroutine 退出:context cancel 广播;⑤ 超时兜底:Shutd…

9
# Golang

Go 依赖注入怎么实现?手动注入与 wire 对比

Go 依赖注入方式:① 手动注入——构造函数传依赖(NewService(db, cache)),最简单推荐;② 接口注入——参数用接口(依赖抽象);③ 框架/容器——wire(Google 编译期注入,代码生成)、dig/uber-fx(运行时反射注入)。优缺点:手动注入显式清晰、易测试;wire 编译期检查、无反射开销但生成代码;dig 灵活但有反射开销、报错不直观。Go 社区倾向手动构造 + 接口(简单直白),大项目用 wire。

10
# Golang

Go 设计模式实战:单例、策略、选项模式与中间件实现

Go 用结构体 + 接口 + 函数实现设计模式:① 单例——sync.Once;② 工厂——构造函数返回接口;③ 策略——函数/接口注入(sort.Slice);④ 观察者——channel/回调;⑤ 装饰器/中间件——包装 Handler;⑥ 模板方法——嵌入 + 方法覆盖;⑦ 适配器——实现目标接口包装旧类型;⑧ 选项模式——Functional Options(可变参数函数设置配置,Rob Pike 风格);⑨ 发布订阅——cha…