Express 中间件机制到底解决了什么问题?

我刚开始学习 Express 中间件时,记住的是这句话: 中间件就是一个函数,接收 req、res、next 三个参数。 这句话没有错,但它太像定义了。只记住定义,很容易出现一种尴尬:代码会写,却不一定真的知道它为什么存在。等到项目里出现鉴权、日...

后端开发

MySQL 索引入门:为什么加了索引查询会更快

“给这个字段加个索引”几乎是性能优化讨论中出现频率最高的一句话。但索引不是性能魔法:有的索引能让查询从秒级降到毫秒级,有的索引建了却完全没被使用,还有的索引会拖慢写入并占用大量磁盘。 要真正用好 MySQL 索引,关键不是记住几个 DDL 语句,而是...

后端开发

Node.js 事件循环:为什么后端接口不会被 I/O 卡住

刚接触 Node.js 时,我就有一个疑问:JavaScript 不是单线程吗?如果一个接口正在查询数据库、读取文件或请求第三方服务,为什么服务器还能继续处理其他请求? 答案在于 Node.js 的事件循环(Event Loop)。它让 JavaSc...

后端开发

Redis 在项目开发中的常见用法:从缓存到分布式协作的实战指南

Redis 常被一句话概括为“内存数据库”,但在真实项目里,它的价值远不止把数据放进内存。 登录态、热点缓存、验证码、排行榜、接口限流、延迟任务、抢购库存、分布式锁……这些看似不相干的需求,背后都在处理同一类问题:如何用低延迟、可共享、可原子操作的状...

后端开发

Function Calling 入门:让模型调用业务工具

前言做 AI 应用时,我一开始很容易把大模型理解成“一个更聪明的文本生成接口”:用户提问,模型回答,前端展示结果。 但真正进入业务项目后会发现,很多需求不是只靠“回答得好”就能完成的。比如: 用户问“我还有几节课?” 用户说“帮我预约明天下午的训练...

AI

从调用扣子工作流到理解知识库问答

写在前面做少儿跑酷教练知识库问答助手项目时,我接触到了一个很典型的 AI 应用场景:用户在小程序里提出和课程、等级、动作相关的问题,系统根据已有知识库返回回答。 这个模块的实现方式不是从零搭建一套向量数据库和 RAG 服务,而是基于扣子工作流完成知识...

AI

WebScoket

在 Web 应用早期,浏览器和服务器之间的通信几乎完全依赖 HTTP 请求。用户点击按钮,浏览器发起请求,服务器返回响应。这种模式简单、可靠,也非常适合传统页面加载和表单提交。 但随着聊天系统、在线协作、实时行情、多人游戏、消息通知等场景出现,传统 ...

网络通信

Agent Client Protocol 初学习

认识 Agent Client Protocol什么是 Agent Client Protocol?Agent Client Protocol(简称 ACP)是一种专门用于 AI Agent 与客户端(编辑器、IDE、终端、Web 应用等)之间通信的...

AI

双 Token 校验机制

为什么需要双 Token? 单 Token 模型通常存在一个核心矛盾:安全性与用户体验难以兼顾。 如果 Token 过期时间很短:安全性高,但用户频繁掉线 如果 Token 过期时间很长:用户体验好,但一旦泄露风险极大 双 Token 的核...

前端

Chrome DevTools MCP

前言最近读到一篇关于 Chrome DevTools MCP 的博客,文章系统介绍了 Claude Code 配合 Chrome DevTools MCP 做页面抓取、前端调试等的使用。看完感觉这个功能确实还挺好的,所以决定在自己的项目里试一试 Ch...

123