自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (3)
  • 收藏
  • 关注

转载 C++11锁的加强版封装unique_lock

unique_lock是一个通用的互迟锁包装类,它允许延迟锁定,限时尝试加锁,递归锁定,锁定所有权的转移以及与条件变量一起使用。简单地讲,unique_lock 是 lock_guard 的升级加强版,它具有 lock_guard 的所有功能,同时又具有其他很多方法,使用起来更强灵活方便,能够应对更复杂的锁定需要。特点如下:创建后默认锁定,和lock_guard创建时可以不锁定(通过指定第二个参数为std::defer_lock),而在需要时再锁定。defer_lock表示延时加锁的意思.

2021-01-25 11:50:58 14

原创 git基础(14) 底层逻辑

待补充,临时记录。git的底层采用对象的方式来管理。对象的类型分为blob、tree、commit,每一个对象在.git/object目录下对应一个对象文件。每次git add会为修改的文件创建一个blob。git不是基于补丁来记录每次提交,而是基于快照来记录每次提交,快照意味着是全部备份,但是为了节省空间,只对修改过的文件进行备份,对于没有修改过的文件,许多快照一起共用。git cat-file -t 查看对象文件类型git cat-file -p 查看对象文件内容对于blob对象文件,查

2021-01-21 15:46:40 23

转载 git基础教程(12) 理解HEAD指针和分支指针

HEAD指针使用git checkout 来移动HEAD指针,移动的对象可以是分支指针也可以是快照。HEAD指针可以指向快照也可以指向branch。当指向branch时提交后会和branch指针一起向后移动,当不指向branch提交时则会在一个detached状态。分支(branch)指针使用git branch -f 来移动分支指针,移动的对象只能是快照。当且仅当HEAD指针指向分支指针的时候,提交才会有效。实例1.HEAD指针默认指向当前的分支指针,用星号表示,如master*2.移动H

2021-01-17 22:22:15 24

原创 git基础教程(8)分支模型演示

1、初始时只有一个main分支,圆点表示提交记录,当前有两次提交,箭头由C1指向C0,表示C1是基于C0之后的提交记录,称C1是子记录,C0是父记录。main右上角有个星号,表示main是工作区当前所处的分支。2、再做一次提交:从日志可以看到三次提交记录:3、这个时候,你临时接到任务,要修复某个bug,领导让你从C2结点开一个分支,叫fix_bug,开始你的bug修复工作。git branch fix_buggit checkout fix_bug上面两步(创建分支、切换分支)可以合成一

2021-01-17 22:09:33 12

原创 linux在线模拟终端

http://s-macke.github.io/jor1k/demos/main.html

2021-01-17 17:11:35 28

原创 VIM 交互式在线教程通关

https://www.openvim.com/tutorial.html

2021-01-17 15:02:00 22

转载 git学习(10) 如何将本地项目上传到Github

​ 第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹)。​你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建。​ 现在我通过命令行在桌面新建一个TEST文件夹(你也可以在其他任何地方创建这个文件夹),并且进入这个文件夹​ ​ ​ 第二步:通过命令git init把这个文件夹变成Git可管理的仓库​ ​ 这时你会发现TEST里面多了个.git文件夹,它是Git用来跟踪和管理版本库的。如果你看不到,是因为它默认是隐藏文件,那你就需

2021-01-17 01:10:27 19

转载 git学习(1) Windows10下安装Git

Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。具体安装步骤如下:第一步:先从官网下载最新版本的Git官网地址:https://git-scm.com/downloads点击上图中表示的地方进行下载,得到Git-2.17.1.2-64-bit.exe文件。如果你的系统是32位的,可以通过如下方式下载:第二步:双击下载好的git安装包,弹出提示框,如下图:第三步: 直接点击“Next”进入下一步,选择安装路径,如下图:第四步:选择好安装路径后,点击“

2021-01-17 00:58:31 40

