自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 B样条曲线对指定点进行曲线拟合

【代码】B样条曲线对指定点进行曲线拟合。

2025-03-12 11:16:24 342

原创 python解析xls文件

在 Python 中,解析.xls文件通常使用xlrd库。xlrd是一个强大的库,可以读Excel 文件(.xls格式)的内容。

2025-01-10 08:55:45 208

原创 python线程与C++线程之间的区别

Python 线程适合 I/O 密集型任务,使用简单,但受到 GIL 的限制,性能在 CPU 密集型任务中较差。C++ 线程适合 CPU 密集型任务,性能更高,灵活性更强,但需要开发者更仔细地管理线程安全和资源。

2025-01-04 16:36:53 446

原创 python的线程与异步函数

在 Python 中,线程和异步函数都是实现并发的方式,但它们的工作方式和适用场景有所不同。

2025-01-04 08:37:11 557

原创 C++ lambda表达式回调使用

在 C++ 中,Lambda 表达式是一种简洁的方式来定义匿名函数。它们可以用作回调函数,允许在需要的地方传递代码块。下面是一些使用 Lambda 表达式作为回调的示例。

2024-12-31 15:23:54 546

原创 C++线程池的使用

public:private:// 工作线程// 任务队列// 保护任务队列的互斥锁// 条件变量bool stop;// 停止标志// 构造函数++i) {for (;;) {});return;// 如果停止并且任务队列为空,退出线程task();// 执行任务});// 析构函数// 设置停止标志// 唤醒所有线程// 等待所有线程结束// 向线程池添加任务// 不允许在停止状态下添加任务});// 将任务添加到队列。

2024-12-31 15:09:06 418

原创 回调机制实现观察者模式

在回调机制中,可以注册多个回调函数,以便在特定事件发生时依次调用它们。下面是一个示例,展示如何在 C++ 中实现一个简单的事件管理器,支持注册多个回调函数。在实现观察者模式时,主题对象(Subject)可以注册多个观察者(Observer),当状态变化时,主题会调用所有观察者的回调函数。观察者设计模式,允许对象在状态变化时通知其他依赖对象,通常通过回调函数实现。

2024-12-31 14:47:03 240

原创 回调监听与多线程监听

回调监听和开一个线程用作监听是两种不同的设计思想,尽管它们在某些方面可能会有相似之处,但它们的实现和用途是不同的。

2024-12-31 14:23:38 438

原创 shell脚本编排python脚本文件

【代码】shell脚本编排python脚本文件。

2024-12-30 14:10:26 184

原创 python脚本并行处理事件

来触发各自的事件,并且主任务会等待这些事件的发生。来触发各自的事件,可以为每个任务创建一个独立的。来并行执行多个任务。每个任务会在执行过程中通过。

2024-12-15 19:42:01 96

原创 python脚本等待事件完成

虽然它们不能直接结合使用,但可以通过一些方式实现类似的功能。如果在异步代码中等待一个事件的完成,可以使用。模块提供的一个异步事件类。下面是一个示例,展示了如何使用。在 Python 中,来实现等待事件完成的功能。是两种不同的并发模型。

2024-12-15 19:07:17 289

原创 python通过连接mqtt服务端

在 Python 中,可以使用paho-mqtt库来连接到 MQTT 服务器(也称为 MQTT broker)。

2024-11-25 10:44:46 507

原创 条件变量进行线程之间的同步

【代码】条件变量进行线程之间的同步。

2024-11-18 20:41:44 146

原创 调度的目的

调度的主要目的就是控制任务的执行。调度是一个关键的管理过程,它通过控制任务的执行顺序和资源分配,确保系统高效、可靠地运行。无论是在操作系统、分布式计算还是数据处理工作流中,调度都是实现高效资源利用和任务管理的重要手段。

2024-11-18 10:16:06 344

原创 调度与DAG之间的关联

DAG中的箭头表示任务的依赖关系。调度器的箭头表示任务的执行顺序和调度策略。通过这种方式,可以清晰地看到调度与DAG之间的关系:调度器根据DAG的结构来安排任务的执行。

2024-11-18 09:57:34 242

原创 go语言对heap方法对同优先级的元素遵循先进先出的顺序

在 Go 语言的包中,heap.Pop()方法并不保证对于同优先级的元素会遵循先进先出(FIFO)的顺序。堆的主要特性是根据优先级来组织元素,而不是根据插入顺序。

2024-11-15 09:44:14 199

原创 C++根据特定字符截取字符串

在 C++ 中,如果根据特定字符进行字符串的截取,可以使用类的成员函数find()来查找字符的位置,然后使用substr()来截取字符串。以下是一个示例,展示了如何根据指定字符截取字符串。

2024-11-12 16:05:07 692

原创 git常用操作指令

【代码】git常用操作指令。

2024-11-06 22:06:05 628

原创 git拉取最新的代码并且不保留本地的未提交更改

其中 feature/taskmanage为分支名称。

