自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 资源 (1)
  • 收藏
  • 关注

原创 实现寻找最近创建的文件并写入数据

要在C++中实现这两个功能,可以使用标准库来处理文件操作和时间获取。这个示例演示了如何在C++中实现文件创建和数据写入的基本功能,可以根据具体需求进行扩展和优化。1.在active函数中实现:创建Profile/###.cvs,其中###代表当前时间。2.在write函数中实现:找到时间最近的cvs文件,写入数据。

2024-07-08 17:20:22 166

原创 opencv灰度变换

图像处理中的灰度反转、对数变换和幂律(伽马)变换是一些常见的技术,主要用于图像增强、对比度调整以及特定场景的图像预处理。下面详细介绍这些技术的使用场景,并给出对应的C++代码示例。

2024-06-07 11:46:54 399

原创 opencv锐化卷积核的定义和应用(图像锐化)。

卷积核(Kernel)是一个小矩阵,它用于在图像处理操作中,比如模糊、锐化、边缘检测等。卷积核通过卷积操作应用于图像像素,产生新的图像。在锐化操作中,我们通常使用一个 3x3 的卷积核。float(3, 3) <<-1, 9, -1,这个卷积核的中心值为 9,其他值为 -1。中心值为正数且较大,表示增强当前像素的权重,而周围的 -1 表示减去周围像素的值。

2024-06-07 11:25:54 516

原创 图像压缩方案比较

图像压缩是通过减少图像文件大小来节省存储空间和带宽的技术。OpenCV可以用于图像压缩,常见的方法包括调整图像质量(针对JPEG)和改变图像尺寸。以下是一个使用C++和OpenCV实现图像压缩的示例。

2024-06-07 11:24:23 236

原创 浅拷贝与深拷贝

浅拷贝过程最大的问题是共享同一块内存,容易引发内存问题,下面这个例子就是浅拷贝在析构的时候出现段错误。

2024-06-07 09:17:32 156

原创 c++序列化和反序列化简单demo

序列化和反序列化是指将数据结构或对象转换为一种可以存储或传输的格式(序列化),然后再将其恢复为原来的数据结构或对象(反序列化)。在C++中,通常使用标准库和一些辅助库来实现序列化和反序列化。下面是一个简单的示例,演示如何使用C++实现对象的序列化和反序列化。我们将定义一个简单的Person类,并实现将其序列化为文件和从文件反序列化的功能。

2024-06-06 15:16:34 403

原创 值传递过程中的开销

按值传递会造成大量的内存复制,增加内存占用和复制开销。按引用传递则避免了不必要的拷贝,仅需传递指针,节省内存和时间。因此,在处理大字符串时,按引用传递是更高效的选择。

2024-06-06 15:15:15 375

原创 是否引用传递一定优于值传递

在C++中,传递参数时可以选择按值传递、按引用传递或按指针传递。每种方式有其适用场景和特点。具体到int。

2024-06-06 15:13:21 380

原创 `ImPlot::PlotScatter` 和 `ImPlot::PlotLine`介绍

ImPlot是一个用于绘制图表的即插即用的图形库,通常与Dear ImGui配合使用。在ImPlot中,和是两个用于绘制散点图和折线图的函数。用于绘制散点图,显示一组数据点而不连接它们。

2024-06-06 08:42:59 262

原创 动态规划详细解释

动态规划(Dynamic Programming,简称DP)是一种用于解决复杂问题的算法思想,特别适用于具有重叠子问题和最优子结构性质的问题。它通过将问题分解为更小的子问题,并保存这些子问题的解以避免重复计算,从而提高算法的效率。动态规划通常用于优化问题,如最短路径、最长公共子序列、背包问题等。重叠子问题(Overlapping Subproblems):最优子结构(Optimal Substructure):状态(State):状态转移方程(State Transition Equation):定义状态:

2024-06-05 11:32:41 976

原创 动态规划实现斐波那契数列,时间复杂度和空间复杂度解析