原创 C++ 11 时间编程(4)利用std::chrono::steady_clock写一个定时器

待写#ifndef TOOL_TIMER_H#define TOOL_TIMER_H#include<chrono> class Timer{private: std::chrono::steady_clock::time_point start_;public: Timer():start_(std::chrono::steady_clock::now()) { } void reset() { start_

2021-01-04 00:16:40 76

原创 struct input_event

待写

2021-01-03 23:03:39 23

原创 C++ 模板类的继承

在模板类的继承中,需要注意以下两点:必须指明父类的模板类型,因为要分配内存空间如果子类是模板类,要么用具体类型指定父类的模板类型,要么用子类的泛型来指定父类。template <typename T>class Parent{public: Parent(T p) { this->p = p; } private: T p;}; //如果子类不是模板类,需要指明父类的具体类型class ChildOne: pu

2021-01-03 22:23:06 57

转载 C++ 类模板的写法

在C++的Template中很多地方都用到了typename与class这两个关键字,有时候这两者可以替换,那么这两个关键字是否完全一样呢?事实上class用于定义类,在模板引入c++后,最初定义模板的方法为:template<class T>,这里class关键字表明T是一个类型,后来为了避免class在这两个地方的使用可能给人带来混淆,所以引入了typename这个关键字,它的作用同class一样表明后面的符号为一个类型,这样在定义模板的时候可以使用下面的方式了:template<

2021-01-03 20:11:28 130

转载 C++ 11 时间编程(1)std::chrono模板介绍

要使用chrono库,需要#include,其所有实现均在std::chrono namespace下。注意标准库里面的每个命名空间代表了一个独立的概念。chrono是一个模版库,使用简单,功能强大,只需要理解三个概念:duration、time_point、clock一 、时钟-CLOCKchrono库定义了三种不同的时钟: std::chrono::system_clock: 依据系统的当前时间 (不稳定) std::chrono::steady_clock: 以统一的速率运行(不能被调整

2021-01-03 17:07:23 22

原创 C++ 11 时间编程(3)时间点表示time_point,时钟类型,当前时间获取

时间点#include <chrono>template<class Clock, class Duration = typename Clock::duration> class time_point;time_point模板类用于表示一个时间点。Clock指明该时间点是基于什么时钟类型计算,time_point内部存储了一个Duration类型的字段,表示该时钟启动以来(epock)的时间间隔。时钟类型支持的时钟类型有:std::chrono::system_c

2021-01-03 15:56:03 25

原创 C++ 11 时间编程(2)描述一段时间间隔std::chrono::duration

时间间隔durationtemplate<class Rep, class Period = std::ratio<1>> class duration;duration用来表示一段时间间隔,Resp描述了表示ticks数目的类型,如int;Period是一个编译时有理数常量,表示一个tick的周期,单位是秒。duration里面只是保存了一个用于计数有多少个tick的变量,该变量类型为Rep,该值由构造函数传入。duration提供了count函数用于获取这个值。std

2021-01-03 15:25:11 52

转载 嵌入式开发该采用C++编写吗

前言几十年来,嵌入式软件工程师们一直在争论是否应该使用C++替代C语言进行开发工作。根据IEEE和github的市场调查显示,微控制器制造商提供的软件大部分都是由C语言编写。事实上,56%的嵌入式软件是用C语言编写的。然而,C++已经逐渐普及,大约23%的新嵌入式软件项目都是用C++编写的。C语言发展到现在,差不多50年的时间了,现在正是C语言过渡到C++语言成为嵌入式开发主流语言的最佳契机。对于习惯了用C语言开发的嵌入式程序员来说,对C++语言是有一些误解和偏见的。(1) C++执行效率低

2021-01-03 13:46:40 66

转载 受 SQLite 多年青睐,C 语言到底好在哪儿?

