Abel'Blog

我干了什么?究竟拿了时间换了什么?

0%

导读:在分布式系统、微服务架构以及异构数据平台(如业务中台、数据报表、实时数仓、风控审计)之间,跨机器、跨数据库的数据同步是一个看似简单却处处暗藏玄机的经典技术命题。本文将彻底脱敏具体业务细节,从底层数据库执行引擎、B+ 树索引结构、并发锁机制以及数据流转模型的视角,深入剖析为什么传统分页在大数据量下会成为系统崩溃的“元凶”,并详细拆解如何通过 (updated_at, id) 复合游标协议 实现零锁表、微秒级响应、且绝不遗漏状态变更的极致增量同步方案。

阅读全文 »

概述

在日常学习、技术调研与素材整理中,我们经常需要在浏览器(如 Microsoft Edge / Chrome)中播放媒体(如 B 站视频、技术公开课、网络播客),并希望将其内录为高品质音频文件(MP3 / WAV / WebM)。

然而在实际操作中,常规录制方式往往面临诸多痛点:

  1. 外放麦克风录制:会混入机械键盘声、环境底噪以及房间混响,音质损失严重;
  2. 系统全局混音录制:容易将微信、钉钉通知、邮件提醒或系统弹窗提示音一并录入;
  3. 平台底层差异:Windows 原生支持 WASAPI 声卡回环(Loopback),而 macOS 出于隐私安全限制,对应用内录有严格权限管控,导致跨平台方案难以统一。

针对上述问题,本文梳理一套全平台通用的纯净内录方案:借助 Edge/Chromium 原生提供的 chrome.tabCapture API 编写轻量扩展,直接在浏览器数字音频合成层截取目标标签页的数据流。实现免驱动、跨平台(Mac/Windows 完全统一)、零杂音干扰的高品质内录体验。

阅读全文 »

概述

Go 1.27 不是一次单纯的“性能大升级”,而是一次非常显著的“语言能力 + Runtime 诊断能力 + 标准库现代化 + 工程工具链”的综合升级。

本文按照**“公司技术分析会 / 企业技术升级评估”**的视角来梳理,不做简单的版本 Changelog 罗列,而是深入回答:Go 1.27 到底改变了什么?哪些特性值得实际投入业务使用?哪些仅需前瞻关注?升级是否有潜在风险与兼容性破坏?

  • 定位:公司内部技术分析会 / Go 技术升级评估
  • 核心关键词:Generic Methods、JSON v2、Goroutine Leak、Runtime、Post-Quantum Crypto、SIMD、工程工具
阅读全文 »

概述

Go 1.18 至 Go 1.20 是 Go 语言发展史上极具里程碑意义的三个版本:

  • Go 1.18:重构了编程模型,正式引入泛型(Generics)、原生模糊测试(Fuzzing)和多模块工作区(Workspace)。
  • Go 1.19:聚焦于运行时与并发优化,重写了内存模型,引入软内存限制(GOMEMLIMIT)和类型化原子操作(sync/atomic)。
  • Go 1.20:进一步完善泛型生态与性能,带来 PGO(配置文件引导优化)、原生多错误合并(errors.Join)、带取消原因的 Context 以及安全的 Slice 转 Array 等功能。

本文站在后端工程实践(微服务、中间件、基础设施与区块链节点)的角度,梳理这三个版本的核心特性、设计背景、工程应用场景以及切忌滥用的坑点,帮助大家安全高效地完成升级与代码重构。


版本核心变化一览

版本 核心特性 / 改进 工程价值与适用场景
Go 1.18 泛型 (Generics)、Workspace 工作区、Fuzzing 模糊测试、any 别名 通用数据结构与工具库复用、Monorepo/多模块本地联合调试、高危解析逻辑鲁棒性测试
Go 1.19 软内存限制 (GOMEMLIMIT)、类型化 atomic (Int64等)、Doc 注释 Markdown 化 防止 K8s 容器 OOMKilled、无锁无指针风险的高并发计数器与 Metrics 统计
Go 1.20 PGO 编译优化、errors.Join、context.WithCancelCause、Slice 转 Array、unsafe 新 API 线上编译免费换性能提升、批量 Goroutine 错误收集、微服务级联取消源头追溯、高效协议解析
阅读全文 »

简介

在传统金融期货以及 Web3 去中心化衍生品交易所(DEX 永续合约,如 GMX、dYdX、Hyperliquid、Drift 等)的研发与交易中,最基础也最核心的概念就是订单动作与仓位流转:buy_open(买入开仓)、sell_open(卖出开仓)、sell_close(卖出平仓) 与 buy_close(买入平仓)。

交易本质上由两个独立维度交织而成:

  • 方向(Side):Buy(买入)与 Sell(卖出)
  • 动作(Action):Open(开仓 / 建立风险敞口)与 Close(平仓 / 对冲消除敞口)

理解了这四种组合及其在底层引擎中的状态转移逻辑,就真正掌握了永续合约最核心的底座。

阅读全文 »

简介

下面这份文档适合作为技术博客文章,覆盖了 jq 从入门到实战的大部分常用场景,并且尽量结合 DevOps、区块链节点运维、日志分析等实际工作场景。

jq 完全教程:JSON 处理神器从入门到实战

