自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 无人机飞行模式(Ardupilot和MAVLink协议)(STABILIZE、ALTITUDE HOLD、LOITER、GUIDE、AUTO、LAND、RTL)

LOITER:LOITER模式是控制无人系统的一种更易访问的模式,一旦用户不向RC控制器提供输入,它便保持无人系统的当前位置,方向和高度。高度保持:一种更舒适的控制无人系统的模式,用户无需担心为无人系统保持固定的高度,因为自动驾驶仪会自动控制 PID控制器控制无人机的高度。LAND和RTL模式可用于违反导航安全和地理围栏的情况,例如,可以在自动驾驶仪上编程,如果电池电量低于一定水平,则无人系统需要立即降落或返回起始位置 自动。RTL模式,也称为返回发射,将迫使无人系统返回执行起飞的起始位置。

2024-07-17 20:10:41 923

原创 Log4Cpp

log4cpp

2024-05-30 14:21:14 100

原创 SerialPort

【代码】SerialPort。

2024-05-30 12:18:36 96

原创 UdpSoket

【代码】UdpSoket。

2024-05-30 10:54:51 112

原创 TcpThread

【代码】TcpThread。

2024-05-30 10:52:55 107

原创 TcpSocket

【代码】TcpSocket。

2024-05-30 10:49:59 114

原创 TcpServer

【代码】TcpServer。

2024-05-30 10:21:27 98

原创 简单说明GPL和LGPL协议

GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源 代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

2024-05-06 09:30:23 1176

原创 std::function详解

std::function是一个函数包装模板,可以包装下列这几种可调用元素类型:函数、函数指针、类成员函数指针或任意类型的函数对象(例如定义了operator()操作并拥有函数闭包)。std::function对象可被拷贝和转移,并且可以使用指定的调用特征来直接调用目标元素。当std::function对象未包裹任何实际的可调用元素,调用该std::function对象将抛出std::bad_function_call异常。

2024-04-09 10:19:22 3678

原创 C++11中的lambda函数

默认情况下,lambda函数是const函数,当lambda函数使用值传递时,mutable使得函数可以const限制,可以修改值传递进来的参数。:捕获列表,捕获列表出现在lambda函数的起始处,[]也被称为lambda的引出符,编译器根据引出符判断接下来的代码是否是lambda函数。[=,&a,&b] :表示引用传递的方式捕获变量a和b,值传递方式捕获所有父作用域变量。statement:函数体实现,除了可以使用参数列表的参数,也可以使用捕获列表的值。[var] :表示值传递方式捕获变量var。

2024-03-11 11:12:32 414

原创 v-model和:model的区别

场景:在使用el-form时,form上面使用的是:model;而在表单里面的el-input使用的是v-model。那么这两者有什么区别呢?

2024-02-23 12:13:42 782 1

原创 详解vue中中localStorage的使用方法

对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和sessionStorage。

2024-02-23 10:03:03 886

原创 vue中template原理

在Vue中,每个组件都会有一个对应的虚拟DOM数,在更新时,Vue会通过对比新旧虚拟DOM,找出需要更新的节点,并将其更新到真实DOM中。其中,v-bind能够绑定Vue实例中的数据到DOM元素中,v-model则能实现双向绑定,v-for可以实现循环渲染,v-if则可以实现条件渲染等功能。总的来说,Vue的template语法是非常强大和灵活的,Vue能够通过将其解析成虚拟DOM,实现高效的数据更新,让我们不需要关注手动操作DOM的细节,让我们专注在数据处理和业务逻辑上。

2024-02-01 12:12:39 722

原创 HTML常用标签

定义 HTML 文档… 文档的信息HTML 文档的元信息文档的标题文档与外部资源的关系文档的样式信息… 可见的页面内容注释。

2024-01-12 11:00:14 409

原创 C++友元函数和友元类(C++ friend关键字)

例如将类 B 声明为类 A 的友元类,那么类 B 中的所有成员函数都是类 A 的友元函数,可以访问类 A 的所有成员,包括 public、protected、private 属性的。如果声明了类 B 是类 A 的友元类,不等于类 A 是类 B 的友元类,类 A 中的成员函数不能访问类 B 中的 private 成员。如果类 B 是类 A 的友元类,类 C 是类 B 的友元类,不等于类 C 是类 A 的友元类。注意,友元函数不同于类的成员函数,在友元函数中不能直接访问类的成员,必须要借助对象。