函数定义定义了一个名为的函数,它接收一个整数n,返回类型为,用于表示第n个斐波那契数。处理基本情况如果n小于或等于1,直接返回n,因为斐波那契数列的第0个和第1个数分别为0和1。初始化变量初始化prev2和prev1分别为0和1,这两个变量用于存储前两个斐波那契数。curr用于存储当前计算的斐波那契数。计算斐波那契数i <= n;++i) {使用一个循环从2开始迭代到n,每次循环中计算当前的斐波那契数curr,并更新prev2和prev1。返回结果返回第n个斐波那契数。时间复杂度。

2024-06-05 11:31:25 308

原创 斐波那契的实现,尽可能降低时间复杂度和空间复杂度。

时间复杂度低:使用动态规划的实现,时间复杂度为 (O(n))。空间复杂度低:使用递归实现,时间复杂度为 (O(2^n)),但通过尾递归优化可以在某些编译器上实现空间复杂度为 (O(1))。选择使用哪种实现方式取决于具体需求。如果需要高效的计算,动态规划是更好的选择。如果代码的简洁性和易读性更为重要,并且输入规模较小,递归实现也是一种可行的方法。

2024-06-05 11:30:29 570

原创 qml与Qwidget绘制动画的优缺点

QML和Qt Widgets都提供了绘制动画的能力,但它们在实现方式和使用场景上有一些区别。

2024-06-05 11:01:24 493

原创 qml实现简单的运动动画

在这里,我们创建了一个可见的窗口,宽度为640像素,高度为480像素,标题为"Simple Animation"。这段代码是一个使用Qt Quick的QML语言编写的简单动画示例。这些语句导入了Qt Quick的模块,使我们可以使用Qt Quick中定义的各种类型和属性。属性分别指定了矩形的宽度和高度,颜色属性为"red"表示矩形填充红色。这段代码实现了一个简单的动画,让一个红色矩形在窗口中来回移动。在窗口中,我们创建了一个矩形,并为其指定了一些属性。类型的缓动,这个类型使动画有一个缓慢的开始和结束。

2024-06-05 10:56:47 301

原创 qt中qml调用cpp中的逻辑

在Qt中,QML可以通过多种方式调用C++中的逻辑。常见的方法包括使用QmlEngine和将C++对象暴露给QML,通过信号和槽机制进行交互,或通过QML插件进行扩展。以下是一个简单的示例,演示如何在QML中调用C++代码。

2024-06-05 10:10:37 521

原创 左值和右值

左值:表示内存中的某个具体位置,可以获取地址,具有持久性。右值:表示临时对象或字面量,不能获取地址,具有短暂性。左值引用:引用左值。右值引用:引用右值,通常用于优化临时对象的处理。理解左值和右值的区别对于编写高效、健壮的C++代码至关重要,尤其是在涉及引用、指针和资源管理时。

2024-06-05 09:39:50 359

原创 AZStd::get<1>(profile_info_) = std::move(buffer)解释

置于一个有效的但未定义的状态。这通常用于优化性能,因为移动通常比复制更快,特别是当对象包含大量资源或数据时。这行代码在 C++ 中涉及了几个重要的概念:结构化绑定(尽管这里没有直接使用,但通常与。这个容器(可能是元组或类似容器)中索引为 1 的元素,并将。用于访问元组(或类似容器)中的元素,以及。综上所述,这行代码的意思是:将。

2024-05-28 16:56:25 221

原创 Qt中信号和槽解决了什么问题

信号和槽解决了什么问题。

2024-05-22 17:08:18 174

原创 std::make_pair 介绍

是 C++ 标准库中的一个实用函数,用于在编译时构造一个std::pair对象。std::pair是一个模板类,它包含两个数据成员,通常称为first和second。函数提供了一种方便的方式来初始化std::pair对象,而无需显式调用其构造函数。

2024-05-22 16:52:42 644

原创 QVector<T>::push_back 介绍

则允许你直接传递构造函数的参数列表,以便在容器中直接构造对象。方法本身的调用方式总是相同的:你传递一个值或可以隐式转换为。但是,可以通过不同的方式构造或获取这个值,这可能会让你觉得。方法只有一种基本的使用方式,即直接传递一个类型为。请注意,尽管有多种方式可以获取或构造值并将其传递给。以下是一些示例,展示了如何使用。的值或可以隐式转换为。

2024-05-22 16:51:04 310

原创 堆内存与栈内存

在C++中,内存管理是一个关键的概念,特别是堆内存(heap)和栈内存(stack)的区别。了解这两者的区别有助于编写高效和安全的代码。

2024-05-16 09:48:56 353

原创 std文件中写入内容基础

和类用于文件写入,前者专用于写入,后者可用于读写。打开文件时可以指定不同的模式,如和,根据需求选择合适的模式。多个模式可以通过组合使用。理解这些模式和如何组合使用它们,可以帮助你更灵活和高效地进行文件操作。

2024-05-16 09:48:18 330

原创 std文件中写入内容基础

和类用于文件写入,前者专用于写入,后者可用于读写。打开文件时可以指定不同的模式,如和,根据需求选择合适的模式。多个模式可以通过组合使用。理解这些模式和如何组合使用它们,可以帮助你更灵活和高效地进行文件操作。

2024-05-15 15:34:17 471

原创 一次基类类型对象无法被传递问题的分析

因此,当你试图传递 Triangle 或 Rectangle 的对象(它们都是 CharShape 的派生类)到 fun 函数时,会发生切片(slicing)现象,即只复制了基类 CharShape 的部分(不包括派生类的任何成员),并且因为基类是一个抽象类,所以无法直接创建这个副本。此外,即使 CharShape 不是抽象的,传递基类对象副本到 fun 函数也不会调用派生类的 Show() 方法,因为函数内部处理的是基类对象,它只知道基类的 Show() 方法(如果存在的话)。

2024-05-11 10:10:44 483

原创 利用初始化列表调用基类的构造函数

【代码】利用初始化列表调用基类的构造函数。

2024-05-11 09:59:02 357

原创 模拟栈行为

【代码】模拟栈行为。

2024-04-30 15:28:24 98

原创 浅入浅出理解栈

Item和Stack。

2024-04-29 16:50:39 178

原创 浅入浅出了解指针

指针是程序员不可避免要去了解的,但是相比于哪些要深入了解指针的文章,本文主要是让读者对指针有清晰明了的认知,复杂的指针用法并不涉及。

2024-04-28 14:50:13 176

原创 PLC数据类型介绍

需要注意的是,虽然 PLC 和 C# 中的数据类型可能有一定的对应关系,但在进行数据交换时仍需要考虑数据的编码、大小端格式、数据范围等因素,以确保数据能够正确地传输和解释。在 PLC(可编程逻辑控制器)中,数据块是一种用于存储数据的结构,它可以包含不同类型的数据,例如整数、浮点数、布尔值等。整数类型:在 PLC 中常见的整数类型有 Int、DInt、SInt 等,对应到 C# 中可以使用 int、short、byte 等整数类型。字符串类型:在 PLC 中也有字符串类型,但与 C# 中的字符串类型不同。

2024-04-01 16:35:08 867

原创 TCP服务端主动向客户端发送数据

在此基础上,要修改服务端代码,使其能够每秒向客户端发送当前时间,你需要添加一个循环,每次循环发送当前时间给客户端。同时,你需要在客户端代码中添加接收服务端发送的数据的逻辑。这样修改后,服务端每秒钟向客户端发送当前时间,而客户端接收并打印出来。

2024-04-01 16:09:26 934

原创 tcp服务端,时刻在线

在此基础上,将服务端改为时刻在线。

2024-04-01 16:01:19 537

原创 C++ TCP 服务端和客户端通信的例子

这个例子中,服务器端和客户端之间通过 TCP 进行通信。服务器监听端口8080,并等待客户端连接。一旦有客户端连接进来,服务器端会接收来自客户端的消息,然后向客户端发送一条消息。客户端首先连接到服务器,然后发送一条消息给服务器,然后从服务器接收一条消息。客户端接收来自服务器的响应数据。10. 连接关闭或其他操作。

2024-04-01 15:24:50 580

原创 关于c# 没有显式头文件的优劣分析

在C#中,没有像C或C++中的显式头文件(header files)的概念。在C#中,源代码文件通常包含类、接口、结构和其他类型的定义,这些源文件直接包含在项目中,并且通过命名空间(namespace)来组织代码。总的来说,虽然C#没有显式的头文件概念使得代码更加简洁和易于维护,但是在大型项目中,C++的显式头文件机制有助于提高编译效率和代码的模块化。当涉及到C#中没有显式头文件的概念,而C++中有头文件时,两种语言之间存在一些差异,这些差异会影响到代码组织、可读性、编译速度等方面。

2024-04-01 11:31:56 570

原创 C1083: 无法打开包括文件: “pthread.h”: No such file or directory`

中定义的功能,并且你想在Windows平台上进行编译,你可能需要考虑在Windows上使用类似的多线程库,如Windows API 或者 POSIX for Windows。是一个POSIX线程库的头文件,通常用于在Unix/Linux系统上进行多线程编程。中的功能在Windows平台上也有等效的实现,你可以尝试使用Windows平台上的替代头文件。:在代码中使用条件编译,根据操作系统的不同包含不同的头文件。头文件的,因为Windows使用不同的多线程库。解决这个问题的方法取决于你的代码是否真的需要。

2024-03-29 14:19:27 1206

原创 error C1083: 无法打开包括文件: “unistd.h”: No such file or directory`

然而,在Windows平台上编译时,编译器通常不会提供此头文件。中的功能在Windows平台上也有等效的实现,你可以尝试使用Windows平台上的替代头文件。:在代码中使用条件编译,根据操作系统的不同包含不同的头文件。中定义的功能,你可能需要在Windows平台上寻找。:如果可能的话,修改代码逻辑,以避免使用需要。解决此问题的方法取决于你的代码是否真的需要。如果不是,可以尝试删除对该头文件的引用。的替代版本,或者修改你的代码以不依赖于。:检查你的代码中是否确实需要。如果你的代码确实需要。

2024-03-29 14:18:39 1426

原创 c# modbus 客户端 读modbus 输入寄存器的值

/ Modbus TCP默认端口号。

2024-03-29 10:18:53 284

原创 回调函数例子

回调是一种常见的编程模式,其中一个函数被传递给另一个函数,以便在某个事件发生时执行。函数接受一个整数值和一个回调函数作为参数。在函数内部,它执行一些操作,并在特定条件(这里是值大于10)下调用传递的回调函数。作为回调函数传递进去。当条件满足时,回调函数会被调用,并输出相应的信息。请注意,这只是一个简单的示例,实际应用中可能涉及更复杂的场景和数据传递。

2024-03-29 09:51:54 222

原创 PlcException error code ReadData error msg: Received 12 bytes: ‘32-0 2-00-00-00-00-00-00

如果还是不行,可以考虑重启电脑,重新建项目,也许能解决。博图这个app 的bug太多了。

2024-03-29 09:32:53 277

原创 c#通过s7与plc通信

完成以上步骤后,您的TIA Portal项目应该能够与您的S7 PLC进行通信了。确保配置正确并进行测试,以确保通信正常运行。要配置西门子S7通信,首先确保你有一些必要的信息,比如PLC的IP地址,以及需要访问的数据块。上层软件如何通过s7通信读取数据块。

2024-03-29 09:22:39 628

原创 布局选项卡式文档

在 Qt 中,要实现选项卡式文档,通常使用 QTabWidget 控件。你可以将这两个 QWidget 放置在 QTabWidget 中,并将 QTabWidget 添加到主窗口中,从而实现选项卡式布局。要将这两个 QWidget 设置为 Tabbed Document(选项卡式文档),你需要将它们作为文档窗口添加到主窗口中,并使用适当的布局管理来实现选项卡效果。通过这样的方式,你可以将这两个 QWidget 设置为 Tabbed Document,并在主窗口中以选项卡的形式显示。

2024-03-20 17:29:43 135

热键管理应用(pc)端

新建/管理 热键

2019-01-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除