文章
69
标签
94
分类
7
首页
统计
  • 标签
  • 分类
  • 归档
关于
暮色之狐
搜索
首页
统计
  • 标签
  • 分类
  • 归档
关于

暮色之狐

踩坑实录:接口正常Feign调用字段值为空
发表于2026-05-26|后端
Feign字段取不到值问题解析Postman直接调用接口时数据正常,但通过Feign调用时字段值却为null。起初怀疑是Feign配置问题,经过排查后才发现问题出在字段命名上——mName这类单字母驼峰命名被Jackson按规范推断为MName,导致大小写不匹配。 这种约定冲突比技术难点更难防范,耗费了半小时才搞清楚原因。 问题现象接口返回的客户信息如下: 1234{ "mName": "51石雷", "cAddr": "张东路1387号"} 对应的实体类定义为: 12345@Datapublic class CustomerInfo { private String mName; private String cAddr;} 从表面上看,字段名与JSON中的键值一一对应,似乎没有问题。然而,实际测试发现mName和cAddr的值始终为null,而其他字段则正常。 问题排除首先排除了接口本身的问题。通过Postman直接调用接口,数据...
踩坑实录:读写分离导致批量删除逻辑问题
发表于2026-05-16|后端
最近在帮同事review代码时,发现一段逻辑看似正常但执行结果却不符合预期的代码,特此记录问题排查过程。 原始代码实现12345678910111213141516171819202122@Overridepublic void clearExpireOrder(LocalDate expireDate) { log.info("开始清理过期订单, 过期日期: {}", expireDate); int batchSize = 200; long totalDeletedCount = 0; while (true) { List<ExposureOrder> expireOrders = this.list(Wrappers.<ExposureOrder>lambdaQuery() .select(ExposureOrder::getId).le(ExposureOrder::getAdEndDate, expireDate.a...
Java应用启动慢、接口超时、频繁Full GC?别再把锅甩给JVM了!
发表于2026-04-29|后端
💡TIP一次线上扩容实验,揭开隐藏在@RefreshScope背后的性能杀手 问题现场:扩容反而引发告警风暴最近,我们的服务在业务高峰进行一次常规扩容,新增了两个POD。本以为能平滑分担流量,结果启动后不久,P1级别接口超时告警和频繁Full GC告警接连爆发。 从监控图可以清晰看到: 新启动的POD在刚接收流量的前几分钟,接口平均耗时飙升到秒级; JVM的Full GC次数陡增,Old区几乎被打满; 运行几分钟后,一切又逐渐恢复正常。 这种现象并非第一次出现,我们注意到应用启动时也会出现类似的现象。扩容或者重启变成“陪葬”,到底是谁在作祟? 结论先行:@RefreshScope的滥用团队没有止步于表象,而是深入Spring Cloud源码,并结合Demo进行复现,最终锁定了“真凶”——**@RefreshScopel滥用**。 @RefreshScope的初始化“陷阱”在我们的应用中,大量Controller、Service类上都标注了@RefreshScope,初衷是为了实现Nacos配置的热更新。然而,这个注解的初始化行为却暗藏玄机: 普通Bean:...
零代码经验,我用Claude Code搓出的生产力工具
发表于2026-04-22|软件工具
SmartScribe:一个让AI自动帮你整理笔记的Obsidian插件。支持6大AI平台,一键生成标题、标签、分类、摘要,还能智能优化写作。 这个项目的特殊之处不在于功能——在于它的代码100%由Claude Code生成。作者是一个后端程序员,一行前端代码都没写。 为什么要做这个项目痛点:笔记整理是道坎我用Obsidian写了3年笔记,积累了很多篇文章。但整理成了最大的负担: 标签混乱:今天用 #工作,明天用 #work,后天用 #项目,搜索时永远不全 分类困难:一篇笔记该放哪个文件夹?纠结5分钟,最后扔根目录 标题随意:随手记的笔记,标题经常是”临时记录”、”想法”,过两周自己都不记得是什么 摘要缺失:长篇笔记没有摘要,笔记发布博客时总结摘要很烦 试过手动整理,坚持不了一周。也试过其他插件,要么功能太死,要么功能不能完全支持我的需求。 契机:AI能读懂我的笔记了我开始尝试让AI帮我整理单篇笔记——把内容贴过去,让它生成标题、标签、分类、摘要。 效果出奇地好。AI不仅能理解内容,还能根据已有笔记的命名习惯给出建议。 但流程太麻烦:复制 → 打开浏览器 → 粘贴到对话框 →...
容器化后内存告警不断?日志“写爆”了Page Cache!
发表于2026-04-16|系统运维
💡Tip服务在虚拟机上跑得好好的,容器化上 K8s 后却频繁触发内存超限告警,甚至 OOM Kill?堆内存才用了不到 10%,Pod 内存却飙到 80% 以上,到底是什么情况?本文将层层拆解,揭开容器内存暴涨的真相。 诡异的现象:JVM 很健康,Pod 却要“撑爆”了Java 服务容器化部署到 Kubernetes 后,Pod 内存使用率持续缓慢上升,频繁超过 80%,甚至触发 OOM 导致 Pod 重启。 资源配置如下: 123456789resources: requests: memory: 2200Mi cpu: 1000m limits: memory: 3000Mi cpu: 3000m JAVA_OPTS='-Xmx2000m' 按理说,JVM 堆内存只占 2000Mi,Pod limit 给了 3000Mi,还有近 1G 的空间给堆外、Metaspace 等,应该足够富裕。可为什么内存会超限呢? 排查过程:堆内存正常,堆外也正常,那内存去哪了?首先排查 JVM 堆内存进入容器,用 jhsd...
Harness Engineering 究竟是什么
发表于2026-04-15|软件设计
💡TIPHarness Engineering 究竟是什么?不是又一个AI营销概念,而是AI从能说会道迈向能干成事的关键分水岭!本期深度拆解AI工程演进的三层核心:Prompt Engineering(让模型听懂你)、Context Engineering(让模型看到该看的信息)、Harness Engineering(让模型按目标完成任务)。为什么调用同样的模型,不同的AI Agent表现却天差地别?答案不在模型参数中,而在包裹模型的那套工程框架,这就是Harness Engineering ,它不是锦上添花的优化,而是决定AI能否落地生产的基础设施。 AI系统落地过程中,一个日益凸显的核心问题是:Agent的稳定性不仅取决于模型本身。真正决定AI Agent能否稳定工作的因素,往往不是模型,而是包裹模型的工程系统。 大语言模型的本质是什么?——高维概率预测说白了,大语言模型就是一个巨大的参数文件,平时它静静的躺在硬盘中,只有你将它加载到显存里,套上一层API再加一个聊天界面,它才会变成ChatGPT、Claude或者某种AI编程助手,无论它被包装成什么产品,...
Claude Code 通关手册(七):推荐 5 个 Hooks,代码质量提升 3 倍
发表于2026-04-13|软件工具
💡TIP这是Claude Code通关手册的第八篇,推荐5个实用的Hook,代码质量提升 3 倍 上周三下午,我让 Claude Code 帮我重构一个老模块。 它干得挺快,噼里啪啦一顿输出。我切出去喝了口水,回来一看——它正准备把我一个还没有提交git的源文件直接覆盖掉。 手抖着点了“拒绝”,后背全是冷汗。 那一刻我突然意识到:不是 Claude 坏,是我太信任它了。 每次它问“我可以执行这个命令吗?”我都点“允许”,点多了就麻了。它要 rm -rf 我也点,它要改 .env 我也点——我把 AI 当成了不会犯错的神,但它只是个能力很强的实习生。 我翻了一遍 Claude Code 的文档,又刷了创始人 Boris 的 X。他分享了自己在用的几个 hooks,我全抄下来,砍掉一半,最后剩下 5 个。装上之后,Claude 还是那个 Claude,但我再也没怕过它。 Hook 到底是什么?3 秒钟理解你每次让 Claude 跑命令、改文件,它都会弹窗问你“行不行?”——这就是最后一道防线。 Hook 就是在弹窗之前或之后,自动跑一段你写好的脚本。 你想让它自动...
Claude Code通关手册(六):MCP协议完全指南
发表于2026-04-11|软件工具
💡TIP这是Claude Code通关手册的第六篇,上一篇我们为Claude Code配置了专家团队,这一篇我们为他装上外部设备,让他从本地助手转变成互联网平台。 一个很形象的比喻:没有配置MCP的Claude Code就像是一个被关在房间里的天才。 它聪明、高效——能处理你扔给它的所有文件,却够不着外面世界的任何东西。你没法让它“去 GitHub 捞一下那个 Issue 的详情”,没法让它“看一眼最新的 API 文档长什么样”,更别提“进数据库里查一条记录”。它只能靠几个月前训练好的知识来猜,而软件世界每天都在变。 一旦接上 MCP,这道墙就消失了。 它开始具备“触角”——能直接读取 GitHub 上的讨论,能实时翻阅官方文档的最新版本,能连上你的数据库执行查询,甚至能跟你的项目管理工具、监控平台对话。 这不只是加几个功能,而是从离线助手到在线协作平台的本质跃迁。 MCP 是什么?——30 秒用“USB 接口”讲明白MCP 全称 Model Context Protocol(模型上下文协议),是 Anthropic 在 2024 年底推出的开源标准。 这个名字...
Claude Code通关手册(五):组建你的AI专家团队,子代理系统
发表于2026-04-10|软件工具
💡Tip这是Claude Code通关手册的第五篇,这一篇将把“万能助手”变成一支专业队伍,各司其职、并行作战,这才是 Claude Code 的正确打开方式 先来看一个熟悉的场景你面对一个复杂的任务,突然萌生了这样的想法: “要是能有个专门负责探索代码库的助手,再有个专门审查代码的专家,还有个专注写测试的工程师,大家各司其职、同时开工,那该多爽?” ——这不是天方夜谭,这正是 Claude Code 子代理(Subagent)的核心价值。 什么是子代理?简单说,子代理就是给 AI 指定一个专门的角色。不再说“帮我搞定所有事”,而是明确告诉它:“你现在是测试员”、“你负责安全审查”、“你是重构专家”。 在技术层面上,每个子代理都是一个拥有独立上下文窗口的专用 AI 实例。当你在 Claude Code 主对话中下达任务时,Claude 可以判断该任务是否适合委派给某个子代理,由子代理独立完成后将结果摘要返回主对话。 为什么需要子代理?Claude Code功能确认很强大,但是在实际使用的过程中就会发现当我们让Cladue Code执行一些复杂的任务时并没有得到很...
Claude Code通关手册(四):自定义命令,告别手敲重复指令
发表于2026-04-09|软件工具
💡Tip这是Claude Code通关手册的第四篇,这一篇我们要解锁一个让你效率再翻倍的功能——自定义命令。把那些每天都在敲的重复指令、复杂流程,变成一条简单的斜杠命令,从此告别手打。 你有没有这样的经历: 帮我检查一下代码风格,用 Google Java Format 帮我生成一下测试用例,用 JUnit 5,Mockito ,覆盖分支,测试类命名要 xxxTest 帮我review一下修改的代码,生成报告 …… 一两次倒还好,每天重复的输入实在是太累了,如果这些操作能变成一个斜杠命令,比如 /test 就自动生成单元测试,或者 /build 就运行编译 + 测试,那该多爽? Claude Code 的自定义命令(Commands)就是干这个的。 自定义命令是什么?简单说,就是 把一段你经常用到的提示词、指令甚至脚本,打包成一个以 / 开头的快捷命令。 比如你创建一个 /test 命令,里面写: 12345请为当前打开的 Java 类生成单元测试覆盖主要分支使用 Mockito mock 依赖测试类放到 `src/test/java` 下类名加上 `Tes...
Claude Code通关手册(三):CLAUDE.md深度实战
发表于2026-04-08|软件工具
💡TIP这是Claude Code通关手册的第三篇,在上一篇中,我们搞定了权限设置,让Claude Code安全可控地访问你的文件。今天,我们将更进一步——用CLAUDE.md赋予它长期记忆,彻底告别每次对话都要重复交代技术栈的烦恼。 我来描述一个场景,你看有没有中过招—— 周一早上,你打开终端,启动 Claude Code,想赶紧收尾上周遗留的功能,你输入:为 OrderService 增加一个批量查询订单的方法,根据订单 ID 列表批量返回订单详情。 Claude 很快给出了一段代码。你扫了一眼,眉头就皱起来了——它用了 ArrayList 的 for 循环 + 单条 SQL,一条一条查。而你们项目里明明已经封装好了 batchQuery()。 你打字纠正:用 batchQuery(),不要手写循环查数据库。 Claude 回复:好的,我改用 batchQuery()。 然后重新生成代码——这次又忘了你们约定的异常处理规范:不要吞掉异常,也不要直接 e.printStackTrace(),而是要用 log.error 并抛出业务异常。 你补充:异常用 B...
Claude Code通关手册(二):搞清权限,效率翻倍
发表于2026-04-07|软件工具
💡TIP这是Claude Code通关手册的第二篇,上一篇我们初步了解了Claude Code,这一篇要解决新手最头疼的问题——权限系统,搞清Claude Code的权限分配,让Claude Code真正能为我们提效 使用Claude Code的开发者,想必都经历过这样的崩溃场景: “我要读取pom.xml文件,可以吗?”——同意“我要将依赖写入pom.xml文件,可以吗?”——同意 当第10次弹出权限请求时,大多数人早已忍无可忍,只想大喊:”我全都同意了,你自己去运行吧!” 然而,当我们真正去查找解决方案时,才发现Claude Code有一个--dangerously-skip-permissions参数可以跳过权限确认。从名称就能看出,这是一个”危险”的选项。 我们并不需要采取如此极端的方式。权限系统实际上是我们的安全屏障,无需给予Claude Code全部权限。合理分配权限,能够在效率与安全之间取得完美平衡。 本文将教你如何善用权限系统,将那些烦人的权限提示转化为得心应手的工具,让它们从拦路虎变成遥控器。 五种权限模式:从保姆级守护到全自动飙车Claude...
12…6
gloamfox
君子以顺德,积小以高大。
文章
69
标签
94
分类
7
Follow Me
公告
此博客为记录工作学习总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
最新文章
踩坑实录:接口正常Feign调用字段值为空2026-05-26
踩坑实录:读写分离导致批量删除逻辑问题2026-05-16
Java应用启动慢、接口超时、频繁Full GC?别再把锅甩给JVM了!2026-04-29
零代码经验,我用Claude Code搓出的生产力工具2026-04-22
容器化后内存告警不断?日志“写爆”了Page Cache!2026-04-16
分类
  • 前端7
  • 后端17
  • 思维模型3
  • 系统运维11
  • 计算机基础3
  • 软件工具22
  • 软件设计6
标签
权限管理 配置管理 栈溢出 IO模型 大语言模型 内存管理 AI工程 面试技巧 安装教程 Typora Mockito 责任链 Oracle 快捷键 版本管理 服务器运维 Nacos SOLID 多路复用 Node.js URL优化 自我提升 序列化 LaTeX 死锁 编程风格 数据编码 JUnit JavaScript 数据库 技术学习 后端 Linux HTTPS 技术面试 SQL Markdown 浮点数运算 Zookeeper 终端配置
归档
  • 五月 2026 2
  • 四月 2026 14
  • 三月 2026 23
  • 二月 2026 1
  • 一月 2026 1
  • 十二月 2025 4
  • 十一月 2025 20
  • 九月 2025 1
网站信息
文章数目 :
69
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By gloamfox框架 Hexo 7.3.0|主题 Butterfly 5.5.4
鲁ICP备2026017338号-1
搜索
数据加载中