自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

原创 python .txt文件读取及数据处理总结

1、处理包含数据的文件最近利用Python读取txt文件时遇到了一个小问题,就是在计算两个np.narray()类型的数组时,出现了以下错误: TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('<U3') dtype('<U3') dtype('<U3')作为一个Python

2017-11-30 18:27:32 91820 1

原创 Qt5.9.1+VS2015环境搭建

1、软件及工具下载安装QT5.9.1: 安装时,记得把“msvc2015”和“msvc2015_64”安装上(下图中圈红部分) VS2015 :安装时,一定要选择“visual c++”选项(下图中圈红部分) Qt VS Tools: 当安装完VS2015后,接下来安装Vs集成Qt的工具“Qt VS Tools”。 打开VS2015后,在工具栏找到“工具(T)”,在“工具”子菜单栏找到“扩展和更

2017-10-01 10:36:40 15910 2

原创 数据结构与算法C++描述(1)---线性表的基本操作

本文将利用公式化描述的方法,借助于C++语言,建立线性表,实现线性表的创建、删除、元素插入、线性表的合并与拆分等操作。 文中所有代码皆上传至我的码云1、 线性表的定义在参考文献[1]中,对线性表有如下定义:线性表(linear list)是这样的数据对象,其实例形式为:(e1,e2,…,en),其中n是有穷自然数。ei是表中的元素,n是表的长度。元素可以被视为原子,因为它们本身的结构与线性表的结构

2017-09-15 10:57:19 3111

原创 基于Qt的中国男足国家队“世亚预”小组赛出线分析

这个作品诞生于国足第九轮主场对战乌兹比克斯坦前一天,限于个人水平,没能在第九轮比赛前完成。我本想这个作品会“胎死腹中”,结果国足太给力,没让它早早的夭折。在这里,我要感谢Dang,感谢Ren Min,感谢某某TV。。。。。。本文算是利用“国足”的机会对之前学习QT和C++基本知识的总结。包括但不限于类的声明与实现,各个类间的相互调用,多个数组间各个元素的依次比较,Qt中图片的显示,QLineEdi

2017-09-03 22:56:13 1044 2

原创 Ubuntu环境下moos-Ivp编译

1、下载moos-Ivp: 下载地址:http://oceanai.mit.edu/moos-ivp/pmwiki/pmwiki.php,点击Download后,会出现一个新的页面。在此页面中,即可通过提供的SVN地址下载。 SVN下载安装:sudo apt-get install subversion 2、编译工具下载安装: g++: sudo apt-

2017-08-13 16:26:35 3232 10

原创 FFmpeg+Qt实现摄像头(rtsp)实时显示

最近,由于项目需要实时显示摄像头的图像,就学习了FFmpeg的相关知识。其实,在之前利用VLC-QT库已经实现了摄像头的实时显示,但延迟时间太长(1.5秒),因此就转而学习了FFmpeg,最终的延迟时间为0.6s,如果哪位大神有减小延迟的方法,还望不吝赐教。现将自己的实现思路展示出来,以供需要的人参考。这里主要将项目的主干部分videoplayer.cpp文件列出。所有源代码可以去http://gi

2017-08-10 10:49:09 22838 50

原创 分布式id生成数据库号段算法的golang实现

本项目主要利用go语言(go1.20)实现了一种id生成器,并提供了http和grpc两种访问方式。项目中采用的生成算法主要基于数据库号段算法实现。

2023-11-10 11:21:31 1063

原创 基于Qt+FFmpeg的摄像头视频采集及存储系统实现

本文主要基于Qt的利用FFmpeg的视频库完成对网络摄像头(H.264)视频流的解码,显示,格式转换及存储。文章的FFmpeg + Qt的实现摄像头(RTSP)显示实时实现了摄像头视频流的解码及显示工作。接下来就是视频格式转换,主要转换思路是:视频存储(YUV420P) - &amp;gt; H.264-&amp;gt; AVI1,视频存储采用以下方式,将解码后的一帧帧图像(YUV格式)存储到本地...

2018-07-12 23:31:55 11371 4

原创 C/C++语言实现16进制数转float(电子罗盘TCM数据读取)

最近需要获取iTCM的姿态数据,并计算出相应的姿态角。iTCM的姿态数据具有20字节,每个字节用十六进制表示,数据格式如下: 根据上图描述的数据格式,就能提取出三个姿态角。提取步骤如下: (1)首先将数据反向存储(考虑字节序),比如heading的四个字节数据依次为”0x1A,0x2B,0x3C,0x4D”,那么hedaing角度数据用“0x4D,0x3C,0x2B,0x1A”来表示. ...

