自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 详解Asio网络编程

使用Asio使用io_context驱动事件循环使用async_*方法进行异步 I/O使用回调函数处理完成事件多线程处理高并发欢迎补充讨论。

2025-03-31 15:25:39 306

原创 详解shared_from_this

是 C++ 标准库 () 提供的一个机制,允许类在不创建新的的情况下,获取指向自身的,从而安全地管理对象的共享所有权。避免引发。确保对象生命周期,在回调、事件管理等场景中常用。必须确保对象已由管理,否则调用会导致运行时错误。在 C++ 中,是一个强大而易踩坑的工具,正确使用它可以防止内存泄漏和未定义行为。

2025-03-30 16:58:27 232

原创 设计模式-单例模式

在软件开发中,某些对象只需要一个实例,且该实例应该在整个系统范围内被共享。这种需求催生了单例模式(Singleton Pattern)。单例模式是一种创建型设计模式,它确保一个类在整个应用程序的生命周期中只有一个实例,并提供一个全局访问点。

2025-03-30 15:59:13 663

原创 C++智能指针详解

在计算机编程中,特别是使用C++语言时,内存管理一直是一个复杂且容易出错的任务。程序员需要手动分配和释放内存,稍有不慎就可能导致内存泄漏或悬挂指针问题,这些问题不仅会影响程序的性能,还可能引发严重的错误甚至安全漏洞。为了简化内存管理并减少这些潜在的问题,C++标准库引入了“智能指针”(Smart Pointer)。顾名思义,智能指针是一种封装了原始指针的对象,它能够自动管理指针的生命周期。这意味着程序员不需要手动分配和释放内存,智能指针会自动处理这些任务,确保资源得到合理使用。

2025-03-29 19:43:47 810

原创 基于 Qt / HTTP/JSON 的智能天气预报系统测试报告

随着人们对生活品质要求的提高,天气预报已成为日常生活的重要组成部分。通过准确的天气信息,用户可以更好地规划出行、穿衣等日常活动。本项目旨在开发一个基于 Qt 框架的天气预报系统,实现实时天气数据的获取、展示以及历史天气数据的查询功能。

2025-03-28 21:43:14 923

原创 使用 Qt 处理 JSON 数据:从入门到精通

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也适合机器解析和生成。它基于 JavaScript 对象语法,并且独立于语言,几乎在所有现代编程语言中都有实现。JSON 的主要特点包括:易读性和简洁性。支持复杂的结构,如对象、数组、字符串、数字、布尔值等。轻量级,解析速度快。通过上述步骤,我们已经成功地生成并解析了 JSON 数据。

2025-03-28 20:33:51 804

原创 详解Http:在QT中使用Http协议

HTTP是Web开发中的核心协议,而Qt提供了强大的网络库来简化HTTP通信。通过和相关类,你可以轻松发送请求、处理响应以及解析数据。无论是简单的GET请求还是复杂的POST操作,Qt都能提供高效且可靠的解决方案。希望这篇帖子能帮助大家更好地理解如何在Qt中使用HTTP!如果有任何问题,请随时讨论。

2025-03-28 17:53:14 902

原创 [特殊字符] C++ 常见 Socket 错误与优化指南

问题优化方案端口占用允许端口快速复用Socket超时和限制超时时间单线程服务器阻塞使用多线程(std::thread)或epoll/select部分发送/接收send_all()和recv_all()确保完整数据传输欢迎补充问题!

2025-03-23 17:22:35 348 1

原创 深入解析 Socket:网络通信的桥梁

Socket?Socket本质上是一个端点(endpoint),用于在不同设备或进程之间进行数据传输。可以把它想象成电话插孔,只要两端正确连接,就可以通过它进行通信。Socket 依赖IP 地址 + 端口号IP 地址:定位计算机(类似于电话号码)端口号:区分不同进程(类似于电话分机)

2025-03-23 17:13:21 670

原创 深入解析 TCP:可靠传输的基石

你有没有想过,当你刷微博、看视频、玩游戏时,数据是如何稳定地从服务器传输到你的设备上的?这背后有个关键角色——!

2025-03-22 17:39:07 717

原创 基于TCP/QT/C++的网络调试助手测试报告