什么是 jq

jq 是 Linux/macOS 下最强大的 JSON 命令行处理工具。

阅读全文 »

**CPU“偶尔飙高”**这种,最怕的就是:你不在现场,它已经恢复了,然后啥线索都没留下。

你有 root 权限,这就很爽了,能把事情一次性“抓现行”。我按 从快到准 给你一套实战路线,你可以直接照着来。

⸻

一、先搞清楚:CPU 是“谁”在高?

1️⃣ 实时看(马上用)

top

重点看这几列:
• %CPU:谁在吃
• us / sy / wa
• us 高:用户态程序(你的服务、Java、Go、Node)
• sy 高:内核 / 系统调用
• wa 高:I/O 卡住(磁盘 / 网络)

👉 如果你看到的是 Java 300% / postgres 200%,事情就简单多了。

更推荐:

htop

(可视化 + 能看到线程)

⸻

二、问题在于:你不在的时候它才高

所以我们要 “持续采样 + 留证据”

⸻

三、必装工具(root 权限必备)

apt install -y sysstat dstat htop

或

yum install -y sysstat dstat

⸻

四、持续监控 CPU(核心)

1️⃣ 开启 sysstat(非常重要)

systemctl enable sysstat
systemctl start sysstat

它会每 10 分钟自动采样一次,数据保存在:

/var/log/sysstat/

⸻

2️⃣ 事后回看 CPU 历史(关键)

看某一天 CPU 是否异常:

sar -u -f /var/log/sysstat/sa05

重点关注:
• %usr
• %sys
• %iowait
• %idle

如果 %idle 掉到 0,那就是满负载了。

⸻

五、定位到“哪个进程”

1️⃣ 看历史中哪个进程吃 CPU(神器)

sar -q -f /var/log/sysstat/sa05

2️⃣ 按进程统计(更狠)

pidstat -u 1

持续输出:
• 哪个 PID
• 每秒吃多少 CPU

如果你怀疑是 Java / PostgreSQL:

pidstat -u -p $(pgrep java) 1
pidstat -u -p $(pgrep postgres) 1

⸻

六、CPU 高的时候自动抓现场(推荐你一定要做)

方案:超过 80% 自动记录 top

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
cat << 'EOF' > /root/cpu_watch.sh
#!/bin/bash
while true; do
CPU=$(top -bn1 | awk '/Cpu/ {print 100 - $8}')
if (( $(echo "$CPU > 80" | bc -l) )); then
echo "==== $(date) CPU=$CPU ====" >> /var/log/cpu_spike.log
top -b -n 1 >> /var/log/cpu_spike.log
fi
sleep 10
done
EOF

chmod +x /root/cpu_watch.sh
nohup /root/cpu_watch.sh &

📌 你之后只需要看:

less /var/log/cpu_spike.log

就能知道:

是哪一个进程、哪个线程,把 CPU 干爆了

⸻

七、如果是 Java / Go / PostgreSQL(你很可能会遇到)

🔥 Java
• top 里看到 Java 高
• 用:

top -H -p

找线程 → 再用 jstack

⸻

🔥 PostgreSQL(你最近就老在搞这个 😄)

1
2
3
SELECT pid, query, state
FROM pg_stat_activity
WHERE state != 'idle';

配合系统:

pidstat -u -p $(pgrep postgres) 1

⸻

🔥 Go 程序
• 大概率是:
• 死循环
• goroutine 泄露
• GC 抖动
• 可以临时加:

curl http://localhost:6060/debug/pprof/profile?seconds=30 > cpu.pprof

⸻

八、我给你一个最省事组合

如果你只想 今天就落地:

✅ sysstat
✅ pidstat
✅ 自动 cpu_watch.sh

这三样,99% 的 CPU 问题都能破案

⸻

九、下一步我可以直接帮你“对症下药”

你可以直接告诉我其中一个👇
• CPU 高的时候 top 里看到的进程名
• 是 Java / PostgreSQL / Go / Node
• 是 us 高 / sy 高 / wa 高

概述

现在是ai时代。需要掌握一些ai工具否则会落后。

OpenCode 是一个开源的 AI Agent 编码工具。它可以通过终端界面、桌面应用程序或 IDE 扩展来使用。

  • 核心定位:它是一个开源、隐私优先且高度可定制的 AI 编码代理。
  • 支持多种使用场景:不仅支持 TUI(终端图形界面)模式,也支持通过 CLI、桌面应用和 VS Code 扩展插件运行。
  • 生态数据:目前 GitHub 上已有 50k+ Star,拥有 650k+ 月活开发者。

OpenCode 最大的吸引力在于它的开放性和多场景支持,不仅支持完全本地化的模型部署,还支持 75+ 种 LLM 提供商,如 Anthropic、Github Copilot、OpenAI、Google、智谱 AI 等。使用起来更加灵活。

阅读全文 »

概述

Mermaid 是一个基于 JavaScript 的图表绘制工具。它的核心理念是:用简单的文本和 Markdown 类似的语法,就能快速生成各种专业图表。 无论您是写技术文档、项目报告,还是仅仅想在 GitHub Readme 中展示流程,Mermaid 都是一个极佳的选择,因为它能直接集成到 Markdown 文件中。

阅读全文 »