![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程
事事无所
这个作者很懒,什么都没留下…
展开
-
Eigen使用笔记:如何进行矩阵和标量加减、类似numpy where等方法
主要记录一些Eigen的使用方式.包括std::vector转Eigen数据格式,矩阵和标量的加减法,矩阵的最大值和最小值,提取矩阵的部分数据,以及类似numpy where的功能.原创 2020-09-15 14:10:01 · 5532 阅读 · 1 评论 -
ceres的学习笔记
Ceres solver 是谷歌开发的一款用于非线性优化的库,在谷歌的开源激光雷达slam项目cartographer中被大量使用。本文参考官网教程,编译了静态库使用。原创 2020-09-13 18:12:21 · 730 阅读 · 0 评论 -
c++11设计模式 工厂模式 泛型抽象
当程序中许多的类需要使用共同的接口时,可以考虑工厂模式。传统的抽象工厂实现先定义用于创建不同产品的接口, 但将实际的创建工作留给了派生的具体工厂类。 每个工厂类型都对应派生出的不同产品。本文的工厂模式可以实现不同抽象工厂的异类集合,避免了定义多个工厂类。并且可以传递不同参数来构造生产不同类型的产品。原创 2020-06-07 16:20:04 · 1012 阅读 · 2 评论 -
c++11设计模式 对象池模式 可变参数构造 自动析构
当程序中需要用到一定数量的对象,且创建对象开销比较大时可以考虑使用对象池模式。和线程池类型,需要预先创建一定数量的对象,上层使用时可以从池子中获取创建好的对象。本文的对象池模式实现可变参数构造对象,使用完成之后自动析构。原创 2020-06-06 19:23:35 · 639 阅读 · 0 评论 -
c++11设计模式 观察者模式 任意参数注册 不继承
当对象间存在一对多的依赖关系时,当一个对象被修改时,则会自动通知所有依赖于它的对象。这种情况就可以使用观察者模式。本文的观察者模式消除了传统的观察者模式中观察者和主题的强耦合关系,可以注册任意参数的函数,灵活性更高。原创 2020-06-06 10:33:07 · 565 阅读 · 7 评论 -
c++11设计模式 单例模式 线程安全 泛型单例
本文主要总结几种单例实现的方式,实现单例时需要主要考虑线程安全。再者可以考虑泛型单例模式的实现,可以传入不同个数的参数和不同类型的参数来构造单例。原创 2020-06-05 22:44:44 · 890 阅读 · 0 评论 -
stl的比较器:自定义数据排序方式,set忽略大小写
主要列举了三种比较器的定义方式。分别以vector数值降序排列,自定义数据类型按照某个属性进行排序以及设置set忽略大小写。原创 2020-05-30 20:25:58 · 954 阅读 · 0 评论 -
c++智能指针实现(二)shared_ptr unique_ptr的实现
前面我们介绍了shared_ptr和unique_ptr的基本使用,下面介绍使用c++简单的实现这两种类,包含了一些基本的接口以及如何添加自定义的删除器等。原创 2020-05-24 17:59:54 · 706 阅读 · 0 评论 -
c++智能指针实现(一)c++11中的智能指针
智能指针其实是可以保存指向动态分配内存的对象指针的类,它可以确保在自身周期结束的时候自动的销毁动态分配内存的对象,因此它可以有效的防止内存泄露。c++11中提供了三种智能指针,std::weak_ptr、std::shared_ptr和std::unique_ptr。本文主要介绍三种指针的一般使用以及需要注意的问题。原创 2020-05-24 10:58:02 · 541 阅读 · 0 评论 -
gdb基本使用及多线程调试
在linux环境下进行c++开发调试的时候,不可避免需要用到gdb,它可以控制程序的启动暂停、添加断点、打印堆栈,能够帮助我们尽快的发现问题、定位错误,是一把利器。本文打算总结一下gdb的简单使用原创 2020-05-23 17:43:00 · 2019 阅读 · 0 评论 -
c++线程池实现(四)线程池实现
线程池会预先创建一些线程,循环从同步队列中获取任务,然后执行。如果同步队列为空,线程将处理等待状态,直到上层添加任务到同步队列,唤醒线程执行任务。原创 2020-05-22 23:17:18 · 588 阅读 · 0 评论 -
c++线程池实现(三)同步队列实现
前面设计同步队列的代码,下面详细说说当中间其中具体的实现。包含添加任务,取出任务等功能。涉及到了mutex,unique_lock以及condition_variable等使用。原创 2020-05-21 22:32:29 · 726 阅读 · 0 评论 -
c++线程池实现(二)同步队列实现
同步队列是半同步半异步线程池三层中的中间层——排队层。它一方面提供接口给上面同步服务层添加新任务,一方面提供接口给下面的异步服务层获取任务。上层可能是并发的添加任务,因此同步队列需要保证任务是线程安全的,同时它还需要确保任务队列的长度不会超过上限,避免内存消耗过大。原创 2020-05-19 21:21:15 · 1400 阅读 · 0 评论 -
c++线程池实现(一)半同步半异步线程池
线程池技术可以预先创建一定数量的线程,有任务需要处理时就从池子中安排一个线程去处理。处理完成之后不必销毁线程,会等待后续任务的到来。这样就可以避免频繁的创建和销毁线程,节省系统资源。主要应用于处理大量并发任务,且处理时间较短的项目。本文主要介绍半同步半异步线程池,将从需求开始分析,设计活动流程,最后编写代码实现。原创 2020-05-17 10:30:14 · 945 阅读 · 0 评论