- 博客(59)
- 收藏
- 关注
原创 VS2019密钥
Visual Studio 2019 Enterprise(企业版):BF8Y8-GN2QH-T84XB-QVY3B-RC4DFVisual Studio 2019 Professional(专业版):NYWVH-HT4XC-R2WYW-9Y3CM-X4V3Y
2025-03-31 15:12:26
389
原创 VS2019+Mitk+cmake编译运行MitkWorkbench
3.localep(压缩包在线获取,记得挂梯子)cmake双层编译,然后在vs中生成。1.github拿到源码mitk。2.建同级文件(防止污染)
2025-02-19 15:55:01
160
原创 VS无法补全代码(以C++为例)
2.打开文本编辑器,C/C++里面的高级。将禁用IntelliSense改成False,就有代码提示了。1.点击工具,打开选项。
2025-02-19 15:14:58
181
转载 VS2019出现“有太多的错误导致IntelliSense引擎无法正常工作,其中有些错误无法在编辑其中查看”的问题解决方法
最近做项目使用VS2019时,在工程文件的开头出现一个错误 “有太多的错误导致IntelliSense引擎无法正常工作,其中有些错误无法在编辑其中查看”,如下图所示。
2025-02-17 15:11:47
83
原创 UI样式表(悬停hover状态样式和按下pressed)
按下状态:文本被压下去的动态效果。,背景色,边框,边角,文本颜色。悬停状态:浅蓝色,其他的不变。
2025-01-20 15:35:10
286
原创 VS中出现C2001 常量中有换行符
2.多个文件出现这类问题,可以将项目文件夹压缩,然后打开Windows设置里的时间和语言,将如图去掉勾选,然后再将压缩包解压,重新编译即可。1.对于少量文件出现常量中有换行符问题,单个文件通过Notepad++打开,将编码改成ANSI编码。
2025-01-20 14:07:49
329
原创 vs有中文乱码
1.少许文件乱码,可以通过nodepad++打开编码栏改成成ansi码,保存后vs重新编译文件。对于win10,点击设置-》时间和语言-》语言-》右上角管理语言设置-》更改系统区域设置。2.微软自带的是uft-8,可以在编译之前,确定windows系统的勾选去掉。
2025-01-15 18:53:03
262
原创 cmake gui与VS的使用
如果没有安装,可以从CMake官网下载并安装。如果在配置过程中 CMake 找不到某些库或依赖项,可以通过在 cmake-gui 中添加 CMake 变量来手动指定路径或标志。这样,你就可以使用 cmake-gui 为 Visual Studio 生成项目,并在 Visual Studio 中进行开发了。如果配置成功并且没有错误,点击 Generate 按钮,CMake 将开始生成 Visual Studio 项目文件。在其他操作系统上,你可以通过命令行启动 cmake-gui,如果 GUI 组件已安装。
2025-01-06 00:13:34
413
原创 git的安装看一篇就够了
2.根据上面的官方链接进入git官网,点击download。9.最后切换到桌面,右击鼠标,看到一下图标显示安装成功。1.查看电脑操作系统,对应下载相应的git安装包。3.因为我电脑是64位,下载对应的64位。4.git下载完,准备安装,点击next。8.安装成功,显示这个界面,点击完成。注:git下载官网:。7.接下来都是默认下一步next。6.默认下一步,next。
2025-01-05 23:44:39
200
原创 VS2022调试(官方)
断点指示 Visual Studio 应在哪个位置挂起你的运行代码,以使你可以查看变量的值或内存的行为,或确定代码的分支是否运行。变量上设置好了监视,当你在调试器中移动时,可看到其值发生变化。例如,你可将断点插入到指定的函数中,使用“运行到光标处”推进调试器,然后检查源代码。大多数情况下,我们使用键盘快捷方式,因为这是在调试器中快速执行应用的好方法(括号中显示了等效的命令,如菜单命令)。通常情况下,在调试时,需要快速检查变量的属性值,以查看它们是否存储了你希望它们存储的值,可根据数据提示执行此操作。
2025-01-04 10:22:46
1660
原创 QT中MVC框架
是应用程序的可视化部分,负责展示数据,将Model维护的数据进行可视化呈现,并提供用户操作界面。是应用程序的数据模型部分,负责管理应用程序的数据,提供对数据的增删改查等操作。它是应用程序的核心部分,并与数据源进行通信,为架构中的其他组件(如视图和委托)提供了接口。是应用程序的控制器部分,负责接收和处理View层的用户操作并作出响应,同时还管理Model和View之间的通讯。它是Model和View之间的桥梁。,它通过将应用程序的业务逻辑、数据展示和用户交互分离开来,显著提高了代码的可维护性和可扩展性。
2024-12-30 18:50:41
259
原创 CustomPlot的使用步骤
(1)文件添加,网上下载customplot的c文件和h文件,放入同级文件夹里。(3)打开项目中,项目中添加以下文件。添加方式“右键”导入。(4)头文件包含customplot.h。然后可以根据自己的需求进行功能开发。(2)pro文件中加入以下程序。
2024-12-30 10:12:27
196
原创 函数传递(值传递、指针传递、引用传递)
在C++中,有三种主要的函数参数传递方式:值传递、指针传递和引用传递。当我们将一个值传递给函数时,函数会创建该值的副本,并在函数内部使用这个副本。这是因为引用传递允许函数直接访问和修改原始值,使得代码更加简洁和易读。这是因为在值传递中,函数会创建参数的副本,而不是直接修改原始值。函数可以通过引用直接访问和修改原始值,而无需创建副本。在函数内部,我们可以直接修改原始值,而无需使用指针或副本。在函数内部,我们通过解引用指针来修改原始值。1.当函数需要修改原始值时,指针传递是一个不错的选择。
2024-10-15 15:55:42
509
原创 线程同步方式
线程同步是指协调多个线程的执行顺序以及访问共享资源的方式,以避免出现竞争条件(Race Condition)和数据不一致性等问题。- 互斥锁是最常用的线程同步机制之一,通过对共享资源加锁来确保同时只有一个线程可以访问共享资源。- 信号量是一种更广泛的线程同步工具,除了互斥作用外,还可以控制多个线程同时访问共享资源的数量。- 信号量可以是计数信号量(允许多个线程同时访问)或二进制信号量(只允许一个线程访问)。- 通常与互斥锁一起使用,等待线程在检查条件时会释放锁,当条件满足时,唤醒等待线程。
2024-03-05 13:56:03
408
原创 虚函数和纯虚函数
在 C++ 中,虚函数(Virtual Function)和纯虚函数(Pure Virtual Function)是面向对象编程中的重要概念,用于实现多态性和抽象类。- 包含纯虚函数的类称为抽象类(Abstract Class),不能被实例化,只能作为基类来派生其他类。- 虚函数是在基类中声明为虚拟的成员函数,可以被子类重写。- 纯虚函数是在基类中声明为纯虚拟的虚函数,没有具体的实现,在基类中只有声明,不需要定义函数体。- 使用纯虚函数可以定义抽象接口,强制派生类实现特定的函数,实现接口的统一规范。
2024-03-05 13:33:01
264
原创 C++之析构函数
在 C++ 中,析构函数(Destructor)是一个特殊的成员函数,用于在对象生命周期结束时执行清理工作和资源释放。析构函数的名称与类名相同,前面加上波浪号(~),不接受任何参数,也没有返回类型。在上面的示例中,当对象 `obj1` 和 `obj2` 超出作用域时,析构函数会被自动调用,输出相应的信息。这样可以确保在对象销毁时进行必要的清理工作,比如释放动态分配的内存、关闭文件等。需要注意的是,C++ 中如果一个类有指针成员或者需要手动管理资源,那么最好显式地定义析构函数来确保资源的正确释放。
2024-03-05 13:16:49
298
原创 ab二个字段都有索引,会导致索引失效吗?
1. 覆盖索引:如果其中一个索引是覆盖索引(Covering Index),即索引包含了查询所需的所有列,而另一个索引并不包含所有需要的列,数据库可能会选择使用覆盖索引而不使用第二个索引。3. 索引合并:有些数据库系统支持索引合并(Index Merge),即在某些情况下会将多个单列索引合并使用,但并非所有数据库都支持这种特性。当两个字段都有各自的索引时,一般情况下不会导致索引失效。在大多数情况下,如果两个字段都有索引,数据库系统会根据查询条件和统计信息来选择最优的索引来加速查询,而不会导致索引失效。
2024-03-05 13:10:34
365
原创 什么情况下导致索引失效
索引在数据库中起着加快数据检索速度的作用,但在某些情况下,索引可能会失效,即数据库系统无法有效地使用索引来加速查询。- 当查询条件中未使用索引列,或者对索引列进行了函数操作、类型转换等,数据库无法有效使用索引。- 如果索引列上的数据分布不均匀,某些值的重复率很高,数据库可能会放弃使用索引而进行全表扫描。= 等),会导致索引失效。- 当查询条件中的数据类型与索引列的数据类型不匹配时,索引也可能无法被使用。- 在多表连接查询中,如果连接条件的列没有索引,可能会导致索引失效。
2024-03-05 13:06:44
974
原创 聚集索引和非聚集索引区别
总的来说,聚集索引将数据行存储在索引的叶子节点中,减少了数据检索时的IO操作,可以提高查询性能;而非聚集索引只存储索引值和指向数据行的指针,需要额外的IO操作来获取数据行,但可以加速多种不同列的查询。- 聚集索引的叶子节点存储了表中的实际数据行,而不只是索引值。换句话说,表的物理顺序和聚集索引的顺序是一致的。- 非聚集索引的叶子节点存储的是索引字段的值以及指向实际数据行的指针。即索引值和数据行是分开存储的。- 当按照聚集索引的列进行查询时,数据库引擎会按照索引的顺序直接定位到数据行,提高查询效率。
2024-03-05 12:59:00
626
原创 MySQL主键索引的特点
3. **默认聚集索引**:在 InnoDB 存储引擎中,主键索引默认是聚集索引。5. **隐式约束**:主键索引在逻辑上也是一种约束,确保数据的完整性和一致性。7. **自动生成**:主键可以手动指定也可以自动生成。1. **唯一性**:主键索引要求列的值必须是唯一的,即该索引列中的每个值必须是唯一的,不允许重复值出现。4. **快速查找**:通过主键索引可以快速定位到表中唯一的一条记录,加快数据检索的速度。2. **非空性**:主键索引列的值不能为 NULL,确保每行数据都有一个唯一的标诋符。
2024-03-05 12:50:59
265
原创 与缓存相关的状态码
当客户端向服务器发送带有条件的 GET 请求(通常是包含 If-Modified-Since 或 If-None-Match 头部的请求),并且资源未发生变化时,服务器会返回状态码 304 Not Modified。这表示客户端缓存的版本仍然有效,无需重新获取资源,可以直接使用缓存。在缓存相关的情境下,404 状态码表示客户端缓存中的资源已经过期或不存在,需要从服务器重新获取。这些状态码是与缓存相关的一些常见情况,在处理缓存时需要根据不同的状态码来决定是否使用缓存、更新缓存或者从服务器重新获取资源。
2024-03-05 12:48:55
527
原创 http状态码,302,400
状态码 400 表示客户端发出的请求有错误,服务器无法理解。这通常是由于客户端发送的请求中包含无效的请求参数、格式不正确等问题导致的。客户端收到 400 状态码后,应该检查请求的格式和内容,进行修正后重新发送请求。服务器返回状态码 302 时,意味着所请求的资源已经被临时移动到另一个位置。客户端接收到该状态码后,会根据响应头中的 Location 字段指定的新 URL 发起新的请求。HTTP 状态码是指在 HTTP 协议通信过程中,服务器向客户端返回的状态码,用于表示服务器对请求的处理结果。
2024-03-05 12:39:57
916
原创 四次挥手的过程,为什么有timewait
4. 主动关闭方收到 FIN 报文后,发送 ACK 报文作为确认,进入 TIME_WAIT 状态。在这个状态下,主动关闭方等待 2MSL(Maximum Segment Lifetime) 的时间,确保最后一个 ACK 报文已经到达对端,防止对端没有收到 ACK 报文导致重传。TIME_WAIT 状态的存在是为了确保在网络中已经传输完成的最后一个 ACK 报文不会丢失,同时也为了防止之前的报文再次出现在网络中而引发混乱。1. 主动关闭方发送 FIN 报文给被动关闭方,进入 FIN_WAIT_1 状态。
2024-03-05 12:30:28
239
原创 快排是否稳定,为什么不稳定?
具体来说,当选择枢轴元素时,如果是不稳定的选择方式(例如选择第一个或最后一个元素作为枢轴),那么在分区的过程中,相同元素的相对位置可能会被打乱。另外,如果在分区过程中采用了不稳定的交换策略(比如直接交换而不是插入到合适位置),也会导致快速排序的不稳定性。快速排序(Quicksort)是一种不稳定的排序算法。其不稳定性主要来自在分区过程中对元素的交换操作。在快速排序的过程中,相同元素的相对位置可能会发生变化,导致最终排序结果中相同元素的顺序与初始顺序不同。
2024-03-05 12:28:16
1183
原创 常见的排序算法
具体来说,假设长度为n的数组arr,要按照从小到大排序,那么先从n个数字中找到最小值min1,如果最小值min1的位置不在数组的最左端(也就是min1不等于arr[0]),则将最小值min1和arr[0]交换,接着在剩下的n-1个数字中找到最小值min2,如果最小值min2不等于arr[1],则交换这两个数字,依次类推,直到数组arr有序排列。例如要将数组arr=[4,2,8,0,5,1]排序,可以将4看做是一个有序序列(图中用蓝色标出),将[2,8,0,5,1]看做一个无序序列。最简单的一种排序算法。
2024-03-05 12:21:29
371
原创 model view模型
模型/视图结构,仍然分离了数据与呈现给用户的方式,但提供了基于相同原理的简单框架。这种分离使得它可以在几个不同的视图中显示相同的数据,并且实现新类型的视图,而无需改变底层的数据结构。为了灵活地处理用户输入,则引入了委托的概念。在此框架引入委托的优点是:它允许项目数据显示和自定义编辑。模型与数据源进行通信,在这个体系结构中为其它组件提供了一个接口。通信的性质依赖于数据源的类型以及模型的实现方式。视图从模型中得到模型索引,这些都引用到数据项。通过为模型提供模型索引,视图可以从数据源中检索数据项。
2024-03-05 11:55:14
921
原创 Linux常见命令
注意:常用 rm –rf XXX,千万不能执行rm –rf / ,否则它会把你的系统文件全部删除,非常危险!tail还有一个重要的作用是用来显示文件中,实时新增的内容,方法如下:tail -f xxx。路径的写法一定由根目录 ‘/’写起,例如/usr/local/net-snmp.常用选项:-r 递归,复制子文件和子目录,一般用在复制目录。选项来查看帮助,例如:ls --help。常用选项:-b 显示行号,空白行不显示行号。搜索系统命令的命令,查找二进制命令,源文件和帮助文档的命令。
2024-02-29 14:02:14
895
原创 C++内存四区
的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。全局区还包含了常量区, 字符串常量和其他常量就是存放在常量区的。代码区用于存放二进制的 CPU 执行的机器指令。的,使其只读的原因是防止程序意外地修改了它的指令。该区域的数据在程序结束后由操作系统释放.C++程序在执行时,将内存大方向划分为。系统分为两个区域:代码区和全局区。在程序编译后,会生成可执行程序,不同区域存放的数据,赋予不同的。全局变量和静态变量存放在此。, 给我们更大的灵活编程。
2024-02-28 16:05:28
281
原创 qt之函数声明快速定位到函数定义处
方法三:鼠标右键找到(follow sysmbol under cursor)方法一:Ctrl+鼠标左键(基本所以IDE都适合)方法二:f2(对于笔记本f2+fn)
2024-02-26 17:31:27
1163
原创 DDS通信协议
它提供了以数据为中心的连接服务,基于发布者-订阅者模型。总体而言,DDS 提供了一种简便而强大的方式,让不同的设备和软件系统在实时、高效、可靠的环境中进行数据通信,使得各个部分协同工作,实现复杂的实时系统。设备或应用程序可以作为发布者发布数据,而其他设备或应用程序可以作为订阅者订阅并接收这些数据。QoS(Quality of Service): DDS 允许根据应用程序的需求配置数据传输的质量,包括可靠性、实时性、持久性等方面的参数。数据主题(Topic): 数据主题定义了要发布或订阅的数据的类型和结构。
2024-02-25 20:07:56
1169
原创 h.264与h.263的区别
采用混合编码结构:同H.263相同,H.264也使用采用DCT变换编码加DPCM的差分编码的混合编码结构,还增加了如多模式运动估计、帧内预测、多帧预测、基于内容的变长编码、4x4二维整数变换等新的编码方式,提高了编码效率。H.264的编码选项较少:在H.263中编码时往往需要设置相当多选项,增加了编码的难度,而H.264做到了力求简洁的“回归基本”,降低了编码时复杂度。高质量的视频画面:H.264能够在低码率情况下提供高质量的视频图像,在较低带宽上提供高质量的图像传输是H.264的应用亮点。
2024-02-02 12:47:58
838
原创 qt中遇到[Makfile.Debug:119:debug/app.res.o] Error 1的原因以及解决方法
解决方法:在主界面中,点击左边的项目栏,选择构建设置,看Shadow build下面的路径是否为中文,改成英文,或者直接将Shadow build这个 √ 去掉就行了,如图已正常编译运行。当我们将项目已到本地qt环境中会出现下图的代码错误。
2024-02-02 12:42:32
1368
1
原创 QTableWidget表格控件
整个 QTableWidget 表格可以分为 3 个区域:行,列,项目(数据),行设置每一行的昵称,列设置每一列的昵称,项目为数据区,表格中所有的数据都位于此区域,该区域内可以存放单元格,也可以存放按钮、文本框等控件。QTableView 可以存储大量的数据(例如几十万甚至几百万),用户浏览表格中的数据时不会出现卡顿等现象;QTableWidget 框架在实际开发中经常使用,如果您是一名初学者,我建议先学习 QTableWidget 控件,它可以降低您学习 QT 表格控件的成本,可以更快地掌握表格的用法。
2024-01-11 11:35:23
463
原创 qt之信号槽机制详细版
如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。Qt使用信号与槽机制来解决这个问题,程序员只需要指定一个类含有哪些信号函数、哪些槽函数,Qt会处理信号函数和槽函数之间的绑定。槽的本质是类的成员函数,其参数可以是任意类型的。唯一区别的是:槽可以与信号连接在一起,每当和槽连接的信号被发射的时候,就会调用这个槽。发送信号之后,槽函数不会立刻被调用,等到接收者的当前函数执行完,进入事件循环之后,槽函数才会被调用。
2024-01-08 23:56:12
517
原创 Qt中 QWidget、QDialog、QMainWindow的区别以及使用
非模态对话框则可以与其他窗口并行使用。QDialog和QMainWindow都是QWidget的子类,因此它们都继承了QWidget的特性和功能。综上所述,QWidget是最基础的窗口类,而QDialog和QMainWindow是QWidget的子类,分别用于创建对话框窗口和主窗口。QMainWindow类提供了一些用于创建主窗口的特殊功能,如设置中心部件、状态栏、工具栏等。QWidget是最基础的窗口类,没有提供特殊的窗口功能;QMainWindow是用于创建主窗口,提供了一些用于创建主窗口的特殊功能。
2024-01-08 10:06:35
1318
原创 QT的之clicked、pressed、released、toggled、triggered等信号区别
正常情况下单击按钮,响应顺序为:pressed() — about 215ms — released() — almost 0ms — clicked()。triggered(QAction *action):给定的 QAction 被触发时,发射信号\n\nQAction 的四个信号。toggled(bool checked):设置 setCheckable(true) 后再单击按钮才会触发该信号。hovered():光标一移动到该 item 的范围中,一覆盖在上面即会触发此信号。
2024-01-08 09:45:46
2667
原创 qt之QPlainTextEdit文本编辑器
QPlainTextEdit是纯文本的高级查看器/编辑器,它经过优化,可以处理大型文档并快速响应用户输入。QPlainTextEdit使用与QTextEdit非常相同的技术和概念,但针对纯文本处理进行了优化。QPlainTextEdit适用于段落和字符,实际应用中显示串口监控信息、网络传输信息、文本文件读取编辑等情景下使用。QPlainTextEdit类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,是Qt用来显示和编辑纯文本的窗口。
2024-01-05 13:45:39
551
原创 qt之命名规范
2.函数名 首字母小写,单词间首字母大写,例myTest,单词间也可以用_分开,例my_test。1.类名 首字母大写,单词间首字母大写,例MyClass。整行移动 Ctrl+shift+上下键。自动对齐 Ctrl+i。注释 Ctrl+/运行 Ctrl+r。编译 Ctrl+b。查找 Ctrl+f。
2024-01-03 23:08:57
583
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人