自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(121)
  • 收藏
  • 关注

原创 【AICoding】笔试提示词设计思路

把 AICoding 笔试当作一次小型工程实践:先读题拆优先级,再用设计文档确定边界;随后按模块实现并测试,最后通过联调、判分和复测持续收敛,稳定交付一个可运行、可验证的版本。

2026-09-05 17:50:56 464

原创 【Springboot升级AI2】项目添加智能助手

本文描述了一个智能对话系统的完整处理流程,主要包括六个核心步骤:1)会话管理(新建或获取现有会话);2)用户消息持久化;3)多级记忆上下文构建(包含L1近期会话摘要、L2全局紧凑摘要和L3运行时截断);4)LLM调用(结合历史消息、记忆摘要和工具调用);5)SSE异步推送实现逐字输出效果;6)消息持久化与记忆维护机制。系统采用三级记忆压缩策略(4/6条消息触发LLM摘要)和乐观锁机制,通过数据库表(会话表、消息表、上下文表)实现对话状态管理,确保长对话中的上下文连续性。完整流程涵盖从用户输入到LLM响应、数

2026-07-13 16:05:36 207

原创 【LeetCode 手撕算法】(细节知识点总结)

需要分开定义,不能是int i,j=0;2、开头为void,则不需要返回值;3、如果定义为 int [ ] nums,则直接返回 return nums;存多组结果的二维表 例:[[1,2], [3,4,5]]5、Set<Character> win=new HashSet<>() 定义集合类//默认最大值,正无穷。

2026-07-09 13:48:57 313

原创 【LeetCode 手撕算法】(技巧)只出现一次的数字、多数元素(摩尔投票法)、颜色分类(三指针荷兰国旗算法)、下一个排列、寻找重复数(快慢指针 Floyd判圈算法)

本文总结了五个经典数组问题的解法:1. 136题使用异或运算找出唯一出现一次的数字;2. 169题采用摩尔投票法找出多数元素;3. 75题运用荷兰国旗算法三指针排序;4. 31题通过寻找升序对和反转子数组实现下一个排列;5. 287题利用Floyd判圈算法检测重复数。每个解法都配有核心思路说明和关键实现步骤,涵盖了位运算、投票算法、指针操作等多种技巧,为解决数组相关问题提供了高效的方法论。

2026-05-20 15:46:27 249

原创 【LeetCode 手撕算法】(多维动态规划)不同路径、最小路径和、最长回文子串、最长公共子序列、编辑距离

本文总结了5个动态规划问题的解法:1.不同路径(62):初始化边界为1,内部位置路径数等于上方和左方路径数之和;2.最小路径和(64):初始化边界为累加值,内部位置取上方或左方最小值加当前值;3.最长回文子串(5):用二维数组记录回文状态,从短到长逐步扩展判断;4.最长公共子序列(1143):比较字符是否相等,相等则继承左上值加1,否则取左或上最大值;5.编辑距离(72):分三种操作情况,取删除、插入或替换操作的最小值加1。所有解法都采用动态规划思想,通过初始化边界和状态转移方程求解。

2026-05-18 15:46:01 1532

原创 【LeetCode 手撕算法】(动态规划)爬楼梯、杨辉三角、打家劫舍、完全平方数、零钱兑换、单词拆分、最长递增子序列、乘积最大子数组、分割等和子集

本文总结了动态规划(DP)在算法题中的常见应用模式,主要包括: 基础递推式:如爬楼梯问题(dp[n]=dp[n-1]+dp[n-2]),通过初始值和递推关系求解。 二维DP问题:如杨辉三角,需要构建二维数组并处理边界条件。 最值问题:如打家劫舍、完全平方数等问题,通过状态转移方程求最优解。 背包问题:包括零钱兑换(完全背包)和分割等和子集(0-1背包),需注意初始化条件和状态转移。 字符串处理:如单词拆分,利用哈希集合优化查找效率。 序列问题:如最长递增子序列,通过双重循环比较更新状态。 乘积问题:如乘积最

2026-05-15 16:47:17 455

