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

原创 【31天蓝桥杯冲刺!】蓝桥杯相关的 Python 知识点总结(3)竞赛常用标准库(详细)
本节介绍一些蓝桥杯中常用的标准库,会使大家在解题时事半功倍!
2024-03-20 21:44:42
964
2

原创 【31天蓝桥杯冲刺!】蓝桥杯相关的 Python 知识点总结(2)选择和循环结构
本文讲述了蓝桥杯中常用的循环结构中的for循环、while循环和选择结构;以及选择结构中的逻辑表达式和if语句
2024-03-20 21:19:50
1172
1
原创 Qt框架学习04——元对象系统
使用 Qt 元对象系统可以编写更通用的方法。可以实现一些其他框架的反射机制等:在测试框架中,可能需要自动调用某些对象的方法或检查对象的状态。利用元对象系统的反射能力,可以在运行时获取对象的方法和属性,并自动执行测试。动态信号槽连接:另外,当信号与槽的连接关系在程序运行期间需要根据不同条件动态改变时,元对象系统允许在运行时进行信号与槽的连接和断开。这种动态连接特别适合需要根据用户操作或程序状态变化而调整行为的应用。
2024-08-17 13:03:40
495
原创 Qt框架学习03——对象树模型
Qt的对象树结构使得对象之间可以形成一种父子关系,父对象可以自动管理子对象的生命周期。对象树是通过QObject的构造函数和setParent()方法自动构建的。当你创建一个QObject的子类对象时,你可以将一个父对象传递给它,或者在之后调用setParent()方法设置父对象。父对象(Parent Object): 在对象树中,每个QObject对象可以有一个父对象。子对象(Child Object): 每个QObject对象可以有多个子对象。子对象通常会附属于父对象,并在父对象的生命周期内存在。
2024-08-17 12:24:11
477
原创 Qt框架学习01——信号与槽高级用法
当信号发出之后,先执行槽函数如果槽函数有多个,则按照绑定顺序执行槽函数执行结束,执行普通函数singal / receiver / method 都可以设置为nullptr。
2024-08-16 14:05:38
908
原创 Qt—Debug Error:HEAP CORRUPTION DETECTED:after Normal block问题
出错的时候忘记截图了,在网上找了一下,我的错误提示和这个是一样的本来一切正常,突然间我关闭窗口的时候就会爆出这个错误,debug的时候程序可以,功能也正常,或者的时候会出现这个报错。我在网上查基本都是说内存问题,大概就是内存溢出或者指针越界,或是说引用的头文件不一致尝试着把新写的功能全部注释,还是会有这个错误,我才发现应该不是功能写错了,也许是内存问题,但是我没有用到智能指针之类的,都是一些常规指针操作,我不是很理解为什么会有内存溢出的现象出现。然后尝试着关闭软件再打开,无用;
2024-08-09 13:08:18
478
1
原创 Qt—Qtcreator中自定义类时,下拉菜单中没有出现要继承的Qt类
这里我想要继承类,但是在这个下拉菜单中没有找到我认为这个是qtcreator版本的问题,因为我直接去 #include 是可以找到这个类的。
2024-08-09 13:07:46
593
原创 Qt——QTCreater ui界面如何统一设置字体
第一步:来到 ui 设计界面,鼠标右键点击 改变样式表第二步:选择添加字体第三步:选择字体样式和大小,点击 ok第四步:点击ok或apply,完成设置
2024-08-01 15:39:36
1043
原创 QT——Error:LNK2019无法解析的外部符号
是由于槽函数在 头文件.h 中声明,但却没有实现造成的。解决方法:直接删除掉不用的槽函数声明即可。
2024-07-30 17:14:28
373
原创 QT——信号和槽学习笔记
signals:// 无参数信号// 带参数信号// 无参数槽// 带参数槽两个槽函数的声明:这是我定义的两个槽函数:信号(只需要signals声明)signals:connect函数连接:这部分是spinBox发出信号,接收者当前窗口,槽函数是onSpinBoxValueChanged然后当前窗口再发送信号,接收者是当前窗口,槽函数是onNumChanged这部分主要是实验一下自定义槽函数和信号,而不是直接使用valueChanged。
2024-07-30 17:11:47
876
原创 【安装matlab engine报错】:setuptools.extern.packaging.version.InvalidVersion: Invalid version: ‘R2022a’ 解决
Python 的 setuptools 库期望版本号遵循特定的语义化版本(SemVer)格式,如 1.0.0 或 2.0.1,setup.py 文件中的 version 参数值 ‘R2022a’ 被认为是无效的版本格式。而 ‘R2022a’ 不是一个有效的版本格式。或者:直接激活已有的环境也可以。逐行输入,如果输出结果是。这样就说明安装成功了。
2024-06-24 22:31:21
1687
2
原创 服务器硬件的基础知识
处理器是服务器的核心组件,负责执行计算和处理任务。常见品牌有 Intel 和 AMD。内存用于存储当前运行的程序和数据,影响服务器的性能和响应速度。主板是服务器的骨架,连接和管理所有硬件组件。电源为服务器提供稳定的电力供应。网络接口卡用于连接服务器和网络,处理网络通信。机箱用于容纳和保护服务器的所有硬件组件。散热系统用于散发服务器运行时产生的热量。RAID 控制器用于管理多个硬盘,提供数据冗余和性能提升。了解服务器硬件的基础知识有助于选择和配置合适的服务器,以满足不同的业务需求。
2024-06-02 15:40:59
543
原创 7-Zip 介绍
7-Zip 是一款开源的文件压缩和解压工具,广泛用于文件和文件夹的压缩和解压缩操作。它由 Igor Pavlov 开发,并在 GNU LGPL 许可下发布。
2024-06-02 15:09:41
725
原创 网络编程——套接字缓存(buffer)满会丢失数据吗
套接字缓冲区已满并不直接意味着数据丢失,具体取决于使用的协议(TCP 或 UDP)和应用程序对阻塞或错误的处理方式。对于 TCP 协议,缓冲区已满时会通过流量控制和重传机制避免数据丢失,而对于 UDP 协议,缓冲区已满时会直接导致数据丢失。
2024-05-31 23:43:56
853
原创 网络编程TP/IP (尹圣雨)(韩) 第一章 课后习题
底层 I/O(如 read 和 write)直接操作文件描述符,提供细粒度控制和高效的 I/O 操作。ANSI 标准定义的文件 I/O(如 fopen、fclose、fread、fwrite)是高级 I/O 函数,提供了更方便的接口和缓冲机制,适用于一般用途。
2024-05-31 23:08:46
641
原创 基于Linux的文件操作(socket操作)
在linux中,socket也被认为是文件的一种,因此在网络数据传输过程中自然可以使用文件I/O的相关函数。而在Windows中,是要区分socket和文件的,所以在Windows中需要特殊的数据传输相关的函数。
2024-05-30 22:51:04
2053
原创 Linux网络编程——云服务器端口连接问题(error:10060)
之前在写一个聊天室的练手项目时候,需要用到云服务器,但是之前没有接触过云服务器,所以导致客户端的代码无法成功连接上云服务器上的服务端代码服务器返回了错误。
2024-05-30 21:56:58
460
原创 网络编程——多进程的服务器
多进程的网络服务器是一种使用多个进程来处理并发网络请求的服务器架构。在这种架构中,服务器在接收到客户端连接请求后,会创建一个新的子进程来处理该请求,从而允许服务器同时处理多个客户端连接。多进程服务器通常用于需要高并发处理能力的场景,例如Web服务器、文件服务器等。
2024-05-28 18:21:15
640
原创 TCP——如何用类封装 socket 实现客户端和服务端通信(代码逐行详解)
private:// 客户端的socket,-1表示未连接或连接已断开;>=0表示有效的socket。// 服务端的IP/域名。// 通讯端口。public:private:放置了三个成员变量public:放了成员函数,析构函数、构造函数ctcpclient连接到服务器:通过connect方法连接到指定 IP 和端口的服务器。发送数据:通过send方法发送数据到服务器。接收数据:通过recv方法从服务器接收数据。关闭连接:通过close方法断开连接。
2024-05-28 16:08:14
1542
原创 网络编程中常用的结构体
sockaddr结构体是为了统一地址结构的表示方法,统一接口函数,但是,操作不方便,所以定义了等价的sockaddr_in结构体,它的大小与sockaddr相同,可以强制转换成sockaddr。// 把字符串格式的IP转换成大端序的IP,转换后的IP赋给sockaddr_in.in_addr.s_addr。// 把字符串格式的IP转换成大端序的IP,转换后的IP将填充到sockaddr_in.in_addr成员。// 把大端序IP转换成字符串格式的IP,用于在服务端程序中解析客户端的IP地址。
2024-05-27 17:11:54
1010
原创 网络编程——大端序小端序
网络字节序确保了不同计算机系统在进行数据交换时,能够正确解释数据的字节顺序。在小端序中,数据的低位字节(Least Significant Byte, LSB)存储在内存的低地址处,而高位字节(Most Significant Byte, MSB)存储在高地址处。网络中的设备可能有不同的字节序(例如,小端序或大端序),为了确保不同系统之间的数据传输一致性,网络协议统一使用大端序作为标准的字节序。在这个例子中,0x1234在主机字节序(小端序)中存储为34 12,而在网络字节序(大端序)中存储为12 34。
2024-05-27 15:47:01
871
原创 Socket 函数详细讲解(Socket编程步骤、socket函数、TCP和UDP的区别)
Socket 是一种通信机制,允许在不同主机之间或同一主机的不同进程之间进行数据交换。使用 socket 编程可以实现 TCP 和 UDP 协议的网络通信。特性TCPUDP连接性面向连接(需要三次握手)无连接可靠性可靠传输,保证顺序和完整性不可靠传输,不保证顺序和完整性流量控制有流量控制和拥塞控制无流量控制和拥塞控制传输速度较慢较快头部开销较大(20字节,不包括可选字段)较小(8字节)适用场景需要高可靠性的应用需要高速度的应用。
2024-05-25 23:06:39
4007
原创 Linux中的文件描述符
文件描述符是Linux系统中用于管理和访问文件和I/O资源的基本工具。它们的分配规则确保了文件描述符的唯一性和有效性,避免了资源冲突和数据竞争。通过合理管理文件描述符,可以提高系统的稳定性和性能。了解文件描述符的分配规则和使用方法,是掌握Linux系统编程的重要基础。
2024-05-25 22:40:57
1424
原创 TCP/UDP的连接机制
面向连接:需要通过三次握手建立连接,四次挥手终止连接。可靠传输:提供数据重传、流量控制和错误校验。适用场景:文件传输、邮件、网页浏览等需要可靠传输的应用。
2024-05-24 18:11:46
463
原创 Linux 网络编程基础——网络模型
物理层:比特流传输,物理设备标准。数据链路层:节点到节点的数据传输,MAC地址寻址。网络层:数据包路由选择和转发,逻辑地址(IP地址)。传输层:端到端的可靠传输,流量控制和错误校验。会话层:管理会话或连接。表示层:数据格式转换、加密解密、数据压缩。应用层:为用户和应用程序提供服务。
2024-05-24 18:03:58
988
原创 Linux 多线程的生产消费者模型
生产者-消费者模型是一种常见的并发编程模式,用于解决多个线程之间共享数据的问题。它的基本思想是将生产数据和消费数据的任务分离到不同的线程中,通过一个共享的缓冲区进行通信和数据传递。生产者线程生产数据并放入缓冲区。使用互斥锁来确保在访问缓冲区时没有其他线程同时访问。使用同步机制(条件变量)来确保在缓冲区满时停止放入数据,直到有空间为止。消费者线程从缓冲区中取出数据并处理。使用互斥锁来确保在访问缓冲区时没有其他线程同时访问。
2024-05-23 13:00:19
755
原创 Linux 信号量
信号量(Semaphore)是操作系统中用于管理并发进程的一种同步机制。它们用于控制对共享资源的访问,以避免竞争条件和数据不一致的问题。信号量主要分为两种类型:计数信号量(Counting Semaphore)和二进制信号量(Binary Semaphore),又称互斥量(Mutex)。
2024-05-23 12:28:09
1978
原创 Linux 共享内存
多线程共享进程的地址空间,如果多个线程需要访问同一块内存,用全局变量就可以了。在多进程中,每个进程的地址空间是独立的,不共享的,,不能用全局变量,只能用共享内存。共享内存(Shared Memory),是多个进程之间共享和传递数据最高效的方式。进程可以,如果某个进程了共享内存中的数据,。共享内存没有提供锁机制,也就是说,在某一个进程对共享内存进行读/写的时候,不会阻止其它进程对它的读/写。如果要对共享内存的 读/写 加锁,可以使用信号量。Linux中提供了一组函数用于操作共享内存。
2024-05-22 15:33:29
779
原创 Linux的信号
信号(signal)是软件中断,是进程之间相互传递消息的一种方法,用于通知进程发生了事件,但是,不能给进程传递任何数据。如果向服务程序发送一个信号,服务程序收到信号后,调用一个函数,在函数中编写善后的代码,程序就可以有计划的退出。服务程序运行在后台,如果想让中止它,杀掉不是个好办法,因为进程被杀的时候,是突然死亡,没有安排善后工作。1)对该信号的处理采用系统的默认操作,大部分的信号的默认操作是终止进程。2)一个自定义的处理信号的函数,函数的形参是信号的编号。参数signum表示信号的编号(信号的值)。
2024-05-21 16:51:13
1018
原创 Linux 时间操作
time_t 是一个长整数,不符合人类的使用习惯,需要转换成tm结构体,tm结构体在<time.h>中声明,如下: 2022-10-01 15:30:25 Oct 1,2022 15:30:25。time_t用于表示时间类型,它是一个long类型的别名,在<time.h>文件中定义,表示从1970年1月1日0时0分0秒到现在的秒数。mktime()函数的功能与localtime()函数相反,用于把tm结构体时间转换为time_t时间。包含头文件:<time.h>
2024-05-21 14:12:14
948
原创 Linux makefile
在实际开发中,项目的源代码文件比较多,按类型、功能、模块分别存放在不同的目录和文件中,哪些文件需要先编译,那些文件后编译,那些文件需要重新编译,还有更多更复杂的操作。make是一个强大的实用工具,用于管理项目的编译和链接。make需要一个编译规则文件makefile,可实现自动化编译。
2024-05-20 12:41:47
388
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人