- 博客(19)
- 收藏
- 关注
原创 hotkey热key探测——自动缓存热门数据
对于我们的网站平台,为了减少用户加载网页和题目的时间,可以对经常访问的数据(比如首页数据和题目)进行缓存,而不是每次都从数据库进行查询。常用的缓存就是分布式缓存 Redis ,它们将数据存储在内存中,读写效率都比数据库更高,能够让系统支持更大的并发,并且减小数据库的压力。但是,怎么知道哪些数据该缓存呢?我们如果能够预判到热点数据,可以提前人工给数据加缓存,也就是。为什么需要热点?因为热点的瞬时流量大,需要及时发现与缓存。
2025-10-04 03:45:00
580
原创 自主实——动态 IP 黑名单过滤
一些恶意用户频繁请求服务器资源,导致资源占用过高。通过 IP 封禁,可以有效拉黑攻击者,防止资源被滥用,保障合法用户的正常访问。Sentinel 本身就支持请求来源的但其实引入 Sentinel 是需要一定成本的,本节主要分享更轻量的动态 IP 黑白名单过滤的常用设计和实现方法。
2025-10-03 16:00:00
488
原创 流量安全——基于Sentinel实现限流,熔断,降级
注解并不会定义规则注解的作用是告诉 Sentinel:当前方法是一个「资源」;当命中规则时,用我指定的fallback来处理。// 对应的 `handleException` 函数需要位于 `ExceptionUtil` 类中,并且必须为 static 函数.// 原函数// Fallback 函数,函数签名与原函数一致或加一个 Throwable 类型的参数.// Block 异常处理函数,参数最后多一个 BlockException,其余与原函数一致.
2025-10-02 10:08:33
697
原创 反爬虫策略——统计访问频率
们完全可以利用这些系统帮我们进行统计,比如在 Hotkey 中配置热 key 的规则(业务前缀 + 用户 id 作为 key),如果发现一个 key 成为了热 key,就表示该 key 对应的用户访问题目过多,就可以进行后续处理。if (StrUtil.isBlank(key)) { //StrUtil.isBlank(key) 是 hutool的方法,用于判断一个字符串是否为 "空白"。--要么同时成功,要么同时失败-->,可以使用 Redis 的 Lua 脚本来完成。
2025-09-29 09:30:00
1277
原创 Sa-Token 框架
部分接口需要特定的用户权限或对应的角色才能访问,那怎么知道当前登录用户具有哪些权限或角色呢?我们需要新建一个类,实现接口。该接口提供了获取当前登录用户的权限和角色的方法,在每次调用鉴权代码时,都会执行接口中的方法。@Component // 保证此类被 SpringBoot 扫描,完成 Sa-Token 的自定义权限验证扩展/*** 返回一个账号所拥有的权限码集合*/@Override/*** 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)*/
2025-09-28 09:00:00
1375
原创 MybatisPlus
MybatisPlus提供了自定义SQL功能,可以让我们利用Wrapper生成查询条件,再结合Mapper.xml拼接SQL。把SQL语句都维护在持久层,而不是业务层/*** 更新id为1,2,4的用户的余额,扣200*/@Test//1、构造更新条件对象//2、更新;调用自定义的更新方法,传入更新数值与查询条件对象在UserMapper中添加如下方法:@Update 注解用于标识当前方法是一个更新操作,括号内的字符串是具体的 SQL 语句。:指定要扣除的金额,通过。
2025-09-22 23:53:19
709
原创 AI07——智能体实现与示例
系统提示:AiRobot(你的 Agent Bean)在构造函数里设置配置名、提示词、步数上限、可用工具与ChatClient。ToolCallback[](工具集合)把你自己写的工具,注册成一个工具类,之后传给AiRobot让他去调用工具运行机制(见BaseAgent→ReActAgent→think():把当前消息上下文 +送给模型,让模型决定是否调用工具act():若有工具调用,交给执行,结果作为回填上下文。如调用了),状态置为FINISHED;否则继续下一步,最多 20 步。
2025-09-10 17:20:25
1145
原创 Git 工具的使用
代码回溯:Git在管理文件过程中会记录日志,方便回退到历史版本版本切换:Git存在分支的概念,一个项目可以有多个分支(版本),可以任意切换多人协作:Git支持多人协作,即一个团队共同开发一个项目,每个团队成员负责一部分代码,通过Git就可以管理和协调远程备份:Git通过仓库管理文件,在Git中存在远程仓库,如果本地文件丢失还可以从远程仓库获取Git 可以对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件,Git 仓库分为两种:本地仓库:开发人员自己电脑上的 Git 仓库。
2025-09-10 16:36:22
1303
原创 MCP开发的示例
下面用网络图片搜索 MCP 服务来作为mcp开发的示例包括 Lombok、hutool 工具库和 Spring AI MCP 服务端依赖。 引入MCP服务端的依赖 <!-- 引入 WebMVC--> <dependency> <groupId>org.sp
2025-09-04 21:06:28
888
原创 AI06——MCP 协议
MCP(Model Context Protocol,模型上下文协议)是一种开放标准,目的是增强 AI 与外部系统的交互能力。MCP 为 AI 提供了与外部工具交互的标准化方式,让 AI 能够访问最新数据、执行复杂操作,并与现有系统集成。MCP 是一种开放协议,它标准化了应用程序如何向大模型提供上下文的方式。可以将 MCP 想象成 AI 应用的 USB 接口,提供了标准化方式一样(类似于转接器),MCP 为 AI 模型连接不同的数据源和工具提供了标准化的方法。MCP 它是个或者。
2025-09-04 20:36:36
1355
原创 AI05——工具调用
基于 Methods 方法(容易编写、更容易理解、支持的参数和返回类型更多)Methods 模式:通过@Tool注解定义工具,通过tools方法绑定工具// 使用方式").call();基于functions 函数式编程(不推荐,不好用)通过@Bean注解定义工具,通过functions方法绑定工具Spring AI 提供了两种定义工具的方法 ——注解式和编程式。Spring AI 支持大多数常见的 Java 类型作为参数和返回值@Tool。
2025-09-02 09:25:50
1458
原创 在Cursor中,添加拓展插件时,显示Error while fetching extensions. Failed to fetch,如何解决
1.按F1,之后搜索Developer: Toggle Developer Tools切换到控制台2.随便搜索一下扩展程序3.看你控制台输出的日志(看不懂就扔给ai)日志中反复出现 [internal] Failed to establish a socket connection to proxies: PROXY 127.0.0.1:7891 和 ERR_PROXY_CONNECTION_FAILED就说明代理连接失败。
2025-08-31 18:34:22
775
1
原创 安装好Node.js且配置好环境,但使用MCP时,无法运行 “command“: “ npx.cmd“
之所以出现 “无法枚举容器” 错误,是因为当前用户既没有目录的 “所有权”,也没有 “修改权限的权限”—— 这通常是由于目录初始创建时的所有者为 “管理员” 或 “系统账户”,且未赋予普通用户权限导致的。在执行第二步的操作即可解决该问题。
2025-08-29 11:18:54
601
原创 AI04——RAG的基础概念
文章摘要:RAG(检索增强生成)技术通过结合外部知识库和大语言模型,有效解决AI的知识时效性和幻觉问题。文章详细介绍了RAG的核心组件与实现流程,包括文档ETL处理(抽取、转换、加载)、向量存储与检索、查询优化等关键技术。重点分析了SpringAI框架下的RAG实现方案,涵盖文档预处理策略、混合检索方法、PGVector集成以及高级检索增强技术。同时探讨了减少AI幻觉的实践方法,并介绍了自纠错RAG、多智能体系统等前沿架构演进方向,为构建高效可靠的智能问答系统提供技术参考。
2025-08-24 20:51:40
944
原创 通过多配置文件分离——区分可公开提交和需保密的配置。
├── application-local.yml # 本地开发配置(含敏感信息,不提交)├── application.yml # 公共配置(可提交到仓库)# 激活本地环境(实际运行时会加载application-local.yml)dashscope: # 大模型API密钥(敏感信息)# springAi的公共配置(非敏感部分)# 可选:忽略其他环境的敏感配置(如生产环境)# 忽略本地环境配置(含敏感信息)# 数据库配置(敏感信息),后者的配置会覆盖前者的同名配置。
2025-08-18 23:07:51
495
原创 ai应用开发的基础知识点
1,实现以下接口 CallAroundAdvisor(处理非流式的请求和响应) StreamAroundAdvisor(用于处理流式请求和响应)// 实现方法...2,实现核心方法对于非流式处理 (CallAroundAdvisor),实现 aroundCall 方法:@Override// 1. 处理请求(前置处理)// 2. 调用链中的下一个Advisor// 3. 处理响应(后置处理)
2025-08-14 23:43:51
656
原创 各位CSDN的UU们,大家好!
我只是一个普通到不能在普通的普通人,现在决定不再只做旁观者,想把自己的技术成长轨迹也留在这里:可能是刚啃完一个框架的心得体会,可能是调试到凌晨才解决的一个小bug,也可能是对某个技术方向的迷茫与探索。今天,我要正式成为这个技术社区的一员啦!之前一直是这里的“隐形读者”,刷过无数篇教程、踩坑指南和行业分析,每次都觉得“挖到宝”——毕竟能在这里看到最真实的技术思考和实践经验。希望自己最终能找到心仪的工作,多年后蓦然回首,不悔当初的选择。欢迎路过的朋友停下脚步,一起聊聊代码、谈谈技术。
2025-08-11 08:21:43
97
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人