原创 【LeetCode 手撕算法】(贪心)买卖股票最佳时机、跳跃游戏、跳跃游戏2、划分字母区间

本文总结了贪心算法在解决股票买卖、跳跃游戏和字符串划分等问题中的应用。通过四个典型例题(121、55、45、763题),展示了贪心算法"局部最优"的核心思想。具体解法包括:遍历数组寻找最小价格和最大利润(121题);维护最大跳跃距离判断可达性(55题);分步跳跃并更新最远位置(45题);利用字母最后出现位置划分字符串区间(763题)。这些解法都体现了贪心算法高效简洁的特点,通过合理设计变量更新策略,在O(n)时间复杂度内解决问题。

2026-05-13 15:07:41 248

原创 【LeetCode 手撕算法】(栈)有效括号、最小栈、字符串解码、每日温度、柱状图最大矩形

本文总结了栈(Stack)的基本操作和常见应用场景。主要内容包括:1. 栈的基本操作:push(压栈)、pop(弹栈)、peek(查看栈顶)、isEmpty(判空)、size(获取元素个数)等,并指出了常见错误及解决方法;2. 栈的典型应用场景:括号匹配、表达式求值、单调栈、DFS、撤销操作等,并提供了LeetCode相关题目;3. 具体代码实现:包括有效的括号(20)、最小栈(155)、字符串解码(394)、每日温度(739)、柱状图最大矩形(84)等经典问题的Java解法,详细说明了算法思路和实现要点。

2026-05-12 13:28:46 435

原创 【LeetCode 手撕算法】(二分查找)搜索插入位置、搜索二维矩阵、查找数组相同的所有位置、搜索旋转排序数组、旋转升序数组的最小值

本文总结了6个二分查找算法的经典题目及其解题思路:35题搜索插入位置、74题搜索二维矩阵、34题查找相同元素边界、33题搜索旋转排序数组、153题寻找旋转数组最小值。核心要点包括:1)二分查找的基本框架(left<=right循环);2)处理边界条件的技巧;3)针对不同数据结构的变体解法(如一维转二维);4)旋转数组的特殊处理方式。解题时需注意循环终止条件、边界值处理、中间值计算等细节,通过调整左右指针的位置来缩小搜索范围。这些题目展示了二分查找在有序或部分有序数据结构中的高效应用。

2026-05-10 13:42:17 332

原创 【LeetCode 手撕算法】(回溯)全排列DFS、子集、电话号码字母组合 九键、组合总和、括号生成、单词搜索、分割回文数

每次存一个结果,并做使用记录,递归条件path满了就return做下一个;回溯DFS和模板一样,传入是字符串的数字“23” ,所以依次取字符 并变成数字,用数字取其对应的按键字符串,开始遍历字符串,选a——选d——删d——选e——删e——选f——删f——删a,两层for循环。path类型为StringBuilder,string为拆开的‘a’ ‘d’,而输出为整体字符串‘ad’,且可变;path类型为StringBuilder,string为拆开的‘a’ ‘d’,而输出为整体字符串‘ad’,且可变;

2026-05-09 14:13:11 407

原创 【LeetCode 手撕算法】(图论)岛屿数量(深度优先DFS)、腐烂的橘子(广度优先BFS)、课程表(有向图是否有环)、实现Trie(前缀树)

本文总结了四个经典算法题的解题思路和代码实现:1. 岛屿数量(DFS) - 遍历网格,遇到'1'时计数并DFS淹没相连陆地;2. 腐烂橘子(BFS) - 使用队列扩散腐烂,统计新鲜橘子数;3. 课程表(拓扑排序) - 通过入度表和BFS判断有向图是否有环;4. Trie前缀树 - 实现字典树的基本操作(插入、查找、前缀匹配)。每个解法都包含关键思路、边界处理和使用数据结构的注意事项,如DFS/BFS的选择、队列操作、邻接表构建等。代码实现注重效率和边界条件处理,展示了典型图论问题的解决方法。

2026-05-06 18:10:35 411

原创 【Springboot升级AI】(大模型部署)LangChain4j、会话记忆、隔离消失持久化问题、ollama、RAG知识库、Tools工具

