自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

开挂的熊猫

树立终身学习的观念,才能应对未来的挑战。

  • 博客(306)
  • 资源 (29)
  • 收藏
  • 关注

转载 值得推荐的C/C++框架和库,包含很多开源项目 (真的很强大)

值得学习的C语言开源项目-1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。 下载链接:http://home.tiscali.cz/~cz2...

2019-01-16 16:18:48 4382

原创 sizeof用法总结

由于不同位数的操作系统计算结果可能不同,下面是在32位的win7 下计算的。 1 对于直接的调用sizeof,如果是数组首地址,sizeof会输出数组所占地址空间的大小(字节为单位)。如果是一个指针的话,则输出在该系统中地址的字节宽度,即(位宽/8)。#include <stdio.h>int main(){ char a[25]; char *b;...

2018-09-21 08:46:31 1242

转载 TCP、UDP数据包大小的限制

1、概述首先要看TCP/IP协议,涉及到四层:链路层,网络层,传输层,应用层。   其中以太网(Ethernet)的数据帧在链路层   IP包在网络层   TCP或UDP包在传输层   TCP或UDP中的数据(Data)在应用层   它们的关系是 数据帧{IP包{TCP或UDP包{Data}}}       不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络...

2018-09-04 12:10:55 5785

原创 数组元素为0的说明

