- 博客(49)
- 收藏
- 关注

原创 Java 开发环境配置和运行代码指南
数据类型: 表示一组数据的集合,以及基于该数据集合的一组合法操作。它不仅表示一组数据,还限制了这组数据能够执行的操作。公式: 数据类型 = 数据 + 操作举例int: 一种基本数据类型,表示一定范围内的整数,并支持加、减、乘、除等操作,但不支持求长度、求宽度等操作。String: 最常用的引用数据类型,表示字符串,可以进行字符串拼接()、求长度等操作,但不支持减法、乘法等操作。
2024-07-20 16:56:10
1151
原创 C++ 时间库和线程库学习笔记(Chrono 与 Thread)
学习阶段建议内容初学者掌握std::mutex基础使用方法进阶者熟悉竞态条件调试、优化加锁策略、合理使用sleep_for拓展学习学习等更复杂的同步机制。
2025-04-10 00:00:17
396
原创 C++11&QT复习 (十九)
方案是否安全性能说明单线程安全慢无并发多线程(无加锁)不安全快但错误数据竞争多线程 + 每次加锁安全慢锁粒度太小多线程 + 聚合后加锁安全快推荐方案,锁粒度大、代价低。
2025-04-09 23:57:32
768
原创 C++11&QT复习 (十八)
遍历方式安全性可读性性能推荐用途高中-高高推荐日常遍历高高高学习阶段推荐++i)中中中需访问索引或相邻元素时使用如果你不打算修改指针本身,也可以加上const你已经用了三种遍历方式来访问基于范围的 for 循环(引用)显式使用引用类型的基于范围的 for 循环使用索引vec[i]和vec.at(i)除了这些,还有以下几种方式可以遍历vec容器里装指针(包括智能指针),访问内容就要两次\*。第一次拿到指针,第二次拿到内容。如果你想更简单一些,不用管两次。
2025-04-09 00:45:09
801
原创 C++11&QT复习 (十六)
String类型是否可绑定左值是否可绑定右值备注左值引用 (T&✅❌常用于一般变量引用const 左值引用 (const T&✅✅可以绑定临时对象,常用于函数参数右值引用 (T&&❌✅主要用于移动语义。
2025-04-07 22:30:02
644
原创 C++11&QT复习 (十四)
/ 使用 operator-> 访问STL 提供统一的数据结构与算法接口,核心三件套是容器、迭代器、算法学会根据实际使用场景(性能、顺序、插入/删除频率)选择合适容器操作容器时,要注意迭代器失效问题算法库配合迭代器提供高效、可复用的操作方式。
2025-04-07 22:25:31
1117
原创 C++11&QT复习 (十一)
在构造函数中调用虚函数时,调用的版本是当前构造函数所在类的实现,而不是派生类的重写版本。这是因为派生类的部分在基类构造函数执行时还未构造完成,调用派生类的虚函数可能导致未定义行为。这种设计是C++语言为了保证对象构造的安全性而做出的规定。如果需要多态行为,应避免在构造函数中调用虚函数,或通过其他方式(如初始化函数或工厂模式)实现。
2025-04-02 09:22:36
1311
原创 C++11&QT复习 (十)
1、如果基类实现了拷贝构造函数或赋值运算符函数,但是派生类没有实现拷贝构造函数或赋值运算符函数,那么在将一个已经存在的派生类对象初始化一个刚刚创建的派生类对象,或者将两个派生类对象进行赋值,那么派生部分会执行缺省行为,而基类部分会执行基类的拷贝构造函数或者赋值运算符函数。
2025-04-01 21:38:44
1260
原创 C++11&QT复习 (九)
虚拟继承通过共享基类实例,解决了菱形继承中的数据冗余和访问二义性。适用场景是需要多继承且存在公共基类的情况,如接口组合或公共属性复用。
2025-04-01 21:36:18
618
原创 C++11&QT复习 (八)
为了完成从基类吸收过来的数据成员的初始化,会调用基类的构造函数,而如果基类没有显示定义构造函数,就会调用基类的无参构造函数,而如果基类有显示定义构造函数,那么也会默认调用基类的无参构造函数,完成初始化,如果不在派生类的构造函数的初始化列表中显示调用基类有参构造函数,就会报错。总结:当创建派生类对象的时候,不管基类与派生类有没有显示写出构造函数,肯定默认会调用无参的,有时无参又没有,所以最好在派生类构造函数的初始化列表中,显示写出基类构造函数就可以。2、调用基类的构造函数完成基类成员的初始化。
2025-04-01 21:35:16
962
原创 C++11&QT复习 (七)
通过这些方法,我们可以更高效地管理 C++ 中的资源分配和释放,避免内存泄漏和重复释放。实现了独占语义,即对象的拷贝会创建新的独立对象,保证每个对象都拥有独立的内存。类是一个普通的对象类,包含构造函数、析构函数、成员变量和方法。在 C++ 中,拷贝构造的语义可以分为。采用引用计数管理共享的内存。,分别对应独占语义和共享语义。共享同一块内存,只有当。C++ 标准库提供了。
2025-04-01 21:33:40
803
原创 C++构造函数中虚函数调用规则
在构造函数中调用虚函数时,调用的版本是当前构造函数所在类的实现,而不是派生类的重写版本。这是因为派生类的部分在基类构造函数执行时还未构造完成,调用派生类的虚函数可能导致未定义行为。这种设计是C++语言为了保证对象构造的安全性而做出的规定。如果需要多态行为,应避免在构造函数中调用虚函数,或通过其他方式(如初始化函数或工厂模式)实现。
2025-03-27 11:16:12
359
原创 C++11&QT复习 (六)
类型转换函数用于将类的对象转换为其他类型,满足以下特点:1.3 关键优化✅ 类型转换构造函数增加 ,防止隐式转换导致潜在错误。✅ 类型转换函数添加 ,保证 的成员变量不会被修改。✅ 处理 情况,避免除零异常。✅ 优化 相关代码,消除 冗余,提高可读性。2.3 关键优化✅ 清晰划分不同作用域:全局作用域 、命名空间 、类作用域 和 。✅ 增强 方法输出格式,更直观理解变量的作用域。✅ 消除不必要的析构函数,提升代码简洁性。✅ 代码格式调整,增强可读性。内部类(Nested C
2025-03-25 22:48:34
711
原创 C++11&QT复习 (五)
(解引用运算符)是最常见的运算符之一。它们通常用于模拟智能指针或多层指针访问。C++ 允许用户自定义类的成员访问方式,其中。在上一节中,我们学习了 C++ 中的。,掌握它们的用法可以更好地理解。
2025-03-25 17:33:29
1378
原创 C++11&QT复习 (三)
文本文件ifstream读取文件,ofstream写入文件,fstream读写文件。seekg()和seekp()控制文件指针。适用于字符串的 I/O 操作。ios::app可用于追加模式写入文件。二进制文件ifstreamofstream需使用模式read()和write()适用于存储结构化数据,如struct类型的存储和读取。
2025-03-24 22:42:18
575
原创 银河麒麟服务器操作系统桌面任务栏网络图标消失问题
前段时间在银河麒麟系统上遇到一些问题,服务器上桌面任务栏上的网络图标消失了,网络连接也打不开,最后使用nmtui命令才打开了网络连接配置界面,并成功连接到网络。(我的系统:Kylin Advanced Server V10 SP3 2403 aarch64)在银河麒麟操作系统V10中配置IP地址,可以通过多种方式实现。
2025-01-09 16:16:38
1918
原创 Qt信号槽相关语法
下面詳細解釋新的 Qt 連接語法,也就是 Qt5 引入的基於函式指標的連接方式。這種語法相較於 Qt4 的字串式連接,更安全、更易讀、且在編譯時期就能檢查錯誤。Qt4 的字串式連接 (已不建議使用):在 Qt4 中,連接信號與槽是使用字串來指定信號和槽的名稱:: 使用 巨集將信號名稱轉換為字串。: 使用 巨集將槽名稱轉換為字串。這種方式有以下缺點:Qt5 的基於函式指標的連接 (推薦使用):Qt5 引入了新的連接語法,使用函式指標來指定信號和槽:: 使用 運算子取得信號的函式指標。:
2025-01-06 22:05:48
646
原创 函数指针的用法
函數指標一些相關的用法和注意事項。以下將詳細說明:1. 基本寫法:這是最常見且明確的寫法,尤其在處理重載函數時非常有用。: 指標所指向的函數的回傳型別。: 表示這是一個指向 類別成員函數的指標。: 指標變數的名稱。: 指標所指向的函數的參數列表。: 要指向的函數的位址。2. 使用 或 進行簡化:當需要多次使用同一種函數指標型別時,可以使用 (C風格) 或 (C++11引入) 來定義別名,使程式碼更簡潔易懂。3. 使用 (C++11引入):在某些情況下,如果編譯器可以推斷出函數指
2025-01-06 22:03:45
413
原创 LeetCode 278: 第一个错误的版本
你是产品经理,目前正在带领一个团队开发一个新产品。不幸的是,您的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。为了最小化 API 调用次数,可以使用二分查找算法来找到第一个错误的版本。二分查找的核心思想是通过不断缩小搜索范围来逼近第一个错误的版本。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。, n],你想找出导致之后所有版本出错的第一个错误的版本。假设 n = 5,并且 version = 4 是第一个错误的版本。
2024-08-01 17:34:22
497
原创 leetcode 540.有序数组中的单一元素
leetcode [540] 有序数组中的单一元素【转载】作者:宫水三叶链接:https://leetcode.cn/problems/single-element-in-a-sorted-array/solutions/1264496/gong-shui-san-xie-er-duan-xing-fen-xi-yu-17nv/来源:力扣(LeetCode)
2024-07-29 09:07:12
530
原创 leetcode 69. x 的平方根
可以使用二分查找法或牛顿迭代法来实现 LeetCode 问题。下面是使用二分查找法和牛顿迭代法的 C++ 实现。
2024-07-24 11:56:55
489
1
原创 二分查找代码详解
通过使用,你可以有效避免由于left和right的和超出int范围导致的溢出问题,确保二分查找在所有情况下都能正确执行。在数学上证明和得到的结果是相同的。两者之所以相等,归根结底在于它们的计算方式和中间步骤是相同的。
2024-07-24 09:16:09
1116
原创 leetcode 455. 分发饼干
这段代码是为LeetCode问题提供的两种解决方案。问题要求分配饼干给孩子,使尽可能多的孩子满足胃口。每个孩子都有一个胃口值,每个饼干都有一个尺寸值,饼干只能分给胃口值小于等于饼干尺寸的孩子。
2024-07-23 10:15:57
589
1
原创 Java的集合框架(Collection Framework)中的Iterator接口详解
在Java中,将Iterator定义为接口是一种设计上的选择,目的是提供一个统一的迭代机制,使不同类型的集合都能以一致的方式进行遍历。以下是将Iterator以下是IteratorE next();将Iterator定义为接口的主要目的是提供一个统一、灵活且可扩展的迭代机制。通过这种方式,Java集合框架能够支持多种类型的集合,并且客户端代码能够以一致的方式使用这些集合。这种设计不仅简化了集合的使用,还提高了代码的可维护性和可扩展性。
2024-07-22 15:48:26
715
原创 leetcode 75.颜色分类
LeetCode第75题“颜色分类”要求对包含红色、白色和蓝色的数组进行排序,红色、白色和蓝色分别用0、1和2表示。这个问题可以通过荷兰国旗问题的解决方案来实现,该算法的时间复杂度为O(N),空间复杂度为O(1)。有一个简单的思路,这种方法虽然简单直观,但它不是题目要求的单次遍历解决方案。不过,对于理解问题和学习排序的基本概念非常有帮助。这种方法高效且简单,适用于大多数情况下需要对包含少数类别的数组进行分类排序的场景。
2024-07-22 09:30:39
784
1
原创 leetcode 633.平方数之和
1],因此在计算的过程中可能会发生 int 型溢出的情况,需要使用 long 型避免溢出。在枚举 a 的同时,使用 sqrt 函数找出 b。注意:本题 c 的取值范围在 [0,
2024-07-20 15:34:49
284
原创 leetcode 451.根据字符出现频率排序
这个方法的时间复杂度主要是O(N log N),其中N是字符串的长度。通过这种方式,可以高效地根据字符出现的频率对字符串进行排序。
2024-07-20 15:31:31
685
1
原创 LeetCode 347.前K个高频元素
这种方法的时间复杂度主要是O(N log K),其中N是数组的长度,K是要找的高频元素的数量。这种方法效率较高,适用于大多数情况。
2024-07-20 15:25:57
501
1
原创 leetcode 215.数组中的第K个最大元素
LeetCode第215题“数组中的第K个最大元素”要求找到未排序数组中第k个最大的元素。通常有几种常见的解决方案,包括使用排序、使用最小堆或快速选择算法。
2024-07-19 09:56:39
497
原创 对递归的深度理解及详细示例
关键在于理解递归的三个部分,并通过模拟、调试和练习来逐步掌握递归的思维方式。递归的基本思想是一个函数调用自身来解决一个更小的相同问题,直到达到基准情况(递归出口),在这个情况下不再进行递归调用。从简单的问题开始,比如计算阶乘、斐波那契数列、字符串反转,然后逐步解决复杂的问题,如二叉树遍历、动态规划问题。理解递归可以是一个挑战,但通过一些系统的方法,你可以逐步掌握它。通过逐步分析每个递归调用,你可以更好地理解递归的执行流程。通过反复练习各种递归问题,加深对递归的理解。用纸和笔手动模拟递归调用的过程。
2024-07-19 09:28:38
2207
原创 二叉树的遍历(代码实现+详细注释)
这段代码实现了二叉树的后序遍历(Post-order Traversal),但与传统的递归方法不同,这里使用了栈 (Stack) 数据结构来进行非递归的后序遍历。:对于每个节点,先递归遍历其左子树,然后递归遍历其右子树,最后处理当前节点(将其值添加到列表中)。通过递归调用和递归出口的配合,递归函数能够遍历整个二叉树并按照后序遍历的顺序处理每个节点。这个代码实现了二叉树的后序遍历,通过使用栈和头插法来确保节点值按后序遍历的顺序排列。的值插入到结果列表的开头,没有孩子。的值插入到结果列表的开头,没有孩子。
2024-07-19 09:26:43
1545
LightSE搜索引擎项目
2023-04-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人