本文摘要主要介绍了LangChain4j课程的核心内容,包括:1)大模型API调用与流式响应配置;2)会话记忆管理方案,包括内存存储和Redis持久化;3)RAG知识库实现,涉及文档加载、向量化处理和检索增强技术;4)工具类使用和传统项目AI化改造。课程详细演示了如何通过LangChain4j+ollama实现Java项目的智能化升级,重点讲解了向量数据库构建、文本分割策略和相似度匹配等关键技术点,并提供了完整的代码实现方案。

2026-04-30 16:26:16 421 6

原创 【LeetCode 手撕算法】(二叉树)遍历、深度、对称、翻转、平衡二叉树、直径、层序遍历、有序数组变二叉搜索树、是否二叉搜索树、第k个小元素、右视图、展开链表、先序中序确定子树、路径和、最近公共祖先

当cur确定后,类似root一样固定,使用per表示cur的左子树的最右节点,per一直往下探。因此选用取中间节点为根节点,mid=(左+右)/2 递归下一个,函数传入下标即可。判断树相等需要追寻到他的子树,两边为空才相等,若两值相等 继续向下探子树,出现空了才能判断。深度优先,往下探优先右节点,没有则返回,再找左节点。递归查看节点左右子树,分别对比左右子树,同时不为空 则该节点为祖先,有一个为空 则祖先在另一个不为空的树上。①两次递归,第一个递归所有节点,第二次在该节点基础上递归所有路径和。

2026-04-29 13:02:06 364

原创 【Springboot9】将业务模块数据导出为PDF

java不要直接拿和去画 PDF,而应该先定义打印模型。│││││。

2026-04-27 14:53:45 429

原创 【Springboot8】Java Stream 流详解

以前写集合处理:要写很多 for 循环、代码冗长Stream 的目标.filter(x -> x % 2 == 0) // 过滤偶数.map(x -> x * 2) // 每个数 *2//filter(过滤)//map(转换)//sorted(排序).sorted()//forEach(遍历)//collect(收集结果)//reduce(累加/汇总Stream 流是 Java 8 中引入的一个重要新特性,它允许我们以声明式的方式处理集合数据。

2026-04-27 13:23:54 443

原创 【Springboot7】ApachePOI文件导入导出

Excel 的表头通常是中文(如“仪器名称”),而 Java 实体的属性是英文。需要在这个方法里维护一个巨大的字典,根据传入的表名返回对应的映射关系。直接去读取项目目录下的静态 Excel 模板文件,并以文件流的形式返回给前端。版本、解析表头、动态创建对象、反射赋值与类型强转。Service 层实现。

2026-04-08 14:55:52 164

原创 【Springboot6】内存泄漏OOM、VisualVM、Arthas、Prometheus Grafana监控、垃圾回收

绝大多数对象(比如方法里new出来的一个临时变量)都活不过 1 秒钟。它们在新生代被创建,用完马上就被当垃圾回收了。:如果一个对象在新生代里经历了多次清理都还没死(比如static静态变量、Spring 里的@Service 单例,或者是内存泄漏导致的幽灵对象),它就会被晋升到老年代。:内存不够用了,JVM 就会触发 GC 去清理死掉的对象只清理新生代,速度极快,感觉不到。

2026-04-08 08:45:39 481

原创 【LeetCode 手撕算法】(链表)160相交链表、206反转链表、234回文链表、141环形链表、142环形链表2、2两数相加、19删倒第N 结点、24交换结点、138随机链表复制、148排序链表

160相交链表、206反转链表、234回文链表、141环形链表、142环形链表2、2两数相加、19删倒第N 结点、24交换结点、138随机链表复制、148排序链表

2026-04-07 18:30:18 422

原创 【Springboot5】审批流工作流引擎(业务、审批分离)排除if else

处理审批业务,相较于传统的if else改状态(处理单一业务),审批流(处理大量复杂任务,或签、会签、条件签)比较省事。因此写一个轻量级、与业务完全解耦的通用工作流引擎,能避免屎山。必须把“业务单据”和“审批规则”分离开来管理员在后台配置好,引擎在流转时就会来查这张表找下一个目标。