最近在看UVC摄像头驱动,发现了这几段代码:for (j = 0; j < npackets; ++j) { urb->iso_frame_desc[j].offset = j * psize;//iso是实时的意思 urb->iso_frame_desc[j].length = psize; }跟踪iso_frame_d...

2018-06-08 16:10:25 4193

原创 OneNET学习资料汇总帖(2018年5月16日)

OneNET接入例程资源汇总:(一)介绍学习资料汇总1.老司机告诉你OneNET3.0是什么http://open.iot.10086.cn/bbs/forum.php?mod=viewthread&tid=667&extra=page%3D12.OneNET3.0私有协议设备接入快速入门(一)http://open.iot.10086.cn/bbs/thread-710-1-1....

2018-05-14 19:11:10 2455

原创 在虚拟机里新建一个20G的硬盘,如何把他挂载在 /work 目录上

目的:在虚拟机里新建一个20G的硬盘,然后想把他挂载在 /work 目录上/dev/sda (系统盘)/dev/sdb (数据盘)/dev/sdc (数据盘)/dev/sdd (数据盘)/dev/sde (数据盘)1、查看文件系统是否已挂载:df -lFilesystem     1K-blocks    Used Available Use% Mo

2018-01-01 19:37:50 3503

原创 C语言中 || 和 &&

|| 或操作,|| 为界将表达式分为两部分,他会先算前一部分,如果前一部分为真,他将停止运算,如果为假,他才会算第二部分,你这里第一部分就为真了,第二部分当然也就不会算了。例如: a || b ,只有在前一个条件a为假,才会去判断条件b ;若条件a为真,则条件b不会执行&&且操作 ,&&为界将表达式分为两部分,他会先算前一部分,如果前一部分为假,他将停止运算,如果为真,他才会算第

2017-12-21 21:36:05 66441 4

原创 ubuntu版本很老,apt-get update更新失败时(W: Failed to fetch ...)------如何创建新的sources.list

在这个网站创建新的sources.listhttp://repogen.simplylinux.ch/1. 选择国家2.选择相邻的ubuntu版本3.选择"Ubuntu Branches"4. 生成sources.list5. 把得到内容替换到/etc/apt/sources.list6. sudo apt-get update

2017-12-09 13:31:19 950

转载 apt-get update 更新失败----如何清除破损而且陈旧的PPA仓库 (W: Failed to fetch http://ppa.launchpad.net/jonathonf/pyt)

问题:我试着通过运行apt-get update命令来再次同步包索引文件,但是却出现了“404 无法找到”的错误,看起来似乎是我不能从先前添加的第三方PPA仓库中获取最新的索引。我怎样才能清除这些破损而且陈旧的PPA仓库呢?Err http://ppa.launchpad.net trusty/main amd64 Packages 404 Not FoundErr http://

2017-12-08 18:39:16 11586 2

转载 自旋锁和互斥锁的区别

自旋锁和互斥锁的区别POSIX threads(简称Pthreads)是在多核平台上进行并行编程的一套API。线程同步是并行编程中非常重要的通讯手段,其中最典型的应用就是用Pthreads提供的锁机制(lock)来对多个线程之间的共享临界区(Critical Section)进行保护(另一种常用的同步机制是barrier)。Pthreads提供了多种锁机制:Mutex(互斥量):pthread_m...

2017-11-25 21:21:50 7923

原创 二级指针如何分配动态内存并赋值

//二级指针如何分配动态内存并赋值#include #include int main(void){ int **p = NULL; //最好是显式初始化这个二级指针 以防不测 int m, n, i, j; printf("请输入数组的行数和列数:\n例如格式:5,6 :代表5行6列\n"); scanf("%d,%d", &m, &n); p

2017-10-21 16:44:34 3283

原创 TIM_GetCounter与TIM_GetCapture1的区别

/** * @brief Gets the TIMx Input Capture 1 value. * @param TIMx: where x can be 1 to 17 except 6 and 7 to select the TIM peripheral. * @retval Capture Compare 1 Register value. */uint16_t T

2017-07-11 14:33:43 30147 2

原创 STM32的ADC1采集多条通道,可以不使用DMA功能吗?

类似的问题为什么我采集5条通道的电压,而采集到的值却都是第一条的呢?我什么时候需要使用DMA功能?Ⅰ关于ADC的一些知识STM32的ADC是一种12位逐次逼近型的模拟数字转换器。它有多达18条通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器

2017-07-07 17:20:02 9588 1

转载 STM32 输入捕获的脉冲宽度及频率计算

输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。以下是对脉冲宽度及频率的计算。1、脉冲宽度如下图所示,采集该高电平脉冲的宽度,只需要进入输入捕获上升沿检测,记录当前的发生上升沿时的CNT值,再进行输入捕获下降沿检测,也记录当前发生下降沿时的CNT值,两次CNT值的差值再根据计数的频率就可以算出脉冲的宽度。

2017-06-29 15:01:43 51910 6

转载 单片机串口通信原理和控制程序

我们前边学串口通信的时候,比较注重的是串口底层时序上的操作过程,所以例程都是简单的收发字符或者字符串。在实际应用中,往往串口还要和电脑上的上位机软件进行交互,实现电脑软件发送不同的指令,单片机对应执行不同操作的功能,这就要求我们组织一个比较合理的通信机制和逻辑关系,用来实现我们想要的结果。本节所提供程序的功能是,通过电脑串口调试助手下发三个不同的命令,第一条指令:buzz on 可以让蜂鸣

2017-06-17 16:35:15 6620 6

原创 linux getline()函数

getline()函数是什么?百度百科这样解释:     getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。linux标准C中使用条件:#define _GNU_SOURCE#include 函数声明:ssize_t ge

2017-06-16 20:47:14 4147

原创 strcpy()与strncpy()的区别

头文件:#include <string.h>strcpy() 函数用来复制字符串,其原型为:char *strcpy(char *dest, const char *src);【参数】dest 为目标字符串指针,src 为源字符串指针。注意:src 和 dest 所指的内存区域不能重叠,且dest 必须有足够的空间放置 src 所包含的字符串(包含结束符NULL)。【返回值】成功执行...

2017-06-16 17:37:13 28760 2

原创 getenv、setenv函数(获取和设置系统环境变量) 与 环境变量

1、getenv()函数名: getenv功 能: 从环境中取字符串,获取环境变量的值头文件: stdlib.h用 法:char *getenv(char *envvar);函数说明:getenv()用来取得参数envvar环境变量的内容。参数envvar为环境变量的名称,如果该变量存在则会返回指向该内容的指针。环境变量的格式为envvar=value。

2017-05-25 19:57:51 18604

转载 C语言itoa()函数和atoi()函数详解(整数转字符C实现)

C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串。1.int/float to string/array:C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。● itoa():将整型值转换为字符串。● ltoa():将长整型值转换为字符串。● ultoa()

2017-04-13 20:56:15 13552 1

原创 linux获取文件大小的函数fstat()

C语言fstat()函数:由文件描述词取得文件状态头文件:#include   #include 定义函数:int fstat(int fildes, struct stat *buf);函数说明:fstat()用来将参数fildes 所指的文件状态, 复制到参数buf 所指的结构中(struct stat). fstat()与stat()作用完全相同,

2017-03-03 09:11:27 15218

原创 函数指针和指针函数的区别

一、【函数指针】      在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。 1、函数指针定义 顾名思义,函数指针说的就是一个指针,但这个指针指向的函数,不是普通的基本数据类型或者类对象。函数类型(*指针变量名)(形参列表

2017-01-03 16:04:41 538

原创 整数拆分 整合算法

转载请注明出处:// 整数分解然后再整合.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"/** 第一个参数 num :要被分解的整数* 第二个参数 a[] :把整数分解后,存在这个数组里* 函数返回值 : 被拆的整数 的位数*/int  myRevert(int num, int a[])  //把整数

2016-06-25 19:12:15 1405

转载 什么是C语言结构体字节对齐,为什么要对齐?

一、概念    对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐。比如在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是自然对齐的。     二、为什么要字节对齐      需要字节对齐的根本原因在于CPU访问数据的效率问题。假设上面整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取

2016-06-13 18:48:03 6189

原创 翻译 DMA-API-HOWTO

若是有翻译错误的地方,请指出,谢谢。

2023-08-02 10:18:39 215

原创 遍历 QByteArray 里的每一个元素(一个元素由2各字节构成)

请注意,此示例假设字节数组的长度是偶数,以确保每个元素由两个字节组成。如果字节数组的长度不是偶数,您可能需要根据实际情况进行适当的处理。上述代码通过循环以步长为2遍历字节数组,并使用。方法获取两个字节的子数组。函数将这两个字节转换为相应的类型,例如。还可以使用 Qt 提供的。函数进行字节顺序转换。

2023-07-22 13:47:10 995

原创 c++构造函数是 protected 属性,如何实例化

请注意,上述方法都是通过绕过 protected 访问控制来实例化对象。在使用这些方法时,需要谨慎考虑设计和安全性,确保只在必要的情况下使用。1. 在派生类中实例化:由于派生类可以访问基类的 protected 成员,因此可以在派生类的构造函数中调用基类的构造函数来创建对象。2. 使用工厂函数:可以在类的友元或其他类中编写静态工厂函数,该函数可以访问受保护的构造函数并返回类的实例。

2023-07-19 15:10:28 496

原创 c++类里有纯虚函数,那么这个类就不能实例化

抽象类的主要目的是作为其他类的基类,为派生类提供接口和规范,并强制要求派生类实现特定的功能。因此,抽象类只能作为基类来使用,提供一种抽象的概念。抽象类不能直接实例化(即不能创建抽象类的对象),因为它们存在未实现的纯虚函数。纯虚函数是在基类中声明的没有具体实现的虚函数,通过将其赋值为0来定义。总结来说,包含纯虚函数的类(抽象类)不能直接实例化,但可以被作为基类,通过派生类来实现和使用。需要注意的是,在派生类中,必须实现基类中的所有纯虚函数,否则派生类仍然会被视为抽象类。

2023-07-19 14:52:11 750

原创 QT与OpenCV开发常用的图像格式转换函数:QImage转Mat、Mat转QImage、QImage转IplImage、IplImage转QImage

上述代码提供了常见的图像格式转换函数,可以在 Qt 和 OpenCV 之间进行图像格式转换。3. QImage 转 IplImage(需要包含。4. IplImage 转 QImage(需要包含。

2023-07-05 09:15:35 1371

原创 c++ lamda表达式

Lambda表达式在现代C++编程中非常常用,它能够简化代码、提高可读性,并且可以与标准库中的算法和容器等一起使用。您可以根据具体的需求来灵活地使用Lambda表达式。C++ Lambda表达式是C++11引入的一种函数对象,它提供了一种方便、灵活的方式来定义匿名函数。Lambda表达式常用于函数式编程风格和STL算法中。:捕获列表,用于指定外部变量的访问方式。:返回类型,指定Lambda表达式的返回类型。:函数体,指定Lambda表达式的执行逻辑。:参数列表,指定Lambda表达式的参数。

2023-06-30 15:34:07 262

原创 派生类赋值给基类(向上转型)

需要注意的是,基类对象只能访问派生类中基类部分的成员函数和成员变量,无法访问派生类独有的成员。如果需要访问派生类独有的成员函数或成员变量,需要进行向下转型(downcasting)操作,并确保类型的安全性。在面向对象编程中,派生类是基类的扩展或特化。通过继承关系,派生类会继承基类的属性和方法,并且可以额外定义自己的属性和方法。在C++中,可以使用指针或引用将派生类赋值给基类类型的变量。这样做是为了保持类型兼容性和语法的一致性。

2023-06-25 13:44:49 179

原创 C++友元函数和友元类

在 C++ 中,我们可以通过使用friend关键字来将一个函数或类声明为另一个类的友元,从而获得访问该类中私有成员的权限。

2023-06-21 16:12:25 318

原创 std::is_same<T, int>::value 含义

它的返回值是一个布尔类型的常量表达式,在模板实例化时就已经确定了,它可以被用作条件编译或者对类型进行选择性编译。头文件中,提供了在编译期间对 C++ 类型进行查询和转换的功能。,它使用更为简便,可以在 C++17 及以后的版本中使用。是 C++11 引入的类型特征之一,它们都定义在。是一个 C++ 模板元编程中的类型特征,在这个代码示例中,如果调用。函数时传递的参数类型是。

2023-06-21 15:03:53 245

原创 使用std::function 来实现回调函数、委托的功能

在C#语言中,委托(Delagate)可以看做函数指针的更高级抽象,它允许方法的选择器(Selector)与特定类型安全签名相匹配的方法进行关联,从而实现动态调用、反射、事件等功能。来实现委托,我们可以将不同的函数作为可选项传递给一个类的方法,从而实现动态选项。当然,这只是一个简单的示例,实际上委托可以实现更复杂的功能,例如事件、反射等。在函数的实现中,我们打印出一条简单的消息,然后调用传递进来的回调函数,并传递给它文本参数。,这个函数接受一个字符型指针参数,并打印出这个字符串。函数,并输出计算结果。

2023-06-20 14:26:14 770

原创 c++ std::function的使用

是 C++11 引入的一个非常有用的函数对象封装类,它可以存储和调用各种类型的可调用对象,包括函数指针、函数对象、成员函数指针、Lambda表达式等等。当我们需要将一些可调用对象存储在一个容器中,或者将它们作为其他函数的参数时,,然后使用函数指针、Lambda表达式和成员函数指针分别初始化了三个。来进行引用封装,以确保被封装的对象可以在 调用时访问。注意到,函数指针和成员函数指针需要使用。在上述示例中,我们分别定义了一个普通函数。还可以用来实现回调函数、委托等功能。、一个有返回值的函数。

2023-06-20 14:21:36 243

原创 c++11 自定义线程类实现线程的启动、暂停与停止

【代码】c++11 自定义线程类实现线程的启动、暂停与停止。

2023-06-19 14:19:21 638 1

原创 c++自定义线程类实现线程的启动与停止

的线程类,其中包含了启动线程、停止线程、运行线程等方法。在启动线程时,我们获取了一个互斥锁来保障线程安全,只有在线程没有运行时才启动线程。在停止线程时,也要获取互斥锁来保障线程安全,并且在线程运行时才进行停止操作。,也可以自定义一个线程类来管理线程的生命周期。来表示线程执行的代码,这个函数需要在自定义的子类中实现。例如,在上述代码中我们定义了一个名为。这样可以保证线程在被销毁之前一定会被停止,避免了程序崩溃等问题。对象时,我们通过判断线程是否正在运行来决定是否调用。在上述代码中,我们定义了一个名为。

2023-06-16 10:42:23 407

原创 用ffmpeg解析mp4文件得到时长、比特率、音视频信息

在实际应用中,可以将上述代码封装成一个函数,方便地在程序中调用,达到自动化处理多个视频文件的目的。等,获取MP4文件的视频流和音频流信息,并将结果存储到。结构体和FFmpeg库函数。

2023-06-16 09:45:58 2227

原创 avformat_open_input 调用失败的原因

如果你要打开的文件格式不支持,就会导致打开文件失败。你需要确保要打开的文件格式被 FFmpeg 支持,并且已经注册过相应的输入格式。是 FFmpeg 库中的一个函数,用于打开音视频文件或网络流并进行解封装操作,返回值为一个表示打开的文件或流的 AVFormatContext 结构体指针。的第一个参数是文件路径或 URL,如果路径或 URL 错误、不存在或者无法访问,就会导致打开文件失败。函数不能重复打开同一个文件或网络流,这会导致打开文件失败。如果忘记了调用此函数,就会导致打开文件失败。

2023-06-16 09:39:13 4093 1

原创 c++初始化vector的几种方法

需要注意的是,在初始化vector时提供的初始值,需要与vector模板参数类型匹配或者能够隐式转换为vector模板参数类型。如果提供的初始值数量超过了vector预留的存储空间,则vector会自动分配更大的存储空间以容纳所有元素。使用复制或移动构造函数可以从一个已存在的vector创建新的vector。此方式将会创建一个包含3个int类型元素,值分别为1、2、3的vector。此方式将会创建一个包含8个未初始化int类型元素的vector。此方式将会创建包含5个值为0的int类型元素的vector。

2023-06-15 17:29:30 6480

原创 c++实现ffmpeg解析mp4文件得到分辨率

在实际应用中,可以将上述代码封装成一个函数,方便地在程序中调用,达到自动化处理多个视频文件的目的。等,获取MP4文件分辨率,并将结果以。结构体和FFmpeg库函数。

2023-06-15 16:14:44 620

使用 C++11 和 OpenCV 实时读取摄像头的示例代码,并通过按下 "z" 键和 "x" 键在图像中心点进行数码变焦

使用 C++11 和 OpenCV 实时读取摄像头的示例代码,并通过按下 "z" 键和 "x" 键在图像中心点进行数码变焦(放大缩小),同时保持图像大小不变

2023-07-12

c++11 自定义类实现对图像数据的高效入队与出队操作(线程安全)

1. 定义了线程安全的图像帧队列类 SafeImageQueue,封装了数据的入队和出队操作,并使用 mutex 和 condition_variable 实现了线程同步。 2. 生产者线程通过调用 push() 函数向队列中压入新的图像帧,消费者线程通过调用 pop() 函数从队列中取出一帧图像进行处理。 3. 使用opencv进行取图

2023-07-12

c++11使用opencv自定义类实现绘图(画点、画直线、画曲线、画园、画椭圆、画圆柱体), 绘文字

自定义类去绘图,接口简单,方便移植。 使用c++11,运用opencv进行绘制。

2023-07-12

Rockchip_Instruction_Linux_Application_ISP20_CN.pdf

rv1126 isp 应用

2021-04-21

Rockchip_Driver_Guide_ISP2x_CN_v1.0.0.pdf

rv1126 isp驱动指南

2021-04-21

Rockchip-Developer-Guide-DDR-CN.pdf

DDR 开发指南

2021-04-20

Rockchip_Developer_Guide_UART_CN.pdf

UART开发指南

2021-04-20

Rockchip_Developer_Guide_USB_CN.pdf

Rockchip Linux USB 开发指南

2021-04-20

Rockchip_Developer_Guide_Linux_WDT_CN.pdf

看门狗的使用

2021-04-20

Rockchip_Introduction_Partition_CN.pdf

Rockchip 分区介绍

2021-04-20

Rockchip_Developer_Guide_Power_Analysis_CN.pdf

功耗分析和优化

2021-04-20

Rockchip_Developer_Guide_Linux_IO_DOMAIN_CN.pdf

Rockchip_Developer_Guide_Linux_IO_DOMAIN_CN.pdf

2021-04-19

Rockchip_Developer_Guide_I2C_CN.pdf

Rockchip_Developer_Guide_I2C_CN.pdf

2021-04-19

点阵字库(字模)生成器 V4.0

生成gb2312等字库

2021-01-05

Linux下相机的使用——X86架构20200905.pdf

海康千兆网工业相机,Linux下相机的使用——X86架构20200905.pdf 涉及安装及常见问题的解决方法

2020-09-09

profibus-dp协议编程资料.zip

主要是profibus-dp协议相关的pdf资料,有助于理解profibus协议,方便后期做profibus的开发。

2020-04-27

HLW8032参考设计资料V10.1

包含原理图,代码,校准等信息。

2018-10-29

PowerPC+VxWorks+BSP学习与分析

PowerPC+VxWorks+BSP学习与分析.pdf PowerPC+VxWorks+BSP学习与分析.pdf

2018-07-24

使用MXNet Gluon 来动手学深度学习

使用MXNet Gluon 来动手学深度学习。

2018-03-06

R9454_datasheet

R9454 datasheet资料。。。。。。。。。。。。。。。。。。。

2018-03-06

数据结构算法实现(严蔚敏版

数据结构算法实现(严蔚敏版

2017-08-15

数据结构动画演示完整版

数据结构动画演示完整版

2017-08-15

pt100在mutisim上的仿真

pt100在mutisim上的仿真

2017-06-13

pt100的三线测温电路,在proteus7.2sp6上模拟通过

pt100的三线测温电路,在proteus7.2sp6上模拟通过

2017-06-13

C#获取智能小车MJPEG视频流源代码 (vs2012)

C#获取智能小车MJPEG视频流源代码 (vs2012)

2017-04-14

51单片机串口通信(字符串接收和发送)

51单片机串口通信(字符串接收和发送)

2016-10-13

基于C# TCP 的摄像头的图像视频传输

基于C# TCP 的摄像头的图像视频传输

2016-04-24

基于51单片机寻光小车

基于51单片机寻光小车,ad传感器是tlc2543,循环开启ad采集信息。比对,判断光的位置,前进

2015-10-12

空空如也

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

TA关注的人

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