2024-11-06 18:18:13 197

原创 使用管道同步和传递多个协程的数据

在Go语言中,管道(Channel)是一种非常强大的机制,用于在协程(Goroutine)之间同步和传递数据。一个管道(通道)并不局限于只在两个协程之间使用。通道可以在任意数量的协程之间进行通信。多个协程可以同时向一个通道发送数据,也可以有多个协程从同一个通道接收数据。

2024-11-05 20:50:02 318

原创 go语言中make函数的功能

在 Go 语言中,make是一个内置函数,主要用于创建切片(slice)、映射(map)和通道(channel)这三种类型的数据结构,并对其进行初始化。make是Go语言中用于初始化复杂数据结构的强大工具,它提供了一种简洁的方式来创建和初始化切片、映射和通道。

2024-11-05 10:22:48 316

原创 go语言连续监控事件并回调处理

go语言中使用回调函数处理事件:事件监测部分(如无限循环中的事件检测逻辑)可以独立于具体的业务处理逻辑。这使得代码的各个部分更加清晰,易于理解和维护。如果需要更改事件处理的方式,只需要修改注册的回调函数,而不需要修改事件监测的核心代码。例如,如果要改变对特定事件的响应行为,只需重新定义一个不同的回调函数并注册即可,不会影响事件监测的机制。// 定义事件处理函数类型// 模拟事件源。

2024-11-04 10:33:58 354

原创 C++中,public、protected和private之间的关系

C++中,publicprotected和private是类的访问修饰符,它们定义了类成员(包括成员变量和成员函数)的访问权限。这些访问修饰符决定了类成员在类内部、继承类以及外部代码中的可见性和可访问性。以下是它们之间的关系和区别。public:最宽松的访问权限,可以在任何地方访问。protected:比private宽松,但比public严格。可以在类内部和继承类中访问,但不能通过对象直接访问。private:最严格的访问权限,只能在类的内部访问。

2024-11-02 22:19:32 550

原创 C++回调函数监听、处理事件

为了实现无限监听事件并在收到事件时立即通过回调函数处理,我们可以在类中创建一个无限循环,该循环会不断检查事件队列并调用相应的回调函数。以下展示如何在C++中实现这样的系统。

2024-11-02 17:53:36 774

原创 go语言回调函数的使用

