- 博客(71)
- 收藏
- 关注
原创 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
原创 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
原创 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 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
原创 使用管道同步和传递多个协程的数据
在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++多态的应用
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
原创 使用分离轴定理(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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人