自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【剑指offer】题解:和为S的两个数字

由于我们只需要找到 a + b == target 的一对,所以我们先遍历,如果当前的数 a 和 target 满足哈希表中的某数b,使得 target - a == b ,那么我们直接返回 {a,b} 即可。否则我们在哈希表中添加 a。时间复杂度 O(n)输入一个数组和一个数字 s,在数组中查找两个数,使得它们的和正好是 s。你可以认为每组输入中都至少含有一组满足条件的输出。如果有多对数字的和等于 s,输出任意一对即可。双层for循环遍历即可。数组长度 [1,1002]时间复杂度 O(n)

2024-09-09 23:01:27 282

原创 【Qt知识】qrc机制

在Qt中,qrc机制是一种资源管理系统,它允许你将应用程序所需的静态资源,如图像、样式表、字体和音频文件,嵌入到可执行文件中而不是作为外部文件存在。这样做的好处是资源管理更加安全,因为它们不会丢失或被意外修改,同时也简化了应用程序的分发。

2024-07-04 10:01:52 690

原创 【Qt知识】window frame 对窗口坐标的影响

在Qt中,对Widget的尺寸计算和坐标定位有着直接的影响,这主要是因为窗口框架本身占据了一定的空间,包括标题栏、最小化/最大化/关闭按钮以及边框。这部分额外的空间在不同的应用场景下需要被考虑,从而影响了Widget的实际显示区域和位置计算。下面,我们将详细探讨这两种算法及其背后的原因。

2024-06-30 21:42:05 975

原创 【Qt知识】Geometry属性

Geometry属性是Qt框架中用于处理和操作几何形状的一系列类的集合。它包括了QPoint、QPointF、QSize、QSizeF、QRect和QRectF等。这些类分别代表点、大小、矩形等基本几何概念,它们的存在让图形界面的创建变得既简单又直观。以上内容仅为简要介绍,Qt的Geometry控件远比这里描述的要丰富和强大。它们不仅包含了位置信息(通过左上角的点),还包含了大小信息。如果你在一张白纸上画了一个点,这个点的位置就是由一对坐标(x, y)来确定的。则使用浮点数,为你的设计提供更多的灵活性。

2024-06-30 01:27:15 711

原创 【Qt秘籍】[010]-Qt常用控件

在GUI(图形用户界面)开发领域,Qt无疑是众多开发者心中的首选框架之一。它不仅跨平台、功能强大,而且拥有丰富且灵活的控件库,使得开发者能够快速构建美观、高效的用户界面。对于初学者而言,掌握Qt的常用控件是踏上GUI开发之旅的第一步。当我们打开widget.ui,里面有琳琅满目的控件。因此,学习Qt的重要任务之一是熟悉和掌握Qt的内置通用控件,这些控制对于我们快速开发满足我们需求的接口至关重要!

2024-06-07 00:17:01 829

原创 【Qt知识】部分QWidget属性表格

是Qt库中所有图形用户界面组件的基类,它提供了大量属性以供自定义和配置控件的行为和外观。下面列出了一些主要的。控件的模态级别,确定控件如何与其他窗口交互。控件的边框形状,如果控件是一个QFrame。控件的边框阴影,如果控件是一个QFrame。控件的尺寸策略,决定控件如何响应布局变化。如果控件显示图标,此属性定义图标的大小。CSS样式的字符串,用于设置控件的样式。控件的窗口标志,影响窗口的行为和外观。控件的辅助技术名称,用于无障碍访问。控件的标题,如果控件是一个顶级窗口。控件的图标,如果控件是一个顶级窗口。

2024-06-06 23:14:26 1042

原创 【Qt知识】disconnect

在Qt框架中,disconnect函数用于断开信号与槽之间的连接。当不再需要某个信号触发特定槽函数时,或者为了防止内存泄漏和重复执行问题,你可以使用disconnect来取消这种关联。disconnect。

2024-06-02 14:28:05 1523

原创 【Qt秘籍】[009]-自定义槽函数/信号

