自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何用 MySQL 持久化、历史快照与游标实现多步 Redo/Undo

多步 redo/undo 的关键不是“在 catch 里倒序调用几个接口”,而是把工作流建模为可持久化、可恢复的状态机:步骤事实可查、进度由游标推进、外部副作用有幂等键、补偿基于业务快照且同样可重试。接受最终一致和人工兜底的边界,才是这类设计真正可靠的前提。MySQL、Go、Saga、Redo、Undo、状态机、分布式事务、系统设计。

2026-08-24 14:57:55 214

原创 用MySQL实现AsyncJob-任务表-领取-幂等-重试与死信

MySQL AsyncJob 的本质是一个持久化状态机:创建和业务事务一致,领取有排他性,执行有租约,失败有分类重试,重复有幂等约束,死信可审计可处理。它解决的是可靠任务编排,不是免费获得“恰好一次”。Go、MySQL、异步任务、任务队列、幂等、重试、分布式系统。

2026-08-24 14:57:22 328

原创 Go defer + recover 如何回写异常:命名返回值、事务边界详解

的正确姿势是建立少量、清晰的异常边界:入口保护用户请求,事务先回滚,后台任务在自身 goroutine 内记录失败。命名返回值能让 defer 回写error,但它不应成为吞掉所有 panic 的理由。Go、golang、defer、recover、panic、事务、异常处理。

2026-08-21 17:53:29 151

原创 Go sync 面试题:Mutex、WaitGroup、Once、atomic 如何选

并发原语的正确选型来自数据所有权和生命周期:共享状态用锁,单值状态用 atomic,任务完成用 WaitGroup,一次初始化用 Once。先把语义边界说清,再谈性能,才是成熟的 Go 并发答案。Go、golang、sync、Mutex、WaitGroup、atomic、面试。

2026-08-21 17:52:26 191

原创 Go Context 面试题:超时、取消、传值与优雅关闭

Context 解决的是调用链的生命周期协作,不是魔法中断器,也不是参数字典。面试中把“取消信号会传播,但下游必须配合”讲清,再说明请求任务与可靠后台任务的边界,就比单纯背四个方法更有工程价值。Go、golang、context、超时、优雅关闭、微服务、面试。

2026-08-21 17:51:35 217

原创 Go-channel面试题-关闭规则-select-死锁与并发模式

channel 的核心不是语法,而是协议:谁生产、谁消费、什么时候结束、取消时谁能退出、缓冲满了怎么办。把这五件事写清,channel 才会成为并发代码的边界,而不是新的死锁来源。Go、golang、channel、select、并发编程、面试。

2026-08-21 17:50:36 202

原创 Go goroutine 面试题:调度、退出、泄漏与并发控制一次讲清

泄漏不是“goroutine 数量暂时很多”,而是任务已经失去业务价值,却永久或异常长时间无法退出。它会持续占用栈、引用对象和调度资源,且常常伴随连接、定时器或 channel 堆积。goroutine 的价值不在于“能开很多”,而在于用低成本并发组织 I/O 和独立任务。工程上真正需要守住的是:谁创建、谁等待、谁取消、谁关闭资源、下游能承受多少并发。把这些责任写清楚,才是 goroutine 面试和生产实践都认可的答案。Go、golang、goroutine、并发编程、GMP、面试。

2026-08-21 17:49:57 999

原创 系统设计面试指南:面试官让你“设计一个系统“,该怎么答?

系统设计题是很多同学面试时最怕的环节。不像八股文可以背,系统设计没有标准答案,更考验你的工程思维和架构能力。但实际上,系统设计面试是有套路的。面试官看的不是你能不能设计出一个完美系统,而是你的思考过程、权衡取舍、技术深度。这篇文章教你一套万能的回答框架,不管面试官出什么系统设计题,你都能有条理地回答。展示你的工程思维。你会分析问题(需求→约束→设计)你知道有哪些技术选型你理解每个选择的trade-off你能在有限时间内做出合理的决策。

