- 博客(47)
- 资源 (7)
- 收藏
- 关注
原创 什么是Hook技术?
简单来说,它就像在程序的某个关键路径上设置一个“钩子”,当程序执行到那个点时,钩子会先触发,让开发者可以插入自己的代码,然后再决定是否继续原来的流程。Hook技术的核心是改变程序的执行流程。它通过修改函数入口、替换调用地址或使用事件监听等方式,让程序在执行到目标函数时,先跳转到开发者提供的自定义函数(钩子函数)中执行。将目标函数的前几个字节(或整段)修改为一个跳转指令(JMP),跳转到自己的函数。在可执行文件的导入地址表(IAT)或导出地址表(EAT)中,将目标函数的指针替换为自己的函数地址。
2026-04-24 10:40:43
314
原创 Qt之智能指针使用建议
场景推荐方案原因管理非QObject对象零开销、标准、功能强大多个所有者共享资源标准、线程安全QObject派生类(有父子关系)直接使用new+ 父对象Qt对象树自动管理Qt容器存储指针与Qt容器值语义兼容跨线程传递QObject线程安全的引用计数自定义删除器(如数组)标准库完美支持核心原则现代C++项目应优先使用标准库,除非遇到必须使用Qt特殊机制的场景Qt的父子机制(QObject树)比智能指针更适合管理QObject派生类保持一致性。
2026-03-27 17:46:38
280
原创 Qt之slots和Q_SLOTS的区别
它被引入是为了解决关键字冲突问题,尤其是在与第三方库(如boost::signals)或特定编码标准(如微软的slots是C++/CLI中的关键字)混用时,避免名称冲突。3.遇到编译错误:如果你在使用 boost::signals 或某些特定C++环境中,编译器报错说 slots 有歧义,只需在代码中将 slots 全局替换为 Q_SLOTS 即可解决问题。2.编写公共库/头文件:如果你不确定使用方是否会引入冲突的关键字,可以使用 Q_SLOTS 和 Q_SIGNALS 来提高代码的健壮性。
2026-03-20 17:55:31
218
原创 设备自毁需求规定
设备自毁需求的核心规定,是在安全可控、不可逆、合规前提下,实现信息彻底销毁、核心功能失效、防止技术/数据泄露,并满足触发机制、销毁效果、流程管理、安全与环境四大类强制要求。以下按通用框架与典型领域展开说明。
2026-03-11 14:36:15
381
原创 QML之采用ShaderEffect自定义模糊
本方案可配置模糊强度 + 性能优化;增加采样数控制、边缘防失真,同时保留低内存占用的优势。使用过程中可自行调整参数,达到预定的效果。
2026-02-28 09:57:01
148
原创 QML之GassianBlur和FastBlur的区别和使用场景
了解 QML 中高斯模糊(GaussianBlur)和快速模糊(FastBlur)这两种滤镜的核心区别,以及各自适合的使用场景,这是在QML界面开发中选择模糊效果的关键问题。对快速模糊做 “多次叠加”:用低半径的FastBlur叠加2-3次,模拟高斯模糊的效果,性能仍优于高斯模糊;核心选择依据:优先看 “效果要求” 和 “性能约束”—— 效果优先选高斯模糊,性能优先选快速模糊;核心特点:计算快、性能好,模糊效果是高斯模糊的 “简化版”,适合对性能敏感的场景。
2026-02-11 10:53:51
883
原创 QML之解决GaussianBlur部分区域出现锯齿
性能平衡:samples值越高、sourceSize倍数越大,渲染越平滑,但会增加GPU开销,建议根据实际场景调整(比如移动端建议samples≤32,sourceSize≤2倍)。sourceSize:强制滤镜使用更高分辨率的纹理渲染,是解决锯齿的核心手段,建议设置为目标元素的 2 倍尺寸。提升采样精度:增加samples数值(建议 16-32),设置sourceSize为目标元素的 2 倍分辨率;samples:控制模糊的采样点数,数值越大,模糊边缘越平滑,锯齿越少(但会轻微增加性能开销)。
2026-02-11 10:33:48
382
原创 Linux之setcap用法
setcap 是一个 Linux 命令,用于设置文件的 POSIX 能力。这些能力允许某些二进制文件在没有 root 权限的情况下执行特定操作,以提高系统安全性。该命令通常用于提供更少的特权访问,而不是将权限完全授予 root 用户。
2025-10-14 15:09:15
894
原创 linux 比较常用的监控进程内存变化的工具
选择哪个工具取决于你的具体需求,如果需要实时监控单个进程的内存变化,htop 或 top 通常是最方便的选择;特点:显示进程的 RES(实际物理内存)、VIRT(虚拟内存)、SHR(共享内存)等信息。使用:pmap [进程ID] 或 pmap -x [进程ID](更详细信息)特点:来自 sysstat 包,可输出进程的内存使用率、缺页等详细信息。特点:支持鼠标操作,可横向滚动查看完整命令,内存显示更直观。功能:实时动态查看系统进程状态,包括内存使用情况。功能:静态查看进程状态,可配合参数筛选内存信息。
2025-09-26 14:30:37
361
原创 QML学习之加载gif
在QML中直接加载GIF图片是不支持的,因为QML的Image元素不支持动画GIF。不过,你可以使用AnimatedImage元素来播放GIF。AnimatedImage是Qt QML模块的一部分,可以加载和播放GIF动画。替换"path_to_your_animated_gif.gif"为你的GIF文件的实际路径。这样,AnimatedImage就会自动加载并播放GIF动画。
2024-04-18 10:32:29
881
原创 QML学习之Text
font.weight:字体重量,取值为Font.Thin、Font.Light、Font.ExtraLight、Font.Normal(默认)、Font.Medium、Font.DemiBold、Font.Bold、Font.ExtraBold 和 Font.Black。font.pixelSize:字号大小,取值为整数(单位为像素,依赖于设备)font.underline:是否有下划线,取值为true或false。font.family:字体族,取值为字体族的名字(区分大小写)
2024-03-01 13:56:33
609
原创 Canvas清除画布
clearRect() 函数指定起始点的x, y 位置以及宽度和高度来清除画布。使用白色背景色简单地填充整个画布,可以清除当前内容。当画布的宽或高被重置时,当前画布内容就会被移除。
2024-02-29 11:34:52
1822
原创 JS清空数组方法
以上三种方法均可以将数组清空。但是第一种方法会修改原始数组,而第二、三种方法会创建一个新的空数组并将其赋值给原始数组变量。如果想在函数中清空数组,建议使用第一种方法,因为它不会创建新的数组对象,这有助于避免内存泄漏问题。
2024-02-29 11:18:29
1396
原创 linux环境使用notepadqq教程
众所周知,windows环境文本编辑器一般使用notepad++,而linux环境没有相应的安装包,导致不能直接安装。经验证,可采用方法达到在linux环境使用notepad的效果:1.2 卸载方法二 源码安装2.1 获取源码(1)方法一:可在https://github.com/notepadqq/notepadqq下载;(2)方法二:2.2 编译源码 如果在编译阶段出现错误,检查是否缺少必要的库:(1)Ubantu(2)CentOS......
2022-06-11 10:20:31
1255
原创 Linux之sqlite3使用
由于sqlite3本身的特点与优势,使得其在Linux环境中应用广泛。1 安装sqlite31.1 安装sqlite3 在Linux环境中安装sqlite3需执行命令:1.2 创建或进入sqlite32 使用sqlite3 sqlite3使用中,主要的语句包括数据库命令和数据库语句;数据库命令是以【.】开始的,数据库语句是以【;】结束的。2.1 数据库命令2.1.1 查看表清单【.tables】2.1.2 显示表结构【sc...
2022-03-26 10:29:24
2687
原创 Qt之qml内存泄漏解决方案
1 qml或js内存方法的分析 qml和js的内存分析一般使用gammray或者qmlprofiler进行分析,但是目前这两个工具运行起来都有各自的局限性。1.1 qml和js持续的内存消耗 qml和js在Qt5中的内存管理是非常复杂的,且qml和js的原则是不关心内存的使用,并且qml和js本身是一个内存怪兽而且管理的方式和C++也是截然不同。 qml和js在创建和销毁component的方式与js的内存管理一致,都是通过gc进行管理,而Qt针对这块的内存也是lazy的方式进...
2022-03-05 11:12:03
5113
1
原创 Git之filemode的变化
在执行git status的时候,发现有的文件没有做任何修改,也在状态列表中,查看区别是: old mode 100644 new mode 100755(1)产生原因 filemode的变化,文件执行chmod后其文件某些位是改变了,如果严格的比较原文件和chmod后的文件,两者是有区别的,但是源代码通常只关心文本内容,因此chmod产生的变化应该忽略。(2)解决方法...
2021-12-11 14:05:05
1440
原创 linux环境QtCreator不能输入中文的解决方法
此问题的前提是linux环境已经安装了中文输入法,如搜狗输入法。 按如下方法可解决linux环境QtCreator不能输入中文的问题:(1)安装fcitx-frontend-qt5 sudo apt-get install fcitx-frontend-qt5(2)复制fcitx-frontend-qt5至QtCreator安装目录 通常安装的fci...
2021-12-03 10:44:16
3191
1
原创 C++之解决、捕捉第三库或SDK接口的异常退出
在开发中,经常会使用第三方库或SDK接口,以达到为我所用的效果;但是无法预估接口的具体细节,经常抛出异常、退出(例如abort)#include<setjmp.h>#include<signal.h>jmp_buf env;void signal_hander_fun(int signal_num){ XMLLogger::getInstance()->writeLogUrl("OES_SDK_ERROR", QStringList() &l...
2021-11-02 13:42:34
1162
原创 Qt工程编译出现堆内存不足
在Qt编译pro工程,会出现卡顿很长时间或报出“编译器的堆内存不足”的错误;不要紧张,只需在pro文件中添加 CONFIG+=resources_big即可。 出现这个问题Qt工程中添加的资源文件过多、过大,导致编译的堆内存溢出。...
2021-09-26 13:31:27
1666
1
原创 C++之Qt组合键Insert+Space实现
C++之Qt组合键Insert+Space实现 在Qt C++编程中,使用Insert+Space插入全角空格,经常会出现被输入法拦截的情况,以下代码可解决这个问题,大家可以借鉴一下。bool CFindReplaceDlg::eventFilter(QObject *obj, QEvent * event){ static bool bPressInsert(false)...
2021-03-12 09:42:41
828
2
原创 C++之string位置、字节数转换
C++之string位置、字节数转换1.通过文本和距离文本起始处位置获取距离起始处字节数unsigned int GetTextIndex(const string& strText, unsigned int nPos){ unsigned int nResult = 0; while(nPos > 0) { if (strText[nResult] ...
2020-12-28 15:58:20
426
原创 C++之list删除元素
C++之list删除元素 对容器list存储的元素执行删除操作的时候,一般都是使用其成员函数实现的:(1)clear():删除list容器中的所有元素(2)remove(value):删除容器中所有为value的元素(3)remove_if():删除容器中满足条件的元素(4)unique():删除容器中相邻的重复元素,只留下一个(5)erase():删除 list...
2020-12-25 13:43:49
16113
原创 C++之string长度
C++之string长度(1)采用string的成员方法length()获取字符串长度(2)采用string的成员方法size()获取字符串长度(3)用strlen获取字符串长度(4)函数实现获取字符串长度的功能int GetStringWords( string strWord ){ int nWor...
2020-12-18 15:21:05
10733
原创 Windows环境之EXE无法正常启动
Windows环境之EXE无法正常启动 在Windows环境中,启动EXE有时候会发生无法正常启动的问题(见下图),可以从以下几个方面进行排查问题:一.系统缺少相应的Direct X 安装Direct X修复工具,使用其完成检测、修复,重启机器查看是否已经正常启动。二.SFC...
2020-11-26 16:17:06
2458
原创 Windows环境Jenkins自动化打包部署
Windows环境下,一般使用Jenkins部署自动化打包。1.安装包2. 安装包说明(1)InstallShield 2010 Premier setup.exeEXE制作软件InstallShield安装包(2)InstallShield 2010 Premier Patch.exeInstallShield软件授权解密工具(3)ISWIBuild.dll.zip解决命令行调用InstallShield打包,提示授权过期的问题,替换掉相应的库即可解决问题(4...
2020-11-06 14:23:03
1072
3
原创 Android系统中APP安装到手机后的文件分析
一. Android系统APP安装格式1.1 CAB格式 直接将文件copy到手机里,都可以在手机上执行该CAB文件即可安装。1.2 EXE格式 EXE格式的程序可分为手机上直接运行(即绿色软件的形式)和连接电脑同步安装2种形式。1.3 免安装软件(绿色软件) 将文件直接拷贝到手机里(手机内存、Storage Card都可以)即可运行。这种软件...
2020-02-03 16:28:02
5863
原创 C++管理员权限提权
管理员权限提权功能//***************************************************// 函数名称: EnableDebugPrivilege...
2018-11-05 16:19:31
7237
1
原创 C#比较两文件内容是否完全一样
C#比较两文件内容是否完全一样个人归纳出比较两个文件内容是否完全一样的方法,详情如下:一.逐一比较字节数private bool CompareFile(string firstFile, string second...
2018-07-18 11:09:11
6150
原创 Qt下TCP通信流程
Qt下TCP通信流程描述Qt下Tcp通信的整个流程 :服务器端: 1. 创建用于监听的套接字 2. 给套接字设置监听 3. 如果有连接到来, 监听的套接字会发出信号newConnected 4. 接收连接, 通过nextPendingConnection()函数, 返回一个QTcpSocket类型的套接字对象(用于通信) 5. 使用用于通信的套接字对象通信 1>. 发送数据: write 2...
2018-07-16 11:06:35
2682
原创 C# ARGB颜色值转化为十六进制字符串
C# ARGB颜色值转化为十六进制字符串 C#中,没有找到直接将ARGB转化为字符串的方法,其往往没有A值的转化;为了得到目标值,用以下方法可以实现: 本方法已测,可圈可点;简单练到极致就是绝招!...
2018-05-17 16:02:11
1974
原创 C#动态遍历加载继承同一接口dll
C#动态遍历加载继承同一接口dll C#动态加载目录下符合条件的dll,且dll中可有多个类、多个符合条件的类且继承同一接口;然后可使用其中的方法。 亲测可行,如果仍有怀疑,不妨去试试哦!
2018-05-10 14:19:33
773
原创 Qt文件备份方法
Qt文件备份方法 在对文件操作中,有时候需要将文件原数据进行备份,以便恢复原数据或进行其他的操作,下面几种方法可完成此目标,亲测可用:一.Qt自带的QFile::copy() 二.Windows自带的CopyFile() 三.先读源文件再写到目标文件
2018-03-22 13:38:33
2471
原创 研发技术管理课题总结
研发技术管理课题总结 近期单位组织了研发中心各成员对技术管理各课题的讨论,为了加深印象,特将各课题的讨论点总结如下:一.如何部门的提高工作效率?1.1 态度端正;1.2 各研发人员的技术提升;1.3 分工明确;1.4 细分工作内容、目标;1.5 资源的积累、整理(包括技术文档、SVN记录);1.6 合理安排时间;1.7 理清轻重缓急;1.8 制定工作计划;1.9 加强流程建设;1.10 提...
2018-03-21 09:58:38
1910
原创 CentOS6.5 32bit安装Oracle、ArcSde、Apache等配置说明
CentOS6.5 32bit安装Oracle、ArcSde、Apache等配置说明一.安装准备1.1 安装环境类型版本备注本机OSWindows10 专业版 64bit VMware WorkstationVMware Workstation 12 Pro
2018-02-01 14:53:34
430
原创 Qt读写.ini配置文件
Qt读写.ini配置文件 ini文件格式是某些平台或软件上的配置文件的非正式标准,以节(section)和键(key)构成,常用于微软Windows操作系统中。ini文件是Initialization File的缩写,即初始化文件。除了Windows,现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用
2018-01-11 10:52:42
492
Windows软件制作工具InstallShield及授权
2020-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