Go语言技术文章
-
控制日志字段、Trace 采样和指标标签基数,降低观测系统对热路径的开销。509 收藏 -
讲解 Go 服务如何用 slog 记录 request_id、trace_id、错误类型和业务字段,让日志可以直接支撑线上排查。503 收藏 -
Golang · Go问答 | 3小时前 | go · 性能 · bufio · 日志处理 · 错误排查 · 分块读取 Go bufio.Scanner token too long Scanner.Buffer 大日志行
Go 用 bufio.Scanner 逐行读取日志时,遇到超长 JSON 行会返回 token too long。本文用可复现实验比较默认上限、Scanner.Buffer 和 bufio.Reader 分块读取的内存与吞吐边界,给出线上日志处理的选择方法。501 收藏 -
本文用 Go 泛型实现切片保序去重,并进一步扩展到结构体按字段去重,讲清 comparable 约束、seen map、首条保留和常见边界处理。501 收藏 -
结构体指针赋值后字段没变,是因为误将指针变量重新赋值(如p=&User{...}),未解引用修改原内存;正确做法是用p.Name="new"或(*p).Name="new"。501 收藏 -
Go的Benchmark函数须以Benchmark开头、接收*testing.B参数,并在b.N循环中执行逻辑;框架自动调优b.N使总耗时≥1秒,需用b.ResetTimer()分离初始化开销。501 收藏 -
Go无内置图结构,需按需组合基础类型实现邻接表、邻接矩阵或结构体封装;DFS/BFS须手动管理visited状态;Dijkstra需防溢出与负权;并发优化应重workerpool而非盲目goroutine。501 收藏 -
首先定义任务结构体并通过channel传递任务,创建带缓冲的channel存放任务;然后启动多个工作协程从channel中并发读取并执行任务,直至channel关闭,实现高效的任务分发与调度。501 收藏 -
结论:用reflect.Value.Interface()再类型断言比反复调用reflect.Value方法快,但仍比原生访问慢5–7倍;重复reflect.ValueOf()+Interface()会叠加开销。501 收藏 -
Go敏感词过滤核心是防漏、防错、高并发稳定;DFA(前缀树)最实用,但需注意isEnd赋值位置、区分isEnd/isPrefix、用rune遍历、支持多匹配回溯、初始化childrenmap、中文替换用[]rune计数。501 收藏 -
购物车数据应存Redis而非Session;Session仅存user_id用于身份识别,购物车用cart:{user_id}为key存RedisHash结构,支持原子增删、跨设备合并与扩容。501 收藏 -
Go中HTTP中间件通过func(http.Handler)http.Handler实现链式装饰,需用http.HandlerFunc转换并调用next.ServeHTTP;结构体嵌入适合带状态配置的场景,函数包装适用于单一职责,二者均须确保上下文与错误正确传递。501 收藏 -
必须显式调用e.Start()或e.StartServer()启动服务,否则仅监听端口却无响应;路径匹配严格区分大小写和斜杠;结构体字段须大写并加jsontag才能序列化;必须启用middleware.Recover()捕获panic。500 收藏 -
LeetCodeGo环境只调用函数不运行main,本地调试需严格匹配函数签名、参数类型、返回类型及初始化逻辑,否则提交时因反射调用失败或未初始化panic。500 收藏 -
Go语言通过os和syscall包支持文件权限操作,主要适用于Unix系统。使用os.Stat()获取文件权限,os.Chmod()以八进制模式修改权限(如0644);os.Chown()更改所有者和组(需root权限);os.Chtimes()设置访问和修改时间;os.OpenFile()创建文件时指定权限(受umask影响)。Windows上部分功能受限,高级特性需依赖syscall或外部命令。500 收藏