logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

起底 opencode 斜杠命令:184 行代码撑起 /review /commit /diff

整个命令系统的核心是一个 Schema 定义:8 个字段定义一条命令的一切。最关键的字段是template—— 它的类型是,注释写得很清楚:有些命令模板是 MCP 远程解析的懒加载 Promise,不是静态字符串。你可能会想:为什么不用string而是用Unknown?这不就丢了类型安全吗?作者的选择恰恰相反:Unknown不是放弃类型,而是拥抱两种加载模式。静态模板在初始化时就拿到字符串,MCP

文章图片
#架构
opencode 源码拆解:run 命令从 CLI 到 Agent Loop 的三层路由设计

如果你要设计一个能从终端命令一路走到 AI Agent 循环的架构——用户敲一行 ,你的系统怎么把这个字符串变成一次完整的 LLM 推理?你可能会想:这有什么难的? 解析一下,switch-case 分发,函数里调 LLM,完事。对,但如果你的 CLI 有 20+ 个选项、3 种交互模式(非交互/本地交互/远程附加)、还需要加载完整的项目上下文(配置、插件、Provider)——switch-ca

文章图片
JVM 线程 RUNNABLE 状态排查陷阱:load 高 CPU 低场景深度分析

摘要: 本文记录了一次线上订单服务性能问题的排查过程。现象表现为CPU使用率仅25%,但p99响应时间从30ms飙升至823ms。通过top、jstack、perf等工具组合分析,发现大量线程处于RUNNABLE状态但实际阻塞在Socket I/O等待,根源在于新版代码使用默认HttpClient(单连接)调用外部评分服务,导致高并发时连接争用。修复方案包括:自定义连接池、设置超时和熔断机制,最终

文章图片
#jvm
锁竞争导致 CPU 飙升:sy 32.4% 的线上排查与锁升级分析

这次事故的表面原因是为什么测试没发现?单元测试单线程运行,不会暴露锁竞争为什么压测没发现?压测数据量小(100 QPS),线程池连接数少,竞争不明显为什么监控没告警?CPU 阈值设的是 90%,而实际最高 85%预防锁竞争类问题,最有效的手段不是优化锁实现,而是在设计阶段就问自己三个问题这段代码需要多线程访问吗?→ 如果是,走问题 2数据是共享的吗?→ 如果是,走问题 3能不能用无锁数据结构?→

文章图片
#java#linux
HikariCP 默认配置陷阱分析:maximumPoolSize=10 引发连接池耗尽的排查与调优实战

total=10(默认最大连接数),active=10(全部被占),waiting=42(42 个线程排队等连接)。开发老K说:新项目搭起来直接用了 Spring Boot 默认的 HikariCP,谁也没想过要改连接池参数。开发环境流量小,10 个连接绰绰有余,从来没出过问题。Spring Boot 的自动配置很方便,但 HikariCP 的默认值是为「能跑起来」设计的,不是为「生产可用」设计的

文章图片
#android
Druid 迁移 HikariCP 后遗留配置参数导致的连接池容量不生效问题分析与修复

经分析,这些是 Druid 连接池专有参数名称,项目从 Druid 迁移到 Spring Boot 2.7 默认的 HikariCP 后删除了 Druid 依赖,但未将配置参数迁移为 HikariCP 格式(spring.datasource.hikari.maximum-pool-size)。total=10, active=10, idle=0, waiting=63——10 个连接全被占了,

文章图片
#java#spring boot
Metaspace OOM 排查实战:CGLIB 动态代理 + 反射导致类加载泄漏

这是 Metaspace 的软限制触发 GC——当 Metaspace 使用量达到当前容量上限的一个阈值(默认 80-90%)时,JVM 会触发一次 Full GC 尝试回收未使用的类元数据。的 LGCC(上次 GC 原因)同样是 “Metadata GC Threshold”,这与前面的分析一致——每次 GC 都是 Metaspace 满了触发的,而 GC 后 Metaspace 使用率没有显著

文章图片
#java#缓存
MySQL 慢 SQL 优化实战:从 EXPLAIN type=ALL 到复合索引,查询耗时从 18s 降到 0.06s

解决方案是创建复合索引 idx_status_time(order_status, create_time),优化后 type 变为 ref,扫描行数降至 4.87 万,查询耗时从 18.42 秒降至 0.06 秒。三个条件分别有自己的单列索引,但没有一个索引能同时覆盖 order_status(等值)和 create_time(范围)。’ 过滤后约 67%,两个条件叠加有优化的空间。:将等值条件

文章图片
#mysql#sql#数据库
JDK 17 ZGC 升级导致 P99 延迟飙升 10 倍?GC 选型与调优实战

在 2G 小堆下,ZGC 的并发优势完全没有发挥空间——堆太小,一次并发标记很快就能完成,但并发标记的启动条件在高分配率下被频繁触发,反而带来了 Allocation Stall 的惩罚。但在 ZGC 下,这些列全是空的——因为 ZGC 没有传统的 Young/Full GC 概念,取而代之的是。ZGC 感知到高分配率后会启动并发标记,但每次并发标记还没完成,新的分配请求又在堆积。在不到 20 分

文章图片
#java#jvm#算法
    共 20 条
  • 1
  • 2
  • 请选择