2018-06-20 12:20:48 4357

原创 Linux网络编程学习笔记(7)---5种I/O模型及select轮询

本文主要介绍5种I/O模型,select函数以及利用select实现C/S模型。1、5种I/O模型(1)阻塞I/O: 一直等到数据到来,才会将数据从内核中拷贝到用户空间中。 (2)非阻塞I/O: 每过一段时间就询问是否有数据到来(轮询),调用recv()函数,若没有数据到来会返回错误。接着继续询问。 (3)I/O多路复用: ...

2018-05-15 17:01:17 733

原创 《MySQL必知必会》学习笔记(三)、MySQL中的数据运算

本文主要介绍MySQL中的算术运算、常用的数据处理函数和聚集函数。 利用的数据表均来自《MySQL必知必会》中提供的数据表。1、MySQL中的算术运算MySQL中的算术操作符主要有加(+)减(-)乘(*)除(/)四种。 举例如下:SELECT prod_id,quantity,item_price, quantity*item_price AS expande...

2018-04-15 11:17:06 1027

原创 《MySQL必知必会》学习笔记(二)、MySQL数据库中数据的检索与搜索

本文主要介绍MySQL数据库中的数据检索和搜索方法。 文章结构如下: 上图中,行列检索和结果限制部分在文章(一)(https://blog.csdn.net/weixin_38215395/article/details/79854690+%20+%EF%BC%88%E4%B8%80%EF%BC%89)中已有提及。本文将重点介绍对检索结果的排序与过滤。一、对检索结果排序...

2018-04-09 16:42:02 499

原创 《MySQL必知必会》学习笔记(一)、MySQL脚本下载、执行及USE、SELECT的使用

本文主要介绍《MySQL必知必会》书中,所述的MySQL脚本下载以及执行,并简单介绍USE、SELECT关键字的基本使用。1、MySQL脚本下载及执行根据书中提及的网址(http://www.forta.com/books/0672327120/?yyue=a21bo.50862.201879),下载MySQL脚本,并解压。打开MySQL command Line client...

2018-04-08 17:08:22 2173 2

原创 MFC .ocx控件开发

本文将介绍ocx的含义,以及如何利用MFC创建ocx控件。1、ocx控件的含义OCX 是对象类别扩充组件(Object Linking and Embedding (OLE) Control Extension);是可执行的文件的一种,但不可直接被执行; 是 ocx 控件的扩展名,与 .exe、.dll 同属于PE文件。(来源于百度百科) 简单来说,在界面开发时,需要用到许多控件,比...

2018-03-27 20:01:20 2728

原创 Linux网络编程学习笔记(6)---TCP中的粘包问题及解决方案

TCP是一种基于字节流的传输服务,因此,TCP所传输的数据是没有边界的。这不同于UDP提供基于消息的传输服务,其传输的数据是有边界的。TCP的发送方无法保证对等方每次接收到的是一个完整的数据包。1、TCP粘包问题产生的原因应用层通过调用write()函数,将应用层缓冲区中的数据拷贝到套接字发送缓冲区中。而套接字发送缓冲区有一个SO_SNBUF的限制。若应用层缓冲区中的数据大小大于套接字发...

2018-03-13 16:51:18 367

原创 Linux网络编程学习笔记(5)---实现点对点通信(回射客服端/服务器模型)

·本文首先介绍回射客户端/服务器模型,再实现点对点的通信。1、回射客户端/服务器模型2、点对点通信假设存在A和B两个主机,将A看作服务器端,将B看作客户端。那么,对于A实现步骤如下:利用socket()函数,声明一个套接字listenfd;利用bind()函数将本地地址与listenfd绑定;利用listen()函数,来监听网络中对套接字listenfd的连接请求...

2018-03-13 16:29:00 723

原创 Linux网络编程学习笔记(4)---TCP客户端/服务器模型(C/S模型)

TCP的客户端/服务器模型如下图所示。 上图中,用到的函数介绍如下:1、 socket()函数该函数用于创建一个新的套接字。函数原型int socket(int domain,int type,int protocol)参数介绍:domain:通信协议族,IPV4为AF_INET或PF_INETtype:指定socket类型,流式套接字(SOCK_STREAM)、数据...

2018-03-13 15:09:00 1501

原创 Linux网络编程学习笔记(3)---socket编程中的基本概念

本文将介绍socket的概念、IPV4套接口地址结构、字节序、套接字类型以及常用的几个地址转换函数。1、什么是socket?socket可以看成是用户进程与内核网络协议栈的编程接口。它不仅可以用于本机间的进程间通信,还可以用于网络上不同主机间的进程间通信。socket在TCP/IP协议栈中的位置如下图所示。 2、IPV4套接字地址结构(网际套接字地址结构)存放于&lt;n...

2018-03-13 11:02:34 269

原创 Linux网络编程学习笔记(2)---TCP/IP四层模型

本文将首先介绍TCP/IP四层模型,及其和OSI参考模型的对应关系。接着,介绍TCP/IP四层模型中设计到的主要协议。在TCP/IP协议中,将OSI模型的七层架构简化成了四层,如下图所示。 在上图中,同时给出了TCP/IP四层模型中,各层常用的协议。下面将逐个介绍这些协议。1、链路层(1)ARP和RARP协议在TCP/IP四层模型中,将ARP和RARP协议分到了链路层...

2018-03-13 10:08:21 1202

原创 Linux网络编程学习笔记(1)---ISO/OSI参考模型

ISO/OSI参考模型,即ISO open system inerconnection(开放系统互联模型)。它定义了网络互联的七层框架,在此框架下进一步规定了每一层的功能,以实现开放系统环境中的互联性、开放性以及可移植性。(参考自百度百科) 各个层及其功能如下图所示。...

2018-03-10 11:35:09 345

原创 理解C++关键字(8)---inline内联函数

前面在总结const关键字时,曾提到:C++中几乎抛弃了宏定义,进而接受了const。对于在c语言中的宏定义关键字“#define”,确实存在着很多优势,并且在程序运行时充当了“替换”的工作。 我们知道,“#define”关键字,可以宏定义变量,也可以定义函数宏。比如#define MAX(A,B) A&gt;B?A:B。在C++中,也提供了一个类似于函数宏的关键字“inline”。当然,它比...

2018-01-25 17:07:05 303

原创 理解C++关键字(7)---理解虚函数virtual

本文将介绍C++中虚函数的作用、特点及存储方式。1、虚函数的作用在介绍虚函数之前,需要了解一下早绑定(静态多态)和晚绑定(动态多态)的概念。1.1 静态多态早绑定,一般可通过模板实现。例如函数重载,对于同名的两个或多个函数,在编译阶段,编译器根据函数的形参个数及类型来决定调用哪个函数。观察下面的例子:#include&lt;iostream&gt;using na...

2018-01-24 17:04:10 439

原创 C++基础知识复习与总结(6)---友元friend、友元函数和友元类

为了在类之间进行数据共享时,提高效率,C++引入了友元的概念。友元主要有三个方面的应用:将普通函数声明为类的友元函数;将一个类声明为其他类的友元类;将一个类中的成员函数声明为其他类的友元函数。下面分别介绍。1、普通函数声明为友元函数将一个普通函数,声明为某个类的友元函数后(在函数声明前加上“friend”关键字),该函数就可以访问类中的任何成员。观察下面的代码:...

2018-01-22 14:56:05 361

原创 理解C++关键字(5)---理解const关键字

在《Effective c++》中,条款02指出:尽可能的使用const替换define;条款03指出:尽可能的使用const。可见,define在C++中不太受欢迎。本文将总结const的一般用法,并说明其和define两者的区别。1、const的一般用法与特点(1)将常见的数据类型约束为“不可被改动的对象”。例如一下语句:cont int a=5;将整型变量a声明为常量...

2018-01-21 15:01:21 223

原创 理解C++关键字(4)---cout和cin以及运算符重载

在用C++编写程序时,最常用的就是变量的输入输出了。在C++中,一般用cin和cout来实现变量的输入和输出。但是,cin和cout并不是C++内部定义的运算符,而分别是istream类和ostream类的对象。而且都位于std命名空间中。在类中实现cin和cout操作时,用到了运算符“那么由此以来我们自己也可以通过重载“>”来实现输入输出操作。定义MyOut类,在类中通过重载“

2018-01-19 16:51:30 2950

原创 理解C++关键字(3)---动态内存分配之 new和delete

本文将总结C++中的new和delete关键字,及其在动态内存分配的情形。1、问题引出对于常见的数组或一个数值变量,在C++中,他们都被存放于“栈区”。由于“栈区”的内存是系统自动分配的,在声明一个数组时,需要事先告诉数组的大小,申请以后,数组大小就固定了。这样,就给我们带来了很多不便,比如大数组只存放了少量的数据。new关键字就很好的解决了这个问题。由于new申请的内存是在“堆区

2018-01-19 11:37:55 333

原创 理解C++关键字(2)---static关键字

当我们在自己编写或阅读他人写的代码时,经常会遇到“static”关键字,本文将对“static”关键字涉及的知识点加以总结。1、static关键字的应用场景总体来说,主要应用于以下5个场景:面向过程:(1)声明静态局部变量 (2)声明静态全局变量 (3)声明静态函数 面向对象:(4)声明类的静态成员变量 (5)声明类的静态成员函数2、static关键字应

2018-01-18 20:07:09 204

原创 C++基础知识复习与总结(1)---C++内存管理

C++编译器将计算机内存分为代码区和数据区。数据区又分为静态数据区、动态数据区及常量区。如下图所示。 (1)栈区:由编译器自动分配释放,用于存放局部变量、函数参数等,随作用域退出而释放; (2)堆区:程序员分配并释放的区域,像malloc(c)、new(c++)以及free、delete,若程序员不释放,会造成内存泄露问题,导致后面一直无法访问这片区域。但程序退出后,系统会自动回收资源;

2018-01-18 12:07:57 264

原创 MATLAB 制作gif动态图

MATLAB 绘制gif动态图的基本思想就是,将一张张的静态图组合成一张能动的gif图片,并保存到相应的位置。 那么,要想制作一张动态图,首先要有若干个静态图,并且他们的索引值是连续的。下面先说一下matlab关于静态图的绘制及其保存。1、MATLAB静态图绘制及保存下面以一个sin函数为例进行说明。实例是这样的:有一个运动轨迹sin(t),t=0:30。现在有一个小球去跟踪这个sin曲线。 (

2017-12-20 22:26:25 24832 5

原创 机器学习算法---决策树

1、决策树的分类在建立一棵决策树的过程中,一个很重要的问题就是:怎么样将树干分叉? 由此问题,便引申出了三种基本的决策树:ID3:利用数据集的信息增益来划分,在介绍信息增益之前先来了解一下熵的概念。 对于一个数据集,其熵定义如下: H=−∑i=1np(xi)log2p(xi)H=-\sum_{i=1}^n p(x_i)log_2p(x_i) 其中p(xi)p(x_

2017-12-18 16:25:41 1690

原创 机器学习算法python实现---朴素贝叶斯算法(朴素Bayes)

1、算法基本原理我是这样理解的,通过已知的训练数据及其对应的类别,利用贝叶斯理论(即条件概率公式),得到这种问题的一个概率模型。模型的输入是特征数据,输出是数据对应的类别。那么,将待分类数据的特征数据代入此模型,就可得到其属于所有类别的概率,概率大者作为该数据的类别。 另外,该算法中的“朴素”二字说明此方法存在一个很强的假设:用于分类的特征,即特征向量的每一维度间,在类别确定的条件下是相互独立的。

2017-12-03 18:27:52 996

原创 机器学习算法的python实现(1)---k近邻算法(kNN)

1、算法工作原理对给定的训练数据集和输入数据集(待分类或回归的数据集),首先确定在训练数据集中距离输入实例的k个最近邻的实例点,然后利用这k个实例点的类别的多数来预测输入实例的类别。 由此可知,k近邻算法的三个要素为:距离度量: 一般为欧式距离 也可为其他距离,如:LpL_p距离或MinkowskiMinkowski距离。k值的选择:k值的选择对k近邻算法的结果产生重大的影响。若选择较

2017-11-29 22:52:58 785

原创 数据结构与算法C++描述(14)---二叉搜索树

1、二叉搜索树的概念二叉搜索树是一棵可能为空的二叉树,一棵非空的二叉搜索树有满足如下特征:二叉树中所有的键值都是唯一的;根节点所有左子树的键值(如果有的话)小于根节点的键值;根节点所有右子树的键值(如果有的话)大于根节点的键值;根节点的左右子树也都是二叉搜索树。三个二叉搜索树如下: 2、二叉搜索树的C++描述对于二叉搜索树,主要操作有插入一个元素(Insert)删除键值为k的元素(Del

2017-11-03 21:03:44 694

原创 数据结构与算法C++描述(13)---竞赛树及其在箱子装载问题中的应用

1、竞赛树的相关概念一般将竞赛树分为赢者树和输者树。所谓赢者树,就是对于n名选手,赢者树是一棵含n个外部节点,n-1个内部节点的完全二叉树,其中每个内部节点记录了相应赛局的赢家。同理,对于输者树,每个内部节点记录了相应赛局的输家。一个赢者树如下图所示。 上图中,黑色框中字母a,b,c,…,h为选手编号,下面的数字为选手得分。 为了利用计算机更方便的描述赢者树,假定每个赢者树都是完全二叉树。2

2017-11-01 20:48:19 2034 3

原创 数据结构与算法C++描述(12)---堆及最大堆

1、有关堆的相关概念最大堆(最小树):最大(最小)的完全二叉树。最大树(最小树):每个节点的值都大于(小于)或等于其子节点(如果有的话)值的数。注意,最大(小)数不一定是二叉树。完全二叉树:从满二叉树中删除k个元素,其编号为2h−i,1<=i<=k2^h-i,1<=i<=k,所得到的二叉树成为完全二叉树。 一个最大堆如下图所示: 2、最大堆的相关操作这里,最大堆的操作包括:堆顶元素的删除、向

2017-10-30 19:22:51 891

原创 数据结构与算法C++描述(11)---树及二叉树

1、 树的相关概念1.1 树的定义根据文献[1],树定义为:树(tree)t是一个非空的有限元素的集合,其中一个元素为根,余下的元素(如果有的话)组成t的子树(subtree)。 树一般用来描述具有层次结构的数据,比如家族关系、管理机构的上下级关系等。直观来说,见下图(图片引自网络侵删) 1.2 有关树的常用术语为了描述更为清晰,以下图的“联邦政府模型”树为例说明(图片来自参考文献[1])。

2017-10-28 09:01:33 825

原创 数据结构与算法C++描述(10-插曲)---函数名作形参

在文献[1]中,描述二叉树时利用了函数名作为形参。在此加以说明与解释。1.函数参数的传递方式我们都知道,函数参数的传递一般有:值传递、指针传递和引用传递。先来回顾一下:值传递时,先临时分配一块内存,将形参的值拷贝进去,在函数中利用临时分配的变量进行运算。当函数退出时,释放临时分配的内存,也就是说,不会影响原来的形参值。如下述程序及运行结果所示。void fun1(int a)

2017-10-26 11:25:18 822

原创 数据结构与算法C++描述(9)---字典

1.字典的概念字典是一些节点的集合,每个节点包含数据域和key(键值)域。字典可以通过公式化描述或链表描述的方式创建。本文将通过链表描述的方式创建字典,字典的键值是依次递增的,并对字典进行如下操作:字典的删除;添加一个字典元素;判断字典是否为空;搜索键值为k的元素值;获取字典中的元素个数;在键值为k的节点中插入元素x,允许键值k已存在;在键值为k的节点中插入元素x,不允许键值k存在,即

2017-10-25 10:25:45 3737

原创 数据结构与算法C++描述(8)---队列

1、队列的概念和堆栈一样,队列也是一种特殊的线性表。与堆栈不同的是,队列的插入和删除操作分别在线性表的两端进行,是一种先进先出的线性表。将添加新元素的那一端称为队尾(rear),删除元素的一端称为队首(front)。队列的相关操作见下图(图片来源于参考文献[1]) 上图中:图a)表示了一个具有3个元素的队列,其中front指向队首,rear指向队尾;图b)展示了队列的删除元素操作,将原先的

2017-10-23 21:30:57 774

原创 数据结构与算法C++描述(7)---堆栈及其在“火车车厢重排问题”中的应用

本文首先介绍堆栈的相关概念,接着利用C++语言实现堆栈类,最后利用堆栈来解决“火车车厢重排问题”。 1. 堆栈的概念参考文献[1]中对堆栈的解释:堆栈数据结构是通过对线性表的插入和删除操作进行限制而得到的插入和删除操作都必须在表的同一端完成),因此,堆栈是一个后进先出(last-in-first-out, LIFO)的数据结构。 由此可知,堆栈就是一种特殊的线性表,那么线性表的相关操作,如元

2017-10-21 14:51:04 4752

FFmpeg+Qt+RTSP

利用FFmpeg库和Qt实现摄像头rtsp的实时显示

2017-08-22

空空如也

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

TA关注的人

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