- 博客(158)
- 资源 (11)
- 收藏
- 关注
原创 查看系统架构时arm还是非arm
root@# uname -aLinux hollysys-D2000 4.4.131-20200710yhhls.kylin.desktop-generic #kylin SMP Wed Mar 23 10:24:33 CST 2022 aarch64 aarch64 aarch64 GNU/Linux
2024-05-21 10:55:18 61
原创 vs2010 qtadmin配置qt路径时提示错误“This Qt version uses an unsupported makefile generator ”
This Qt version uses an unsupported makefile generator
2024-05-08 20:36:53 157
原创 批处理脚本示例,用于删除特定目录下所有以 .pdb、.ilk、.lib、.map、.exp 结尾的文件:
请注意,使用此脚本时,确保目标目录的路径正确,并且具有足够的访问权限。另外,删除操作是不可逆的,请谨慎使用此脚本,并在运行之前确认目标目录和文件类型的设置是正确的。以下是一个批处理脚本示例,用于删除特定目录下所有以。:关闭命令回显,使脚本在运行时不会显示命令本身。命令用于删除其他类型的文件,只需将通配符。:这行命令删除目标目录下所有以。表示静默删除,不进行确认提示。替换为实际的目标目录路径。替换为实际的目标目录路径。:设置目标目录的路径,将。表示递归地搜索子目录,替换为相应的扩展名。
2024-05-08 20:21:04 327
原创 qt-编译和运行依赖问题
引用优化是一种链接器优化技术,它可以删除未使用的函数和数据。也就是说,如果在整个程序中没有使用某个函数或数据,链接器就可以将其从最终的可执行文件中移除。通常情况下,建议在发布版本中启用引用优化,以获得更小的可执行文件大小。但在调试版本中,可能需要禁用该选项,以便于调试和分析程序的行为。启用引用优化可以减小可执行文件的大小,因为未使用的函数和数据不会被包含在内。这有助于降低可执行文件的磁盘占用和内存使用。
2024-04-28 23:44:14 8
原创 QVariantList 转json
//QVariantList varList; //QJsonObject json; //QJsonArray jsonArray = QJsonArray::fromVariantList(varList); // json.insert("data", varList);
2024-04-17 16:17:29 81
原创 Qt中实现域(Unix)套接字通信
Qt中实现域(Unix)套接字通信可以使用QLocalServer和QLocalSocket类。以下是一个简单的示例,演示了如何在两个Qt应用程序之间使用域套接字进行通信。
2024-04-03 14:08:51 1144
原创 七、c++代码中的安全风险-strcpy
在实际编程中,应该始终注意目标缓冲区的大小,并确保不会发生缓冲区溢出,以防止潜在的安全漏洞。特别是在处理用户输入或未受信任的数据时,要格外小心,以防止攻击者利用缓冲区溢出漏洞进行恶意操作。为了模拟这种情况,我们可以看一个简单的示例代码片段,展示如何在使用。将输入数据复制到一个大小为 10 的缓冲区中,而输入数据的长度超过了缓冲区的大小,这可能导致缓冲区溢出。函数将一个较长的字符串复制到一个较小的目标缓冲区中,从而可能导致缓冲区溢出。在这个示例中,我们将展示一个简单的场景,其中使用。
2024-04-03 10:56:11 292
原创 六、c++代码中的安全风险-fopen
为了模拟 CWE-362 中描述的文件打开安全问题,我们可以创建一个简单的示例程序,展示如何在打开文件时可能存在的安全风险。为了避免这种安全问题,可以在打开文件之前进行路径验证,确保文件路径是安全的,不受攻击者的控制。另外,可以考虑使用绝对路径来打开文件,以避免受到当前工作目录的影响。以上示例展示了如何通过符号链接来重定向文件操作,这是 CWE-362 中描述的一种可能的安全问题。在实际编程中,需要小心处理文件操作,避免受到潜在的攻击。的文件,但攻击者在其中插入了一个符号链接,将文件操作重定向到。
2024-04-03 10:48:25 296 1
原创 五、c++代码中的安全风险-memcpy
由于我们没有检查目标缓冲区的大小,而是直接使用了源数据的长度作为复制的长度,这可能导致目标缓冲区溢出。在这种情况下,源数据的长度超过了目标缓冲区的大小,可能会导致数据溢出到其他内存区域,造成未定义的行为或安全漏洞。函数时谨慎处理缓冲区大小,以避免发生缓冲区溢出问题。在实际编程中,建议始终检查目标缓冲区的大小,并确保不会发生数据溢出。函数进行内存复制时,不会检查目标缓冲区是否会发生溢出(CWE-120)。为了避免这种问题,应该始终确保目标缓冲区足够大以容纳源数据,并在使用。然后,我们定义了一个目标缓冲区。
2024-04-03 10:44:44 996
原创 四、c++代码中的安全风险-buff char
(buffer) char:Statically-sized arrays can be improperly restricted, leading to potentialoverflows or other issues (CWE-119:CWE-120). Perform bounds checking, usefunctions that limit length, or ensure that the size is larger than themaximum possible len
2024-04-03 10:40:33 42
原创 三、c++代码中的安全风险-open
要模拟实现一个场景,涉及文件打开时的安全问题,比如通过符号链接重定向、强制打开特殊文件类型(如设备文件)、创建竞争条件、控制文件的祖先目录或更改文件内容,你可以编写一个简单的C程序来展示这些问题。在这个示例中,我们将展示如何使用符号链接来重定向文件打开操作。请注意,这只是一个演示,实际应用中应该注意文件打开时的安全性问题,并采取必要的预防措施,比如检查文件路径的有效性、避免使用用户提供的文件名等,以防止类似的安全问题。然后,我们通过创建一个恶意的符号链接文件。在这个示例中,我们尝试打开一个名为。
2024-04-03 10:38:55 369
原创 二、c++代码中的安全风险-strncpy
函数来复制一个源字符串到目标缓冲区,但目标缓冲区的大小可能比源字符串长度小,这可能导致未正确终止字符串或者超出目标缓冲区的问题。函数应谨慎使用,并确保正确处理目标缓冲区的大小,以避免潜在的问题。在实际编程中,建议使用更安全的函数,如。是一个字符串复制函数,但它容易被错误使用,因为它并不总是在目标缓冲区末尾添加。终止符,也不会检查无效的指针,这可能导致一些问题,包括缓冲区溢出和未定义行为。在这个示例中,我们将使用。在这个示例中,我们定义了一个源字符串。由于目标缓冲区的大小比源字符串长度小,
2024-04-03 10:36:05 123
原创 一、c++代码中的安全风险-strlen
在C语言中,strlen是一个函数,计算字符串长度,遇见 ' \0 ' 停止。如果没有 ' \0 ' 将在内存中一直寻找,直到寻找到了'\0'停止。所以strlen还是存在很大的风险的。而且参数必须是字符型指针(char*)。当数组名作为参数传入时,实际上数组就退化成指针了。所以当函数的参数是数组的时候,不要在函数内部使用strlen,因为这样算的是不是数组的长度,而是一个指针的长度。
2024-04-03 10:31:27 288
原创 QtConcurrent
函数来在后台线程中执行类的槽函数。这可以帮助您在不阻塞主线程的情况下执行耗时的操作。下面是一个简单的示例,演示如何使用。最后,我们等待槽函数执行完成,并输出"Work completed."。,以处理Qt元对象系统的相关代码。在这个示例中,我们创建了一个名为。请注意,为了使类的槽函数能够通过。,您可以按照以下步骤使用。的类,其中包含一个槽函数。,用于模拟耗时操作。,并且槽函数必须声明为。在Qt中,您可以使用。,其中包含一个槽函数。执行,该类必须继承自。
2024-03-28 09:55:48 240
原创 error C3867: “QWidget::show”: 函数调用缺少参数列表;请使用“&QWidget::show”创建指向成员的指针
show改为show()
2024-03-25 11:24:55 109
原创 QFileInfo
是 Qt 中用于检查指定路径是否为目录的函数。这个函数会返回一个布尔值,表示路径是否指向一个存在的目录。如果路径存在且指向一个目录,则会返回true;如果路径不存在或者路径存在但不是一个目录,则会返回false。因此,不仅仅是在路径存在时返回true,而是在路径存在且指向一个目录时返回true。如果路径不存在或者路径存在但不是一个目录,则会返回false。
2024-03-23 16:00:43 249
原创 三 QProcess::setNativeArguments()
类的一个函数,用于设置原生操作系统命令行参数。这个函数的主要作用是允许您直接设置原生命令行参数,而不是通过。:某些情况下,您可能需要传递一些原生命令行参数,而这些参数不适合作为字符串列表传递。:不同操作系统对命令行参数的解析方式可能有所不同,如果您希望在不同平台上保持一致的参数传递方式,可以考虑使用。:有些命令行工具可能对参数的解析方式有特殊要求,如果您需要绕过 Qt 中对参数的默认解析方式,可以使用。来传递原生参数,确保命令行工具能够正确解析这些参数。用于设置原生命令行参数,然后通过。
2024-03-22 10:37:55 535
原创 QProcess使用
QString filename = "TEST.txt";QProcess process;process.setWorkingDirectory("C:\\Windows\\System32");process.start("notepad.exe", QStringList() << filename);process.waitForFinished (-1); //等待进程结束
2024-03-21 20:32:56 511
原创 二 std::thread
在使用 std::thread 进行多线程编程时,确实需要注意一些重要的事项,特别是在处理线程对象的生命周期。以下是一些关键的注意事项:确保调用 join() 或 detach(): 在创建线程对象后,一定要在适当的时机调用 join() 或 detach()。如果不调用这两个函数,当线程对象被销毁时,如果线程仍然在运行(即线程对象的 joinable() 返回 true),将会导致程序终止。
2024-03-20 10:59:40 117
原创 std::thread
最好将需要在线程中访问的变量通过参数传递给线程函数,或者使用线程安全的数据结构。通过封装线程对象到一个类中,在类的析构函数中调用。进行多线程编程时,确实需要注意一些重要的事项,特别是在处理线程对象的生命周期。确保适当地捕获和处理线程中可能抛出的异常,避免异常未捕获导致程序崩溃。不调用这两个函数,当线程对象被销毁时,如果线程仍然在运行(即线程对象的。,可以更好地控制线程的生命周期,确保线程在适当的时候被加入或分离。避免在线程对象析构时线程仍在运行,以防止潜在的异常情况。对象销毁时,如果线程仍在运行,会调用。
2024-03-20 10:52:43 256
原创 qt的时间转换
long long lastTime = settings.value("lastTime").toLongLong(); QDateTime date; date.setTime_t(lastTime/1000); uint secdate = QDateTime::currentDateTime().toTime_t() - date.toTime_t(); secdate = qAbs(secdate);
2024-03-19 17:03:38 243
原创 qt获取系统位数
QString str_arch = QSysInfo::currentCpuArchitecture()int size = QSysInfo::WordSize
2024-03-14 14:56:26 367
原创 常见问题This application failed to start because not Qt platform plugin could be initialized.
将依赖dll和plugins下的文件夹放在可执行程序目录下。
2024-03-13 11:20:26 1327
原创 qt设置显示风格
QApplication::setStyle("plastique"); "windows", "motif", "cde", "plastique", "windowsxp", or "macintosh"
2024-03-11 17:22:36 316
原创 QDialog
一、模式 m_dlg = dlg; m_dlg->setWindowFlags( Qt::Popup ); m_dlg->setModal( false ); m_dlg->setSizeGripEnabled( true ); connect( m_dlg, SIGNAL( textChanged( const QString&, int ) ), this, SLOT( slot_textChanged( const QString&,
2024-03-11 08:33:22 305
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人