在 Go 语言中,回调函数是一种将一个函数作为参数传递给另一个函数,在特定的事件发生时被调用的编程模式。以上定义了一个用于处理任务的结构体,可以通过设置回调函数的方式来灵活地处理不同的情况,同时使用读写锁来保证在并发环境下的安全性。c.Lock()= nil {c.onTask(message) // 调用回调函数处理消息。

2024-10-31 12:22:20 416

原创 C++单例模式

C++中的单例模式(Singleton Pattern)是一种常用的软件设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。单例模式通常用于管理共享资源,如配置信息、线程池、缓存等。

2024-10-30 13:07:58 337

原创 C++抽象类的继承多态的使用

抽象类是至少包含一个纯虚函数的类。除了纯虚函数外,抽象类可以有普通的成员变量和已具体实现的成员函数。

2024-10-30 09:38:38 332

原创 C++多态的应用

C++中的多态性是一种允许对象以多种形式存在的能力,它使得同一个操作可以作用于不同的对象上,产生不同的结果。多态性是面向对象编程的核心特性之一,它提供了代码的灵活性和可扩展性。C++中的多态性主要有两种形式:编译时多态(静态多态)和运行时多态(动态多态)。

2024-10-29 21:11:41 159

原创 go语言中interface之间嵌入与struct之间的嵌入实现多态

在Go语言中,结构体(struct)之间可以相互包含,这种特性通常称为“嵌入”(embedding)。当你在一个结构体中嵌入另一个结构体时,被嵌入的结构体的字段和方法就像它们直接声明在新结构体中一样。接口可以组合其他接口,一个接口可以包含另一个或多个接口的所有方法。// 基本接口Method1()// 第一个扩展接口Method2()// 第二个扩展接口Method3()

2024-10-28 22:03:27 551

原创 go语言多态性(接口interface)的使用

在Go语言中,接口类型(interface)完全可以作为一个函数的参数。这是Go语言多态性的一个重要体现,允许函数接受任何实现了接口中定义的方法的类型的实例。定义interface接口包含相应的方法。// MyStruct 是一个结构体,它将实现 Reader 接口// Read 方法使得 MyStruct 实现了 Reader 接口MyStruct是一个结构体,Message作为结构体中的字段,MyStruct结构体实现了Read的方法就这样实现了该接口。

2024-10-28 09:54:26 308

原创 qthread创建线程动态更新GUI数据

QThread可以方便地与 Qt 的信号与槽机制结合使用,实现线程间的安全通信。这使得不同线程中的对象可以轻松地进行交互,而无需担心线程安全问题。例如,可以在一个线程中发射信号,在另一个线程中连接到该信号并执行相应的槽函数,确保数据的正确传递和处理。这种机制使得代码更加清晰和易于维护,因为通信逻辑可以通过直观的信号与槽连接来实现,而不是使用复杂的同步原语。

2024-10-07 21:35:23 410

原创 qtimer动态更新GUI数据

QTimer是一个事件驱动的定时器,它在 Qt 的事件循环中触发。它适用于需要周期性更新 UI 的场景,例如实时监控、动画等。QTimer可以在主线程中使用,也可以安全地用于跨线程更新 UI,因为它的timeout()信号可以在主线程中处理。使用QTimer时,你不需要担心线程安全问题,因为所有的更新都会通过 Qt 的事件系统进行。QTimer不会创建新的线程,因此它不会增加额外的资源消耗。

2024-10-03 19:52:49 637

原创 计算一个运行中的矩形AGV(自动导引车)前方的禁止区域矩形的顶点坐标

在AGV(自动导向车)前方设置一个禁止区域:禁止区可以防止AGV与其他物体或人员发生碰撞,特别是在AGV前方有障碍物时。通过设置禁止区,AGV可以及时减速或停止,避免意外事故。

2024-09-23 15:42:40 241

原创 已知矩形中的任意一点坐标旋转、平移后新的矩形顶点坐标

已知坐标点为矩形内的某一个点,已知矩形的高和宽,旋转、平移参数也是已知的,求取矩形新的四个顶点的坐标。

2024-09-23 11:19:25 349

原创 分离轴检测两个凸多边形是否碰撞

使用分离轴检测多边形是否碰撞选择多边形的所有边,并计算其法线作为可能的分离轴,再将两个多边形投影到这些轴上,最后检查每一个轴上的投影是否有重叠。

2024-09-23 10:17:21 316

原创 通过旋转、平移求取矩形顶点坐标

旋转和平移是几何变换中两个基本的操作,它们可以用来改变图形的位置和方向。

2024-09-02 13:40:34 625

原创 使用分离轴定理(Separating Axis Theorem, SAT)检测多边形形与圆的碰撞

SAT 是一种用于检测两个凸形状之间碰撞的方法,核心思想是:如果两个凸形状在任何可能的分离轴上投影不重叠,则这两个形状不会发生碰撞;反之,如果所有可能的分离轴上投影都重叠,则发生碰撞。

2024-08-30 17:23:58 1065

原创 使用分离轴定理对多边形进行碰撞检测

分离轴定理(SAT,Separating Axis Theorem)进行二维多边形碰撞检测是一种常见且有效的方法,用于二维多边形碰撞检测的基本思想是:如果两个凸多边形不相交,那么存在一条轴(线),使得这条轴上的投影会使两个多边形的投影不重叠。换句话说,如果我们找到一条轴,使得两个多边形在这条轴上的投影不重叠,那么我们可以确定两个多边形不会相交。

2024-08-29 21:16:32 502

原创 C++常用的工具锁

在 C++ 中,为了实现多线程环境下的同步,常用的锁主要包括以下几种: 标准的互斥锁,用于保护共享资源,防止多个线程同时访问造成数据竞争。 一个支持超时的互斥锁,可以在指定时间内尝试获取锁,如果在给定时间内没有获取到锁,则放弃锁的请求。 递归互斥锁,允许同一个线程多次获取同一把锁,而不会导致死锁。RAII(资源获取即初始化)风格的锁,帮助自动管理锁的生命周期,防止忘记解锁。 与 类似,但提供了更灵活的锁定和解锁操作(可以延迟锁定、提前解锁、重新锁定等)

2024-08-21 09:07:25 270

原创 go语言递归、分解处理任务

Go 语言中,可以用递归来分解主任务。假设你要处理一个包含多个任务的列表,可以将每个任务递归地分解为更小的任务。

2024-08-20 23:22:05 487

qt通过按键实现对客户端的断开与连接

qt通过按键实现对客户端的断开与连接

2024-10-12

qt动态获取agv的pose,在静态地图上显示

qt动态获取agv的pose,在静态地图上显示

2024-09-30

windows客户端+qt界面:客户端读取qt界面的数据并传输给服务端

windows客户端+qt界面:客户端读取qt界面的数据并传输给服务端

2024-09-25

linux系统cpu、内存等资源监控

linux系统cpu、内存等资源监控

2024-08-18

选择录入不同的指纹进行保存,如已录入测试即会响应

选择录入不同的指纹进行保存,如已录入测试即会响应

2024-08-18

四阶贝塞尔曲线对数据点进行拟合

python

2024-08-13

循迹小车:循迹电磁感线直线、弯道

循迹小车:循迹电磁感线直线、弯道

2024-08-13

视频流拉取、QT上位机界面显示

视频流拉取、QT上位机界面显示

2024-08-07

open62541库文件

open62541在ubuntu20.04已编译好的源码,编译好的库文件、头文件放在install目录中

2024-07-22

空空如也

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

TA关注的人

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