在Qt中自定义槽函数是一个直接的过程,槽函数本质上是类的一个成员函数,它可以响应信号。所谓的自定义槽函数,实际上操作过程和定义普通的成员函数相似。选择位置: 槽函数通常定义在类的声明部分。在Qt 5及以上版本中,虽然不是强制要求,但传统上槽函数会放置在区域下。如果希望保持代码的清晰度和一致性,这样做是个好习惯。Q_OBJECT // 必须包含,以便使用信号和槽机制public:~MyClass();public slots: // 槽函数区域// 自定义槽函数声明。

2024-06-02 13:09:27 755

原创 【Qt秘籍】[008]-Qt中的connect函数

在Qt框架中,connect函数是一个非常核心的函数,用于实现之间的连接,它是Qt信号槽机制的关键所在。信号槽机制是一种高级的通信方式,允许对象在状态改变时通知其他对象,而无需知道这些对象是谁。这种方式促进了对象之间的松耦合,增强了代码的模块化和可维护性。

2024-06-02 10:33:20 595

原创 【Qt知识】Qt窗口坐标系

Qt的窗口坐标体系遵循标准的计算机图形坐标系统规则。

2024-06-02 09:39:55 781

原创 【Qt秘籍】[007]-LineEdit & Pushbutton控件

LabelQt的中有着各种各样的控件,相较于传统C/C++的输出默认只能在控制台实现,Qt中可以有不同的接口实现各种不同的功能,下面我们将实现不同功能的输出 hello world!

2024-06-02 08:48:21 1085 1

原创 【Qt知识】Qt框架中的信号(Signals)与槽(Slots)机制

Qt框架中的信号(Signals)与槽(Slots)机制是一种强大的通信方式,允许对象之间相互通信而无需对象之间直接引用或了解对方。这一机制简化了应用程序的事件处理和组件之间的交互,是Qt的一大特色和核心概念。

2024-06-02 08:17:04 1301

原创 【Qt知识】Qt Creator快捷键

请注意,快捷键可能根据您的操作系统、Qt Creator的版本以及个人设置有所不同。如果您需要调整快捷键,可以在Qt Creator的设置中进行个性化配置。

2024-05-30 18:32:46 751

原创 【Qt秘籍】[006]-Label实现Hello World程序-编程第一步

中文意思是“你好,世界”。因为 The C Programming Language 中使用它做为第一个演示程序,后来很多程序员在学习编程或进行设备调试时延续了这一习惯。下面,我们也将演示Qt中的"Hello World!我们先创建一个文件。【不知道如何创建的朋友请移步1.图形化方式2.纯代码方式。

2024-05-30 18:00:58 1168

原创 【Qt知识】Qt中的对象树是什么?

如果你的Qt应用程序就像一片茂盛的森林,而这片森林中的每一棵树都代表了一个对象树。在Qt中,一个对象树是一种特殊的对象关系结构,其中每个对象(节点)可以有零个或多个子对象(子节点),形成了一个层次化的结构。最重要的是,这个树状结构提供了一种自动内存管理机制,简化了资源的生命周期管理。Qt对象树是其强大内存管理和事件处理机制的基石。通过理解并熟练运用这一概念,你可以编写出既高效又易于维护的Qt应用程序。

2024-05-30 17:56:56 650

原创 【Qt秘籍】[005]-Qt的首次邂逅-创建

当我们打开Qt Creator,你会发现整个界面类目繁多。现在,让我们直接开始新建一个项目。

2024-05-29 14:55:49 1319 2

原创 【Qt秘籍】[004]-Qt中的重要工具-介绍

当我们打开系统的菜单翻到刚刚下载的Qt文件,里面的内容却让我们眼花缭乱。不过别急,下面我们将一一解析。

2024-05-29 03:55:49 421

原创 【Qt秘籍】[003]-Qt环境变量配置-磨刀不误砍柴工

