性能
已收录文章:31篇
-
Golang · Go问答 | 2个月前 | go · 性能 · bufio · 错误排查 · 分块读取 Go bufio.Scanner token too long Scanner.Buffer 大日志行Go 用 bufio.Scanner 逐行读取日志时,遇到超长 JSON 行会返回 token too long。本文用可复现实验比较默认上限、Scanner.Buffer 和 bufio.Reader 分块读取的内存与吞吐边界,给出线上日志处理的选择方法。501 收藏
-
搜索框连续输入时,较早发出的慢请求可能晚于新请求返回并覆盖结果。用 AbortController 取消上一轮 fetch,再用请求序号做最后一道验收,就能同时降低无效请求和旧数据回写风险。497 收藏
-
SPLFixedArray 适合固定长度、按整数下标顺序消费的批处理缓存,但不适合需要稀疏键、频繁扩容或复杂关联字段的场景。本文用可运行示例核对输入、校验、顺序读取和内存观测边界。477 收藏
-
Go 服务的正则匹配突然占满 CPU,常见原因不是规则本身,而是每次请求都重新编译 regexp。本文用基线、pprof 和缓存编译结果的对比,说明如何定位并控制这类热路径开销。467 收藏
-
Golang · Go问答 | 2个月前 | go · 性能 · kubernetes · 运行时 · Kubernetes GOMAXPROCS Go问答 Go 1.25 SetDefaultGOMAXPROCS 容器CPU配额同一份 Go 服务部署到 Kubernetes 后,节点有 16 个核,Pod 却只限 2 个核,手动设置的 GOMAXPROCS 还可能在扩缩容后失真。Go 1.25 已让运行时默认读取容器 CPU 配额,本文用一个可复现的小程序说明如何检查旧配置、恢复运行时默认值,并给出上线前的边界清单。467 收藏
-
Golang · Go教程 | 1个月前 | 内存 · 标准库 · go · 性能 · bytes.Buffer · go bytes.Buffer Buffer.Available Buffer.Grow ErrTooLargeGo bytes.Buffer 的 Available 能告诉你当前还能直接写入多少字节,但它不是总容量,也不能替代 Grow 的容量规划。本文用批量拼接 HTTP 响应的场景,说明 Available、AvailableBuffer、Append、Grow 与 ErrTooLarge 的边界,并给出可回归的检查方法。465 收藏
-
文章 · java教程 | 1个月前 | Java · 正则表达式 · 性能 · Stream · predicate Java教程 Java Pattern.asMatchPredicate Java正则 Stream过滤Pattern.asMatchPredicate 能把已编译正则直接变成 Predicate,适合复用在 Stream.filter 和输入校验中。本文拆开 matches 的完整匹配语义、find 的差异与重复编译成本。464 收藏
-
Golang · Go教程 | 2个月前 | 容器 · go · 性能 · kubernetes · 运行时 · Kubernetes GOMAXPROCS cgroup Go 1.25 容器 CPU 限额Go 1.25 开始,Linux 容器中的默认 GOMAXPROCS 会参考 cgroup CPU 限额,并在限额变化时自动更新。本文用最小示例说明旧代码的风险、GODEBUG 兼容开关、runtime.SetDefaultGOMAXPROCS 和上线前检查。438 收藏
-
Golang · Go问答 | 2个月前 | 错误处理 · go · 性能 · bytes.Buffer · Go 1.26 · io.EOF 版本迁移 Go 1.26 bytes.Buffer.Peek 缓冲区预览Go 1.26 为 bytes.Buffer 增加 Peek 方法,可以在不推进读取位置的前提下预览前 N 个字节。本文对比 Next 和 Peek 的行为,说明 io.EOF、切片有效期、旧工具链兼容与测试边界。428 收藏
-
Go 服务返回静态 JSON 或文章详情时,ETag 可以让浏览器先带 If-None-Match 询问资源是否变化,未变化就返回 304,减少响应体传输。本文用 net/http 写一个可运行的缓存协商示例,说明哈希生成、条件判断、响应头顺序和测试边界。395 收藏
-
用 Python 3.12+ 的 sys.monitoring 追踪函数调用,讲清工具 ID、事件掩码、回调签名、DISABLE 优化与旧版本回退边界。386 收藏
-
Go 中用 buffered channel 或 golang.org/x/sync/semaphore 限制并发都能工作,但取消传播、加权资源和任务排队方式不同。本文从一个批量抓取场景出发,对比两种实现的边界,并给出选择与验收清单。384 收藏