自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

风一样的男子(quinta)的博客

看得见的是榜样和反例,看不见的才是真正的对手!

  • 博客(79)
  • 资源 (1)
  • 收藏
  • 关注

原创 QGIS编译---QGIS2.18.16 + Qt5.9.2 + VS2015(X64) + Python3.6

一、参 考李民录老师:http://blog.csdn.net/liminlu0314/article/details/17400075Jacory Gao:http://blog.csdn.net/deirjie/article/details/48216773QGIS官网:https://htmlpreview.github.io/?https://raw.github

2018-01-28 12:03:33 11357 19

原创 MIPI CSI-2 虚拟通道

通过虚拟通道可以很好地解决D-PHY接口不够带来的Sensor数量限制问题

2024-04-13 15:57:16 614

原创 MIPI CSI-2 Low Level Protocol解读

LLP 是一种面向字节的基于数据包的协议,支持使用短数据包和长数据包格式传输任意数据。为简单起见,本节中的所有示例均为单通道配置。LLP特性:- 传输任意数据(与有效载荷无关)- 8 位字大小- 在同一链路上支持多达四个交错的虚拟通道- 用于帧开始、帧结束、行开始和行结束信息的特殊数据包- 特定于应用程序的有效负载数据的类型、像素深度和格式的描述符- 用于错误检测的 16 位校验码

2024-03-31 22:26:49 890

原创 史蒂夫·乔布斯,一个疯狂、充满激情的时代造就了他,也凭一己之力引领了一个时代

乔布斯站在人文与科技的交汇处,将创造力、想象力、哲学思辨与技术相结合,使个人电脑、动画电影、音乐、手机、平板电脑、数字出版六大产业发生了革命性变革,改变了人们享受生活的方式、看待世界的视角及对未来科技的认识。

2024-03-22 08:51:21 449

原创 OpenGrok代码服务器搭建,解决代码检索慢的问题

OpenGrok代码服务器搭建,解决代码检索慢的问题

2024-03-10 21:26:50 920

原创 USB基础概念介绍

Universal Serial Bus,简称 USB,是一种串口总线的标准,在现实中频繁应用于 3C 数码产品,电脑、手机、打印机、游戏机等,被称为万能接口,目前已经发展为行业标准。

2024-02-21 21:59:02 641

原创 GIT使用,看它就够了

Git的熟练使用是一个加分项,本文将对常用的Git命令做一个基本介绍,看了本篇文章,再也不会因为不会使用git而被嘲笑了。

2024-01-27 22:46:14 770

原创 图像信号处理(Image Signal Processor)

本篇文章主要对ISP Pipeline做一个整体概述,让大家对整个流程有一个整体的概念。

2023-12-13 21:44:19 1221

原创 相机成像基础

本篇文章从相机成像基本流程、相机成像原理以及相机构造三部分部分为大家揭秘成像的奥秘。

2023-11-26 15:28:40 900

原创 拜耳阵列(Bayer Pattern)以及常见彩色滤波矩阵(CFA)

本文介绍了拜耳阵列的工作原理(Bayer Pattern)以及常用的彩色滤波矩阵(CFA)

2023-11-15 20:34:46 1326

原创 MIPI速率计算

在调试Camera sensor时,经常会遇到MIPI传输速率的问题,本文简单介绍下与MIPI有关的一些速率。MIPI支持多个lane并行传输数据,知道数据传输速率,可以算出每个lane需要承载的速率。MIPI是Camera sensor中常用的接口协议,目前MIPI CSI最高传输速率为。数据传输速率也称为带宽,需要在像素速率的基础上乘以像素色深。像素速率和分辨率以及帧率有关,也叫像素时钟。

2023-11-13 23:34:14 780

原创 STM32 GPIO 描述

输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽式输出、推挽式复用功能、开漏复用功能

2023-11-05 22:42:47 447

原创 STM32F10xx 存储器和总线架构

STM32F10xx存储器和总线架构

2023-10-29 22:42:23 575

原创 总线通信协议简介

一种规定总线设备之间数据通信方式和方法的规则,它包括数据的通信方式、速率、格式、错误检测和纠正等规定。

