<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lddya的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lddya</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lddya]]></copyright><item><title><![CDATA[Spring AI 自定义Redis持久化ChatMemory(可直接复用)]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/148533003</link><guid>https://blog.youkuaiyun.com/lddya/article/details/148533003</guid><author>lddya</author><pubDate>Mon, 09 Jun 2025 13:45:38 +0800</pubDate><description><![CDATA[Spring AI 的 ChatMemory 接口支持解耦对话记忆的 “存储” 与 “记忆算法”。通过自定义实现 ChatMemory，可将对话历史存储至 Redis 等外部存储，而非默认的内存。本文基于 InMemoryChatMemory 原理，使用 Kryo 序列化库 和 Redis 实现持久化存储，解决 Message 接口多态序列化问题。]]></description><category></category></item><item><title><![CDATA[Spring AI 自定义数据库持久化的ChatMemory]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/148532172</link><guid>https://blog.youkuaiyun.com/lddya/article/details/148532172</guid><author>lddya</author><pubDate>Mon, 09 Jun 2025 12:27:49 +0800</pubDate><description><![CDATA[本文探讨了实现自定义MySQL持久化ChatMemory的两种方案。第一种方案采用结构化数据库存储，仅保存消息内容和类型信息，读取时手动重建Message对象；第二种方案使用Kryo序列化库进行对象序列化存储。文章详细介绍了方案二的实现步骤，包括数据库表设计、依赖引入、配置设置，并提供了MessageSerializer工具类代码，使用Kryo实现Message对象的序列化与反序列化功能，解决了接口类型消息持久化。
]]></description><category></category></item><item><title><![CDATA[P1588 [USACO07OPEN] Catch That Cow S （dfs+剪枝做法）]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135823410</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135823410</guid><author>lddya</author><pubDate>Wed, 24 Jan 2024 16:22:43 +0800</pubDate><description><![CDATA[FJ 丢失了他的一头牛，他决定追回他的牛。计算他至少需要几步追上他的牛。这是因为当 FJ 的位置与牛的位置相差不大时，可以通过简单的前进或后退操作到达目标，无需翻倍移动。这样做的目的是在搜索过程中实时保持一个初步的最优解（可能不是最终最优解），以防止遗漏某些简单情况下的最优路径。dfs的思想是"不撞南墙不回头"，这是一道典型的bfs题，运用dfs会无限递归，所以需要剪枝和限制（自己造一个"南墙"）如果满足条件，则直接返回，避免进行无意义的递归搜索，相当于创建一个"南墙"。对于每组数据，输出最少步数。]]></description><category></category></item><item><title><![CDATA[dfsP1135 奇怪的电梯]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135209549</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135209549</guid><author>lddya</author><pubDate>Tue, 26 Dec 2023 06:15:00 +0800</pubDate><description><![CDATA[首先，用深搜解决，深搜函数部分就两个大操作，搜索与相对应的题目计算，每到一层楼就搜索那一层楼的两种情况，并用一个辅助数组来记录剪枝。我们可以让辅助数组记录每次走到的位置我们的操作步数，下次走到这个位置时我们的操作数必须小于最小的那个，建议看代码。dfs求解需要剪枝，不然会超时，同时还要考虑这道题找不到输出-1的这个因素。这题是一道bfs的标准题，但是也可以用dfs求解。]]></description><category></category></item><item><title><![CDATA[每日一题(dfs) P2196 [NOIP1996 提高组] 挖地雷]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135169000</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135169000</guid><author>lddya</author><pubDate>Mon, 25 Dec 2023 21:27:03 +0800</pubDate><description><![CDATA[这一题就是标准的dfs就最值的方法。然后扫描周围，可以就进去，并且标记。知道尽头退出来，并回溯记录答案。在跳进去的洞穴继续扫描。]]></description><category></category></item><item><title><![CDATA[每日一题(dfs) P1596 [USACO10OCT] Lake Counting S]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135164921</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135164921</guid><author>lddya</author><pubDate>Sat, 23 Dec 2023 11:50:14 +0800</pubDate><description><![CDATA[在某些情况下，利用if等语句可以使函数不会无限递归，也没有输出路径的要求，就可以将回溯部分不用单独分出，也相当于是省略。dfs深度优先搜索就是向一条路走到底，然后再一步一步退出来，其代码一般由两部分组成。本体遇到一个'W',如果其是没有被搜索过的，就开始搜索，并标记。本体既可以暴力，也可以dfs和bfs。在此先介绍dfs做法。]]></description><category></category></item><item><title><![CDATA[每日一题(dfs) 洛谷 P1219 [USACO1.5] 八皇后 Checker Challenge]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135139930</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135139930</guid><author>lddya</author><pubDate>Fri, 22 Dec 2023 06:15:00 +0800</pubDate><description><![CDATA[所以判断斜方向，即x1-y1 == x2-y2 || x1+y1 == x2+y2即可。我们认为横轴方向为横坐标记为x，纵轴方向为纵坐标记为y。这三个白色方格x与y之和都是4。这三个白色方格x与y之差都是0。这题难点在于判断是否冲突。特别是斜方向的该怎么判断。]]></description><category></category></item><item><title><![CDATA[每日一题(dfs) 洛谷 P9011 [USACO23JAN] Air Cownditioning II B]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135139735</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135139735</guid><author>lddya</author><pubDate>Thu, 21 Dec 2023 20:34:59 +0800</pubDate><description><![CDATA[然后遇到一个空调就在空调范围内数组cw都减p，同时加上空调的费用。我们可以用一个桶cw（其实就是一个数组）来表示需要下降的温度和。最后检查cw的数据情况就行了。dfs  深度优先搜索。利用dfs一步一步看。]]></description><category></category></item><item><title><![CDATA[每日一题(dfs) P1157 组合的输出]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135092499</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135092499</guid><author>lddya</author><pubDate>Wed, 20 Dec 2023 06:15:00 +0800</pubDate><description><![CDATA[选完之后就有了前三个答案，然后退一步，回到第二步，此时选择的数字必须>2，在次选择3，进入第三步，在第三步选择的数字必须 >3。用dfs来思考，走三步，第一步走1，则后面的两步里选择的答案必须大于1，第二步选择2，第三步就必须是>2的数字。所以可以看出来，我们每走一步，后面的数字必须大于前面的数字。这一题与全排列的区别就是其不能有重复。以题目里面的例子来看。]]></description><category></category></item><item><title><![CDATA[每日一题(dfs) 洛谷 B3622 枚举子集]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135092408</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135092408</guid><author>lddya</author><pubDate>Tue, 19 Dec 2023 19:26:28 +0800</pubDate><description><![CDATA[先走满，全是N，然后慢慢退，改N为Y就行了。]]></description><category></category></item><item><title><![CDATA[每日一题(dfs) 洛谷 P1706 全排列问题]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/135092296</link><guid>https://blog.youkuaiyun.com/lddya/article/details/135092296</guid><author>lddya</author><pubDate>Tue, 19 Dec 2023 19:21:43 +0800</pubDate><description><![CDATA[其是在1的基础上分叉有2与三，先选2，再选3。这是dfs（深度优先搜索）的模板题。在2的基础上先选1，再选3。在3的基础上先选1，再选2。]]></description><category></category></item><item><title><![CDATA[冒泡排序，选择排序，插入排序，希尔排序，快速排序和归并排序]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/134469846</link><guid>https://blog.youkuaiyun.com/lddya/article/details/134469846</guid><author>lddya</author><pubDate>Fri, 17 Nov 2023 19:50:08 +0800</pubDate><description><![CDATA[【代码】冒泡排序，选择排序，插入排序，希尔排序，快速排序和归并排序。]]></description><category></category></item><item><title><![CDATA[scanf函数和printf函数以及常用占位符]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/133839011</link><guid>https://blog.youkuaiyun.com/lddya/article/details/133839011</guid><author>lddya</author><pubDate>Sun, 15 Oct 2023 11:19:03 +0800</pubDate><description><![CDATA[所以无法读取多个单词，除非多个%s一起使用，所以scanf不适合读取带有多个空格的字符串，例如英文句子，另外，scanf遇到%s占位符，会在字符串末尾储存一个\0，scanf输入时不会检查输入字符是否超过了长度，储存字符串时，很可能超出边界，为防止其使用%s占位符时，应该指定读入字符串的最长长度，即写成%[m]s，[m]为一个整数，例如%7s。有时我们会见到%6d，或者%.3f之类，如果在占位符%和d之间加入整数，则表示其有。再看n，%2d，表示至少有两位，其为三位数，就可以完整打印啦。]]></description><category></category></item><item><title><![CDATA[C语言中的字符，字符串和字符数组]]></title><link>https://blog.youkuaiyun.com/lddya/article/details/133651019</link><guid>https://blog.youkuaiyun.com/lddya/article/details/133651019</guid><author>lddya</author><pubDate>Sat, 07 Oct 2023 19:02:17 +0800</pubDate><description><![CDATA[每个字符串都会有\0，\0也称为终止符，其也属于字符，就是计算机读入字符串或字符数组后输出时必须要有\0来终止，每个字符串都会自带终止符，但是字符数组需要自己输入。不知有人是否会疑惑，就是上面两个是否会相等呢，答案是相等，但是不能用==来比较，==，>,之类的是来比较数字的，要比较字符，可以用strcmp函数来比较（这里就不多说了）本人为初学者，在此写下自己的所学所得，分享，若有错误请指出，本人必会加以改正。字符串就是”“，来表示一串字符，主要是每个字符串最末尾都有个\0。字符就是单个字符，如’a'之类。]]></description><category></category></item></channel></rss>