2023-12-13 10:09:13 1200

原创 Qt 面试指南

栈区(stack)堆区(heap)抽象数据结构:后进先出全局区(静态区)(static)文字常量区程序代码区栈是自动分配释放,一级缓存,类似数组的结构。堆是由程序员分配释放,二级缓存,速度慢些,先进后出。

2023-12-13 09:28:44 1591

原创 static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符)

C/C++类型转换的本质在 C/C++ 中,不同的数据类型之间可以相互转换:无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换(显式类型转换)。隐式类型转换利用的是编译器内置的转换规则,或者用户自定义的转换构造函数以及类型转换函数(这些都可以认为是已知的转换规则),例如从 int 到 double、从派生类到基类、从type *到void *、从 double 到 Complex 等。type *是一个具体类型的指针,例如int *、double *、

2023-12-05 12:19:12 859

原创 vs番茄助手突然不显示并且重新安装也不显示

2023-12-01 16:38:16 808

原创 Qt信号槽机制和事件机制的理解

唯一不同的是:槽还可以和信号连接在一起,在这种情况下,每当发射这个信号的时候,就会自动调用这个槽。内省功能对于实现信号和槽是必需的,并且允许应用程序的开发人员在运行时获得有关QObject 子类的“元信息”(meta-information),包括一个含有对象的类名以及它所支持的信号和槽的列表。(3) 信号与槽在多线程时支持异步调用在单线程应用时,你可以把信号与槽看成是一种对象间的同步通信机制,这是因为在这种情况下,信号的释放过程是阻塞的,一定要等到槽函数返回后这个过程才结束,也就是不支持异步调用。

2023-11-29 14:52:09 1349

原创 C++工程师面试必问面试题

答:当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。智能指针的一种通用实现技术是使用引用计数。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;

2023-11-29 09:35:39 450

原创 Qt5.13 编译QFtp

Qt5.13 编译QFtp源码

2022-12-13 10:44:39 113 1

原创 log4cpp 的使用

log4cpp 使用

2022-11-03 14:58:58 1019

原创 QVector对存储数据的释放

QVector对存储数据的释放

2022-08-26 11:10:36 1651

原创 Qt删除文件夹及文件

Qt删除文件夹及文件夹下的文件

2022-08-24 18:51:53 10565 1

原创 C++中的前置声明

C++头文件中关于类和结构体的前置声明

2022-08-24 18:48:08 1574

原创 vector的几种清空容器(删除)办法

vector清空内存的方法

2022-08-09 09:31:20 4916

原创 Ribbon风格菜单栏

Ribbon风格界面介绍

2022-07-11 17:18:19 730

原创 QGIS开发入门知识

QGIS开发入门知识

2022-07-11 17:17:06 1482

原创 QGIS二次开发环境搭建

QGIS二次开发环境搭建

2022-07-05 16:54:40 1518

原创 H264 视频码流分析

H264视频码流分析

2022-06-01 15:39:48 1576

原创 QTableView插入QCheckBox复选框

通过实现QAbstractItemDelegate的paint()函数。这种方法和《C++_GUI_Qt4_编程(第二版)》中第十章的自定义委托例子,画星星的作法是一样的,都是通过 QApplication::style()->drawControl(QStyle::CE_CheckBox,&check_box_style_option,painter);这个函数,只不过选择的元素是QCheckBox的。#ifndef CCHECKBOXMODEL_H#define CCHECKBOX

2022-04-28 15:33:25 3208 1

原创 QTableView 实现在单元格添加下拉框 QComboBox

1)通过setIndexWidget方法实现实现:1)继承代理类,实现自定义代理,网上很多教程,这里不再赘叙;2)更加方便的方法,使用接口:void QAbstractItemView::setIndexWidget(const QModelIndex &index, QWidget *widget);其实QTableWidget的setCellWidget借口内部也是调用 setIndexWidget。示例代码:Widget::Widget(QWidget *parent) : QW