2026-08-18 14:52:37 219

原创 Spring面试不再慌:IoC、AOP、事务、循环依赖一网打尽

几乎每次面试都会问Spring,但很多人的回答都停在"IoC就是控制反转,AOP就是面向切面编程"这种教科书级别的答案。面试官想听的是你理解它的设计思想和底层实现。这篇文章从面试官的角度出发,把Spring的核心问题一次讲清。传统方式:你需要什么,你自己newIoC方式:你需要什么,容器给你控制反转的"控制"是指:对象创建和依赖关系的控制权"反转"是指:从程序员手中交给了Spring容器@Service@Autowired// A依赖B@Service@Autowired// B依赖A。

2026-08-18 14:51:28 244

原创 Java并发编程面试全攻略-从synchronized到AQS底层原理

并发编程大概是Java面试中最"玄学"的部分——知识点多、概念抽象、还容易搞混。原子性、可见性、有序性。所有的并发工具和机制,都是在解决这三个问题。搞清楚这个主线,面试时就能以不变应万变。AQS = 抽象队列同步器是Java并发包的基石:基于AQS的实现:底层原理:JMM、happens-before、volatile、CAS锁机制:synchronized(锁升级)、AQS(ReentrantLock)线程池:参数含义、执行流程、拒绝策略。

2026-08-17 14:20:10 410

原创 JVM面试突击:从内存模型到GC调优,一篇搞定

我面试被JVM问题难住过很多次。一开始只知道"堆和栈",面试官一深入就露馅。后来系统学了一遍,发现JVM的知识体系并没有那么复杂——核心就是那几块,理解了原理自然能应对各种变体问题。这篇文章不是死记硬背的八股文合集,而是帮你理解原理。理解了,面试官怎么问你都能答。1. 老年代空间不足2. 方法区(元空间)空间不足3. System.gc()被调用(不保证一定触发)4. CMS的Concurrent Mode Failure5. 老年代连续空间不足以分配大对象。

2026-08-17 14:19:22 188

原创 面试复盘-我面了15家公司总结出的高频问题和回答套路

秋招期间,我一共面了15家公司(字节、阿里、美团、腾讯、小红书、快手、百度…),拿到了5个offer。面完之后我做了一个统计:把所有被问到的问题归类,发现其实来来回回就是那些问题。面试官可能换个说法、换个场景,但考察的核心知识点是固定的。今天把高频问题和回答套路分享出来。时间:1.5-2分钟结构:我是谁 + 我会什么 + 我做过什么 + 我为什么合适示例:"面试官您好,我是XX大学计算机专业大四学生。技术方面,我主要做Java后端开发,对Spring Boot、MySQL、Redis、

2026-08-15 15:52:08 798

原创 计算机专业简历怎么写?从被已读不回到面试邀约不断

大三那年秋招,我投了将近200份简历,回复率不到5%。后来找了几个在大厂做面试官的学长帮我改简历,才发现自己犯了一堆"致命错误"。改完简历后,同样的岗位投递,回复率飙升到40%以上。今天把我踩过的坑和总结的经验分享出来。简历是你的广告,不是你的日记——只放对获取面试有帮助的信息一份简历打天下是不够的——至少准备2-3个版本,按公司定制简历改完让别人看——自己看不出问题,找同学/学长/论坛帮你review持续迭代——每面一次试,就根据反馈优化一版简历记住:简历只是敲门砖,真正的考验在面试里。

2026-08-12 10:38:45 433

原创 AI编程工具深度横评:Cursor vs Copilot vs Kiro,谁才是真正的效率神器