2023-10-22 16:38:58 134

原创 C++就业方向

很多人在学习C++的过程中,不知道自己选择哪个具体就业方向?我们今天就来聊聊关于C++的那些事。C++语言主要集中在这四个领域,服务器端开发、游戏开发、虚拟现实仿真、数字图像处理。基本百分之90的C++程序员都会从事这四个方向的工作,那怎么知道这4个方向具体是做什么的呢?1、服务器端开发,一般定义为web服务器上编写程序并使之正常运行。它的主要特点是发布网站、提供信息浏览器、被动执行,这也...

2019-12-01 16:13:12 4851

转载 C++中的四种强制类型转换

C++的类型转换有四种,以支持不同的需求,下面我们一起学习。1.static_cast转换① 基本语法:static_cast<type-id>expression② 使用场景a.用于类层次结构中基类和派生类之间指针或引用的转换上行转换(派生类->基类)是安全的下行转换(基类->派生类)由于没有动态类型检查,是不安全的b.用于基本数据类型之间的转...

2019-08-05 13:04:36 243

原创 变长模板:进阶

在C++11中,标准定义了7种参数包可以展开的位置:表达式 初始化列表 基类描述列表 类成员初始化列表 模板参数列表 通用属性列表 lambda函数的捕捉列表语言的其他“地方”则无法展开参数包。我们还可以声明一些有趣的包扩展表达式。扩展1:比如声明了Arg为参数包,那么我们可以使用Arg&&...这样的包扩展表达式,其解包后等价于Arg1&&,...

2019-07-13 16:04:09 224

原创 变长模板:模板参数包和函数参数包

模板参数包我们先看看变长模板的语法,以tuple为例:template<typename... Elements> class tuple;可以看到,我们在标识符Elements之前使用了省略号(三个点)来表示该参数是变长的。在C++11中,Elements被称作是一个“模板参数包”,这是一种新的模板参数类型。有了这样的参数包,类模板就可以接受任意多个参数作为模板参数。比...

2019-07-13 15:12:12 1236

原创 变长函数和变长的模板参数

我们知道C++11已经支持了C99的变长宏。变长宏与printf的默契配合使得程序员能够非常容易地派生出printf的变种以支持一些记录。而printf则使用C语言的函数变长参数特性,通过使用变长函数,printf的实现能够接受任何长度的参数列表。不过无论是宏,还是变长参数,都无法获得传递参数的类型。一个变长函数如下:#include <stdarg.h>#include &...

2019-07-13 12:11:32 323

原创 常量表达式函数

我们可以在函数返回类型前加入关键字constexpr来使其成为常量表达式函数,但并非所有的函数都有资格成为常量表达式函数。事实上,常量表达式函数的要求非常严格,总结如下:函数体只有单一的return返回语句。 函数必须返回值,不能是void函数。 在使用前必须已有定义。 return返回语句表达式中不能使用非常量表达式的函数、全局数据,且必须是常量表达式。由于比较好理解,这里不多做解释...

2019-07-13 11:06:47 2534

原创 运行时常量性与编译时常量性

在C++中,我们常常会遇到常量的概念。常量表示该值不可修改,通常是通过const关键字来修饰。比如:const int nNum = 100;const还可以修饰函数参数、函数返回值、函数本身、类等。在不同的使用条件下,const有不同的意义,不过在大多数情况下,const描述的都是一些“运行时常量性”的概念,即具有运行时数据的不可更改性。不过有时候我们需要的确实编译时期的常量性,这是c...

2019-07-13 10:23:20 896

原创 C++11与最小垃圾回收

C++11新标准为了做到最小的垃圾回收支持,首先对“安全”的指针进行了定义,安全派生的指针是指向由new分配的对象或其子对象的指针。安全派生指针的操作包括:1:在解引用基础上的引用,比如:&*p。2:定义明确的指针操作,比如p + 1。3:定义明确的指针转换,比如:static_cast<void*>(p)。4:指针和整型之间的reinterpret_cas...

2019-07-12 22:14:53 613

原创 垃圾回收分类

