Go 垃圾回收机制科普 + 实战调优
Go 的垃圾回收到底在忙什么 一篇讲人话的 GC 入门。文中所有 gctrace、基准测试、逃逸分析的输出,都是在 Go 1.26.3 / darwin-arm64 / Apple M4 上真实跑出来的,不是手写示意。 你大概率没写过一行跟 GC 有关的代码,但它一直在你的程序里干活。这篇文章想把三件事讲清楚: Go 的 GC 是怎么判断一个对象还有没有用的; 程序在跑、指针在变,它怎么保证不误杀; 什么时候你需要动手调它,怎么调。 1. 先问一句:为什么需要 GC在 C 里,内存要自己还: char *buf = malloc(1024);// ... 用 buf ...free(buf); 这行 free 写错位置,就是两类经典事故: 忘了写 → 内存泄漏。进程越跑越胖,最后被 OOM Killer 干掉。 写了两次,或者释放后还在用 → 野指针 / use-after-free。轻则数据错乱,重则可被利用成安全漏洞。 麻烦在于,一块内存”还有没有人用”,往往不是写 free 的那个函数能单独决定的——它可能被塞进了某个全局缓存...
代码质量与安全防护利器:SonarQube 实战指南与主流竞品横评
摘要:在日常软件开发与团队协作中,如何保证代码规范、减少潜在 Bug,并在构建阶段及早拦截安全漏洞?本文将带你全面了解代码质量扫描利器 SonarQube 的核心功能、支持语言及落地实战,并与 GitHub CodeQL、Snyk、Semgrep 等主流竞品进行深度横向对比,帮助你和团队挑选最适合的代码静态分析方案。 一、 为什么我们需要代码扫描工具?随着项目规模的扩大和团队人数的增加,代码质量的管控变得日益困难: 人工 Code Review 成本高且容易遗漏:重复的规范问题(如命名、空指针风险、未关闭的流)耗费大量审核精力。 技术债务(Technical Debt)难以量化:项目中到底有多少死代码、重复代码、过时 API? 安全漏洞滞后暴露:SQL 注入、XSS、敏感信息硬编码等问题往往到了测试阶段甚至上线后才被发现。 静态代码分析工具(Static Application Security Testing, SAST) 可以在不运行代码的前提下,通过解析语法树(AST)和数据流分析,自动扫描出代码中的缺陷与安全隐患。 二、 认识 SonarQube:功能与语...
ClickHouse 原理、应用场景与 MergeTree 引擎详解
前言ClickHouse 是一款面向大数据分析场景的列式数据库,尤其适合日志分析、行为统计、实时指标计算和多维度报表等 OLAP 场景。 本文将从以下几个方面介绍 ClickHouse: ClickHouse 是什么 ClickHouse 的底层数据结构 ClickHouse 为什么查询速度快 ClickHouse 的适用场景 ClickHouse 开发规范与注意事项 常见 MergeTree 系列存储引擎 ClickHouse、MySQL 与 TiDB 的区别 一、什么是 ClickHouseClickHouse 是由 Yandex 开发并开源的一款高性能、分布式、面向分析场景的列式数据库。 它能够对大规模数据进行快速搜索、聚合、过滤、排序和统计,主要应用于 OLAP,即联机分析处理场景。 ClickHouse 的核心特点1. 列式存储ClickHouse 按列存储数据,而不是像 MySQL InnoDB 一样按行存储。 查询时只读取需要使用的列,可以有效减少磁盘 I/O 和内存消耗。 2. 聚合性能高ClickHouse 非常擅长执行以下统计和聚合操作: ...
Protobuf 语法通关教程:写给后端开发者的实战指南(PHP / Go 双视角)
适合人群:会一门后端语言(PHP / Go / Java 都行),听说过 gRPC 但被 .proto 文件劝退过的人。读完你能得到:看懂任意 proto 文件、能自己写服务契约、知道怎么改 schema 不把生产搞挂。 目录 Protobuf 是什么:三分钟版 环境准备与第一个 .proto 文件骨架五个关键字(syntax / package / import / option / extend) 类型系统:标量、字段编号与默认值 复合结构:repeated / map / oneof / 嵌套 枚举 enum:规则与坑 import 进阶与 Well-Known Types service 与 rpc:四种调用模式 google.api.http:一份契约同时暴露 gRPC 和 REST Schema 演进规则:怎么改不把生产搞挂 proto2 vs proto3 速览 工程化:用 Buf 管理 proto 踩坑清单 10 条 参考资源 1. Protobuf 是什么:三...
我让 6 个大模型参加了 2025 高考数学:3 个满分,最低 94 分
如果把一整套高考数学卷交给当前主流大模型,并且禁止联网、禁止互相抄答案、只允许提交一次,它们能考多少分? 这一次,我没有问大模型几个零散的数学问题,而是认真布置了一间“AI 高考考场”。 统一试卷、统一规则、同时开考,甚至还安排了一个单独的模型担任监考官。 最终结果有些出乎意料: GPT-5.6:150 分 Opus 5:150 分 Kimi K3:150 分 Codex:143 分 Cursor Grok 4.5:141 分 GLM 5.2:94 分 同一张试卷,最高分与最低分相差了 56 分。 AI GAOKAO · 2025 当 6 个大模型走进高考数学考场 同一张试卷 · 禁止联网 · 禁止互抄 · 只准交卷一次 150 最高分 3 满分模型 56 最高最低分差 19 试题总数 一、先准备一张所有模型都能读懂的试卷本次使用的是 2025 年普通高等学校招生考试(新高考 I 卷)数学,适用地区包括山东、广东、湖南、湖北、河北、江苏、福建、浙江、河南、江西、安徽。 原始 PDF 不只是文字和公式,还包含表格、坐标图与立体几何图形。如果直接读取 PDF,部分模型可能...
一次线上 Nginx `malloc failed (12: Cannot allocate memory)` 故障排查与修复
环境:Nginx 反向代理(10.0.12.13)→ 后端 API 服务(10.0.4.10:8901)现象:接口大面积报错,错误日志刷屏 一、故障现象某天下午,监控告警显示交易所后台的资产类接口(/ApiInt/Assets/depositWithdrawList、/Contract/openPositionList 等)大量返回 502,查看 Nginx error.log 发现日志被同一类错误刷屏: 2026/07/22 17:40:59 [emerg] 4257#0: *6286680928 malloc(1048576) failed(12: Cannot allocate memory) while reading response header from upstream,client: 10.0.2.19, server: localhost,request: "POST /ApiInt/Assets/depositWithdrawList HTTP/1.1",upstream: "http://10.0.4.10:8901/...
PostHog 实战指南:会话录屏与用户动线分析的使用及注意事项
PostHog 实战指南:会话录屏与用户动线分析的使用及注意事项 本文面向需要在产品中引入行为埋点、会话录屏(Session Replay)和用户动线分析的技术团队,重点覆盖接入方式、脱敏配置、成本控制与合规注意事项。对数据敏感型业务(金融、交易类产品)尤其适用。 一、PostHog 是什么PostHog 是一个开源的产品分析平台,核心能力包括: 模块说明Product Analytics事件埋点、漏斗、留存、路径分析Session Replay会话录屏,回放用户真实操作过程Heatmaps点击热力图、鼠标移动轨迹、死点击/怒点检测Autocapture自动采集点击、输入、表单提交等前端事件Feature Flags / Experiments功能开关、灰度发布、A/B 测试Surveys应用内问卷 与 Mixpanel / Amplitude 相比,它的差异化在于:开源可自部署(数据可完全留在自己边界内)、录屏与分析数据打通(可以从漏斗流失直接跳到对应用户的录屏),以及按量付费、免费额度较大。 录屏的实现原理PostHog 的录屏不是视频录制,而是基于 rr...
分布式事务深度分析:Saga + Outbox
分布式事务深度分析:Saga + Outbox 文档定位:讲清「跨服务一致性」里最常用的组合拳——Saga(编排/补偿)+ Outbox(可靠投递)。刻意剥离:不绑定理财 / 资产 / 订单等具体域名;用抽象角色(发起方、参与方、资源方)说明。阅读目标:知道各自解决什么问题、为何常一起用、失败怎么收、何时不该用。 目录 问题本质:分布式下没有免费的 ACID 先分清两层问题 Saga:业务级长事务与补偿 Outbox:本地提交与对外通知的原子性 组合拳:Saga + Outbox 如何配合 业务中真实出现的一致性场景(抽象) 失败模型与恢复策略 落地骨架(表 / 状态机 / Worker) 与其它分布式方案对照 选型决策树与反模式 设计检查清单 1. 问题本质:分布式下没有免费的 ACID单体时代,一笔业务多表变更可以包在同一个数据库事务里: BEGIN 写业务单 改库存/额度 记流水COMMIT ← 全成或全败 拆成微服务后,每个服务只拥有自己的库。跨服务调用无法共享同一个 DB 事务。于是出现经典半成...
Hermes Agent 三模型自动路由的本地实践
我给 Hermes 装了一个三模型路由:Claude 写代码,GPT 做方案,DeepSeek 跑快活我平时用 AI 做的事情差别很大:有时要改一整个代码模块,有时只是讨论一个业务方案,还有不少任务只是整理文件、转换格式或执行明确的命令。如果所有请求都交给最强、最贵的模型,质量未必提高多少,等待时间和成本却会明显增加。 我的做法是在 Hermes Agent 里增加一个本地 model-router Skill。它先判断任务的最终交付物,再把工作交给合适的模型: Claude 负责写代码、调试、重构、测试和代码审查。 GPT 负责头脑风暴、业务分析、需求拆解和技术方案。 DeepSeek 负责快速问答、整理、格式转换和重复操作。 这套分工已经在我的 macOS + Hermes Desktop 环境中实际运行,不是只写在文档里的模型选择建议。 我本地使用的三个模型分工默认模型本地接入方式适用任务编码Claude Sonnet 5Claude Code CLI + Claude Pro OAuth写代码、修 Bug、重构、测试、Code Review分析与方案GPT-5....
Hermes Agent 安装指南:命令行 + 桌面版完整教程
什么是 Hermes Agent?Hermes Agent 是由 Nous Research 开发的开源 AI 智能体框架(MIT 许可证)。它不是简单的聊天机器人或 IDE 插件,而是一个真正自主的 Agent——可以在终端、桌面应用、Telegram/微信等 20+ 消息平台运行,具备持久记忆、技能自学习和任务委派能力。 它的核心特性: 🧠 自进化——会从使用中学习,自动创建和改进技能 💬 20+ 消息平台——Telegram、Discord、微信、钉钉、飞书等 🔧 60+ 内置工具——文件操作、网页浏览、代码执行、浏览器自动化 💾 跨会话记忆——记住你的偏好和历史 🤖 多模型支持——DeepSeek、Claude、OpenAI、本地模型自由切换 📦 子 Agent 委派——并行处理复杂任务 安装前提唯一的硬性要求是 git,其余依赖(Python 3.11、Node.js、ripgrep、ffmpeg)安装器会自动处理。 操作系统额外前提检查命令macOS无需额外git --versionLinuxcurl + xz-utilssudo a...






