2核2G小内存服务器总是卡死?一招教你用Swap分区彻底解决 近在云服务器上部署了几个个人项目,但发现这台入门级的 2核2G(2h2g)服务器经常会出现运行一段时间后莫名其妙卡死、SSH连接断开,甚至后台提示磁盘 I/O 读写异常的情况 😫。 经过一番排查,终于找到了问题的根源,并用一个非常简单的方法彻底解决了。今天就把这次的排坑经验分享出来,希望能帮到同样 2026-05-20 终端漫游 6 野猪凌梦
别再重复加密密码了!Spring Security 中正确验证旧密码的方式 在使用 Spring Security 构建用户认证系统时,我们通常会通过 BCryptPasswordEncoder 对用户密码进行加密存储,以保障安全性。但在实现“修改密码”功能时,我曾犯过一个看似低级却非常典型的错误——对用户输入的旧密码再次加密,然后与数据库中的密文直接比对。 直到调试时才发 2026-05-15 后端探秘 13 野猪凌梦
能分享一下你很喜欢的摘抄文案吗? 不顺路了吗?那祝你平安。 当时的他是最好的他,后来的我是最好的我,可是最好的我们之间,隔了一整个青春。 有些路,你要一个人走,这不是孤独,是选择。 十里清风十里路,步步清风再无你。 在自己的节奏里安静和热闹我都喜欢 2026-05-15 生活碎片 11 野猪凌梦
LeetCode 3:无重复字符的最长子串(滑动窗口解法) 记录一下刷题日常。这道题是非常经典的滑动窗口问题,主要利用双指针维护一个不包含重复字符的“窗口”,配合 HashSet 进行去重。 💡解题思路 定义双指针与集合: 定义 left 和 right 两个指针,初始都指向字符串的开头。再定义一个 HashSet,用来记录当前窗口内出现了哪些字符。 窗口 2026-05-15 算法寻踪 14 野猪凌梦
Spring AI 实战:为 AI Agent 封装一个本地终端命令执行 Tool 在开发基于大模型的 AI 应用时,让大模型拥有“行动能力”是迈向 AI Agent(智能体)的关键一步。通过 Spring AI 提供的 Function Calling(函数调用)机制,我们可以非常优雅地将本地 Java 方法暴露给 AI,让大模型根据上下文自主决定何时调用这些工具。 今天在这篇文 2026-05-15 后端探秘 20 野猪凌梦
滑动窗口:优雅解决 API 批量处理限制 在 AI 应用开发或者对接第三方服务时,我们经常会遇到一个非常现实的“拦路虎”:API 的调用限制。 比如最近我在做 RAG(检索增强生成)知识库时,需要把本地的 Markdown 文档向量化并存入 PostgreSQL。我使用的 DashScope(通义千问)嵌入模型虽然效果很棒,但它有一个硬性规 2026-05-13 后端探秘 24 野猪凌梦
Spring AI 消息持久化避坑指南:利用 Kryo 解决 Message 序列化难题 1. 背景:消失的 Serializable 在使用 Spring AI 开发对话系统时,我们通常需要将会话历史(List<Message>)保存到本地磁盘或 Redis 中,以便实现上下文记忆。 然而,Spring AI 中的 Message 接口及其实现类(如 UserMessage, Assi 2026-05-11 后端探秘 30 野猪凌梦
自定义线程池参数 * 线程池配置类 */ @Configuration public class ThreadPoolExecutorConfig { ThreadFactory threadFactory = new ThreadFactory() { private int count 2026-05-09 后端探秘 22 野猪凌梦
基于 Redisson 实现精细化接口限流:普通用户 vs VIP 用户的差异化控制 在高并发系统中,限流(Rate Limiting) 是保护后端服务不被突发流量打垮的关键手段。但传统的“一刀切”限流策略往往无法满足业务多样性需求——比如,我们希望 普通用户每秒最多调用 1 次接口,而 VIP 用户可以调用 5 次。 本文将带你使用 Redisson + Redis 实现一种灵活、 2026-05-09 后端探秘 28 野猪凌梦
Vue 3 + Element Plus 开发踩坑:为什么 scoped 样式失效?:deep() 到底怎么用? 在使用 Vue 3 + Element Plus 开发时,你是否也遇到过这样的困惑: “我已经写了 scoped 样式,但 Element Plus 组件的内部元素就是不生效!” 最后不得不加上 :deep() 才解决? 今天我们就来彻底搞懂这个问题的本质。 🔍 问题复现:官方头像上传组件样式“失 2026-05-09 前端拾光 25 野猪凌梦