- 博客(100)
- 收藏
- 关注
原创 spring-boot项目集成spring-ai
Component//对话器//MCP工具//RAG@Autowired@Autowired) {.build();//自带对话id// 动态启用 RAG// 启用 MCP 工具调用try {.call().content();// 工具调用异常,打印日志或返回默认内容System.err.println("工具调用异常: " + e.getMessage());// 返回模型基础回答或自定义错误提示// 这里可以调用不带工具的对话或者返回固定内容。
2025-07-11 16:13:54
218
原创 ruoyi-plus系列代码生成功能详解
摘要:本文介绍了基于若依系统快速开发AI对话模块的过程。通过复制system模块创建ruoyi-ai新模块,修改pom.xml、配置文件和Nacos注册信息,设计包含必备字段的AI对话相关数据表,使用代码生成功能自动生成前后端代码,最终成功部署测试。该方法显著提升了开发效率,为后续功能扩展奠定了基础。整个流程涵盖模块创建、配置修改、数据表设计、代码生成等关键环节,体现了若依系统代码生成功能的强大优势。
2025-07-05 19:13:27
336
1
原创 AI辅助编写前端VUE应用流程
首先页面的设计是关键,进行合理的页面拆分是进行ai任务分解的关键,比如一个题目后台管理功能,它可以分为一个主要的展示页面和几个对话框,子页面包括了题目编辑,添加等。首先把系统拆分成一个个页面,让AI先把每个页面都建立一个view,如果每个页面的代码量过大,再把view进行组件拆分。如果写的页面有问题,则指出并让ai修改,需要注意是如果有的问题AI始终无法解决,如CSS排版等问题,这些可能就需要手动f12解决了。在AI的上下文中添加具体要完善的页面,以及这个页面要用的API,组件等信息,并提出功能要求。
2025-06-27 10:28:45
378
3
原创 【设计模式】在线购物系统后台设计实战(期末考题)
摘要:电商支付系统重构采用了工厂方法模式,实现支付功能的开闭原则。通过定义Payment接口和不同支付实现类(现金、信用卡等),利用PayFactory自动注册所有支付方式。新增支付方式只需添加实现类,无需修改核心代码,支持动态切换支付方式。该设计降低了耦合度,提高了扩展性,支付处理只需传入typeId即可调用对应支付逻辑,便于后续接入支付宝、微信等更多支付渠道。
2025-06-12 15:32:02
266
原创 【算法笔记】树套树
在面对二维区间统计问题查询某个一维区间中,大于某个值的数的个数对一个序列同时支持区间查询 + 单点修改我们常用的一维数据结构(如线段树、树状数组)往往显得力不从心。树套树。“树套树”顾名思义,就是一棵树中的每个节点再套一棵树。外层:线段树/树状数组,按照下标维护区间内层:平衡树(如 STLmultiset或手写)维护该区间内的值集合单点修改某个值查询区间中小于/大于某值的数的个数查询区间第kkk小数值(需平衡树)
2025-06-08 18:14:43
1097
1
原创 【算法笔记】大厂笔试/蓝桥杯/ICPC必学 莫队算法
在处理一类典型的离线区间查询问题时,我们常常面临这样一个选择:是用树状数组?线段树?还是其他暴力手段?这些方法在频繁修改或大规模数据下常常显得力不从心。莫队算法。莫队算法是一种离线处理区间查询给定一个静态数组(不修改)多次查询某个区间的某种统计信息查询结果可以通过左右端点的微调(+1/-1)高效更新。
2025-06-08 17:22:45
877
原创 【软件工程】可行性研究
定义:描绘物理系统的传统工具,用图形符号以黑盒子形式表示系统部件(程序、文件、数据库、人工过程等)。作用在可行性研究中描述现有系统或建议系统的物理模型。表达部件的信息流程(非控制过程)。定义:从信息传递和加工角度,图形化描述数据流的移动变换过程。特征抽象性:去除物理细节,仅保留数据流动和加工。概括性:整合多业务处理过程形成总体视图。定义:对DFD中元素的详细说明,补充DFD的语义描述。内容数据流数据元素(分量)数据存储处理逻辑外部实体。
2025-06-03 19:07:53
641
4
原创 paoxiaomo的XCPC算法竞赛训练经验
楼主作为一个普通二本的ICPC选手,在0基础的情况下凭借自学,获得过南昌邀请赛金牌,杭州区域赛银牌,一路上经历过不少的跌宕起伏,如今将曾经摸索出来的学习路线分享给大家。
2025-06-02 19:33:13
659
原创 【Java】 volatile 和 synchronized 的比较及使用场景
volatile是 Java 中的一个轻量级同步机制,它用来确保变量的可见性。当一个线程修改了volatile变量的值,其他线程能够立即看到修改后的值。它通过内存屏障来禁止编译器和 CPU 对volatile变量的重排序,确保每次读取都是从主内存中获取最新的值。是 Java 中的同步机制,它可以保证原子性和可见性。使用可以确保在同一时刻只有一个线程可以执行某个方法或代码块,其他线程必须等待锁的释放。确保了对共享资源的访问是安全的。volatile和是 Java 中两种常用的并发控制机制。volatile。
2025-05-14 20:58:13
565
5
原创 【Java基础】HashTable 和 ConcurrentHashMap 的区别与使用
在 Java 编程中,HashTable和都是用于存储键值对的数据结构。它们在某些情况下功能类似,但在设计和性能方面存在显著的差异。本文将详细介绍它们的区别以及如何选择使用它们。
2025-05-14 20:08:42
865
1
原创 使用CAS操作实现乐观锁的完整指南
无锁:避免线程阻塞和上下文切换高性能:适合高并发场景可扩展:可用于构建各种并发数据结构在实际应用中,需要根据具体场景:• 处理ABA问题• 优化自旋策略• 结合版本控制• 必要时退化为悲观锁通过合理使用CAS乐观锁,可以显著提高Java应用的并发性能和吞吐量。
2025-05-13 16:17:32
595
1
原创 【并发编程基石】CAS无锁算法详解:原理、实现与应用场景
是现代并发编程的核心算法之一,它通过处理器指令级的原子操作实现线程安全,无需传统锁机制。if (V == E) { // 比较当前值是否等于预期值V = N // 如果相等则更新。
2025-05-13 15:55:01
622
1
原创 数据库分库分表实战指南:从原理到落地
通过合理的分库分表策略,可以使传统关系型数据库支撑起海量数据场景。关键在于根据业务特征选择合适的分片策略,并建立完善的监控运维体系。• 数据量>1TB:考虑NewSQL数据库(TiDB/CockroachDB)• 超高并发场景:结合内存数据库(Redis/Aerospike)• 数据量<1TB:使用中间件方案。
2025-05-11 18:42:40
1243
2
原创 一文了解B+树的删除原理
宽松的根节点约束自顶向下的删除策略高度自适应的结构调整这种精妙的设计使得B+树在维持高效查询性能(OlogmNOlogmN)的同时,能够优雅地处理极端情况下的结构变化。理解这一机制对数据库存储引擎开发和文件系统优化具有重要意义。
2025-05-11 17:18:56
1019
1
原创 数据库索引详解:原理 · 类型 · 使用 · 优化
索引本质上是一棵数据结构(如 B+ 树、哈希表等),它维护了表中一列或多列列值与对应数据行存储位置的映射关系。类似于书籍的目录,通过目录可以快速定位到目标章节页码;索引则让数据库引擎能更快地定位到目标行,避免全表扫描。索引是提升数据库查询性能的核心策略,但同时也带来额外的写入开销和维护成本。唯有深刻理解索引原理、合理选择索引类型,并通过监控与重构不断优化,才能在性能和资源利用之间取得最佳平衡。
2025-05-10 16:28:58
1416
1
原创 数据库中的 Segment、Extent、Page、Row 详解
层级说明示例大小(InnoDB)Segment表或索引的所有空间总和N/AExtent一组连续的页1MB(64个16KB页)Page数据读写的最小单位16KBRow表中的一条记录变长(数十~数千字节)
2025-05-10 16:00:34
711
原创 【操作系统】线程崩溃机制详解
在分布式系统与多线程编程的世界里,一个看似简单的问题却暗藏玄机:当某条线程突然崩溃,其所属进程会随之消亡吗?这个问题背后隐藏着操作系统与编程语言的精妙设计,本文将从底层原理到工程实践层层剖析。
2025-05-07 13:13:51
290
2
原创 【操作系统】一文了解各种锁(超详细)
在多线程编程和操作系统中,锁(Lock)是保证线程安全、避免竞态条件的关键机制。不同的锁适用于不同的场景,本文将从底层原理到实际应用,详细介绍常见的锁类型及其优缺点。
2025-05-07 12:18:52
1093
原创 【操作系统】深入理解内存管理:从虚拟内存到OOM Killer
在现代计算机系统中,内存管理是操作系统最核心的功能之一。本文将围绕内存管理的几个关键概念展开讨论,包括虚拟内存机制、内存分配原理、OOM Killer的工作机制以及不同系统架构下的内存限制。
2025-05-04 19:07:47
622
5
原创 【操作系统】一文带你深入理解内存分配
brk():适合小内存,速度快但有碎片mmap():适合大内存,灵活但开销大理解这些底层机制,才能写出更高效的代码!
2025-05-04 17:50:07
286
2
原创 Elasticsearch--自带“搜索引擎“的数据库
高度可扩展:自动分片与副本机制,轻松实现从单节点到千节点扩容。丰富查询能力:支持全文检索、精确匹配、布尔组合、多字段、多语言分词、多种聚合。实时性:近实时(NRT)架构,文档写入后秒级可查询。生态完善:Kibana、Beats、Logstash、Elastic APM 等生态工具,覆盖数据采集、监控、可视化全链路。混合场景支持:除了日志与搜索,还可做实时指标分析、向量搜索、SIEM 安全事件管理等。
2025-04-30 21:02:33
1494
2
原创 Kaggle比赛入门攻略(以 Titanic 为例)
阶段内容注册参赛加入比赛并同意规则数据理解train/test 数据结构清晰创建 Notebook无需本地环境,在线运行探索数据找到性别、舱位等关键特征构建模型使用 sklearn 快速上手提交预测自动保存为 CSV 并提交评分持续提升学习课程,改进特征,调参优化如果你成功提交了 Titanic 的预测结果,恭喜你正式迈出了数据科学之路的第一步!
2025-04-30 19:30:42
1621
原创 【操作系统】面试必备!一文了解缓存
在多核处理器系统中,每个核心都有自己的缓存(Cache),用于加速数据访问。• 减少伪共享(False Sharing):通过缓存行对齐(Padding)减少不必要的失效。• 目录协议(Directory-Based):仅通知持有副本的核心,而非广播所有核心。• Modified(M):缓存行已被修改,与主存不一致(脏数据)。• Exclusive(E):缓存行独占,与主存一致(干净数据)。• Shared(S):缓存行被多个核心共享,与主存一致。• 动作:直接修改,无需广播(因为没有其他副本)。
2025-04-29 17:45:08
700
1
原创 【软件工程】面向对象编程(OOP)概念详解
抽象类:包含抽象方法(没有实现的方法)的类,不能被实例化,子类必须实现其抽象方法。接口:纯抽象的“契约”,Java8+ 支持默认方法(default)和静态方法。// 抽象类示例// 抽象方法System.out.println("我是一个图形");// 子类实现@Override// 接口示例// 抽象方法// 实现接口@OverrideSystem.out.println("绘制矩形");Single Responsibility(单一职责)O。
2025-04-28 17:13:35
617
原创 【软件工程】需求分析详解
需求分析(Requirements Analysis)是软件生命周期中的第二阶段,其目标是明确和细化用户需求,为后续设计与开发提供依据。在此阶段,团队需要识别和了解所有利益相关者的需求,包括功能性需求和非功能性需求,以保证系统满足用户期望 ([软件工程第三章——需求分析。完善的需求分析能够显著降低后期返工和系统缺陷率,提高项目成功率。
2025-04-28 16:43:45
1602
原创 【软件工程】 白盒测试简介
在软件测试过程中,白盒测试(White-box Testing)是一种重要方法,它通过检查程序内部结构来验证软件功能。本文以一道典型的伪代码程序为例,结合白盒测试的基本操作,设计语句覆盖测试用例,并总结白盒测试的基本流程。逻辑路径分析:了解程序流程,找出所有可能路径。覆盖标准选择:根据测试需求选择覆盖标准,如语句覆盖、判定覆盖、条件覆盖等。测试用例设计:根据覆盖要求设计输入数据。测试执行与验证:运行程序,验证实际输出是否符合预期。其中,语句覆盖(Statement Coverage)
2025-04-27 16:43:55
576
2
原创 【算法笔记】贪心算法
贪心算法是一种在每一步选择中都采取当前看起来最优(最“贪心”)的策略,从而希望得到全局最优解的算法设计思想。核心思想:每一步都做出局部最优选择,不回退。适用场景:问题具有最优子结构且满足贪心选择性质—— 即局部最优可以导出全局最优。对第iii个国家当前税率tit_iti(最开始ti100t_i=100\%ti100%)再加一次pip_i\%pi,其新的税率为tipit_i + p_itipi。在乘积中,相当于将当前乘积乘以tipi。
2025-04-27 12:55:18
2777
原创 【软件工程】TCP三次握手中的SYN与ACK:核心机制详解
位置:TCP报文头的Flags字段取值:二进制值(0或1)功能标识连接初始化请求(第一次握手)表示序列号同步(第二次握手)TCP三次握手中的SYN和seq各司其职,共同确保连接的可靠性:• SYN是控制标志位,仅标识连接初始化请求(SYN=1)或确认(ACK=1),不携带具体数值。• seq是32位序列号字段,明确数据字节的起始位置,贯穿整个TCP连接生命周期。初始序列号(ISN)随机生成,防止预测攻击。确认号ack始终为对端seq+1,指向期望接收的下一个字节。第三次握手后,
2025-04-25 15:51:53
860
1
原创 【java后端】用VSCode的print插件打印代码
作为程序员,我们经常需要将代码或技术文档打印出来用于评审、备案或分享,包括申请软著也需要代码的PDF。虽然VS Code本身没有内置打印功能,但通过Print插件可以完美解决这个问题。Print插件是VS Code上一款专门用于打印代码和Markdown文档的扩展工具。首先在VS Code的扩展市场中搜索"Print"并安装。对于包含UML等图表的Markdown,建议搭建本地Kroki服务。• 编辑文档时会自动刷新预览(默认3秒延迟)• 支持图表渲染(需配合Kroki服务)• 支持代码片段选择性打印。
2025-04-24 14:28:32
525
1
原创 【项目推荐】How to cook--程序员专属的开源烹饪指南
作为一名程序员,你是否曾面对菜谱中的“适量盐”“少许油”感到困惑?“茭白炒肉”避免中途出现未声明的“神秘调料”,“红烧鱼”明确循环煎制次数——精准到克的配方,让你告别翻车。例:鸡蛋羹的“参数”包括水量比、蒸煮时间误差范围,甚至微波炉与蒸箱的兼容方案!涵盖“高级专业术语”“辅料技巧”,助你从“初级厨艺工程师”晋升为“架构师”。比如:“学习焯水”=掌握预处理函数,“食品安全”=异常处理规范。从“厨房准备”到“油温判断技巧”,如同配置开发环境般细致。• 菜谱按难度星级索引(1-5星),支持“渐进式学习”
2025-04-24 13:51:42
369
原创 【leetcode】3524 求出数组的X值1
你可以对数组执行一次操作:移除不重叠的前缀和后缀(可以为空),留下一个连续非空子数组。result[x] 表示得到 x 作为余数的方案数。给你一个正整数数组 nums 和一个正整数 k。(该子数组的乘积) % k = x。,留下的是一个非空的连续子数组。也就是说:我们其实是。
2025-04-23 23:07:51
394
原创 【Java后端】MyBatis 与 MyBatis-Plus 如何防止 SQL 注入?从原理到实战
SQL 注入(SQL Injection)是指攻击者通过输入恶意 SQL 语句,干扰原本正常的数据库查询,从而达到绕过登录、获取数据、甚至删除数据库的目的。如果我们将用户输入直接拼接到 SQL 中,攻击者就可能利用OR '1'='1'这样的语句,绕过身份验证。
2025-04-23 22:47:51
1102
原创 【软件工程】软件测试基础知识
• 等价类划分:将输入数据分为有效和无效类别(如测试年龄输入框,有效类:18-60岁,无效类:负数或100岁以上)。• 路径覆盖:测试代码中所有可能的执行路径(例如:一个函数有3条分支,需测试全部3种情况)。• 边界值分析:测试输入范围的边界(如允许输入1-100,则测试0、1、100、101)。• 集成测试:验证多个模块组合后的协作是否正常(如测试登录模块与数据库的交互)。• 单元测试:针对单个函数或模块的测试(如测试一个计算加法的函数)。• 系统测试:对整个系统进行全面测试,包括功能、性能、安全性等。
2025-04-21 16:26:21
408
原创 【软件工程】 适配器模式
适配器模式(Adapter Pattern)应运而生,它如同一个“接口转换器”,让原本无法协同工作的类能够一起合作,比如我们系统原来的日志功能需要改善,但是我们又不可能改变以前的一些代码,此时有效使用适配器模式就是一个好选择。适配器模式是一种结构型设计模式,其核心目的是将一个类的接口转换成客户端期望的另一种接口。它通过包装(Wrap)现有类的接口,解决因接口不兼容而无法复用代码的问题。• 类适配器:通过多重继承(或实现接口+继承)实现(需编程语言支持,如C++)。• 复杂度:过多适配器会增加代码维护难度。
2025-04-21 12:55:54
357
原创 【算法笔记】如何优雅的进行字符串操作
在编程竞赛(特别是CCCC天梯赛)中,字符串操作类题目往往看似简单却暗藏陷阱。本文将以Python、Java、C++ 三剑客为例,总结高频字符串操作的优雅实现方案,助你快速攻克字符串类难题。将字符串中第一个出现的子串A替换为子串B,若A不存在则保持原字符串。的结束索引是独占的(即包含a不包含b),与Python切片行为一致。最近的CCCC天梯赛又出了非常恶心的字符串题~一、子串替换:精准狙击第一个目标。二、删除操作:定点清除与精确爆破。四、字符串翻转:镜像世界的魔法。场景二:删除指定索引字符。
2025-04-20 13:39:31
345
原创 【算法笔记】整除与最大公约数(GCD)专题整理
每一步用上一步的余数表示当前余数。:均匀分配问题(如分糖、分饼干)。:密码学(如RSA中计算模逆元)。:所有性质与算法均基于整数运算,且。:通过余数递归缩小问题规模。
2025-04-18 18:06:55
996
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人