- 博客(42)
- 资源 (33)
- 问答 (2)
- 收藏
- 关注
原创 linux运行脚本出现/bin/bash^M:解释器错误:没有那个文件或目录解决办法及原因
原因:在windows编写的脚本拷贝到linux,windows换行符\r\n, 而linux换行符\n。解决方法:vi test.sh。
2024-11-12 18:09:38
840
原创 开源图像处理软件
和Sharp Zaurus等多种平台。其基于java的特点,使得它编写的程序能以applet等方式分发。的公共的图像处理软件,它是由National Institutes of Health开发的。ImageJ是一个基于。
2024-09-30 09:05:21
304
原创 Qt题目知多少-4
为每个QObject子类生成必要的代码以实现元系统特性。moc工具会读取C++源文件,当它发现包含Q_OBJECT宏的类声明时,会生成另一个C++源文件,其中包含这些类的元对象代码。这个生成的源文件通常会被编译并与类的实现一起链接。Qt的元对象系统(Meta-Object System)是Qt框架的核心特性之一,它为基于Qt的应用程序提供了一系列高级功能。类是元系统的一部分,用于提供有关特定数据类型的信息。:用于启用元系统特性,如动态属性、信号和槽等。:作为使用元系统功能的对象的基类。
2024-08-14 11:30:22
358
原创 Qt/C++经验技巧知多少-3
12.如果需要指定无边框窗体,但是又需要保留操作系统的边框特性,比如自由拉伸边框,可以使用 setWindowFlags(Qt::CustomizeWindowHint),这样会保留一个系统白边框。在安装的时候,默认不勾选。使用该模块需要注意可能引入的版权问题。4.Qt内置了QFormLayout表单布局用于自动生成标签+输入框的组合的表单界面,设置布局用的很少,一般用的最多的是横向布局、垂直布局、表格布局。10.QLabel有三种设置文本的方法,掌握好Qt的属性系统,举一反三,可以做出很多效果。
2024-08-14 11:21:11
281
原创 Qt/C++经验技巧知多少-2
8.如果发现QtCreator中的构建套件不正常了或者坏了(比如不能正确识别环境中的qmake或者编译器、打开项目不能正常生成影子构建目录),请找到两个目录(C:\Users\Administrator\AppData\Local\QtProject、C:\Users\Administrator\AppData\Roaming\QtProject)删除即可,删除后重新打开QtCreator进行构建套件的配置就行。此外,动态属性的使用应谨慎,因为它们可能会使对象的状态管理变得更加复杂。
2024-08-14 11:01:08
336
原创 Qt/C++经验技巧知多少-1
3.运行文件附带调试输出窗口,这个非常有用,很多时候当我们发布程序阶段,我们会遇到程序双击无法运行也不报错提示(开发机器上一切正常),都不知道发生了什么,甚至任务管理器可以看到运行了但是没有界面弹出来,此时就需要在项目的pro文件中加上一行CONFIG += console,带界面的程序也会自动弹出调试窗口打印输出信息,方便找问题,一般没法正常运行的程序都会打印一些提示信息缺啥之类的。6.Qt内置图标封装在QStyle中,大概七十多个图标,可以直接拿来用。10.使用inherits判断是否属于某种类。
2024-08-14 10:31:25
322
原创 C++题目知多少-1
用于不同类型之间的转换,可以将一个指针或引用转换为另一个类型的指针或引用。reinterpret_cast不进行类型检查,因此可能会导致未定义的行为,应谨慎使用。const_cast可以改变指针或引用的常量属性,但不能改变对象本身的常量属性。:用于基本数据类型之间的转换,以及具有继承关系的指针或引用之间的转换。:专门用于具有继承关系的指针或引用之间的转换,可以在运行时检查类型是否匹配。,这意味着该函数承诺不会修改对象的状态,也就是说,它不会改变对象的任何成员变量的值。
2024-08-09 10:04:38
566
原创 C++虚函数表、地址详解(x86/x64)
本文在上述博文的基础上,补充了x64下的验证代码。虚函数大家都知道是基本用于实现多态的,当父指向子类对象的时候,如何确定调用的函数是父类里的还是子类里面的,这就要用到虚函数表。下面一点点表诉什么是虚函数表,和虚函数表的特点。如有说错的地方,欢迎指正:1.编译器会为每个创建一个虚函数表如有类中没有虚函数,那么这个虚函数表就不存在,而不是表中无数据。同时,有虚函数的类都会有自己的虚函数表,虚函数表会被一个类的所有对象所拥有。
2024-08-08 19:01:36
1252
原创 Qt题目知多少-3
如果不一致,允许的情况是,信号的参数可以比槽函数的参数多,即便如此,槽函数存在的那些参数的顺序也必须和信号的前面几个一致起来。Qt中的智能指针封装为QPointer类,所有QOBJECT的子类都可以用这个智能指针来包装,很多用法与普通指针一样,可以详见Qt assistant 通过调查这个Qt的内存管理功能,发现了很多东西,现在觉得虽然这个Qt弄的有点小复杂,但是使用起来还是很方便的,要说的是某些内存泄露的检测工具会认为Qt的程序因为这种方式存在内存泄露,发现时大可不必理会。事件的机制是非阻塞的。
2024-08-08 12:44:57
1016
原创 Qt题目知多少-2
优点:跨平台,几乎支持所有平台,接口简单,文档详细,开发效率高缺点: Qt 作为一个软件平台,比较庞大、臃肿。元对象系统 Qt的元对象系统(meta-object)提供了用于内部对象通讯的信号与槽(signals & slots)机制,运行时类型信息,以及动态属性系统(dynamic property system)。整个元对象系统基于三个东西建立:1)QObject类为所有对象提供了一个基类,只要继承此类,那创建出的对象便可以使用元对象系统。
2024-08-08 11:53:35
776
原创 创建型模式(Creational Patterns)之工厂模式(Factory Pattern)之工厂方法模式(Factory Method Pattern)
相反,如果使用 工厂方法模式,每个产品类型都有一个对应的工厂类来创建,工厂方法 可以独立进行扩展,每个工厂类只需要关心自己负责的产品类型,代码更加清晰和易于维护。例如,在一个图形绘制软件中,可以使用 工厂方法模式 来创建不同类型的图形对象,如圆形、矩形、三角形等,每个图形都有一个对应的工厂类来创建。如果使用 简单工厂模式,我们需要一个工厂类来创建所有不同类型的电子产品,客户端代码需要指定电子产品类型,工厂类根据类型来创建相应的产品对象。但是,随着产品类型的增加,工厂类的代码会越来越复杂,难以维护和扩展。
2024-08-05 18:44:18
523
原创 创建型模式(Creational Patterns)之工厂模式(Factory Pattern)之简单工厂模式(Simple Factory Pattern)
被创建的对象称为“产品”,创建产品的对象称为“工厂”。如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫“简单工厂模式”。是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的-建产品类的方法可以被外界直接调用,创建所需的产品对象。简单工厂模式不在 GoF 23 种设计模式之列。是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。请注意,简单工厂模式可能会因为工厂类中的。是简单工厂模式的创建目标。
2024-08-05 18:20:14
518
原创 C++题目:堆数据访问块还是栈数据访问快?
栈数据访问速度通常比堆数据访问速度快,因为栈的数据存储在连续的内存空间中,访问速度快且效率高。堆数据访问速度较慢,因为其数据存储在分散的内存空间中,需要额外的指针解引用操作。栈是一种线性数据结构,数据存储在一段连续的内存空间中,遵循后进先出(LIFO)原则。主要特点如下:自动管理:栈内存的分配和回收由编译器自动处理,无需程序员显式管理。连续内存:栈分配的内存通常是连续的,这有助于优化CPU缓存的使用。快速分配和回收:由于栈的管理较为简单,分配和回收内存的速度较快。
2024-08-05 17:34:16
446
原创 c++物理引擎库-Bullet Physics
Bullet Physics 库以其强大的功能、高效的性能和易用性,成为众多开发者实现物理模拟的首选工具。无论是创建逼真的游戏场景,还是构建复杂的虚拟现实体验,Bullet Physics 库都能为您的项目增添真实而精彩的物理效果。Bullet Physics 库作为一款出色的开源物理引擎,为开发者提供了强大的工具来实现各种复杂的物理效果。在上述示例中,我们创建了一个 Bullet Physics 世界,添加了地面和球体刚体,并模拟了它们在重力作用下的运动。
2024-08-05 17:14:21
398
原创 C++数学库GNU Scientific Library (GSL)
库中的算法经过了精心的优化和验证,能够在保证精度的前提下,尽可能提高计算效率。开发者无需深入了解复杂的数值分析理论和底层实现细节,只需按照规范调用相应的函数,并传入正确的参数,即可获得准确的计算结果。这大大降低了科学计算的门槛,使得更多的开发者能够轻松运用高级的数学方法解决实际问题。其设计目标是提供高效、准确且易于使用的函数接口,使得开发者能够专注于解决科学问题本身,而不必过多关注底层的数值实现细节。它为 C 和 C++ 程序员提供了丰富的数学函数、数值算法和数据结构,极大地简化了复杂科学计算任务的实现。
2024-08-05 15:46:36
1068
原创 通信相关20题
在层次关系上,两者都采用了分层体系结构,都是对等的层间通信,不同之处在于TCP/IP参考模型比OSI参考模型层次更清晰简练,在功能上,两者差别不大,都是为了实现两个或多个终端之间的通信。在Linux系统中,2MSL默认值是60秒。定义一个时间段,在这个时间段内,如果没有任何连接相关的活动,TCP保活机制会开始作用,每隔一个时间间隔,发送一个探测报文,该探测报文包含的数据非常少,如果连续几个探测报文都没有得到响应,则认为当前的TCP 连接已经死亡,系统内核将错误信息通知给上层应用程序。
2024-07-30 18:42:20
745
原创 Qt题目知多少-1
它采用事件驱动的方式处理网络事件,如连接建立、数据到达等,这些事件通常通过信号和槽机制在Qt应用中传递和处理,使得开发者能够以异步的方式编写网络程序,提高应用的响应性和用户体验。当一个QObject对象被销毁时,它会自动删除其所有的没有单独指定父母的子对象,这是一种隐式的内存管理机制,减少了手动删除子对象的需要。综上所述,Qt通过结合C++的标准内存管理机制、智能指针、特定的内存管理类以及父母-子女的对象树结构,提供了一个既强大又灵活的内存管理体系,旨在帮助开发者编写高效、健壮的代码。
2024-07-30 16:39:00
545
原创 C++面向对象设计原则
如果有了新的需求,需要当前模块支持MP5,那么当前模块的内部文件需要实现CMP5,但是其他模块不需要修改,只要在调用工厂类的MakeObj接口时,传入strType 为“MP5”就可以了。面向修改关闭:部分资料存在对读者的误导,软件设计不应该是不允许修改,而是良好的设计不需要修改对外接口,这样就将修改范围关闭在当前模块内,不会波及其他模块。使用多个小的专门的接口,而不要使用一个大的总接口。接口应该是内聚的,一个类对另外一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法,造成接口污染。
2024-07-29 19:04:31
1001
原创 指针与引用20题
空指针是指没有指向任何有效对象的指针。在C++中,可以使用特殊值nullptr表示空指针。野指针是指未被正确初始化或者已经释放的指针,它可能包含一个无效的内存地址,导致访问到不属于自己的内存区域。为了避免空指针和野指针的出现,可以考虑以下几点:初始化:在定义指针变量时,立即将其初始化为合理的初始值或者将其设为nullptr,这样可以确保不会产生随机值导致野指针问题。空检查:在使用指针之前进行空检查,避免对空指针进行解引用操作。可以通过条件判断语句(例如if(ptr!= nullptr)
2024-07-26 16:42:31
784
原创 堆、栈20题
堆(Heap)和栈(Stack)是计算机内存中两种常见的数据存储区域,它们在内存管理和数据结构方面有不同的作用。堆(Heap):堆是动态分配的内存空间,由程序员手动控制其分配和释放。堆用于存储运行时动态创建的对象、数据结构和数组等。通过使用malloc、new等函数进行堆内存的分配,使用free、delete等函数进行释放。堆内存的大小可以在程序运行期间进行调整。在多线程环境下,堆需要处理并发访问问题。栈(Stack):栈是一种自动分配的内存空间,由编译器自动管理其生命周期。
2024-07-26 15:13:29
774
原创 内存管理20题
内存碎片是指分配给进程的内存空间被划分为多个小块,而这些小块之间存在不可用的、无法再分配的空隙。内存碎片可以分为两种类型:外部碎片(External Fragmentation):指的是已分配内存块之间的未使用空闲空间。由于这些空闲区域被分割成多个较小的不连续块,导致实际可用内存比总共分配的内存要少。内部碎片(Internal Fragmentation):指的是已经被程序占用但没有充分利用的内存空间。通常发生在静态或动态地将固定大小的块分配给进程时,导致实际可用内存比所需内存要少。
2024-07-26 12:29:54
987
原创 qt编译前后复制文件
QMAKE_PRE_LINK : 编译前执行。QMAKE_POST_LINK:编译后执行。1.在.pro文件中加入命令。
2024-07-23 18:02:44
386
1
原创 STEllAR-GROUP/hpx
HPX的目标是为传统系统(如经典的基于Linux的Beowulf集群或多套接字高度并行的SMP节点)创建一个高质量的、免费可用的、开源的新编程模型实现。我们希望使用真实的应用程序来驱动运行时系统的开发,创造出所需的功能,并汇聚到一个稳定的API上,这将为开发人员提供一个平滑的迁移路径。HPX暴露的API不仅是按照c++ 11/14/17/20 ISO标准定义的接口建模的,它还遵循了Boost c++库集合所使用的编程指南。此外,在HPX中,我们实现了作为正在进行的c++标准化过程的一部分提出的功能。
2024-06-03 23:25:07
310
原创 c/c++结构体中包含数组直接赋值
原因是上述结构体满足POD数据类型,可以逐位拷贝(bitwise copy semantics)。上述st可以直接赋值给st2,同时strA也被深拷贝。上述strA无法直接赋值给strB。
2024-05-22 19:38:04
300
1
转载 现代 C++ Bug Free 检查工具
未定义行为(UB,Undefined Behavior)可能最容易被开发人员忽视。如果触发 UB,程序行为是未可知的,常用检查项alignment使能未定义行为检查扩展阅读。
2024-04-26 08:37:52
208
1
原创 AutoIt基本用法
中进行自动化操作。它利用模拟键盘按键,鼠标移动和窗口/控件的组合来实现自动化任务。而这是其它语言不可能做到或无可靠方法实现的(例如。AutoIt 最新是v3版本,这是一个使用类似BASIC。脚本:将鼠标移动到屏幕中心,重复滚动鼠标滚轮。,它设计用于Windows GUI(
2024-04-07 19:38:36
451
2
转载 下载文件失败提示病毒扫描失败怎么解决
2、进入注册表编辑器,依次点击左侧中的"HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionPoliciesAttachments",并回车定位到此。右击右侧空白处,选择"新建"一个"字符串值",将其命名为"ScanWithAntiVirus",并双击打开。1、"win+R"快捷键打开运行,输入"regedit.exe",回车打开。4、最后在打开的窗口中将"数值数据"改为"1",点击确定保存即可。
2023-06-10 23:03:32
10103
8
原创 QVector<QImage> append(QImage)编译报错
使用QVector容器,存在追加QImage对象的语句时,编译报错:FilmShowControl.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual void __thiscall QPaintDevice::initPainter(class QPainter *)const " (?initPainter@QPaintDevice@@UBEXPAVQPainter@@@Z)
2022-11-24 11:38:25
598
AccessDataBaseEngineX64 X86.rar
2019-08-04
matlab绘图Figure嵌入C# Winform窗体中
2017-01-06
MATLAB遗传算法工具箱GeneticAlgorithmToolbox
2016-05-25
网页开发Javaweb(海量资源)
2016-03-07
C#Socket通讯超清晰例子(带线程间访问)
2015-12-02
C++控制台下printf函数异常报错
2019-11-24
C++ 在x64配置下,总是生成x86 dll,无法生成x64 dll
2019-05-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人