- 博客(370)
- 资源 (5)
- 收藏
- 关注
原创 C++ std::future的使用
的核心价值在于 简化异步编程的复杂性和 提供类型安全的并发控制,适用于需要结果同步、异常处理或灵活任务调度的场景。其设计平衡了性能与易用性,是现代 C++ 并发编程的基石工具。
2025-04-24 14:06:48
785
原创 C++11 多线程
std::mutex,最基本的 Mutex 类。std::recursive_mutex,递归 Mutex 类。std::time_mutex,定时 Mutex 类。std::recursive_timed_mutex,定时递归 Mutex 类。下面以 std::mutex 为例介绍 C++11 中的互斥量用法。
2025-04-24 13:58:14
553
原创 线程池的使用
该线程池实现简洁高效,适合固定任务类型的场景,但需优化等待机制和扩展任务类型支持。通过结合原子变量与条件变量,平衡了性能与资源消耗,可作为轻量级并发工具的基础框架。
2025-04-24 11:47:36
282
原创 std::condition_variable 条件变量的使用
作用: 是 C++ 多线程编程中用于线程间同步的核心工具,其使用场景和核心价值体现在以下几个方面: 线程需要等待特定条件成立 当某个线程必须等待共享资源的某个状态(如队列非空、任务完成、数据就绪等)时,使用条件变量可以避免忙等待(busy-waiting),从而减少 CPU 资源的浪费。需要多线程协作完成复杂逻辑 当多个线程需要按特定顺序协作时(如线程 A 完成预处理后通知线程 B 执行),条件变量提供了一种高效的协调机制。避免轮询和资源浪费 若用 实现等待,会导致
2025-04-24 10:53:02
240
原创 cv::cuda::GpuMat 中的 flags、data、refcount、datastart、dataend 和 allocator 含义
在 OpenCV 的类中,成员变量flagsdatarefcountdatastartdataend和allocator。
2025-04-13 14:14:22
436
原创 C++ 计时的方法
C++11标准方法<chrono>库是首选,兼顾高精度、跨平台和易用性。传统方法<ctime>适用于简单场景,但精度和可靠性较低。扩展方案:平台特定API或第三方库可作为补充,但需权衡兼容性。
2025-04-02 17:02:11
553
原创 git 创建分支
切换到想依据哪个分支为基础而建立新的分支;创建新的分支,给定新的分支的名字;5,修改一点东西,然后提交commit + push,这样就可以在库中看到该分支了;1,git clone下来一个;
2025-04-02 10:02:20
112
原创 C++灵活的多态行为扩展
此代码通过虚函数与模板策略模式的结合,实现了灵活的多态行为扩展。核心优势在于运行时动态切换策略类型,同时保证了资源安全和代码可维护性。
2025-03-24 15:24:59
180
原创 git 如何实现回退版本
git reset --hard commit-id a176078bdbe215a3ee30b84f8de54721c76f59b9git reset --hard HEAD~1git push -f origin lyb/lyb_develop
2025-03-20 14:54:20
109
原创 git cherry-pick将某一个commit拉到另外的分支
git cherry-pick 上面复制的那个要合并的commit id // 提交该commit到当前分支。git log //查看提交的日志,复制要合并的那个分支的commit id(简略ID-前8位数)git checkout 要合并的分支 // 切换到要合并的分支上。git push // 推送到B分支远程仓库。git pull 拉一下B分支代码。
2025-03-14 09:17:11
169
原创 git merge 将develop合并到自己的分支
git reset --hard HEAD~ 回退,不需要。git merge develop 进行检查。Terminal中选择Git Bash;
2025-03-14 06:51:26
126
原创 std::unique_lock<std::mutex> lock(_mutexSwathDone);
这种写法通常用于多线程编程中,确保某段代码(如临界区)在同一时间只能被一个线程执行。是C++中用于管理互斥锁(mutex)的常见用法。
2025-02-18 14:14:28
300
原创 在 Visual Studio 中使用 C++ 利用 dump 文件查找问题原因和崩溃点
在 Visual Studio 中使用 C++ 利用 dump 文件查找问题原因和崩溃点,可按以下步骤操作:
2025-02-18 11:17:29
646
原创 C++ Lambda表达式
5. Lambda 的深入理解本质是什么?Lambda 的底层是一个匿名类的对象。编译器会做以下事情:生成一个匿名类,类中重载了operator()(即函数调用运算符)。捕获的变量会变成这个类的成员变量。当你调用 Lambda 时,实际是调用这个对象的operator()。等价于public:private:int x_;为什么好用?简化代码:避免定义大量只用一次的小函数。灵活捕获变量:直接使用上下文变量,无需传递参数。支持函数式编程:可以像数据一样传递函数逻辑(如作为参数传给算法)
2025-02-18 10:35:53
560
原创 Hu矩的原理及应用
什么是Hu矩Hu矩是一种描述图像形状特征的数学工具,核心思想:提取图像的形状信息,并对这些信息进行归一化,使得它们对图像的平移、旋转和缩放具有不变性。简单说,Hu矩就是一串数字,这串数字可以唯一的描述图像的形状特征,而且不管图像怎么移动、旋转和缩放,这组数字都不变。Hu矩的原理1,几何矩:图像的像素值的加权和,可以用来描述图像的形状。如:零阶矩(面积):图像中所有像素值的总和;一阶矩(质心):图像的重心位置;二阶矩(方向):图像的伸展方向。
2025-02-11 11:13:12
1081
原创 findcontours 函数,为什么在多进程下会崩掉
经细查代码,未发现原因,怀疑CvMemStorage在多进程下不安全,但看内部详细代码,觉得无问题。若广大网友有类似的经验,请留言,感激不尽!但通过设置 cv::setNumThreads(1);
2025-02-07 14:05:49
98
原创 Share_ptr 与 unique_ptr的区别
特性unique_ptrshared_ptr所有权管理独占所有权共享所有权复制不支持复制,仅支持移动支持复制引用计数无有引用计数性能轻量级,性能开销小较重,引用计数的维护会增加开销适用场景资源的唯一所有者,生命周期由一个对象控制资源有多个所有者,共享资源使用unique_ptr:当你有明确的所有权控制,并且资源只会有一个所有者时。使用shared_ptr:当资源需要多个所有者,且它的生命周期由多个对象共享时。
2025-01-16 11:31:44
853
原创 哈希原理及其简单应用
2、插入元素,将其放置于hash表中(按照取余操作进行存储);3、查找元素,先找到对应的hash值,然后在hash值对应的去找。
2025-01-14 11:31:09
358
原创 merge和cluster的区别,在图像中
cluster:聚类,像两个间隔2um的cluster成一类,这个称为聚类。merge:合并,如:缺陷的开闭等操作;
2025-01-13 15:40:32
86
原创 git的基本操作
1、clone和pull区别,clone是克隆,pull是拉取;clone:从远程服务器克隆一个一模一样的版本库到本地,复制整个版本库;Pull:从远程获取最新版本并merge到本地,pull = fetch + merge origin/远程分支名,fetch更安全一些;2,git checkout develop切换到develop;3、checkout:切换到其他版本;1,拉去develop代码;
2025-01-10 10:40:29
200
原创 野指针bug
但cu和UnitList[Index]都还是有值的,只是指向的地址没有数据;所以下次去判断UnitList[Index] == nullptr不会通过,会继续往下,那利用到这块堆上的时候就有问题了;解释:cu和UnitList[Index]都指向同一块地址,他们在栈上的不同位置;delete cu;:将堆上的地址给清掉;
2025-01-10 10:21:41
520
原创 读取txt中的内容,利用正则表达式抽取出其中的内容,写入到csv中
读取txt中的内容,利用正则表达式抽取出其中的内容,写入到csv中,包含_0.bmp,抽取出它的名字,后面的offset。
2025-01-07 13:17:45
226
原创 C++ 标准模板库STL--Pair
改:能,修改first和second的值;查:能,修改first和second的值;pair:用于存储两个。
2024-12-31 11:10:20
453
亚像素模板匹配—计算图像之间的亚像素偏差
2020-11-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人