- 博客(33)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 基于QT的C++中小项目软件开发架构源码
基于QT信号槽机制实现类之间的交互调用通信,适用于使用不同枚举作为消息交互的类型场景,支持附带任意参数,代码使用方式参考前一篇文章。
2024-09-23 17:41:29
1080
原创 QGraphicsItem设置了QGraphicsItem::ItemIsMovable和QGraphicsItem::ItemIsSelectable仍然无法拖动
Qt图形项如果隐藏然后再显示出来,则会出现拖动不再生效的问题,如下代码。
2024-02-23 11:41:14
419
原创 Windows核心编程—第17章—内存映射文件
当exe文件被映射到进程的地址空间中之后,系统将访问exe文件的一个部分,该部分列出了包含exe文件中的代码要调用的函数的dll文件。方法1:一个文件,一个缓存,从文件一次性读到缓存,逆序后写回去,缺点1:无法处理大文件,缺点2:如果写回时过程异常,文件被破坏。方法4:一个文件,零缓存,使用内存映射,无需分配/释放内存和加载/写回文件数据到内存:缺点:过程异常,文件被破坏。方法3:一个文件,一个缓存,读一定大小文件内容到缓存,逆序后写回去 ,缺点:如果写回时过程异常,文件被破坏。目的:逆序一个文件的内容。
2024-01-26 14:20:11
904
原创 Windows核心编程—第15章—在应用程序中使用虚拟内存
回收使用VirtualFree,释放保留区域,指定MEM_RELEASE,回收提交的物理存储,使用MEM_DECOMMIT,回收也会按页分配粒度进行回收。Windows提供了3种进行内存管理的方法。分配的空间会自动对齐到页面大小,一般4KB。VirtualAlloc用于分配虚拟内存。提交:给分配的区域分配实际的物理空间。虚拟内存使用,malloc的底层函数。保留:在地址空间分配一块区域。
2024-01-22 14:41:08
203
原创 Windows核心编程—第13章—Windows的内存结构
进程彼此有私有的虚拟地址空间,私有表示进程只能访问自己的地址空间,不能访问其他进程的虚拟空间地址都是一样的,实际映射到的物理地址不同VirtualAlloc用于分配地址空间和分配物理存储,VitualFree用于释放页是管理内存时的操作粒度单元,一般为4KB磁盘上的文件可供进程作为虚拟内存,称为页文件当进程访问地址空间中的一个数据块时,有两者情况,一种是数据已经在内存中,则直接将虚拟内存地址映射到内存的物理地址,然后执行访问。一种是数据还在页文件中,操作系统就会在内存中找寻空页,如果找不到就会释
2024-01-22 13:55:12
131
原创 编译驱动程序报错BufferOverflowFastFailK.lib(loadcfg.obj) : error LNK2001: __guard_eh_cont_count
网上没有找到该报错的解决方法,重新安装WDK后解决,记录一下参照此博文重新安装VS对应的WDK对应版本,我的是VS2019+适用于 Windows 10 版本 1903 的 WDK,WDK下载地址。
2022-05-30 17:30:57
802
原创 windows读写文件立即写入磁盘
在刚记录完写数据到文件后,执行强制关机操作,重启后会出现数据丢失情况。考虑是缓存造成的,调用了QT的file.flush、close,win32的FlushFileBuffers均仍会出现问题。网上一通搜集找到了方案,使用windows的CreateFile时可以指定FILE_FLAG_WRITE_THROUGH标志,能够让数据无延迟写入磁盘。参考资料文件是否真的写入了磁盘?CreateFileA函数FlushFileBuffers函数使用FILE_FLAG_NO_BUFFERING
2022-05-25 15:23:12
1017
原创 禁用windows热键Ctrl+Alt+Delete
在网上搜了一通怎么用代码实现,只找到屏蔽常规的win键、alt+tab之类的hook方式,要禁用Ctrl+Alt+Del好像没有现成的代码。在搜资料的过程中找到一篇评论中,有人提议到Microsoft Answer论坛咨询,去该论坛上搜了一下屏蔽该组合,还真找到了。禁止ctrl+alt+del快捷键reg add "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout" /v "Scancode Map" /t REG_BINARY /d 00000
2022-05-16 15:20:06
2416
原创 C++实现固定大小内存池,支持多线程之间传递,防止运行时分配内存花费时间,优化性能
FixSizeMemoryPool.h#pragma once#include "BlockingQueue.h" //https://blog.youkuaiyun.com/weixin_42210846/article/details/124712457?spm=1001.2014.3001.5502class CFixSizeMemoryPool{public: CFixSizeMemoryPool(int num, int size); ~CFixSizeMemoryPool(); std:
2022-05-12 17:54:42
422
原创 C++实现阻塞队列
#ifndef BLCOKING_QUEUE_H#define BLCOKING_QUEUE_H#include <memory>#include <list>#include <mutex>#include <condition_variable>template<typename T>class BlockingQueue {public: BlockingQueue() = default; BlockingQueue
2022-05-11 16:05:19
1043
4
原创 Lru算法C++实现
#pragma once#include <unordered_map>#include <list>#include <utility>template<typename T = int>class Lru{ using value_type = typename std::list<std::pair<int, T>>::iterator;public: void printList(); void inse
2022-05-11 15:50:29
541
原创 多线程、机械硬盘、固态硬盘、内存映射相关资料
SSD和机械硬盘区别机械硬盘是机械结构,包含磁盘和磁头等,读写数据时,包含磁头寻道和盘面转动时间SSD是一种不同的结构,内部是浮栅晶体管,可以没有寻道这些操作,因此数据比机械硬盘快编程方面和磁盘的关系机械硬盘一般只有一个磁头,多线程写同一个文件是没用的,不可能多个扇区同时写入数据,反而会因为磁头不断切换导致写入速率下降,单线程顺序写入是最快的SSD在不同数据大小时,有不同的性能,有4K文件、4K文件-64线程、顺序大文件时的指标,可以使用磁盘性能测试工具测试,读写顺序大文件时好像内部就支持并行,不
2022-02-14 16:48:03
1009
原创 QLineEdit设置占位符颜色
// 设置字体颜色 QPalette palette; palette.setColor(QPalette::Text, Qt::white); ui.m_lineEdit->setPalette(palette); // 设置占位符颜色 QPalette palette; palette.setColor(QPalette::PlaceholderText, Qt::white); ui.m_lineEdit->setPalette(palette);...
2021-12-10 15:57:02
1346
原创 VS+QT报错error LNK2001: 无法解析的外部符号 public: virtual void * __cdecl CFileManager::qt_metacast(char const
描述:在VS项目头文件一开始没有添加QT信号槽机制,后续需要添加时继承QObject并声明Q_OBJECT宏,生成了moc文件仍然出现报错error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindow::metaObject(void)const “ error LNK2001: 无法解析的外部符号 "public: virtual void * __cdecl MainWindow::qt_
2021-11-15 14:11:04
6220
6
原创 QSS常用样式
最近在使用QT样式表为公司的产品设计UI,期间都是在网上搜集和查询QT手册Qt Style Sheets Reference章节,在此记录一下一些常用的控件属性背景image : url(:/loginView/Resource/png/login_logo.png); # 用于设置背景图片,路径为资源文件路径background-color : rgba(255, 255, 255, 0.1);background-color : transparent渐近方式background-colo
2021-10-28 17:47:08
274
原创 系统找不到指定的文件。NMAKE : fatal error U1077: “D:\CLion\bin\cmake\win\bin\cmake.exe”: 返回代码“0xffffffff”
问题描述:Clion CMake文件加载报错,错误信息描述主要如下,网上搜了半天,加了VS的一些环境变量,然后又按照错误提示信息添加了clion的cmake.exe的环境变量,均无效。Determining if the C compiler works failed with the following output:MT: command "CMAKE_MT-NOTFOUND /nologo /manifest CMakeFiles\cmTC_b3659.dir/intermediate.mani
2021-10-14 16:30:55
13064
1
原创 protobuf静态库隐藏符号的坑
概要:生成protobuf隐藏符号的静态库,并用该静态库生成so,再通过两者使用protobuf包含string字段的对象时,出现各种异常。详细描述:protobuf隐藏符号后生成静态库,使用该静态库再生成so(例如protoc生成的*.pb.cc文件)时,protobuf/sr/google/protobuf/fixmessage_lite.h文件中的fixed_address_empty_string对象会在该so中生成一个local对象。当同时使用生成的so和隐藏符号的静态库时(如main.cpp
2021-03-28 21:18:03
1138
4
原创 C++笔试题 游戏背包管理系统
请使用C++标准库中合理的数据结构设计一个游戏中的背包管理系统,可以存储的道具类型有游戏中的武器,装备,衣服等,还有一些带数量的金币,药水等的,设计使用一些增加,删除,修改物品的编程 API ,另外玩家身上有 8 个格子可以作为随身物品,作为可快速操作的道具。这里做一个假设,玩家需要使用整个背包中的道具,每次使用都必须先拿到身上后再使用,类似一个二级缓存系统。具体业务操作包括: 1 .从背包将道具到身上,如果满,淘汰最久没使用、最少使用的道具来替换; 2 .拾取物品,优先放到身上,如果没有空位,放背包; 3
2020-12-27 12:37:51
889
请问如何阻止按下电源键关机时出现的结束程序弹窗
2022-05-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人