2026-04-02 16:46:21 358

原创 【数据库优化】大批量插入、编号重复、雪花算法回拨容忍、 p6spy、Druid慢SQL监控

搜索动态sql.xml文件,里面包含标签,最终MyBatis 会在底层把这几千个对象拼成一句极其庞大的 SQL 发给 MySQL。如果使用,会分批打包成高效的二进制流,即不压跨内存且速度加快1、给application.properties数据库配置后添加注意:如果你的 url 里原本没有问号?,你需要先加个?再加这个参数。如果有别的参数,直接用连起来即可2、在serviceImpl里面删除传统的操作,换成。

2026-04-01 08:42:04 453

原创 【LeetCode 手撕算法】(矩阵)73-矩阵置零、54-螺旋矩阵(贪吃蛇)、48-旋转图像

给定一个m x n的矩阵,如果一个元素为,则将其所在行和列的所有元素都设为。请使用原地算法先遍历查哪个是0,标记对应的行和列,重新遍历 若行列有一个符合,则将其置为0n=matrix[0].length 列的取长要[ 0 ] ,不能为空。行列标记用布尔最方便。

2026-03-26 09:28:55 266

原创 【LeetCode 手撕算法】(普通数组)53-最大子数组和、56-合并区间、189-轮转数组、238-除了自身以外数组的乘积

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6。示例 2:输入:nums = [1] 输出:1示例 3:输入:nums = [5,4,-1,7,8] 输出:23求最大和,先考虑一点点累加。

2026-03-24 10:15:14 404

原创 【LeetCode 手撕算法】(子串) 560-和为 K 的子数组

暴力左右指针,第二层循环直接开始累加,不要在第三层,容易超时。子数组是数组中元素的连续非空序列。

2026-03-17 19:44:57 81

原创 【LeetCode 手撕算法】(滑动窗口) 3-无重复字符的最长子串、438-找到字符串中所有字母异位词

给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。示例 1输入: s = "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是"abc",所以其长度为 3。注意 "bca" 和 "cab" 也是正确答案。示例 2:输入: s = "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。

2026-03-16 21:37:19 292

原创 【LeetCode 手撕算法】(双指针) 1-两数之和、283-移动零、11-盛最多水的容器、15-三数之和

本文总结了四个经典数组问题的双指针解法。1.两数之和:使用双指针暴力解法,固定左指针遍历右指针;2.移动零:通过交换保持非零元素顺序,将零移至末尾;3.盛水容器:两端指针向中间移动,计算最大面积;4.三数之和:排序后固定一个数,转化为两数之和问题,注意去重。所有解法都详细说明了指针移动策略和边界条件处理,展示了双指针在不同场景下的灵活应用。

2026-03-10 20:55:44 430

原创 【LeetCode128-手撕算法】 最长连续序列

最长连续序列

2026-03-03 12:04:04 119

原创 【Springboot4】XXL-JOB定时任务

由和组成作用:服务器集群时,定时任务也集群,这会导致重复执行定时任务;单机执行时 机器异常会导致功能失效;将任务分散到其他服务器,来执行更大量的任务。下载解压,用Maven形式导入文件,用它提供的 sql文件 创建数据库CREATE DATABASE xxl_job;在xxl-job-master\xxl-job-master\xxl-job-admin\src\main\resources\application.properties改数据库如果在本地就设置localhost:3306。

2026-03-03 11:31:55 421

原创 【Springboot3】SpringCache、微信支付、Spring Task、cron表达式、WebSocket 协议、ApacheECharts

SpringCache、微信支付、Spring Task、cron表达式、WebSocket 协议、ApacheECharts

2026-02-09 15:38:49 594

原创 【Springboot2】多线程、线程池、volatile、synchronized、消息队列、RabbitMQ 、公共字段、反射、文件上传阿里云OSS、HttpClient、微信登录

多线程、线程池、volatile、synchronized、消息队列、RabbitMQ 、公共字段、反射、文件上传阿里云OSS、HttpClient、微信登录

2025-12-31 20:22:55 702