垃圾回收:我们把之前使用过,现在不再使用或者没有任何指针指向的内存空间称为“垃圾”,而将这些“垃圾”搜集起来再次利用的机制称为 “垃圾回收”。现在,垃圾回收机制已经大行其道,在大多数编程语言中,我们都可以看到对垃圾回收特性的支持。如下表:各种编程语言对垃圾回收机制的支持 编程语言 对垃圾回收机制的支持 C++ 部分 Java 支持 Python 支持...

2019-07-12 21:23:10 438

原创 C++11的智能指针

在C++98中,智能指针通过一个模板类型“auto_ptr”来实现。auto_ptr以对象的方式管理堆内存的分配,并在适当的时间,释放所获得的堆内存。这种堆内存管理的方式只需要程序员将new操作返回的指针作为auto_ptr的初始值即可,程序员不用显式地调用delete。比如:auto_ptr<int> ptr(new int); 这在一定程度上避...

2019-07-11 21:49:20 145

原创 显式内存管理

程序员在处理现实生活中国的C/C++程序的时候,常会遇到诸如程序运行时突然退出,或占用的内存越来越多,最后不得不定期重启的一些典型状况。这些问题的源头可以追溯到C/C++中的显式堆内存管理上,通常情况下,这些症状都是由于程序没有正确处理堆内存的分配与释放造成的,从语言层面来讲,我们可以将其归纳为以下一些问题。 野指针:一些内存单元已经被释放,之前指向它的指针却还在被使用。...

2019-07-11 20:57:13 444

原创 强类型枚举以及C++11对原有枚举类型的扩展

强枚举类型 非强类型作用域,允许隐式转换为整型,占用存储空间及符号性不确定,都是枚举类的缺点。针对这些缺点,新标准C++11引入了一种新的枚举类型,即“枚举类”,又称“强类型枚举”。语法:在enum后加上关键字classenum class EnumType { Point, Line, Rect};优势:强作用域,强类型枚举成员的名称不会被输出到其父作...

2019-07-11 20:36:51 371

原创 基于范围的for循环

在C++98标准中,如果要遍历一个数组,通常会需要如下代码:#include <iostream>using namespace std;int main(){ int arr[5] = { 1,2,3,4,5 }; for (auto p = arr; p < arr + sizeof(arr) / sizeof(arr[0]); ++p) { *p *...

2019-07-09 21:50:56 347

原创 追踪返回类型

先看一个例子:template<typename T1, typename T2>decltype(T1 + T2) Sum(T1 &t1, T2 &t2){ return t1 + t2;}这样的写法虽然看似不错,不过编译器在推导decltype(t1 + t2)时,表达式中的t1和t2都未声明(编译器只会从左向右读入符号),按照C/C++编译器规则...

2019-07-09 21:34:40 245 1

原创 typeid与decltype

C++在C++98标准中就部分支持动态类型了,C++98对动态类型支持就是C++中的运行时类型识别RTTI。RTTI的机制是为每个类型产生一个type_info类型的数据,程序员可以在程序中使用typeid随时查询一个变量的类型,typeid就会返回变量相应的type_info数据,而type_info的name成员函数可以返回类型的名字。而在C++11中,又增加了hash_code这个成员函...

2019-07-09 21:17:38 1898

原创 模板函数的默认模板参数

