项目在运行时日志突停,排查发现 Linux OOM Killer 在内存耗尽时直接 kill -9 进程,导致 Java 进程无任何关闭日志。根因是 2 GB 机器上同时运行 3 个未限制堆大小的 Spring Boot、MySQL 8.0 与监控组件,且未配置 Swap,JVM 默认占用近物理内存,MySQL 默认参数又极耗内存。通过为每个 Java 进程设置统一的 -Xms/-Xmx(512 M、256 M 等),在 my.cnf 中调小 innodb_buffer_pool、max_connections、performance_schema、table_open_cache 等,关闭高消耗特性,并新增 2 GB Swap,内存使用恢复健康,进程不再被 OOM Killer 杀死。总结教训:小内存环境必须限制 JVM 堆、调优 MySQL、配置 Swap,并通过系统日志排查异常。

通意千应是面向企业的AI对话平台,采用Spring Boot + Vue前后端分离架构,集成ChatGPT、DeepSeek、Qwen等多模型,支持流式响应、Markdown渲染、深度思考和网络搜索增强。系统提供用户注册、会话管理、消息导出、分享链接等功能,并通过Spring Security + JWT实现安全认证;后台支持用户、会话、数据统计及权限控制。平台兼顾可扩展性与成本可视化,帮助企业快速搭建专属AI助手。

项目遵循 Keep a Changelog 与语义化版本,记录自2023‑01‑10 起的所有发布。最新 v2.2.0(2026‑03‑26)加入文章阅读限制、微信公众号验证码、Redis 验证码存储及多项安全加固;v2.1.0 引入基于 OpenAI 的 AI 对话机器人、AI 评论审核、表情系统、弹幕等功能;v2.0.0 提供 AI 智能摘要、实时天气等。后续版本逐步完善评论、音乐、天气、图片等特性。提交规范分为 feat、fix、docs 等,维护者为召田最帅boy。

博客文章解锁功能原本仅依赖本地 localStorage 的 blog_global_unlocked 键,导致用户可通过开发者工具直接置为 true 绕过关注公众号的验证码验证,破坏付费引流并带来安全隐患。为根除此缺陷,方案将核心验证迁移至服务器:前端请求验证码接口,服务器校验后在 Redis 中以 clientId 记录解锁状态并生成一次性令牌;页面加载时通过 /status 接口查询解锁状态,若已解锁则返回令牌供前端保存。系统通过拦截器统一生成并写入 blog_client_id Cookie,结合请求头、IP + User‑Agent 指纹实现多层身份识别,令牌采用 MD5(clientId+timestamp+UUID) 并在 Redis 中设置滑动过期,以防篡改。整个改造保持用户体验流畅,同时实现服务器端可追踪、不可伪造的安全解锁机制。

本文实现了基于微信公众号验证码的文章解锁功能:未关注用户只能阅读文章前1/3,页面底部提供“查看全文”引导关注;用户关注后发送关键词“博客”,公众号自动回复6位数字验证码,验证码存于Redis(5 分钟有效、单次使用),前端通过LocalStorage记录全局解锁状态,实现一次验证后所有文章永久解锁。核心技术包括CSS 截断+遮罩、Spring Boot 与 Redis 的验证码生成/校验接口、微信服务器消息推送与XML解析,以及前端的状态持久化和响应式交互。整体架构为浏览器 ↔ Spring Boot ↔ Redis,配合微信服务器完成验证码下发与验证。

本文介绍在博客中实现“部分展示+验证解锁”的方案。通过自动计算文章高度,仅显示前1/3并加底部虚化遮罩,点击“查看全文”弹出扫码关注公众号、输入验证码的验证框。核心实现包括HTML三块结构、CSS变量控制截断与平滑展开动画、JS负责高度计算、锁定/解锁逻辑及全局localStorage标记。重点技巧有临时去除max‑height获取真实高度、动态CSS变量、cubic‑bezier过渡以及成功勾选动画。文末提供后端验证码、公众号自动回复、验证码有效期、统计与A/B 测试等优化建议。