C 语言是最佳选择从2000年5月29日发布至今,SQLite 一直都是用 C 语言实现。C 一直是实现像 SQLite 这类软件库的最佳语言。目前,还没有任何计划要采用另外一门语言对 SQLite 进行重新开发。为什么 C 语言是实现 SQLite 的最佳选择?原因主要体现在这几个方面:㉿ 性能㉿ 兼容性㉿ 低依赖性㉿ 稳定性1、性能像 SQLite 这类库要求速度必须要快。SQLite 的速度就很快,它比文件系统快 35%!而 C 语言就能实现快速编写代码。C 语言通常被描述为**“.

2021-01-03 13:17:53 20

转载 避免成为专家级新手

文章目录专家级新手软件专家级新手避免成为专家级新手辨认专家级新手结语专家级新手1980 年,德雷福斯兄弟提出一个模型,将一个技能的学习程度类比成阶梯式的模型,由上而下分成:专家(Expert)、精通者(Proficient)、胜任者(Competent)、高级新手(Advanced Beginner)、新手(Novice)五个等级。这就是德雷福斯模型(Dreyfus model of skill acquisition)。基于这个模型德雷福斯兄弟写了一本书, 显然它有很多内容,但它的要点是,技能

2021-01-03 13:12:08 37

转载 C++发展历史

C++ 语言是从C语言发展而来的。C语言有很多优点,也有很多不足。如对类型匹配的检查不够严格、基本没有支持代码重用的机制、不支持面向对象等。这使得在用C语言开发大规模的软件时,维护和扩充都比较困难。20世纪70年代中期,Bjarne Stroustrup在剑桥大学计算机中心工作。他使用过Simula和ALGOL,接触过C。他对Simula的类体系感受颇深,对ALGOL的结构也很有研究,深知运行效率的意义。既要编程简单、正确可靠,又要运行高效、可移植,是Bjarne Stroustrup的初衷。以C为背景

2021-01-03 00:00:41 56

转载 C++操作符重载入门

文章目录一、为什么使用操作符重载?二、如何声明一个重载的操作符?A: 操作符重载实现为类成员函数B:操作符重载实现为非类成员函数(全局函数)operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator和后面的操作符整体上视为一个函数名。一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只支持基本数据类型和标准库中提供的class,对于用户自己定义的class,如果想支持基本操作,比如比较大小,判断是否相等,等等,则需要用户自己来定义关于这个操作符的具体

2021-01-02 21:39:28 55

原创 C++类模板

。。。

2021-01-02 19:20:22 23

原创 C++operator关键字(重载操作符)

2021-01-02 19:19:48 29

转载 C++定义一个不能被继承的类

如何定义一个不能被继承的类???假设有一个类B,如果把B的构造函数声明为私有的,那么B这个类就不能被继承,但是这也引入了一个问题,不能在类外定义B类型的对象,那要怎么解决这个问题呢???方法1:我们可以在类内创建一个对象并提供一个静态的接口,返回创建的这个对象。但是如果使用这种方法的话,在定义B的对象的时候感觉不是很完美。方法2:我们可以声明一个辅助的类A,把类A的构造函数声明为私有的,并使得B是A的友元类,且B虚继承A。让B是A的友元类的目的在于能够让B访问A的私有构造函数,这样继承自A的B才可

2021-01-02 18:52:18 29

原创 linux系统时间编程(10) 纳秒级UTC时间获取timespec_get

<time.h>int timespec_get( struct timespec *ts, int base );(1)(since C11)#define TIME_UTC /* implementation-defined */(2)(since C11)base指定时间基准,通常设置为 TIME_UTC,表示获取UTC时间。#include <stdio.h>#include <time.h> int main(v...

2021-01-02 01:21:23 74

原创 linux系统时间编程(9) 计算程序片段执行时间clock函数

<time.h>clock_t clock(void);clock返回自程序运行以来,所耗费的处理器时间。它的单位并非秒,除以 CLOCKS_PER_SEC 才是秒。#include <time.h>int clock_gettime(clockid_t clk_id, struct timespec* tp);int clock_settime(clockid_t clock_id, const struct timespec *tp);可以根据需要,获取不同要求.

