<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Moapsw033的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Moapsw033</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Moapsw033]]></copyright><item><title><![CDATA[洛谷P1111 修复公路（并查集）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/154441868</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/154441868</guid><author>Moapsw033</author><pubDate>Wed, 05 Nov 2025 14:25:01 +0800</pubDate><description><![CDATA[给出 A 地区的村庄数 $N$，和公路数 $M$，公路是双向的。问最早什么时候任意两个村庄能够通车，即最早什么时候任意两条村庄都存在至少一条修复完成的道路（可以由多条公路连成一条道路）。下面 $M$ 行，每行 $3$ 个正整数 $x,y,t$，告诉你这条公路连着 $x,y$ 两个村庄，在时间 $t$ 时能修复完成这条公路。如果全部公路修复完毕仍然存在两个村庄无法通车，则输出 $-1$，否则输出最早什么时候任意两个村庄能够通车。第 $1$ 行两个正整数 $N,M$。一.题目 # P1111 修复公路。]]></description><category></category></item><item><title><![CDATA[洛谷P1083 借教室 （差分数组，二分）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/154349384</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/154349384</guid><author>Moapsw033</author><pubDate>Mon, 03 Nov 2025 14:58:15 +0800</pubDate><description><![CDATA[共有 $m$ 份订单，每份订单用三个正整数描述，分别为 $d_j,s_j,t_j$，表示某租借者需要从第 $s_j$ 天到第 $t_j$ 天租借教室（包括第 $s_j$ 天和第 $t_j$ 天），每天需要租借 $d_j$ 个教室。第 $2$ 份订单要求第 $2$ 天到第 $4$ 天每天提供 $3$ 个教室，而第 $3$ 天剩余的教室数为 $2$，因此无法满足。第二行包含 $n$ 个正整数，其中第 $i$ 个数为 $r_i$，表示第 $i$ 天可用于租借的教室数量。天数与订单均用从 $1$ 开始的整数编号。]]></description><category></category></item><item><title><![CDATA[力扣面试题 汉诺塔]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/154074592</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/154074592</guid><author>Moapsw033</author><pubDate>Wed, 29 Oct 2025 16:12:27 +0800</pubDate><description><![CDATA[同时，写递归的时候不要细想递归函数怎么写，要思考的是这个递归函数是什么效果，比如该题里递归函数就是把x个盘从起始盘子s，放到目标盘子e，怎么放呢？这题可以采取递归的思路来解决，对于只有两个圆盘时，要先把最上面的放到中间的棍子，在把下面的放到第三根棍上，最后再把中间的盘子放到最后的棍上就完成了，那么同样的，当为3个盘的时候，把上面两个看做一个整体，也就变成了两个圆盘的解法，那么同理，如果是x个盘，把x-1看出成一个整体，然后无限递归下去。(3) 盘子只能叠在比它大的盘子上。(1) 每次只能移动一个盘子;]]></description><category></category></item><item><title><![CDATA[oatcpp学习（第一版因为网络原因没保存到，是真的难受）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/148010400</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/148010400</guid><author>Moapsw033</author><pubDate>Fri, 16 May 2025 21:28:49 +0800</pubDate><description><![CDATA[其中第二参数为URL路径，第三个参数为处理方法名，第四个参数是参数绑定，将将 URL 路径中的参数、查询参数、请求体等绑定到 C++ 变量，并指定数据类型。而DTO_FIELD即为集装箱的货物清单，例如DTO_FIELD(Int64, id, "user_id")，其中summary为必填的，而且不能用中文进行注释，如果要用中文就要在中文词典里填写。：在程序内部通过这个名称访问数据，第三个参数即为序列化之后的标签名。注释：和ENDPOINT一样，也是用加上_INFO。端点是什么，可以简单的理解为。]]></description><category></category></item><item><title><![CDATA[洛谷跳石头 p2678]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/147919778</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/147919778</guid><author>Moapsw033</author><pubDate>Tue, 13 May 2025 11:32:47 +0800</pubDate><description><![CDATA[2.这道题求搬走m块石头后的最小距离的最大值，所以这个最小距离的返回有从1(从头直接跳到尾只用跳一下)到length(总长即为最短跳的距离)，而我们要从中选到最适合的距离来匹配要搬走的石头数。1.首先这道题要求求最短距离的最大值，所以是用二分，至于为什么有这样的结论，或许能从我的讲解中体会一二。]]></description><category></category></item><item><title><![CDATA[Grpc通信（c++版）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/147413006</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/147413006</guid><author>Moapsw033</author><pubDate>Tue, 22 Apr 2025 16:43:50 +0800</pubDate><description><![CDATA[其中stub_->sayhello()，是在message.proto中约定的接口，通过stub_这个grpc管道调用，实现在服务器端，服务器会实现这个函数，当客户端调用时，服务器监听到就会启动自己的逻辑。1.首先要创建.proto文件，在里面定义server，并且定义地址和返回目标，然后通过CMake或者本地的库生成。首先也是定义proto文件，不过这里最好显式声明包，不然后面导出会要导出很多，而显示声明包只用导出一个。1创建服务器类并且初始化，并在里面定义和实现要用的方法。在nodejs中的使用如下。]]></description><category></category></item><item><title><![CDATA[Nodejs学习总结]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/147409099</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/147409099</guid><author>Moapsw033</author><pubDate>Tue, 22 Apr 2025 10:10:42 +0800</pubDate><description><![CDATA[补充知识点,http中Url单指请求的URL的路径部分和查询字符串部分,不包含网络号和主机名。3.nodejs中还有包的概念，其中express框架对http的使用非常的友好。其中关于request和respose设置响应和回报的具体函数有如下。1.Nodejs是什么，它是js的运行环境，使得跨平台使用js。通过导入不同模块，从而使用不同的接口。Nodejs其中还有文件路径的模块，重点为。2.Nodejs可以做什么。]]></description><category></category></item><item><title><![CDATA[聊天室项目]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/147360950</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/147360950</guid><author>Moapsw033</author><pubDate>Sun, 20 Apr 2025 10:15:53 +0800</pubDate><description><![CDATA[4.设置重新登录页面，该页面大致要求和注册页面一致，但是在服务器处要添加关于重置密码的逻辑，简单的来说就是在Logicsystem层添加对于重置密码的对应函数，这个函数内部调用mysqlMgr层的代码，mysqlMgr内部调用mysqlDao层的验证和重置密码函数，从而实现对应管理。1.完善注册页面图标，添加检测注册页面各个登录信息是否完善，并且通过信号和槽与自定义一个计时器，当注册完毕后跳转到显示注册完毕的页面。3.完善主页面，设置信号和槽，当注册页面发送信号时就显示主页面。]]></description><category></category></item><item><title><![CDATA[聊天室项目day4(redis实现验证码期限，实现redis连接池)]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/147193683</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/147193683</guid><author>Moapsw033</author><pubDate>Sun, 13 Apr 2025 17:02:53 +0800</pubDate><description><![CDATA[1.redis连接池操作和之前所学过的io_context连接池原理一样这里不多赘述，也是创建多个连接，使用时按顺序取出来。3.封装操作redis的自定义函数操作，都是换汤不换药，取得连接后通过redisCommand发送操作请求，然后释放。结构体指针，包含执行结果（需手动释放）。freeReplyObject()redisCommand()2.知识补充redisConnect()函数。（连接上下文指针），失败返回。建立与 Redis 服务器的。向 Redis 服务器。]]></description><category></category></item><item><title><![CDATA[聊天室项目Day3之服务器的http的get和post回复实现]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/147011563</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/147011563</guid><author>Moapsw033</author><pubDate>Mon, 07 Apr 2025 11:31:52 +0800</pubDate><description><![CDATA[三.在HttpConnection类中实现检查连接是否超时和解析对应的http文件，将解析的请求通知给不同的模块，这里要注意的是当接收到Post的请求时，发送给LogicSystem,LogicSystem再调用VerifyGrpcClient类中的grpc发送验证码服务。同时引入概念-----------------------------------------------节。[Database];它类似于文件系统中的“文件夹”，或者代码中的“命名空间”。管理一个节的键值对，]]></description><category></category></item><item><title><![CDATA[聊天室项目之http知识]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/147009526</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/147009526</guid><author>Moapsw033</author><pubDate>Sat, 05 Apr 2025 11:58:59 +0800</pubDate><description><![CDATA[其中URL统一资源定位符，也就是平常说的网址，我们在接受读取参数前要对其进行编码和解码，因为为其没有中文字符，如果直接读取会导致读取错误。1.起始行：请求------------------------一.http的核心组成部分（都分成请求的和响应的）：URL 路径和查询字符串（如。响应————————————：设置客户端 Cookie。：分隔头部和消息体，仅包含。：请求体的数据类型（如。4.消息体（Body）]]></description><category></category></item><item><title><![CDATA[聊天室项目Day2]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/146976531</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/146976531</guid><author>Moapsw033</author><pubDate>Thu, 03 Apr 2025 11:23:08 +0800</pubDate><description><![CDATA[5.通过上面的代码实现请求http服务器的功能，请求完要发送给别的模块并且发送信号传送给别的界面，在这里对注册页面进行完善接受到Http请求服务完的信息的操作。4.实现对应的函数，函数的对应功能在注释写了，主要实现了设置发送http请求并且发送给服务器然后通知别的模块。2.用模板类实现单例模式的httpMgr能确保全局只有一个地方能够能够访问请求资源，并且避免混乱。1.完善global头文件，将要用到的头文件全丢里面,并且设置各个模块的标记与其对应值。8.将回调的函数调用，防止没有初始化。]]></description><category></category></item><item><title><![CDATA[全栈聊天室项目实现Day1]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/146936820</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/146936820</guid><author>Moapsw033</author><pubDate>Wed, 02 Apr 2025 11:12:31 +0800</pubDate><description><![CDATA[3.将获取验证码的按钮接受其点击，接受到信号后就用正则表达式实现验证格式是否合格，如果不合格就改变err_tip的状态，使其变红来提醒，代码如下。界面要实现类似QQ的登录和注册技术，第一天暂时实现了登录界面和注册界面的验证邮箱是否正确的功能，其余还未实现。2编写.qss文件，同时设置邮箱输入时错误提示的参数err_tip。4.添加头文件global,在其中添加。7.优化后各个页面的状态和错误提示状态。利用qss技术实现界面的优化。如上实现了页面的跳转。一.界面实现（Qt）]]></description><category></category></item><item><title><![CDATA[Qt学习day2]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/146930544</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/146930544</guid><author>Moapsw033</author><pubDate>Wed, 02 Apr 2025 08:17:24 +0800</pubDate><description><![CDATA[2.exec()函数会返回两种返回值，一个是accepted,一个是否定，常用于一个页面接受点击后判断返回值然后进行接下来的操作。写在开头--------------学习自一位大佬的博客。颜色对话框用来选择颜色，创建后会显示各种颜色和透明度信息。1.用exec()展示的界面就是模块的对话框。]]></description><category></category></item><item><title><![CDATA[QT学习day1]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/146888248</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/146888248</guid><author>Moapsw033</author><pubDate>Mon, 31 Mar 2025 23:28:30 +0800</pubDate><description><![CDATA[实际上和网络编程的回调函数很像，说到底还是懂C++就能看懂，不过要学精，如果单纯看过黑马程序员的教程，那估计是看不懂的，要深入学。注意点：在子页面返回主页面的时候要存储主页面的信息节点，不要通过增加私有变量的方法来实现，因为这样会增加耦合性，要通过设置一个获取主页面信息节点的函数来实现。例子：创建一个子类页面，在其中创建一个按键，要求按这个键就返回主页面，在主页面也有一个按键，一按就返回子页面。实现思路：连接按钮和槽函数，一但检测到接受到点击的信号，就调用对应的槽函数。]]></description><category></category></item><item><title><![CDATA[VScode中CMake无高亮（就是没有补全的提示）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/142964075</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/142964075</guid><author>Moapsw033</author><pubDate>Tue, 15 Oct 2024 20:46:17 +0800</pubDate><description><![CDATA[原因就是：本地没有配置环境变量，解决方法是下一个cmake然后直接配置环境变量。在我学的过程中我发现我的CMake是这样的，如下图。这非常的难受，所以疯狂的找，最后是CMake报错有。如何配置环境变量就直接上网找就好了，很简单的，加油。但在教学视频里是这样的（如下图）]]></description><category></category></item><item><title><![CDATA[子集II（力扣90）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/138500595</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/138500595</guid><author>Moapsw033</author><pubDate>Mon, 06 May 2024 16:54:23 +0800</pubDate><description><![CDATA[其中可能包含重复元素，请你返回该数组所有可能的。解题思路：used判断是否出现过，然后遍历就好了。返回的解集中，子集可以按。]]></description><category></category></item><item><title><![CDATA[子集（力扣78）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/138500360</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/138500360</guid><author>Moapsw033</author><pubDate>Mon, 06 May 2024 16:49:44 +0800</pubDate><description><![CDATA[解题思路：把每一个遍历过的节点都收集下来就可以了。返回该数组所有可能的。]]></description><category></category></item><item><title><![CDATA[还原IP地址（力扣93）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/138500053</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/138500053</guid><author>Moapsw033</author><pubDate>Mon, 06 May 2024 16:44:07 +0800</pubDate><description><![CDATA[和分割回文数大致一样，都是在叶子节点收集结果，不过这里要多定义一个用来判断是否合格的函数，并且收集规则是插入完三个节点后再判断收集，同时注意每次开始时要在两位之后因为插入了.if (s[i] > '9' || s[i] < '0') { // 遇到非数字字符不合。if (num > 255) { // 如果大于255了不合法。，用以表示一个 IP 地址，返回所有可能的。正好由四个整数（每个整数位于。之间组成，且不能含有前导。给定一个只包含数字的字符串。，这些地址可以通过在。]]></description><category></category></item><item><title><![CDATA[分割回文串（力扣131）]]></title><link>https://blog.youkuaiyun.com/Moapsw033/article/details/138449741</link><guid>https://blog.youkuaiyun.com/Moapsw033/article/details/138449741</guid><author>Moapsw033</author><pubDate>Sat, 04 May 2024 20:36:51 +0800</pubDate><description><![CDATA[else {                                // 不是回文，跳过。if (isPalindrome(s, startIndex, i)) {   // 是回文子串。// 寻找i+1为起始位置的子串。// 回溯过程，弹出本次已经添加的子串。解题思路：仍就是上递归三部曲，但于此同时要明白此时的index就可以作为切割回文串的线了。// 获取[startIndex,i]在s中的子串。// 如果起始位置已经大于s的大小，说明已经找到了一组分割方案了。// 放已经回文的子串。]]></description><category></category></item></channel></rss>