- 博客(706)
- 收藏
- 关注
原创 设计模式与生活⑧:快递到了,别一直刷物流
周六加了一天班,周日这觉,小王睡到了自然醒。醒来没急着起。鸡蛋、牛奶,昨天买的坚果和核桃也到了,拆开抓一把,早餐就算齐了。吃完又在床上躺了会儿。窗外天气很好。待会儿去赶个集,再顺路剪个头发。这天正好是十一月第一天,日子没安排得多满,但每一样都让人松快。包裹到了,早餐添了一把坚果,人也终于歇过来了坚果不是他一遍遍刷物流刷来的。包裹到站,手机收到提醒,他才知道东西到了。这背后是个很省心的思路:你没空盯着所有事情,先说一句"有变化告诉我",然后各自去过日子。
2026-11-01 12:17:52
76
原创 设计模式与生活⑦:你打的车,隔着一个平台
周五早上,闹钟还没响,人先醒了。不是被吵醒的。是心里那根弦自己松了——睁眼就知道,今天上完,能歇两天。周五这天,上班族的心情是有固定形状的。有人在群里发"今天周五",有人已经开始盘算晚上吃点什么。小王也高兴,但他高兴得有点早——今早没车骑,还得出门。昨晚那版上线,收工很晚。出公司的时候他没去地铁站,直接打了辆车回家。电动车就那么停在地铁站旁边,锁都没动过。所以今天早上没车骑。他得比平时早一点出门,打车去公司。昨天一辆车送他回家,今天一辆车送他去上班昨晚一趟,今早一趟。
2026-10-30 09:23:01
241
原创 设计模式与生活⑥:问题一个个砸过来,先写张便签
周四早上出门,太阳已经升起来了。连着阴了几天,一抬头,天是亮的,连路边那排共享单车都被照得发白。小王眯了一下眼,昨晚那点闷,散了一半。昨晚弄到很晚。到家过了十一点,洗漱完躺下,已经过了零点。睡着以后还在排查问题,梦里那个报错一直在响,怎么都关不掉。到公司坐稳,电脑刚亮起来,消息就跟排队似的往外冒:群里三条 @,私聊两条,工位隔板上还贴着一张不知道谁留的便利贴,上面写着"帮忙看下这个,急"。都急。一个早上,六件事,件件都说自己急他以前的做法是:哪条最新看哪条,谁催得紧先回谁。
2026-10-29 09:24:01
339
原创 设计模式与生活⑤:天冷了,给电动车套件挡风被
周三早上,闹钟响的时候,天没亮透,窗户缝里钻进来的不是光,是冷。小王眼睛都没睁开,伸手把闹钟按掉。被窝里多赖了十秒,还是认命地爬起来,从柜子最底下翻出一条秋裤。套上秋裤,再穿外裤。下楼,从车筐里抽出挡风被,两根绳子往车把上一系,把车头和腿前那片风整个兜住。电动车还是去年那辆,人也还是昨天那个人。谁都没动,只是外面各多了一层。车没换,人没换,各多了一层——不改本体,在外面包一层,一层不够就再包一层。系列第五篇。昨天那篇留了个尾巴:优惠要"叠一堆",策略管不了。
2026-10-28 08:28:00
219
原创 设计模式与生活④:冰箱空了,早餐换个买法
周二早上,闹钟响的时候,天刚蒙蒙亮。小王眼睛都没睁开,伸手把闹钟按掉,脑子里还是那五步:起床、洗漱、早餐、通勤、打卡。流程没变,变的是今天的第一件事——他拉开冰箱,能当早饭的一样没有。昨天加班到十点,回家路上该买的一样没买。冷藏室剩半盒不知道哪天的牛奶,冷冻层连速冻饺子都没给他留一袋。他愣了两秒,很自然地换了方案:不做了,到公司楼下买包子。洗漱、出门、骑车到地铁站、坐地铁。出站,走到公司楼下,在那家连锁包子店买了两个雪菜包,付钱时手机往柜台那个蓝色圆环上一碰,还立减了几块。
2026-10-27 07:29:51
340
原创 设计模式与生活③:你的早晨,是一套模板
周一早上,闹钟响的时候,天还没亮透。归拢成大类,其实是五步:起床、洗漱、早餐、通勤、打卡——骑车和地铁,都算通勤那一步里的事。一步都不能乱。不洗脸出门,地铁上自己难受;不骑车,赶不上那班车;早饭不吃,上午十点手就抖。这套流程他跑了两年,顺序一次没变过。眼睛还没睁开,锅已经热了有意思的是,同组的小李流程一模一样,做法全不一样。小李的早饭是路过便利店顺手买的饭团,不骑车,开车直接到公司楼下。——把流程的骨架定死,把每一步怎么做,留给别人填。系列第三篇。
2026-10-26 07:39:28
166
原创 设计模式与生活②:你只管点外卖,别管堡怎么做
周日上午,小王大扫除。扫地拖地、收拾屋子,一通忙活下来,整个人瘫在沙发上。然后饿了。两个选择:自己做饭——买菜、洗菜、切配、掌勺、洗碗,一套下来,一两个小时就没了;或者打开外卖 App,点一份"麦辣鸡腿堡"。他选了后者。三十分钟后,饭到了。大扫除后的哲学家:能不下厨,就不下厨这半小时里他没进厨房,不知道鸡腿肉是谁裹粉炸的、油温烧到多少度、酱料挤了几泵。——把"造对象"这件事,从"用对象"的人手里拿走。系列第二篇,从小王这顿外卖开始。
2026-10-25 11:28:47
295
原创 设计模式与生活①:你的脸,为什么不能有第二个?
上个月,小王的一个朋友差点被骗走 40 万。那天下午他接到"老板"的视频电话:脸是老板的脸,声音是老板的声音,说有个项目要紧急打款,让他先走流程。他看了三秒,觉得哪里不对——老板的额头,在视频里的反光有点怪。他借口信号不好挂断,回拨了老板的私人号码。老板说:我没给你打过电话。AI 换脸诈骗。各地警方通报过不止一起,这个剧本正被批量复用。视频里的"老板",脸是真的吗?今天不是聊反诈,是聊这场骗局里的一个技术问题:骗子从头到尾只干了一件事——。。系列第一篇,从你的脸开始。
2026-10-24 17:04:36
283
原创 超时了,然后呢?——聊聊 HTTP / Dubbo 超时后,客户端、服务端与 C 端用户的真实感受
回到开头那个夜里的修罗场:当用户说"失败了我再点一次"的时候,你的系统接得住吗?超时从来不是错误,它是系统用"有限的耐心"换取可用性的一种设计。幂等兜底、克制的重试、熔断降级、异步化,以及最后一道对账防线。想清楚这些,你才敢在下一个夜里,平静地在群里回一句:“放心点,点多少次都只算一单。—— 一个踩过超时坑的老开发。
2026-10-18 12:06:08
145
原创 GSD:别让 Agent 在脏上下文里写代码
跟 Agent 聊长了,前面定的约定会被聊天记录挤掉,后面写出来的代码开始跑偏。作者 TÂCHES 不想搞评工时、开站会那套演戏,只要把需求说清楚、把活做完。GSD 要防的,就是别让 Agent 在越聊越乱的对话里写代码。
2026-09-23 08:05:50
73
原创 Grill Me:开工前先被拷问一遍
运营后台 · 条件批量 · 同步小批量 + 异步大任务 · 结果不缓存、任务状态查库 · 幂等键 24h · 不做自定义列。
2026-09-17 07:45:30
174
原创 误推 master 该 revert 还是 reset?撤销与补 MR 流程
前两天开发完一个功能,习惯性git commitgit push——刷新远程,提交直接落在了。CI 已经跑了一分钟,群里有人问谁合的。
2026-09-11 07:50:07
280
原创 AI 能写代码了,还要学设计模式、Spring 源码和 JVM 吗?
AI 帮我五分钟写完一个订单模块。同事问:「设计模式还要背吗?Spring 源码还有人看吗?JVM 是不是交给运维就行了?AI 替掉的是「手写重复实现」,没替掉「判断对不对、出问题能不能查」。这三块,正好对应——AI 写得越多,你越缺不得。
2026-09-09 09:00:41
163
原创 AI 时代,代码洁癖者,别跟 AI 抢写,管好「门禁」
AI 不会为你的线上故障负责。我是否亲手跑过主路径?是否理解每一行为什么在这?若 AI 代码错了,我能否10 分钟内定位?看不懂的 AI 代码,不许合主分支——这不是老派,是职业底线。
2026-09-08 10:32:47
300
原创 线程 Dump 还是 Heap Dump?线上故障时先抓哪个
有一次凌晨,接口 P99 飙到 30 秒,CPU 却不到 20%。运维说「重启吧」,我拦住了——。十分钟后jstack里看到 180 个http-nio-*线程堵在,根因是(慢 SQL 占着连接不还),不是网络。另一次是内存告警:堆使用率 92%,Full GC 每分钟一次,接口时好时坏。这次要的是,MAT 里一个大HashMap占了 1.2GB,是本地缓存没设上限。两个场景,两种 Dump。
2026-09-07 07:12:06
328
原创 GitNexus:给 AI 代理装上代码知识图谱
改的返回值,助手不知道还有 40 多个调用方——改完才踩坑。(Akon Labs,2025 年 8 月开源)在本地把仓库索引成知识图谱,调用关系、执行流都落在 LadybugDB(.gitnexus/),再通过(Model Context Protocol,编辑器连外部工具的协议)接到 Cursor、Claude Code、Codex。代码不上传。analyze阶段就算好结构,MCP 查一次就够,不用让模型多轮 grep 自己拼。
2026-09-06 12:30:02
238
原创 日志不是越多越好:开发优化、常见坑与线上排查命令
凌晨三点,磁盘告警响了——不是业务暴涨,是某个接口在循环里打了log.info,一天滚了 80GB。更讽刺的是,真出故障时,运维在几 TB 日志里搜ERROR,关键信息淹没在噪音里;还有些地方只打了,堆栈根本没落盘。下面按「为什么要控量 → 怎么优化 → 有哪些坑 → 线上怎么查」来说。
2026-09-04 08:00:08
300
原创 带宽打满:Java 后端最容易忽略的慢请求元凶
先算带宽 ÷ 响应体得到 QPS 上限,心里有个数。再看监控:逻辑和 DB 都正常、客户端却慢,查流出带宽。先减 payload:分页、精简 VO、CDN、Gzip——多数情况比升计算规格管用。
2026-09-03 21:12:58
158
原创 服务假死:进程还在,请求却挂了?用代码复现与线上避坑
有一次线上告警没响,CPU 也正常,用户却在群里说页面转圈。我,30 秒没反应。进程在、端口也在听——这就是:JVM 没挂,但已经接不住新请求了。
2026-09-02 08:07:03
157
原创 OpenSpec:AI 编程先对齐需求,再写代码
对齐Delta选对层。今天可试:①;②做一个真实小需求;③ 打开对比官网;④ 根据第二节表格选 Superpowers / Spec Kit 是否叠加。AI 编程缺的不总是模型,常是跨会话还在的对齐层。OpenSpec 管「改什么」,Superpowers 管「怎么做」,Spec Kit 管「守什么规矩」——分清层,比站队重要。
2026-08-30 20:14:25
243
原创 Agent Skill 是什么?给 AI 编程一份可复用的「上岗手册」
标准按需可共享。今天试三件事:①写一个清晰的小 Skill;②手动触发对比自动启用;③ Star找模板。Agent(智能体)缺的不总是智商,常是上下文里的上岗手册。写短、写准、写可复用,比每次口头教一遍划算。
2026-06-20 19:43:30
378
原创 CodeBurn:AI 编程 Token 去哪了?一台终端里的实时账单
CodeBurn是一个开源的终端 UI(TUI)仪表盘,用来追踪 AI 编程场景下的Token 用量、成本估算和使用表现。直接读磁盘上已有的 session 文件,本地算价、本地展示、本地导出。GitHub官网npm协议:MIT |语言:TypeScript 为主(看看你的 AI 编程 Token 都去哪了。可见本地可行动。可见:Token 按项目、模型、任务类型排开,不再是无底洞本地:session 不上传,适合敏感场景可行动:optimize / compare / yield 指向具体改法。
2026-06-19 10:11:17
401
原创 GitHub 入门:从代码托管到认识技术世界的一扇门
协作发现信任。AI 时代,「会搜」不如「会找仓库」;「会用工具」不如「会读 Release 和 Issue」。把 GitHub 用熟,等于多了一扇直接通向技术前沿的窗。注册账号Star 本文提到的Slidev或之一打开 Trending,随便点进一个本周上升项目,只读 README 的五分钟这扇门,已经开了一条缝。
2026-06-13 20:47:56
526
原创 Browser MCP:让 Cursor 直接操控你的真实浏览器
AI 改完组件后,打开本地 dev server,走一遍点击路径,用截图 + Console 判断是否真的修好。Browser MCP 不是大模型,也不是 ChatGPT 套壳。它更像一层协议适配器:把浏览器接进 MCP 世界,让 Cursor 能触达 Web 这一侧的真实界面。如果你已经在用 MCP 接文件系统、终端、数据库,却还没接浏览器,很多工作流会少掉关键一块——按第四节配一遍,几分钟就能跑通。当 AI 不仅能写代码,还能在已 Connect 的浏览器里把结果点给你看。
2026-05-23 21:47:19
897
原创 AI 时代,程序员正在分成三层:会让 AI 写、会让 AI 做对、会让 AI 稳定交付
当你开始频繁使用 AI 改真实项目,就必须建立护栏。每次只让 AI 改一个明确任务改之前先让它说明计划改之后必须解释变更点关键文件禁止随意修改提交前必须跑测试或静态检查涉及鉴权、支付、隐私、数据删除的代码必须人工复核这听起来麻烦,但这是 AI 编程从“玩具”进入“工程”的分界线。没有护栏,AI 越强,你越容易失控。有了护栏,AI 越强,你的交付能力越高。Vibe Coding 是草图能力。它让你快速探索,把想法变成可见的东西。Spec Coding 是蓝图能力。
2026-05-21 07:49:32
373
原创 OpenClaw Zero Token 实测:不用 API Key,也能免费聚合多家 AI 模型
如果你是想搭建一个严肃的生产级 AI 服务,未必是最稳妥的选择。但如果你的目标是学习、体验、模型横评、本地自动化验证,它确实提供了一个很有启发性的方案。它让我看到 AI 工具发展的另一个方向:不是所有场景都必须从 API Key 和 API 账单开始。有时,复用已经存在的 Web 登录态,把多个模型先统一到一个本地入口里,也是一种非常实用的工程路径。对于个人开发者来说,这类工具最大的价值不是“绕过什么”,而是降低试错成本。
2026-05-18 06:48:05
795
原创 OpenClaw 实测:从聊天工具到可执行 AI Agent
AI 工具这两年从“会说”走向“会做”,OpenClaw 正好在这个转折点上。它未必是唯一答案,但很适合作为一个观察样本:看 AI 如何从聊天窗口,走进你的协作系统和日常开发流程。
2026-05-17 13:19:53
467
原创 AI黑话翻译指南:这些词你天天看到,但真的懂吗?
你不需要记住所有术语。AI不会淘汰你,但会淘汰不会用AI的人过去拼的是:写代码的速度现在拼的是:表达问题的能力这波变化,说到底不是技术问题,而是方式在变。从“写”,变成“说”
2026-04-06 11:32:11
455
原创 Dubbo泛化调用:没有接口 Jar,为什么也能调服务?
Dubbo 泛化调用,不是 Java 泛型,而是一种“绕过本地强类型接口依赖”的远程调用方式。引入服务提供方的接口 Jar在本地注入接口像调本地方法一样发起 RPC 调用消费者必须持有服务接口定义。泛化调用换了一种思路。调用方不需要接口全限定名方法名参数类型列表参数值就可以通过发起一次调用。也就是说,它本质上是一种动态调用机制。没有接口 Jar,为什么 Dubbo 也能调服务?答案就是:Dubbo 提供了。
2026-03-29 12:11:38
442
原创 串行与并行:高并发系统里的优雅接口设计
先问依赖:这些 RPC 是否存在真实数据依赖?如果是“同屏展示/汇总”类接口,通常就能并行扇出。再做并行:能并行的优先并行,但要确保线程池/连接池隔离到位,避免把公共资源打满。最后要兜底:每个并行子任务是否有单任务超时与失败快速返回?超时是否能联动到 RPC 层的取消/资源释放(框架支持的话)?兜底结果是否足够让业务降级可用,并且产出可观测告警(日志/指标/链路)。写代码时把“等待关系”画清楚、问对问题,你的系统就会更快也更稳。
2026-03-19 07:40:31
389
原创 Cursor Agent Skills 从入门到上手:概念、写法、用法(含 Java 示例)
LLM:大语言模型,Claude/GPT/Gemini 都是 LLM;在 Cursor 里选「模型」即在选 LLMAgent:会自己干活的智能 AISkill:它的专业技能(如 Java 代码审查)Rule:它必须守的规矩MCP:连接工具的协议,通过它使用外部能力模型:Agent 的大脑(= 选用的 LLM,当前推荐主力 Claude 3.7 Sonnet 等,以你 Cursor 可用列表为准)全文涉及界面、命令、模型推荐等,均以你当前 Cursor 版本与官方文档为准。
2026-03-17 07:41:27
1813
原创 String.format 替换踩坑记:从遇坑、读源码到手写实现
改需求时在模板里多加了一个%s、多传了一个参数,结果最后一个占位符还是用了旧值。,多出来的参数 JDK 直接不用,也不报错。所以这是典型的「对底层约定不清楚」导致的隐藏 Bug,只有在你新增占位符又新增参数、却没改顺序的时候才会踩到。这篇就按踩坑 → 把契约和源码捋一遍 → 自己写一版严格校验的替换工具,顺带给出修法和以后怎么防。
2026-03-14 09:48:49
406
原创 老婆都来问小龙虾是啥了:风口、翻车与本质
AI 已经从玩具阶段,走向真正能改变生产力的阶段。有人靠代装、定制助手赚到第一桶金,有人在误操作和安全意识不足中交了高昂学费。差距很多时候不在技术多高,而在:有没有看清本质(执行框架是工具,模型和安全才是灵魂)、有没有基本的安全和备份习惯,以及——是跟着起哄,还是真的在琢磨怎么用、怎么做得稳。如果你是普通用户,用它帮你节省时间,就是赚到;如果你是程序员,用它提升效率、做出真正能解决问题的产品,就是在顺势而为。它是工具,模型才是灵魂;风口要抓,根得扎对。
2026-03-11 23:27:50
85
原创 Java 的前世今生:从 Oak 到现代企业级语言
从事 Java 多年,总想系统梳理一下这门语言的来龙去脉。本文从历史、版本、生态到学习路径,带你重新认识 Java。
2026-01-31 16:02:48
734
原创 Java中的各种O:从Big O到POJO,一次搞懂所有“O“
对象类型全称用途特点使用场景POJO基础对象无框架依赖所有场景的基础DO数据持久化对应数据库表数据访问层DTO数据传输跨层/跨服务传输API接口、服务间通信VO值对象展示数据前端展示BO业务对象包含业务逻辑业务逻辑层DAO数据访问封装数据库操作数据访问层时间事件1894年巴赫曼引入大O符号1960年代Simula引入OOP概念1965年null引用的诞生(“十亿美元的错误”)1968年克努特将大O引入计算机科学1995年。
2026-01-24 16:18:49
737
原创 程序员的周末:11种设计模式继续藏在你身边
看完小王的周末时光,我们又发现了11种设计模式(加上第一篇文章的12种,正好覆盖全部23种GoF设计模式)。它们不是高深的理论,而是解决实际问题的经验总结。就连周末的休闲时光里,也藏着设计模式的智慧。你可能会问:为什么要学设计模式?其实很简单,它们能帮我们写出更好的代码,解决实际的问题。设计模式是工具,不是目的- 不要为了用而用合适的时候用,不合适的时候别硬用- 简单问题用简单方法理解思想比记住结构更重要- 知道为什么用,比知道怎么用更重要从生活出发,理解设计模式- 设计模式就在我们身边。
2025-12-21 23:46:05
729
原创 程序员的一天:12种设计模式藏在你身边
看完小王的一天,是不是觉得设计模式其实就在身边?看完小王的一天,你会发现:设计模式不是什么高深的理论,就是解决实际问题的经验总结。它们悄无声息地融入我们的生活,让代码更优雅,让系统更健壮。设计模式不是目的,而是手段。我们的目标是写出更好的代码,解决实际的问题。不要为了用设计模式而用设计模式,合适的时候用,不合适的时候别硬用。当你理解了设计模式背后的思想,你会发现,它们其实很简单,很实用,也很有趣!
2025-12-17 22:20:48
828
原创 聊聊高并发系统:那些容易混淆的概念和实际问题
可以这样理解:服务器就像一条高速公路,带宽是车道数量,数据是汽车。车太多超过车道容量,就堵车了。先理解单位换算Mbps = Megabits per second (兆比特/秒) - 带宽单位MB/s = Megabytes per second (兆字节/秒) - 传输速度单位换算公式:Mbps ÷ 8 = MB/s因为:1 Byte (字节) = 8 bits (比特)常见带宽对应的传输速度:记忆技巧:运营商说的"100M宽带",实际下载速度最高只有12.5MB/s计算带宽瓶颈。
2025-12-05 07:49:35
1307
原创 MySQL索引设计原则:明明建了索引为什么还是慢?7条实战原则帮你避坑
区分度 = 不重复的索引值数量 / 表中的总记录数区分度越高(接近1):索引效果越好,如主键、唯一字段区分度越低(接近0):索引效果越差,如性别字段、状态字段-- 示例:用户表username VARCHAR(50) UNIQUE, -- 区分度:100%email VARCHAR(100) UNIQUE, -- 区分度:100%gender TINYINT, -- 区分度:~2%(只有男/女)status TINYINT -- 区分度:~5%(只有几个状态值)
2025-11-30 14:16:14
721
原创 MySQL索引优化实战:原则速查与踩坑案例(实战篇)
索引调优不是一劳永逸的 checklist,而是持续迭代的工程能力。SQL 上线前进行 Explain 评审,记录基线方案。关键表维护“索引设计文档”,包含用途、创建时间、负责人。定期回顾慢查询,收集优化案例,形成内部知识库。只有不断实践、总结、复盘,才能真正把索引用出质感。
2025-11-09 22:51:02
879
Sublime Text代码编辑软件
2016-04-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