2021-01-02 01:16:07 66

原创 linux系统时间编程(8) UTC秒数转本地字符串时间ctime函数

<time.h>char* ctime ( const time_t* timer );(1)char* ctime_r( const time_t* timer, char* buf );(2)(since C23)errno_t ctime_s( char buf, rsize_t bufsz, const time_t timer );(3)(since C11)该函数执行了两步操作,相当于:asctime(localtime(t...

2021-01-02 00:21:14 67

原创 linux系统时间编程(7) UTC秒数转为本地日历时间localtime函数

<time.h>struct tm *localtime ( const time_t *timer );(1)struct tm *localtime_r( const time_t *timer, struct tm *buf );(2)(since C23)struct tm *localtime_s( const time_t *restrict timer, struct tm *restrict buf );(3)(since C11)...

2021-01-02 00:12:49 1972 6

原创 linux系统时间编程(6) 日历时间tm转字符串strftime函数

<time.h>size_t strftime( char * str, size_t count, const char * format, const struct tm * time );(until C99)size_t strftime( char *restrict str, size_t count, const char *restrict format, const struct tm ...

2021-01-01 23:43:19 53

原创 linux系统时间编程(5) UTC秒数转日历时间gmtime函数,日历时间转字符串asctime函数

文章目录UTC秒数转日历时间---gmtime函数Example日历时间tm转字符串格式--asctime函数UTC秒数转日历时间—gmtime函数<time.h>struct tm *gmtime ( const time_t *timer );(1)struct tm *gmtime_r( const time_t *timer, struct tm *buf );(2)(since C23)struct tm *gmtime_s( const

2021-01-01 17:03:18 51

原创 linux系统时间编程(3) 计算机界时间--UNIX时间戳获取

unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。Unix时间戳(英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp)是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z.一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。在大多数的UNIX系统中

2021-01-01 16:26:35 37

原创 linux系统时间编程(2) 各种时间标准GMT、UTC、世界时、TAI

GMT时间格林尼治平均时间(英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台当地的平太阳时,因为本初子午线被定义为通过那里的经线。平太阳或假太阳是一个假想的天体,它每年和真太阳同时从春分点出发,在天赤道上从西向东匀速运行,这个速度相当于真太阳在黄道上运行的平均速度,最后和真太阳同时回到春分点。平太阳是美国天文学家纽康提出来的,主要是为了得到一个均匀适用的日常时间。以假想天体“平太阳”(mean Sun)为基准测量时间,而不再以真太阳为基准,这样测量出来

2021-01-01 15:35:29 54

转载 linux 系统时间编程(1) wall time和monotonic time科普

在一些系统调用中需要指定时间是用CLOCK_MONOTONIC还是CLOCK_REALTIME,以前总是搞不太清楚它们之间的差别,现在终于有所理解了。CLOCK_MONOTONIC是monotonic time,而CLOCK_REALTIME是wall time。monotonic time字面意思是单调时间,实际上它指的是系统启动以后流逝的时间,这是由变量jiffies来记录的。系统每次启动时jiffies初始化为0,每来一个timer interrupt,jiffies加1,也就是说它代表系统启动后

2021-01-01 14:13:05 92

原创 一个可以在线运行、debug C++程序的平台

http://cpp.sh/

2021-01-01 13:08:50 76

HI3519AV100最新SDK smaple

海思最新SDK 程序 版本V2.0.1.0 最新

2019-03-29

RTP协议在嵌入式网络摄像机中的设计及实现.pdf

rtp,网络摄像头开发,描述了rtp推流,h264编码,v4l2视频流获取

2018-04-27

v4l2读取摄像头

v4l2读取摄像头,能在linux下编译,生成yuv文件,可以指定文件帧数

2018-01-30

空空如也

空空如也

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

TA关注的人 TA的粉丝

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