在网络应用开发和嵌入式系统调试过程中,开发者经常需要模拟客户端-服务器交互,以验证数据传输的正确性和稳定性。然而,传统的网络调试工具通常难以同时支持多个客户端的管理,或者缺乏灵活的调试能力。因此,本项目基于 Qt 框架实现了一款功能强大、易于使用的网络调试助手,旨在提高开发和测试效率。类别功能API/方法TcpServer监听TcpServer连接TcpServer关闭TcpServer信号新连接TcpScoket连接TcpScoket发送TcpScoket接收。

2025-03-22 17:26:51 750

原创 ‘telnet‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

Telnet(远程登录)是一种用于通过互联网连接到远程计算机的协议。它允许用户在自己的设备上访问并控制另一台计算机,就像直接使用该计算机一样。

2025-03-20 18:18:47 390

原创 Leetcode349:两个数组的交集

以数组1中的值为键值,给对应位置置1,以数组2中的值为键值,给对应位置减1,如果减1后为0,则表示数组1中存在该值。输出结果中的每个元素一定是。[4,9] 也是可通过的。

2024-12-10 21:22:00 207

原创 Leetcode217:存在重复元素

如果数组中每个元素互不相同,返回。元素 1 在下标 0 和 3 出现。如果任一值在数组中出现。

2024-12-10 21:07:28 161

原创 Leetcode739:每日温度

天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用。,表示每天的温度,返回一个数组。

2024-12-09 21:23:07 121

原创 Leetcode224:基本计算器

因为题中不涉及乘法除法操作,所以分情况把括号拆开,逐个计算,仅使用一个符号栈即可。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如。,请你实现一个基本计算器来计算并返回它的值。给你一个字符串表达式。

2024-11-06 21:22:08 148

原创 Leetcode394:字符串解码

使用两个栈,分别存放数字和字符串,当遇到数字时,转换为int型,存放到num,遇到字符时,存放到res中,遇到左括号时,将num、res分别压栈,遇到右括号时,数字栈出栈k,字符栈出栈并循环k次。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数。给定一个经过编码的字符串,返回它解码后的字符串。由小写英文字母、数字和方括号。中所有整数的取值范围为。,表示其中方括号内部的。

2024-11-06 20:12:51 173

原创 Leetcode2:两数相加

要考虑进位的情况,容易忽略的是处理最后的进位问题,在写循环条件时要考虑进位。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。题目数据保证列表表示的数字不含前导零。每个链表中的节点数在范围。

2024-11-05 19:59:44 289

原创 Leetcode150:逆波兰表达式求值

使用栈操作,遍历数组,遇到数字入栈,遇到运算符,出栈两个数字,进行运算,将结果再入栈,值得注意的是,入栈需要将数字转换为整型,数组中存储的是string类型。该算式转化为常见的中缀算术表达式为:(4 + (13 / 5)) = 6。该算式转化为常见的中缀算术表达式为:((2 + 1) * 3) = 9。逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。每个操作数(运算对象)都可以是一个整数或者另一个表达式。返回一个表示表达式值的整数。输入是一个根据逆波兰表示法表示的算术表达式。

2024-11-05 17:28:00 346

原创 Leetcode155:最小栈

-> 返回 -3.minStack.getMin();--> 返回 -2.minStack.top();操作,并能在常数时间内检索到最小元素的栈。使用一个辅助栈,在辅助栈栈顶记录最小元素。将元素val推入堆栈。获取堆栈中的最小元素。删除堆栈顶部的元素。获取堆栈顶部的元素。

2024-11-05 17:11:30 335

原创 Leetcode20:有效的括号

使用栈来判断括号是否匹配,使用字典来存储括号,键为右括号,值为相匹配的左括号。,判断字符串是否有效。

2024-11-05 16:59:52 175

原创 Leetcode92:反转链表Ⅱ

【代码】Leetcode92:反转链表Ⅱ。

2024-11-04 17:43:33 169

原创 Leetcode328:奇偶链表

将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。的时间复杂度下解决这个问题。

2024-11-04 17:09:49 307

原创 Leetcode21:合并两个有序链表

新建链表节点,使用三个指针,两个指针用于判断两个链表值的大小,另一个指针控制新链表。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。两个链表的节点数目范围是。还可以使用递归的思想。

2024-11-04 16:22:28 502

原创 Leetcode19:删除链表的倒数第N个结点

递归的思想,定义一个计时器,当等于n时返回子链表的下一个,否则返回子链表头。使用快慢指针,快指针比慢指针多走n步。注意,计时器要定义在递归函数外面。给你一个链表,删除链表的倒数第。个结点,并且返回链表的头结点。