例如,在Windows和DOS操作系统的path环境变量中,当要求系统在不告诉程序所在的完整路径的情况下运行程序时,系统不仅会搜索当前目录中的程序,还会搜索path中指定的路径。这样,你无需每次都在命令前加上文件的完整路径,使得在任何位置都能够方便地运行这些命令。:在开发环境中,有时需要管理多个版本的同一工具,通过在PATH中灵活调整目录顺序,可以轻松切换使用不同版本的软件,满足不同项目的需求。3. "环境变量"------>双击"Path"------>填⼊"bin"路径------> "确定"

2024-05-29 03:35:44 1313

原创 【Qt秘籍】[002]-开始你的Qt之旅-下载

Qt的开发工具概述Qt支持多种开发工具,其中最常见的开发工具是1.QtCreator 【易上手/有少量bug/适合新手】2.VisualStudio 【功能强大/易出错/需要更多额外配置】3.Eclipse 【清朝老兵IDE/不建议使用】

2024-05-29 02:57:29 1369

原创 【Qt秘籍】[001]-从入门到成神-前言

目前最新的版本是Qt6,但是相对来说和Qt5的核心功能区别不大,且许多企业任然有大量项目在使用Qt5,因此笔者后续以Qt5为主介绍Qt。如果你要制作一个既能在电脑上,也能在手机上使用的软件,通常需要针对每个系统学习不同的编程方法。Qt是一个跨平台的应用程序开发框架,简单来说,它是一套工具和库,帮助软件开发者编写可以在多种操作系统上运行的。Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的 collections,”,让你用相似的代码就能打开这些平台的大门,大大降低了开发难度,提高了效率。

2024-05-29 01:49:04 609

原创 哈希冲突的常见解决方法【附C++代码】

在C++中,哈希表是一种常用的数据结构,用于实现快速的操作。哈希表的核心在于哈希函数,它将输入的关键字转换为一个数组索引。然而,不同的关键字可能映射到相同的索引,这种情况称为哈希冲突。有效地解决哈希冲突是确保哈希表性能的关键。

2024-05-28 20:30:22 554

原创 【C++】数据结构:哈希桶

哈希桶(Hash Bucket)是哈希表(Hash Table)实现中的一种数据结构,用于解决哈希冲突问题。哈希表是一种非常高效的数据结构,它通过一个特定的函数(哈希函数)将输入数据(通常是键,key)直接映射到一个数组的某个位置上,这样就可以通过这个位置快速访问到相应值(通常是值,value)。然而,不同的键可能经过哈希函数计算后得到相同的索引,这种现象称为哈希冲突。处理哈希冲突的方法有多种,其中开放地址法、链地址法和建立公共溢出区等,而哈希桶就是链地址法的具体应用。

2024-05-28 20:21:11 676

原创 Linux对于block阻塞信号的理解

在深入探讨Linux系统中信号(Signals)的阻塞机制前,我们有必要先回顾信号的基础知识,进而深入理解信号阻塞这一高级特性及其在系统编程中的重要作用。信号是Unix/Linux系统中进程间通信的一种基本手段,它是一种异步通知机制,允许操作系统或一个进程向另一个进程发送简短的消息。信号的种类繁多,从基本的SIGINT(用户中断,如Ctrl+C触发)到SIGKILL(不可阻塞且无法忽略的进程终止信号),每一种信号都有其特定的意义和默认处理行为。

2024-05-17 18:20:14 999

原创 【Linux】进程间通信(IPC)

Linux提供的多样化IPC机制,每种都有其独特的应用场景和优势。开发者应根据实际需求选择最合适的通信方式:简单数据交换可选管道或FIFO;需要消息传递和优先级控制时,消息队列更合适;共享内存适合大量数据快速交换,但需额外同步机制;信号量和互斥锁用于同步访问;套接字则广泛应用于网络编程和跨机器进程通信。理解并灵活运用这些机制,是进行高效多进程编程的关键。

2024-05-15 13:24:46 448

原创 [C++]多态是如何调用不同的函数对象的?

C++中的多态调用通过虚函数表(VTable)、虚函数指针(VPtr)以及动态绑定机制实现。当通过基类指针或引用调用虚函数时,编译器和运行时环境会依据对象的实际类型,通过其VPtr找到正确的VTable,再从VTable中查找出对应虚函数的地址并执行。这种机制确保了同一消息(函数调用)在不同对象(基类与派生类)上表现出不同的行为,实现了多态性。