2025年,AI编程工具已经从"尝鲜品"变成了"生产力必需品"。我身边的同事几乎人手一个AI编程助手,但大家用的工具五花八门。我自己同时体验了Cursor、GitHub Copilot和Kiro三款工具各一个月,覆盖了日常开发中的各种场景。今天就来做一个硬核的对比评测。Cursor想做"最好的AI代码编辑器"Copilot想做"无处不在的AI助手"Kiro想做"AI驱动的开发环境"没有绝对的好坏,找到适合你工作场景的才是最好的。有其他想了解的工具也可以评论区留言~

2026-08-11 16:16:28 329

原创 多Agent协作架构设计-让AI组成团队帮你干活

单个Agent能处理的任务是有限的。就像一个全栈工程师再厉害,也比不上一个分工明确的团队。需求分析Agent:理解用户需求,拆解任务代码生成Agent:写代码代码审查Agent:Review代码质量测试Agent:生成测试用例这篇文章分享我在多Agent架构设计上的思考和实践。@dataclass"""Agent之间传递的消息""""""Agent基类""""""返回Agent的系统提示词"""pass"""处理接收到的消息"""])"""构建上下文"""

2026-08-11 16:15:57 324

原创 MCP协议深度解析-为什么它是AI-Agent的USB接口

如果你关注AI Agent领域,你一定听说过MCP。Anthropic在2024年底推出了这个协议,短短几个月就被各大AI工具采用——Claude Desktop、Cursor、Kiro、Windsurf等等都支持了MCP。但大多数人对MCP的理解停留在"它能让AI调用外部工具"。这篇文章我会深入讲解MCP到底解决了什么问题、它的架构设计有多精妙、以及如何自己开发一个MCP Server。"""列出所有可用工具"""return [Tool(

2026-08-10 13:56:49 236

原创 RAG实战-让AI基于你的私有文档回答问题而不是胡说八道

我们团队之前做了一个内部知识库问答系统,一开始直接把文档丢给GPT,效果惨不忍睹——它要么胡说八道(幻觉),要么说"我没有相关信息"。后来引入RAG架构,回答准确率从40%飙升到92%。这篇文章是我完整的实战笔记。RAG不是万能的,它的上限取决于你的文档质量和检索精度。但相比纯LLM回答,RAG至少解决了"胡说八道"的问题。如果你正在做企业知识库、客服问答、文档搜索这类需求,RAG是目前最靠谱的方案。下篇写MCP协议开发实战~

2026-08-10 13:56:10 323

原创 从零搭建AI-Agent-我用LangChain做了一个能自动写周报的助手

每周五下午最痛苦的事情是什么?写周报。于是我花了一个周末,用LangChain搭了一个"周报助手Agent"。它能自动从我的Git提交记录、Jira任务、日历会议中提取信息,然后生成一份结构化的周报。这篇文章完整记录了搭建过程,从Agent的基本原理到工具设计、Prompt工程、到最终部署。如果你也想入门Agent开发,这篇应该是一个不错的起点。Agent = LLM(大脑) + Tools(手脚) + Memory(记忆) + Planning(规划)Agent的能力取决于你给它什么工具。

2026-08-07 14:15:09 625

原创 分布式系统一致性方案选型:别再无脑用2PC了

我面试过不少候选人,问到"分布式事务怎么做",大多数人要么只会说"用Seata",要么模糊地提一句"最终一致性",但问到具体怎么实现、什么场景用什么方案、有什么坑,就答不上来了。今天我把实际项目中用过的分布式一致性方案做一个系统梳理,每种方案都有代码实现和适用场景分析。分布式事务没有完美方案,只有最适合你业务的方案。不要为了技术而技术,也不要因为怕复杂就全用2PC。数据最终一致 + 对账兜底 = 解决99%的分布式一致性问题。

2026-08-07 14:14:34 187

原创 高并发系统设计:我是如何把QPS从500扛到5万的

2024年年中,我们做了一次促销活动。预估流量是平时的10倍,结果实际流量是平时的50倍。系统直接被打崩了——接口超时、数据库连接池满、服务OOM、用户疯狂投诉。事后复盘,我们用了两周时间做了一套完整的高并发优化方案。这篇文章就是那次优化的完整记录。优化四板斧:1. 缓存 → 减少数据库压力(多级缓存)2. 异步 → 削峰填谷(MQ)3. 限流 → 保护系统(Sentinel)4. 扩容 → 增加吞吐量(水平扩展)设计原则:- 无状态设计(方便水平扩展)- 幂等性设计(重试不会产生副作用)

2026-08-06 17:34:53 323

原创 MySQL百万数据优化实战:慢查询从10秒降到100毫秒

上个月,运营同事找我说后台的"订单列表"页面越来越慢,有时候直接超时。我一看慢查询日志,好家伙,一条SQL跑了12秒。数据量其实也不算大,订单表300万条记录。但就是这个量级,一条写得不好的SQL就能让你体验"数据库连接池打满"的绝望。下面是我完整的排查和优化过程。SQL优化没有银弹,但90%的慢查询都可以通过合理的索引设计解决。剩下的10%才需要考虑架构层面的优化(读写分离、分库分表、缓存)。建议大家在开发阶段就养成写完SQL跑一遍EXPLAIN的习惯,别等上线后被运维叫去"喝茶"。

2026-08-06 17:34:09 436

原创 Redis真的只是缓存吗?这10个高级玩法你知道几个

我第一次接触Redis的时候,也觉得它就是个key-value缓存。直到在实际项目中遇到了各种奇葩需求,才发现Redis这玩意儿简直是瑞士军刀。今天我把自己项目中实际用过的10个Redis高级玩法分享出来,每个都有代码实例和踩坑经验。Redis技能树├── 基础:String/Hash/List/Set/ZSet├── 进阶│ ├── 分布式锁(Redisson)│ ├── 延迟队列(ZSet)│ ├── 限流(滑动窗口)│ └── 布隆过滤器├── 高级│ ├── GEO(地理位置)

2026-08-05 14:21:46 250

原创 微服务拆分踩坑实录:从单体到微服务,我后悔的5个决定

2024年初,我们团队接到一个任务:把一个运行了3年的单体Spring Boot项目拆分成微服务。当时我信心满满,觉得"不就是拆几个服务嘛"。结果三个月后,我深刻体会到了什么叫"拆分一时爽,维护火葬场"。今天这篇文章,我不讲理论,只讲我真实踩过的坑。场景推荐方案强一致性(转账)最终一致性(下单)本地消息表 + MQ长事务Saga模式简单场景重试 + 幂等经过这些坑,我总结了一套微服务拆分的决策框架微服务不是银弹,它解决了一些问题,也引入了大量新问题。如果你的团队还小、业务还简单,

2026-08-05 14:21:11 233

原创 AI Agent 可观测性:如何破解多步推理黑盒,让危险操作不再“裸奔”

当 Agent 只能聊天时,黑盒意味着答案难解释;当 Agent 可以删除文件、修改代码和调用业务系统时,黑盒意味着风险不可控。真正可靠的 Agent,不是从不犯错,而是每一步有迹可循、高风险动作可以拦截、失败可以复现、变更可以回归验证。别让你的 AI “裸奔”,从记录第一条结构化工具调用开始。

2026-08-03 17:39:46 311

原创 MCP 协议开发实战:从零搭建一个可用、可扩展的 AI Agent 工具服务器

服务端重新鉴权,不能相信模型传来的用户 ID;读取与写入工具分开;写操作增加确认、幂等和审计;返回最小数据,默认脱敏;限制请求次数、执行时间和输出大小;不把内部异常堆栈直接返回给模型。尤其不要提供一个万能或run_shell。工具越通用,越难建立可验证的权限边界。MCP 的价值不只是“让 AI 调 API”,而是把工具发现、输入约束、调用结果和能力边界组织成可互操作的协议。职责小、权限窄、结果可验证、调用可审计。MCP 2025-06-18 规范MCP Server 能力概览。

2026-08-03 17:39:04 196

原创 Codex++ 安全边界探秘:当 AI 不只写代码,还能执行命令

Agent 越强,越不能把安全寄托在“它应该不会这么做”。合理的目标不是让 Codex 永远正确,而是让一次错误无法轻易越过权限边界,并能被发现、阻断和回滚。OpenAI:Codex CLI 使用与审批模式。

2026-08-02 14:48:44 221

原创 DevEco Code 的 Plan+Build 模式:为什么“先审方案,再写代码”反而更快?

Plan+Build 的真正意义,是把 AI 编程从“一次性生成”升级为“可审查的工程过程”。当需求简单时直接做;当错误代价高时先把路线摊开。在错误代码出现之前,识别错误方向。华为开发者:DevEco Studio 与 DevEco Code华为开发者:DevEco CodeGenie 能力概述。

2026-08-02 14:47:42 235

原创 警惕 Codex 幻觉:我用真实编码场景测出了 6 类高危误用

最成熟的用法不是要求 AI 永不犯错,而是建立一条让错误尽早暴露的流水线:限制权限、缩小任务、固定验收、执行验证、保留审查。真正应该警惕的并非幻觉本身,而是团队在速度提升后,悄悄省略了原本用于发现错误的工程环节。OpenAI:Codex Security 工作方式OpenAI:Codex 系统卡补充材料。

2026-07-31 10:42:38 224

原创 开源项目在 GitHub 上如何“破圈”?从 0 到 1000 Star 的运营方法论

明确告诉提交者:能否复现、谁会处理、是否欢迎认领。无法支持的需求也应解释边界,而不是让 Issue 永久悬空。首次响应时间:从 Issue 创建到维护者首次有效回复;关闭周期:从确认问题到解决或给出明确结论。自动回复只能负责收集版本、日志和复现步骤,不能代替维护者的真实沟通。开源破圈的本质不是营销技巧,而是持续降低理解、使用和参与的成本。Star 是结果,信任才是资产。陌生开发者第一次打开仓库后,五分钟内能获得什么确定的成功体验?GitHub:设置贡献指南GitHub:寻找参与开源的方式。

2026-07-31 10:41:57 237

原创 从Copilot到Agent-我的开发工作流正在被颠覆

大概是三个月前的某个周五晚上。手里有一个优先级不低的 Bug:线上偶现的超时,日志零散,复现路径不清晰。按以往节奏,这通常意味着:翻监控 → 搜关键字 → 本地加日志 → 猜根因 → 写修复 → 补单测 → 提 PR → 等 Review。一整套下来,轻松半个工作日起步。那天我试了一下当时刚开始深度用的 AI Agent(Cursor Agent / Claude Code 一类工具,下文统称 Agent)。先读代码再动手,不要上来就改;给出根因假设与验证步骤;修复要最小改动;同步补单测。

2026-07-29 10:37:46 603

原创 Java+Go 混合架构怎么搭?收官 50 道面试题 + 学习路线

Java 给你业务厚度,Go 给你并发与云原生宽度——混合架构不是妥协,是当下大厂最务实的选择。20 篇连载带你入门,接下来靠项目实战和源码阅读升级。祝你面试顺利,也期待在 Go 社区看到你的贡献。

2026-07-29 10:29:35 207

原创 实战:把一个 Java CRUD 模块重写成 Go(完整代码)

这不是「重写」,是「对照翻译」——Controller/Service/DAO 三层一一映射,注解换成 tag,DI 容器换成构造函数,JAR 换成单二进制。你就能在团队里落地第一个 Go 服务,启动快 100 倍,镜像小 20 倍,同事会来问你怎么做到的。建议标签GolangJava实战GinGORMCRUD微服务迁移。

2026-07-28 10:41:12 248

原创 Java 分层架构迁移到 Go:controller/service/dao 怎么落?

Spring 那套三层别扔——换 Go 语法重写一遍,controller→handler,service→service,dao→repository,@Autowired→构造函数注入,加上internal限制可见性。比你强行上 DDD 框架更接地气,也是团队最快达成共识的方式。建议标签GolangJava项目结构分层架构GinDDDwire。

2026-07-28 10:40:09 362

原创 GMP 调度 + GC 三色标记:Go 面试必考一次讲透(Java 人版)

/ 不逃逸:变量在函数内使用完毕 → 栈分配(快,无 GC 压力)x := 42return x // 值拷贝返回,x 在栈上// 逃逸:变量的生命周期超出函数 → 堆分配(需要 GC 回收)x := 42return &x // x 的地址被返回,必须堆分配GMP 回答「协程怎么跑」(M:N 调度 + work stealing + 抢占),三色标记回答「内存怎么收」(并发标记 + 混合写屏障 + 亚毫秒 STW)——这两张牌打牢,Go 面试一半分数到手。

2026-07-27 11:19:48 636

原创 从 JUnit 到 Go testing:单测、表驱动、Mock 怎么写?

JUnit 的 @Test 换成 TestXxx,@ParameterizedTest 换成表驱动,Mockito 换成接口 mock + gomock——Go 测试更朴素、更快(没有容器启动),但同样能覆盖从单元到集成的所有场景。表驱动是 Go 考官最爱问的测试模式,务必掌握。建议标签GolangJavaJUnit单元测试testingMock表驱动。

2026-07-27 11:19:17 220

原创 gRPC + Protobuf 入门:对标 Spring Cloud 的第一步

api/├── user/│ └── v1/│ ├── user.proto # 服务定义│ └── user_model.proto # 公共消息(可选分离)├── order/│ └── v1/└── buf.yaml # buf 工具配置(推荐)把 Feign 接口换成 .proto 文件,把 @FeignClient 换成生成的 gRPC stub,把 Spring Cloud Gateway 换成 grpc-gateway——服务间调用类型更安全、性能更高、契约更严格。

2026-07-24 10:10:55 196

原创 logback、Nacos 在 Go 里用什么?中间件对照清单

logback→zap,application.yml→viper,Micrometer→Prometheus,SkyWalking→OpenTelemetry——中间件的名字换了,职责和架构思路没变。Go 版本更轻、更快、更省内存,代价是需要自己拼装而非全家桶一键配齐。

2026-07-24 10:00:20 376

原创 MyBatis/JPA 对应 GORM 还是 sqlx?Go 数据库访问选型指南

DeletedAt gorm.DeletedAt `gorm:"index" json:"-"` // 软删除// TableName 自定义表名(默认是 users)LIMIT 1;;WHERE id =?;JPA 党用 GORM 快速出活,MyBatis 党用 sqlx/sqlc 精确控制——关键是把 ctx 传到底、连接池配对、事务包好。

2026-07-23 11:04:34 199

原创 Spring Boot vs Gin:Java 人搭第一个 Go REST API

/ 自定义校验:手机号ok {Phone string `json:"phone" binding:"required,phone"` // 使用自定义校验// 这里做一次性初始化(中间件创建时执行一次)// ====== 前置处理(Request 进来时) ======// ====== 调用下一个 handler ======c.Next()// ====== 后置处理(Response 出去时) ======import ("net/http"// 分页响应维度Gin。

2026-07-23 11:03:38 657

原创 Go 版 ThreadLocal?context.Context 超时与取消全解析

把 ThreadLocal 和超时取消收成 context 一个参数往下传——这不是 Go 的语法糖,而是微服务架构中超时级联、取消传播、链路追踪的生命线。记住三条原则:每个 IO 操作都传 ctx,创建立即 defer cancel,只传元数据不传业务参数。建议标签GolangcontextJava微服务面试超时控制。

2026-07-22 11:14:10 223

ch42时序电路.ppt

ch42时序电路.ppt

2021-12-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除