原创 【Springboot】Maven配置、统一返回体、CRUD、注册拦截器、分页/多表查询、统一日志、异常处理全局及分化、Redis及列表缓存、缓存穿透/击穿/雪崩、持久化、分布式锁

Maven配置、统一返回体、CRUD、注册拦截器、分页/多表查询、统一日志、异常处理全局及分化、Redis及列表缓存、缓存穿透/击穿/雪崩、持久化、分布式锁

2025-12-08 19:02:01 840

原创 【JavaWeb总结----附实战代码】Tomcat、Maven、Servelt、请求响应、Cookie、Session、JSP、JavaBean、过滤器Filter、监听器、JDBC、smbms项目

摘要:本文推荐了B站《狂神说Java》JavaWeb入门到实战视频课程。由于已有博主整理了更详细的课程笔记,文章直接提供了优快云的优质笔记链接(包含Servlet、JSP等核心知识点),建议读者参考该笔记获取更系统的学习资料。

2025-09-13 19:30:25 370

原创 [深度学习]⑤神经网络----骨架nn.Module、卷积神经网络CNN、池化层PoolingLayer、非线性激活、实战练习 【代码详细注释版】

神经网络----骨架nn.Module、卷积神经网络、卷积层CNN、池化层、非线性激活及tensorboard展示、实战-搭建神经网络

2025-03-10 13:48:15 1119

原创 [深度学习]④Torchvision中数据集Datasets、DataLoader的使用

Torchvision中数据集Datasets、DataLoader的使用

2025-03-07 15:04:16 1153

原创 [深度学习]③ Transforms的使用与常用工具ToTensor、Normalize、Resize、Compose、RandomCrop及注意事项

Transforms的使用与常用工具ToTensor、Normalize、Resize、Compose、RandomCrop

2025-03-06 19:52:00 1495

原创 Tensorboard安装、使用、常见问题

TensorBoard 是一个由 TensorFlow 提供的可视化工具,不过它也可以与其他深度学习框架(如 PyTorch)集成使用。它可以将训练过程中的各种数据以直观的图表形式展示出来,帮助开发者更好地理解、调试和优化深度学习模型。TensorBoard是一个基于浏览器的观察器,可以监视你模型的训练全过程,这里需要注意的是,我们不需要联网就能打开这个观察器,这只是个本地服务。

2025-03-05 13:44:20 1083

原创 Matplotlib库安装及使用、常用函数

Matplotlib是一个基于Python的绘图库,它提供了一套和MATLAB相似的命令API, 广泛应用于科学计算、数据分析、机器学习等领域,便于用户快速上手。我们使用Matplotlib库时,更多的使用的是Matplotlib库下的pyplot模块, pyplot 模块包含了大量的绘图函数,这些函数能够快速地创建各种类型的图表,包括线图、 散点图、条形图、饼图等,并且Matplotlib库在绘制图像时,可以很好的与Numpy 库进行结合使用。

2025-03-05 13:42:04 907

原创 [深度学习]② Jupyter的使用,路径更改

在PyCharm新建完按照以下配置 ,完成新建.py文件,并在Jupyter中打开按照上一篇文章进入Jupyter使用发现其默认路径在c盘,未找到创建的.py文件。

2025-03-03 13:50:08 341

原创 [深度学习]①Anaconda--Pytorch--CUDA--Jupyter详细安装经验

官网下载注意适配python版本记住下载路径,一直默认图中两个选项都要选,不然会少好多东西在开始栏找 Anaconda Prompt,出现(base)即安装成功。

2025-03-03 11:32:39 1432

原创 草稿记录-git使用

先克隆在文件中,右键文件 选git命令行,输入 git clone url,(url在gitee里有),idea新建项目将克隆的.git文件拖入新建的项目文件中。左边各文件颜色发生变化,如果修改某文件,右键 git 然后add(或者命令行 git add . ),使文件进入待提交状态 ,然后选择git表 ,输入提交信息,绿色为提交成功。选推送(或者命令行 git push) 进入gitee仓库,日志也随之更新。

2024-09-20 21:19:42 260

原创 如何运行Vue项目

前端vue项目

2023-01-01 00:51:53 14504 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除