2024-04-24 19:41:12 303

原创 【C++】面向对象--多态

性是面向对象编程(OOP)的三大核心特性之一,与封装和继承并驾齐驱,为程序设计带来了极大的灵活性与扩展性。在C++中,多态性表现为不同对象对同一消息的不同响应,即“一种接口,多种实现”。本文将深入探讨C++中多态性的原理、实现方式以及实际应用。按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

2024-04-24 18:43:16 299

原创 孤儿进程_OrphanProcess

当父进程提前结束时,操作系统内核会自动将孤儿进程的父进程重新设置为init进程(在Unix/Linux系统中,init进程通常是PID为1的进程,现代系统中可能是systemd)。这样一来,原本的父进程不存在了,而子进程还在运行,这时子进程就变成了孤儿进程。init进程充当了所有孤儿进程的“监护者”,它会持续监控并正确地回收孤儿进程的资源,当孤儿进程最终结束时,init进程会调用`wait()`系统调用来获取孤儿进程的退出状态,进而彻底清除其在进程表中的条目,从而避免了系统资源的浪费。

2024-03-19 18:56:26 332

原创 僵尸进程_ZombieProcess

此时,虽然它的所有资源(如内存、打开的文件描述符等)都已经由操作系统内核回收,但是在进程表(Process Table)中,该进程的记录并没有被完全清除,仅保留了最基本的进程描述信息,这些信息通常包括进程ID(PID)、退出状态以及其他必要的统计信息。因此,在编程实践中,程序员应确保正确处理子进程的退出,防止僵尸进程的产生。在某些情况下,如果父进程先于子进程结束,则操作系统会自动安排init进程(PID为1)作为孤儿进程的父进程,init进程一般会定期清理僵尸进程,防止这种情况造成的问题。

2024-03-19 18:51:21 516

原创 2025. Line Fighting

C语言C++

2024-03-16 14:53:12 437

原创 timus#1155. Troubleduons

【代码】timus#1155. Troubleduons。

2024-03-11 18:46:22 542 1

原创 Timus#1005

遍历数组 a,对每个元素尝试加入到满足条件的“堆”中(即更新 dp[j]),确保在所有可能的划分方案中找到使得两个堆的和相差最小的情况。所以,总的复杂度是外层循环与内层循环复杂度的乘积,即 O(n * sum) ≈ O(n^2)。这意味着当输入数组规模增大时,算法所需的时间将以二次方的速度增长。开始一直减到当前元素为止,其时间复杂度在最坏情况下是 O(sum),因为对于较大的元素,内层循环可能接近于 sum 次迭代。可以达到数组元素总和的一半,而数组元素总和与数组大小 n 相关,因此可以假设在极端情况下,

2024-03-10 23:21:50 417 2

原创 【小程序】首屏渲染优化

小程序首屏渲染优化对于提升用户体验以及减少用户等待时间非常重要。下面我们来详细解析小程序首屏渲染优化的相关技巧和方法,并结合代码示例进行分析。首先,我们需要了解小程序的渲染流程。小程序的渲染过程可以分为两个阶段:解析阶段和布局绘制阶段。在解析阶段,小程序会解析WXML文件,构建DOM树和生成系统节点树。在布局绘制阶段,小程序会将DOM树和系统节点树进行合并,计算布局和绘制。

2024-02-27 00:20:50 1051 1

原创 小程序优化分析

可以根据页面的访问频率和重要性,将页面分成多个包进行加载,避免一次性加载所有页面。当页面内容很多时,可以只加载当前可视区域的内容,而不是一次性加载所有内容。小程序官方提供了一些性能优化的工具和组件,如自定义组件、动画组件、虚拟列表、分包预加载等,可以结合具体场景使用,以提高性能。需要注意的是,性能优化需要结合具体的业务场景和需求来进行,对于不同的小程序可能有不同的优化方向和策略,所以我们要对症下药。在页面更新时,避免无意义的重复渲染,可以通过setData的参数合并、节流、防抖等方式来处理。