2024-11-01 20:32:35 347

原创 Leetcode203:移除链表元素

请你删除链表中所有满足。列表中的节点数目在范围。给你一个链表的头节点。

2024-11-01 09:12:23 285

原创 Leetcode160 :相交列表

的输入如下(你设计的程序。

2024-10-28 21:49:06 755

原创 Leetcode24:两两交换链表中的节点

第二种方法使用递归,首先判断递归终止的条件,当前节点为空或当前节点指向空时,递归退出,接下来找返回值是什么,返回的是处理过的子链表的头节点,最后思考单次的操作过程,同样以1234为例,假设后面已经处理好了,当前的顺序是1243,则2->1,1->4。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。链表中节点的数目在范围。

2024-10-24 22:11:28 252

原创 Leetcode88:合并两个有序数组

可以直接合并数组然后使用快排排序,也可以使用双指针的思想,比较两个数组当前指针位置的大小,如果从左到右正向排,会覆盖nums1中前面的元素,我们可以倒序,从右往左排,nums1中后n个元素为0,从后往前不会覆盖前面的元素,使用三个指针,第一个指向nums1前m个元素的末尾,即指向nums1[m-1],第二个指针指向nums2[n-1],第三个指针指向nums1[m+n-1],根据前两个指针位置的大小,判断第三个指针所指元素该填入哪个值。,5,6] ,其中斜体加粗标注的为 nums1 中的元素。

2024-10-22 21:51:16 318

原创 Leetcode66:加一

考虑几种情况,末尾不为9时,不需要进位,直接加一;全为9时,数组需要扩张,创建新数组,数组长度比原来大一个,首位置1,其余位默认为0;最后几位为9时,当前为置0,前一位加一。你可以假设除了整数 0 之外,这个整数不会以零开头。最高位数字存放在数组的首位, 数组中每个元素只存储。数组所表示的非负整数,在该数的基础上加一。加 1 得到了 9 + 1 = 10。因此,结果应该是 [1,0]。输入数组表示数字 4321。输入数组表示数字 123。输入数组表示数字 9。

2024-10-22 21:16:14 205

原创 Leetcode27:移除元素

与Leetcode283:移动零相似,不同的是无需处理k个之后的元素,同意使用双指针记录,一个用来遍历数组,判断当前元素是否为val,另一个记录当前前k个处理后数组的位置,最后返回k。你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。k用来记录满足要求处理后数组的位置,最后返回k,数组的前。中的前两个元素均为 2。

2024-10-22 20:25:39 703

原创 Leetcode283:移动零

k用来记录处理完的最后一个非零元素的新位置,即非零元素的个数,用来确定需要从哪个位置开始置零操作。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。输入:nums=[0,1,0,3,12]输出:nums=[1,3,12,0,0],编写一个函数将所有。输入:nums=[0]输出:nums=[0]

2024-10-18 19:23:13 180 1

原创 Leetcode26:删除有序数组中的重复项

观察数组特点,是有序数组,重复数组是相邻的,可以使用双指针的思想,一个指针记录唯一元素的位置,一个指针查找与当前元素不同的元素位置。解释:函数应该返回的新长度5,并且原数组nums的前五个元素被修改为0,1,2,3,4。不需要考虑数组中超出新长度后面的元素。解释:函数应该返回的新长度2,并且原数组nums的前两个元素被修改为1,2。不需要考虑数组中超出新长度后面的元素。输入:nums=[0,0,1,1,1,2,2,3,3,4]输出:5,nums=[0,1,2,3,4]输出:2,nums=[1,2,_]

2024-10-18 17:43:10 216

原创 蓝桥杯 算法训练最大最小公倍数 Java

问题描述已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式输入一个正整数N。输出格式输出一个整数,表示你找到的最小公倍数。样例输入9样例输出504数据规模与约定1 <= N <= 106。先判断N的奇偶,若为奇数,选最大的三位数,N,N-1,N-2;若为偶数,N,N-2必有公约数2,则N,N-1,N-2最小公倍数不是三数相乘也不为最大,为偶数时,又可分为N是否能被3整除,当输入N=8时,为偶数,考虑选择8,7,

2022-01-21 21:43:22 190

空空如也

空空如也

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

TA关注的人

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