模板函数的使用template<typename T> void TempFun(T a){ cout << a << endl;}int main(){ TempFun(1); //实例化为TempFun<const int>(1) TempFun("1"); //实例化为TempFun<const char ...

2019-07-05 18:05:35 1011

原创 final/override控制

final作用:C++11中final关键字的作用是使派生类不可覆盖它所修饰的虚函数。class Object {public: Object() {}; virtual void Foo() {};};class Base : public Object{public: Base() {}; void Foo() final {}; //声明为final};cl...

2019-07-04 18:42:29 111

原创 非静态成员的sizeof

从C语言被发明开始,sizeof就是一个运算符,也是C语言中除了加减乘除以外为数不多的特殊运算符之一。而C++引入类类型之后,sizeof的定义也随之进行了扩展。在C++98标准中,对非静态成员变量使用sizeof是不能通过编译的。而在C++11中,对非静态成员变量使用sizeof操作是合法的。例如:class Point{public: Point() {}; int i = ...

2019-07-04 17:42:17 148

原创 auto类型推导

一 静态类型、动态类型与类型推导在编程语言的分类中,C/C++常被冠以“静态类型”的称号,而有的编程语言则称为“动态类型的”,比如Python。静态类型和动态类型的主要区别在于对变量进行类型检查的时间点。对于所谓的静态类型,类型检查主要发生在编译阶段;而对于动态类型,类型检查主要发生在运行阶段。形如Python等语言的变量“拿来就用”的特性,则需要归功于一个技术,即类型推导。事实上,类型...

2019-07-03 21:44:39 499

原创 long long 整型

C++11将long long 整型加入其中。long long 整型有两种:long long 和 unsigned long long。在C++11中,标准要求long long整型可以在不同平台上有不同的长度,但至少有64位。我们在写常数字面量时,可以使用LL或ll后缀标识一个long long类型的字面量,而ULL、ull、Ull、uLL标识一个unsigned long long类型...

2019-07-03 20:41:44 1802

原创 noexcept修饰符与noexcept操作符

目的:表示其修饰的函数不会抛出异常,编译器可以选择直接调用std::terminate()函数来终止程序的运行。从语法上将,noexcept修饰符有两种形式,一种就是简单地在函数声明后加上noexcept关键字。比如:void except_func() noexcept;另外一种则可以接受一个常量表达式作为参数,如下所示:void except_func() noexcept (...

2019-07-03 20:22:46 1134

原创 “= default”与“=deleted”

在C++中声明自定义的类,编译器会默认帮助程序员生成一些他们未自定义的成员函数,这样的函数版本被称为“默认函数”。这包含了一下一些自定义类型的成员函数:构造函数拷贝构造函数拷贝赋值函数移动构造函数移动赋值函数析构函数此外,C++编译器还会为以下这些自定义类型提供全局默认操作符函数:operatoroperator &operator &&op...

2019-07-02 21:45:06 174

原创 指针空值——nullptr

目的:消除字面值常量0的二义性。问题引入在良好的C++编程习惯中,声明一个变量的同时,总是需要记得在合适的代码位置将其初始化。对于指针类型的变量,这一点尤其应当注意,典型的初始化指针是将其指向一个“空”的位置,比如0或者NULL。例如:int *p = 0;int *ptr = NULL;一般情况下,NULL是一个宏定义。在vcruntime.h可以找到如下代码:#ifn...

2019-07-02 21:01:05 1253

原创 初始化列表

在C++98中,标准允许使用花括号“{}”对数组元素进行统一的集合(列表)初始化设定,比如:这些都是合法的表达式。不过一些自定义类型,却无法享受着这样便利的初始化。通常,如标准程序库中的vector这样的容器,总是需要声明对象-循环初始化这样的重复动作,这对于使用模板的泛型编程无疑是非常不利的。事实上,在C++11中,集合(列表)的初始化已经成为C++语言的一个基本功能,在C++11中,这...

2019-07-02 17:48:28 374

原创 完美转发

所谓完美转发(perfect formarding),是指在函数模板中,完全依照模板的参数的类型,将参数传递给函数模板中调用的另外一个函数。比如:template <typename T>void IamForwording(T t){ IrunCodeActually(t);}这个简单的例子中,IamForWording是一个转发函数模板。而函数IrunCod...

2019-07-01 21:23:40 697

原创 左值、右值与右值引用

在C语言中,我们常常会提起左值(lvalue)、右值(rvalue)这样的称呼。而在编译程序时,编译器有时也会在错误的信息中包含左值、右值的说法。不过左值、右值通常不是通过一个严谨的定义而为人所知的,大多数时候左右值的定义与判别方法是一体的。一个典型的判别方法就是,在赋值表达式中,出现在等号左边的就是“左值”,而在等号右边的,则成为“右值”。比如:a = b + c在这个赋值表达式中,a...

2019-06-30 21:17:09 254

设计模式学习资料汇总.zip

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

2019-09-07

空空如也

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

TA关注的人

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