2024-02-27 00:08:47 384

原创 最速C++开发APP路线【速成】

技能 学习时间 说明 C++基础知识 1-3个月 学习C++语法和面向对象编程基本概念 移动应用开发框架 2-4周 了解常用移动应用开发框架(例如React Native或Flutter) 用户界面设计 1-2周 学习移动应用用户界面设计原则和工具(如Sketch或Adobe XD) 移动应用前端开发 2-4个月 学习使用框架和工具开发移动应用前端界面 移动应用后端开发 1-3个月 学习使用服务器端框架和数据库开发移

2024-02-17 14:47:28 494

原创 malloc/free和new/delete的区别

delete和free被调用后,内存不会不会立即收回,指针也不会指向空,delete或free仅仅是告诉操作系统,这一块内存被释放,还可以做其他用途。6. 申请自定义类型对象时,malloc/free只会开辟空间,不会调用构造函数与析构函数,而new 在申请空间后会调用构造函数完成对象的初始化,delete在释放空间前会调用析构函数完成 空间中资源的清理。3. malloc申请空间时,需要手动计算空间大小并传递,new只需在其后跟上空间的类型即可, 如果是多个对象,[ ]中指定对象个数即可。

2024-02-15 08:59:11 417

原创 类的6个默认成员函数

如果一个类中什么成员都没有,简称为空类空类中真的什么都没有吗?并不是,任何类在什么都不写时,编译器会自动生成以下6个默认成默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数C++类的6个默认成员函数包括默认构造函数、析构函数、拷贝构造函数、拷贝赋值运算符、移动构造函数和移动赋值运算符。

2024-02-10 21:52:35 423

原创 【C++】中的 inline 用法

其次,因为内联函数要在调用点展开,所以编译器必须随处可见内联函数的定义,要不然就成了非内联函数的调用了。所以,这要求每个调用了内联函数的文件都出现了该内联函数的定义。因此,将内联函数的定义放在头文件里实现是合适的,省却你为每个文件实现一次的麻烦。声明跟定义要一致:如果在每个文件里都实现一次该内联函数的话,那么,最好保证每个定义都是一样的,否则,将会引起未定义的行为。如果不是每个文件里的定义都一样,那么,编译器展开的是哪一个,那要看具体的编译器而定。所以,最好将内联函数定义放在头文件中。

2024-02-07 19:35:36 1066 1

原创 【C++】数字类型及其运算

不过为了防止随机数每次重复,常常使用系统时间来初始化,即使用 time 函数来获得系统时间,它的返回值为从 00:00:00 GMT, January 1, 1970 到现在所持续的秒数,然后将 time_t 型数据转化为(unsigned)型再传给 srand 函数,即: srand((unsigned) time(&t));它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。在 C++ 中,除了可以创建各种函数,还包含了各种有用的函数。

2024-02-05 12:37:42 2934 1

原创 【C++】max函数的应用

并给它们赋值为 10 和 20。这两个头文件,分别用于输入输出和使用。的值,返回其中较大的值,并将其赋给。在这个示例代码中,我们包含了。的值,即我们得到的最大值。我们定义了两个整数变量。

2024-02-05 11:23:55 375 1

原创 C语言的指针和C++的引用的一些区别

需要注意的是,尽管C++引用的语法和用法与C语言的指针有区别,但在底层实现上,引用常常被编译器转化为指针来处理。函数参数:C语言中,函数参数可以是指针类型,可以通过传递指针来修改原始变量的值。变量绑定:指针在声明后需要通过赋值操作来与某个变量进行绑定,而引用在声明时必须直接与某个变量进行绑定。空值:C语言的指针可以指向空值(NULL),表示空指针,而C++的引用必须始终引用某个已存在的对象。重新绑定:指针可以在任意时刻重新绑定到不同的对象,而引用一旦绑定到某个对象后,就无法再引用其他对象。

2024-02-03 13:57:20 459 1

空空如也

空空如也

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

TA关注的人

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