2022-04-28 15:22:09 12984 3

原创 Qt之QTableWidget 表头添加QComBox

重写QHeaderView重写HeaderView,然后设置到对应的tablewidget中去。class CheckBoxHeaderView : public QHeaderView{ Q_OBJECTpublic: CheckBoxHeaderView(int checkColumnIndex, Qt::Orientation orientation, QWidget * parent = 0) : QHeaderView(orientation, parent) { /

2022-04-28 14:48:04 1625

原创 C++中 delete 和 delete[] 的区别

delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存(1). 针对简单类型 使用new分配后的不管是数组还是非数组形式内存空间用两种方式均可 如:int *a = new int[10];delete a; //方式1delete [] a; //方式2此种情况中的释放效果相同,原因在于:分配简单类型内存时,内存大小已经确定,系统可以记忆并且进行管理,在析构时,系统并不会调用析构函数,它直接通过指针可以获取实际分配的

2022-03-24 15:19:55 191

转载 TinyXML2使用教程

TinyXML2使用教程原文转自 http://blog.csdn.net/K346K346/article/details/487504171.TinyXML2概述TinyXML2是simple、small、efficient开源的C++ XML文件解析库,可以很方便的应用到现有的项目之中。非常适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作。TinyXML2详细介绍与源码获取方法详见:TinyXML2官网。2. TinyXML1与TinyXML2对比TinyXML1与TinyXM

2022-03-18 17:59:00 2328

原创 编程设计模式中委托 和代理模式的区别

编程设计模式中委托 和代理模式什么区别?委托更接近于观察者模式。设计模式中,是没有委托模式的,委托是一种机制,用于事件的触发。在java中,实现观察者模式,观察者必须要实现update方法,在被观察者通知时,调用这个方法。观察者模式的缺点是,由于要实现观察者的update方法,所以,耦合比较严重,入侵性强。如果,之前写好的类,要成为一个被观察者,则必须要更改这个类。并且,这个类可能已经有了可以处理问题的方法,但是却还要实现方法。还有,就是语义上的缺点。update方法到底是啥意思呢?这个方法可能是实现通知

2022-03-02 16:27:15 1259

原创 Qt动画入门QPropertyAnimation

Qt动画入门QPropertyAnimationQt封装的动画框架可以很容易实现动画效果。常用的动画类是属性动画QPropertyAnimation。使用QPropertyAnimation实现动画只需要几个简单的设置就可以了。1.创建QPropertyAnimation对象。2.动画对象绑定要实现动画的对象(该对象要继承于QObject)【setTargetObject】。3.动画对象设置要实现动画的属性 ,属性通过Q_PROPERTY宏声明,必须包含属性的读写函数【setPropertyName

2022-03-02 15:12:23 1202

原创 TCP的三次握手和四次挥手

三次握手过程理解第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入E

2022-03-01 21:04:53 68

原创 C++代理模式

代理模式:为其它对象提供一种代理以控制这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介作用。优点:职责清晰。真实的角色只负责实现实际的业务逻辑,不用关心其它非本职责的事务,通过后期的代理完成具体的任务。这样代码会简洁清晰。代理对象可以在客户端和目标对象之间起到中介的作用,这样就保护了目标对象。扩展性好。/** 关键代码:一个是真正的你要访问的对象(目标类),一个是代理对象,真正对象与代理对象实现同一个接口,先访问代理*

2022-03-01 20:53:19 296

原创 C++实现反射机制

1.前言反射(Reflection)是许多语言(如 C#,Java)都拥有的特性,用于在运行时获取类型信息,大大的提高了编程的灵活性,比如利用反射可以极大的简化 json/xml 解析、脚本绑定、属性编辑器等的实现。但是 C++ 并没有提供反射的支持,本文讨论在 C++ 中实现反射机制的一种方式。反射主要特点有以下几点:用map保存了字符串到动态类生成的函数指针的映射。使用类名注册,根据不同的类名字符串构造成不同的类对象。2.具体设计与实现2.1设计思路我的设计思路大致是这样的。(1)为需要

2022-02-09 16:48:02 2751

空空如也

空空如也

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

TA关注的人

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