- 博客(28)
- 收藏
- 关注
原创 一次彻底搞懂 @Async、线程池和“变快”的本质
可以用三句话概括:1️⃣ 线程池不会让任务更快2️⃣ 它可以让系统更快3️⃣ 并行才是真正缩短总时间的关键本质理解:线程池不是加速器,它是调度器。
2026-02-27 15:52:13
305
原创 我们到底在谈什么?从 OpenClaw 到垂类 Agent:智能体的现实与理想差距
很多人觉得现在的智能体“名不副实”。其实不是。它确实进化了,但还远未达到科幻级别。如果说 2023 是“大模型元年”,那么 2025–2026 更像是:“工程化 Agent 起步阶段”。真正的“帮你点外卖型 Agent”,可能还需要模型能力、系统架构、安全机制和商业生态同时成熟。
2026-02-25 14:12:27
730
原创 一次 Java 定时任务 OOM 的真实复盘:不是内存太小,而是代码在“慢性自杀”
OOM 不一定有 OOM 日志定时任务是内存问题高发区“无告警信息”比“告警信息”更危险日志和字符串拼接是隐形杀手。
2026-01-27 10:42:59
385
原创 LangGraph 相比 LangChain 的工程级优势总结
LangChain 解决的是“如何更方便地使用 LLM”,LangGraph 解决的是“如何构建可扩展、可维护的 Agent 系统”。Subgraph 不是 LangGraph 的唯一优势,我们已经进入 Agent 工程阶段了。
2026-01-26 18:24:16
634
原创 LangChain和LangGraph
LangChain 在“复杂逻辑”面前会越来越别扭。这正是 LangGraph 的设计初衷。LangGraph 越复杂,优势越明显。LangChain 能做,但很痛苦。“改一个逻辑 → 整个函数都得动”✔ 有 retry / loop。把 Tool / Parser。Tool → 结果 → 决策。失败 → 重试 / 换策略。LangGraph 做起来。单次或少量 LLM 调用。明确的“从 A 到 B”✔ 有 Agent 规划。✔ 只有 1~3 步。
2026-01-14 15:32:24
486
原创 从“分布式锁”到“唯一索引”:一次 AI 慢调用场景下的设计转型
RUNNING -- AI 调用中(可能)SUCCESS -- 成功,有结果FAILED -- 失败,可重试。
2026-01-08 10:25:21
314
原创 一次并不简单的 Spring 循环依赖排查
这次问题并不是:多个平台接入多个类依赖同一个 ServiceWebClient 或远程调用问题而是一个典型但容易被忽略的 Spring 行为差异普通 Bean 可以使用“半成品”解决循环依赖但需要 AOP 代理的 Bean(如 @Async)必须是最终成品一旦这两种需求同时存在,Spring 就只能选择失败而不是冒险。Spring 的循环依赖问题,从来不是“会不会”“在什么前提下,Spring愿不愿意帮你兜底”
2026-01-07 15:44:06
385
原创 公司中 ES使用场景分析
场景业务示例核心目的搜索型网红搜索、视频搜索找到最相关内容筛选排序网红列表、视频排行榜找到符合条件的数据统计分析数据报表、趋势分析看整体表现。
2025-12-29 14:16:27
602
原创 一次测试环境“前端页面打不开”的排坑实录
❌ 先排除网络 / 跨域 / 网关✅ 查看后端日志✅ 确认请求是否进入服务(Undertow / Controller)✅ 精确定位 SQL 异常✅ 对比数据库结构与代码版本最终确认:不是前端问题,也不是网络问题,而是环境版本不一致问题。这次问题的本质,是“数据库结构先行,而代码滞后”,导致测试环境插入失败,最终表现为前端页面打不开。这类问题在实际开发中非常常见,但如果没有良好的排查习惯,很容易被误判为:前端 bug网络问题环境配置问题多看日志、少猜问题,是解决这类问题的唯一正确姿势。
2025-12-25 18:19:16
517
原创 服务器无法拉取远程仓库代码
在企业内网环境中,协议是否可用优先于安全性选择能否连通由网络策略决定,而非 Git 配置本身。Git 拉取失败时,优先检查远程仓库协议不要过度依赖错误提示进行判断publickey等提示,在内网环境下可能只是协议不可用的表现。同一台服务器上,能正常工作的项目是最可靠的参考在企业内网或专有云环境中使用 Codeup 时,如果出现 Git 拉取失败问题,应首先确认网络对不同协议(HTTP / HTTPS / SSH)的放行策略。
2025-12-19 14:26:15
545
原创 反爬虫监控
最近导师交给我一个任务,要我做一个反爬虫的监控,因此首先了解爬虫反爬虫。什么是爬虫?简单来说就是利用程序假装用户访问我们的网站接口。爬虫对我们有什么坏处?首先最基本的高频的爬虫会导致我们数据库压力暴涨,接口qps升高,正常用户访问变慢,也就是爬虫在白用我们的服务器,其次高频的爬虫会影响我们的决策数据,试想公司的数仓全部都是无意义的爬虫数据,根本无法做业务决策,更重要的是,我们网站的核心数据或者自己做好清洗的数据被爬,这些属于业务资产,决不能被白嫖。如何反爬?
2025-12-17 18:25:49
918
原创 算法学习:链表相关
删除链表很重要也很常见,当时经常会被指针搞晕,所以要重点掌握,最好是练到肌肉记忆。我们知道删除一个节点需要拿到他的前一个节点,因此对于头节点我们要么设置一个虚拟头节点辅助删除要么针对头节点特别写一段代码。
2025-11-12 21:55:29
768
原创 垃圾回收器学习有感
CMS是老年代的垃圾回收器,它最大的特点是并发,也就是能尽量减少 STW 的时间,在某些场景下让用户线程和 GC 线程并发执行。CMS 的工作流程简单来说分为五个步骤:初始标记,并发标记,并发预清理,重新标记以及并发清除。初始标记会记录和GC Roots直接关联的对象,这个过程会触发短暂的STW,之后会进行并发标记,这个过程不会触发STW,GC线程和用户线程可以同时工作,这个阶段主要是从GC ROOTS向下追溯,标记所有可达的对象。
2025-03-29 20:15:44
863
原创 MQ学习有感(2)
Rabbitmq是怎么做的这里可以从三个方面讲:(1)生产者把数据搞丢了,这一般是因为网络问题导致没传成功。我们可以使用rabbitmq的事务功能,就是在发送数据前开启事务功能,发送数据后如果没有成功,就可以回滚事务,重新发一遍,如果成功就提交事务。但是问题是吞吐量下来了,太耗费性能。所以我们可以使用confirm模式,你每一次写入的数据会有自己的id,如果失败,就调用生产者的本地接口回传一个nack消息,如果成功就传一个ack消息。
2025-03-28 23:05:49
685
原创 Mysql学习有感
索引是帮助mysql高效获取数据的数据结构,就像一本书的目录,加快数据库查询速度。缺点:(1)索引一般放在磁盘文件中,索引需要占用磁盘空间。(2)降低更新表的效率,因为你再更新数据之后还要更新索引文件。
2025-03-27 18:49:49
407
原创 MQ学习有感
为什么要用mq?这里主要有三点好处:(1)异步,简单来说就是没用等事情做完再去干下一件事,你只要把消息交给mq就可以忙自己的事,提高了系统性能,也提高了用户体验(3)削峰,如果突然有大量消息涌入,可以先存放到mq中,然后再慢慢从里面消费,不会突然崩掉,平滑处理流量。为什么要用rabbitmq/kafka?用rabbitmq,是因为他最简单,有最优秀的开源界面,但是性能相比较而言不高,但是对于我的电商项目来说够用了。
2025-03-25 21:23:13
444
原创 Redis学习有感(2)
string比较简单,一般就是做kv缓存,get set。hash类似map的结构,一般是将一个对象缓存到redis中,每次读取操作一个字段。list一般可以存类似文章列表或者粉丝列表的东西;也可以通过lrange命令,即从某个元素开始读多少个元素,实现分页查询,基于redis的高性能分页;最后还可以搞一个消息队列。set就是无序集合,重点是去重的。可以通过集合操作,如交集来查看两人共同好友。sorted set,相较set而言多了一个分数,也就可以自定义排序。
2025-03-24 21:48:14
947
原创 数据结构Day2:顺序表实战
/评委给选手打分,规则为去掉一个最高分和一个最低分,然后计算平均值,输出某选手的得分。//统计所给的n个数中,负数,零和正数的个数。//给你n个整数,求他们中所有奇数的乘积。//通常做题无需写模板,顺序表就是数组。实战2和3需要使用Day1的模板做。//顺序表实战3:青年歌手大赛。/顺序表实战1:求奇数乘积。//顺序表实战2:数值统计。
2024-01-23 16:52:09
713
1
原创 数据结构学习Day1:顺序表代码
if (index < 0 || index >= list->size) { //与插入操作不同删除操作index不可等于最后一位,因为实际上是不存在的因此无法删除,而插入不关心存不存在。if (list->size == list->capacity) { //如果表中元素满了,即size == 设置的容量capacity,我们选择扩容。//新空间为老空间*2。--i) {//从后往前挪。
2024-01-22 18:28:13
708
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