- 博客(27)
- 收藏
- 关注
原创 LINUX下设置分离状态(Detached State)和未设置分离状态的主要区别在于线程资源的管理方式和线程的生命周期。以下是两种状态的对比:
设置分离状态简化了线程管理,但丢失了对线程返回值的控制。具体选择取决于应用场景需求。
2025-01-21 11:42:12
943
原创 Linux下进程间通信方式 进程间传递文件描述符——sockpair()函数
写入的一方可以通过msghdr结构体来进行文件描述符的发送,msghdr结构体其中有两个成员分别是iovec* iov和cmsghdr* cmsg,第一个成员无所谓,可以填充任意数据,就是要按照格式来填写,我们主要通过第二个成员来进行传递文件描述符,当结构体准备好了后就可以通过sendmsg函数发送。通过socketpair函数会生成两个类似于套接字的文件描述符,进程可以通过这两个文件描述符进行通信,接受的一方是一样的,就是反着来进行解析就好了。
2025-01-17 23:00:55
303
原创 new后delete,多次调用new的地址相同
或其他方式),分配器可能会重用相同的内存地址。这是因为现代分配器会尝试减少内存碎片和提高分配效率。操作符分配内存时,使用的是 C++ 内存分配器。如果之前分配的内存被释放(通过。
2024-12-05 16:45:03
199
原创 关于远控项目中获取屏幕内容GDI 图片颜色问题修复笔记
HALFTONE 模式提供更平滑的图像缩放效果,能有效减少因拉伸导致的颜色异常。后,如果未释放设备上下文,可能出现绘图异常或资源泄漏。绘制图片时,颜色可能异常失真。获取的设备上下文需要通过。释放,确保资源的正确管理。
2024-11-19 12:54:44
202
原创 远程控制项目中遇到的问题 关于_findfirst返回值类型
hfind的类型是int会报错因为我项目是64位,句柄一般是8位,而int是4位这就会导致我的句柄有问题,把hfind返回值类型改成。的大小与系统位数匹配:在 32 位系统中是 4 字节,在 64 位系统中是 8 字节。可以确保句柄在 64 位系统中不会被截断。
2024-11-09 14:37:40
222
原创 远程控制项目第四天 功能实现
获取屏幕内容:通过GetDC获取设备上下文,使用BitBlt将屏幕内容复制到CImage对象。流操作:使用创建全局内存块,使用将内存块和流绑定。使用保存数据到流对象。内存操作:使用GlobalLock锁定内存,获取数据后调用解锁内存。注意流指针位置,要确保数据从流的起始位置读取。资源释放:确保按顺序释放资源:先释放流对象,再释放内存块,最后释放设备上下文。这样就能确保屏幕截图数据能够被正确保存、读取和发送,同时避免资源泄露。
2024-11-07 19:02:33
430
原创 远程控制项目第三天 功能实现
通过_chdrive();函数用于改变当前工作驱动器,0=A,1=B,可以通过函数返回值来判断当前操作系统有哪些工作驱动器,筛选出当前操作系统的工作驱动器后,打包发给客户端,通过_chdir()切换到指定目录后,调用_findfirst()查找文件,获取文件信息,然后调用_findnext(),通过返回值确定还有没有下一个文件。
2024-11-05 16:55:54
200
原创 远程控制项目第二天
所有有关网络编程的项目,最基础的框架就是那些固定的流程,Socket,bind,listen,accept,然后我需要的就是在此基础上进行完善和优化,然后再Windows网络编程中,在socket前首先需要初始化 Winsock 库。
2024-11-03 23:39:20
345
原创 MYSQL 数据恢复
命令用于从客户端的本地文件中加载数据到 MySQL 数据库。出于安全考虑,MySQL 默认禁用了这个功能,以防止未经授权的文件访问或文件上传。因此,必须在和都明确启用功能。
2024-10-21 13:05:55
270
原创 Qt-拖放事件与拖放操作
拖放( drag and drop )操作是GUI应用程序中经常使用的一种操作,;例如将视频文件拖放到一个视频播放软件上,软件就可以播放此文件。本节学习拖放操作的基本原理,然后设置一个程序,程序可能接受从Windows资源管理器拖动来的PNG文件,并能显示图片。
2024-07-17 23:59:30
568
原创 Qt-事件与信号
事件和信号的区别在于,事件通常是由窗口系统或应用程序产生的,信号则是Qt定义或用户自定义的。Qt为界面组件定义的信号往往通常是对事件的封装,如QPushButton的clicked()信号可以看做对QEvent::MouseButtonRelease类事件的封装。在使用界面组件作为交互操作编程的时候,我们通常选择合适的信号,为该信号编写槽函数。但是Qt的界面组件只将少数事件进行封装成了信号,对于某些事件可能缺少对应的信号,例如QLabel的信号中就没有与双击鼠标对应的信号。
2024-07-15 23:43:48
1577
原创 Qt-Qt的事件系统
窗口系统是由事件驱动的,Qt为事件处理编程提供了完善的支持,QWidget类是所有界面组件类的基类,QWidget类定义了大量与事件处理相关的数据类型和接口函数,本节学习Qt的事件系统的工作原理,包括事件的产生和派发,事件类型的事件处理等内容。
2024-07-13 21:34:17
950
原创 MySQL-SQL通用语法和分类
3. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。单行注释:--注释内容或#注释内容(MySQL特有)2. SQL语句可以使用空格/缩进来增强语句的可读性。1. SQL语句可以单行或多行书写,以分号结尾。删除指定表,并查询创建该表(有点类似于初始化表)|多行注释:/* 注释内容 */注意:[.....]为可选参数,最后一个字段后面没有逗号。查询当前数据库中所有表。查询指定表的建表语句。修改字段名和字段类型。
2024-07-11 23:53:29
443
原创 Qt-QFileSystemModel和TreeView
QFileSystemModel为本机的文件系统提供了一个模型,结合使用QFileSystemModel和QTreeView,可以以目录树的形式显示本机文件系统,如同Windows的资源管理器一样,使用QFileSystemModel提供的接口函数,我们可以创建目录,删除目录,重命名目录,可以获取文件名称,目录名称,,文件大小等,还可以获取文件的详细信息。
2024-07-10 14:53:39
1074
原创 Qt-自定义代理
若要替换默认代理组件,就需要为QTableView组件的某列或者某个单元格设置自定义代理,自定义代理需要从QStyledItemDelegate类继承,创建自定义代理类的实例后,再将其设置为整个视图组件或者视图组件的某行某列的代理,以替代默认代理的功能。QAbstractItemView 类定义了设置自定义代理类的3个函数,函数定义如下:其中,delegate是创建的自定义代理类的实例对象。
2024-07-10 10:45:01
1079
原创 Qt-QStandardItemModel和QTableView
QStandardItemModel 是基于项的模型类,每个项是一个 QStandardItem 对象可以存储各种数据。QStandardItemModel 通常与QTableView 组成模型/视图结构,实现二维数据的管理,本节设计一个示例项目QStandardItemModel_QTableView主要涉及如下三个类的使用方法。QStandardItemModel:基于项的模型类,他维护了一个二维的项数组,每一个项是一个QStandardItem对象,用于存储文字,字体,对齐方式等各种角色的数据。
2024-07-09 23:57:45
1687
原创 QStringListModel和QListView
QStringListModel是处理字符串列表的模型类,其实例可以作为QListView组件的数据模型,结合使用这两个类,就可以在界面上显示或者编辑字符串列表。QStringListModel内部存储了一个字符串列表,这个字符串列表的内容自动显示在关联的QListView组件上,在QListView组件上双击某一行时,可以通过默认的代理组件 ( QLineEdit 组件) 修改这一行字符串内容,修改后的这一行字符串自动保存到数据模型的字符串列表里。
2024-07-09 10:41:03
407
原创 Qt-模型/视图结构
QAbstractItemModel是所有模型类的直接或间接父类,它定义了模型的通用接口函数,同时它也是抽象类,不能直接创建对象实例,各个具体的模型类实现了这些接口函数,以下是常用的接口函数1.行数和列数rowCount()返回行数,columnCount()返回列数,函数原型如下。
2024-07-08 17:35:33
1373
原创 Qt-QTableWidget
QTableWidget是一种Item Widget组件,它以表格的形式显示和管理数据,我们称之为表格组件。本节通过一个示例项目QTableWidget学习了QTableWidget的使用方法,示例运行时如图所示。
2024-07-03 17:23:21
213
原创 Qt-QTreeWidegt
QTreeWidget 是一种Item Widget 组件。QTreeWidget组件被称为树形组件,它的项(item)被称为节点,一个树形组件内的所有节点组成的结构称为目录树。树形组件适合显示具有层级结构的数据,如Windows 资源管理器中显示的文件系统就是一种典型的的层级结构。
2024-06-28 19:17:59
1250
原创 Qt-QToolButton和QListWidget
Qt中用于处理项数据(Item data)的组件有两类:一类是Item Views组件,包括了QLisyView、QTreeView、QTableView 等;另一类是Item Widget 组件,包括了QListWidget、QTreeWidegt、QTableWidget 等,这些类的继承关系如图1-1所示。
2024-06-25 11:56:03
985
原创 Qt-QMain Window和QAction
QMain Window 是主窗口类,具有菜单栏、工具栏、状态栏等主窗口常见的界面元素。要设计主窗口上的菜单栏、工具栏、、按钮的下拉菜单、组件的快捷菜单等,需要用到QAction类。QAction对象就是实现某个功能的 “动作”,我们称其为Action。在UI可视化设计时,我们可以设计很多Action,然后用Action创建菜单选项和工具按钮。
2024-06-24 10:58:56
758
原创 学习算法第二天——冒泡排序
今天学习到了冒泡排序,一下是本人理解,一个无序i nt类型 数组a[ ] ,数组长度为len,升序排序 ,从数组最小下标n开始遍历,比较大小,如果n比n+1下标元素大,就交换位置,如果n比n+1小就不交换位置,继续遍历比较n+1与n+2,遍历完整个数组后最后一个元素就是数组中最大的元素,然后重新开始遍历,但是遍历次数需要减一,当全部遍历完后,数组排序成功。
2024-06-06 23:00:45
258
原创 学习算法第一天——选择排序
选择排序是我接触的第一个排序算法,以下是我的理解,给定一个无序容器vector a ,第一步,遍历容器内无序区间的元素,找到一个最小值(最大值),把它存放在排序序列的起始位置。第二步,继续遍历剩下的无序区间,再次找到最小值(最大值),把它放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。
2024-06-05 23:05:50
274
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人