自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++高阶 什么是Trivial types?

虽然这是C++的基本概念,但是很多人都不懂,也没有关注过,所以列为C++高阶内容。trivial意思是不重要的,trivial类型的直观表现是,它占据一片连续的内存,就像内建类型或者C的结构体类型、联合体类型一样,但它可以是class或者struct,它的成员可以有访问修饰符控制,这样的类型我们可以直接拷贝到char或者unsigned char数组,然后再拷贝回来,它仍然是原本的类型,换句话就是它可以序列化和反序列化为二进制。满足以下三个条件,该类型就是trivial类型:有默认构造、析构、拷贝构

2021-03-31 09:56:27 2292 1

原创 C++11 智能指针shared_ptr一篇足以

关于shared_ptr我可以写至少3篇内容。

2021-03-31 00:04:04 80 3

原创 C++11 std::async的使用陷阱--为何我的异步操作并不异步

xxx

2021-03-30 15:22:16 99 3

原创 C++11 std::async同步异步执行接口和std::future同步异步执行结果获取

template< class Function, class... Args>std::future<std::result_of_t<std::decay_t<Function>(std::decay_t<Args>...)>> async( Function&& f, Args&&... args );template< class Function, class... Args >

2021-03-28 22:48:58 109 5

原创 C++11 std::this_thread::sleep_for让我睡一会再干活

我从linux C程序员转C++程序员提交的第一份代码里,我写了个线程,其中用到了一个睡眠函数sleep(),写完后提交到分支上让直属领导review。他第一句话就和我说别用sleep函数,C++里用std::this_thread::sleep_for,用法自己去查。我当时以为sleep会导致什么调度问题,后来上网查了下,发现原来不是,std::this_thread::sleep_for只不过是C++11 标准对各个平台的睡眠函数的封装,因为sleep是平台相关的api,它是类UNIX系统提供的,换

2021-03-28 21:03:31 2790 2

原创 C++高阶 RAII机制(以对象管理资源)

文章目录1.什么是RAII2.RAII的原理3、实例:1.什么是RAIIRAII(Resource Acquisition Is Initialization)是由c++之父Bjarne Stroustrup提出的,中文翻译为资源获取即初始化,他说:使用局部对象来管理资源的技术称为资源获取即初始化;这里的资源主要是指操作系统中有限的东西如内存、网络套接字等等,局部对象是指存储在栈的对象,它的生命周期是由操作系统来管理的,无需人工介入;2.RAII的原理资源的使用一般经历三个步骤a.获取资源b.

2021-03-28 16:03:34 4807 2

原创 (5)实现 -- Effective C++改善程序与设计的55个具体做法(Effective C++: 55 Specific Ways to Improve Your Programs)

文章目录18. 让接口容易被正确使用,不易被误用(Make interface easy to use correctly and hard to use incorrectly)19. 设计class犹如设计type(Treat class design as type design)20. 宁以pass-by-reference-to-const替换pass-by-value(Prefer pass-by-reference-to-const to pass-by-value)18. 让接口容易被正确

2021-03-28 14:51:26 4837 2

原创 (3)资源管理-- Effective C++改善程序与设计的55个具体做法(Effective C++: 55 Specific Ways to Improve Your Programs)

文章目录13. 以对象管理资源(Use objects to manage resources)14. 在资源管理类中小心copying行为(Think carefully about copying behavior in resource-managing classes)15. 在资源管理类中提供对原始资源的访问(Provide access to raw resources in resource-managing classes)16. 成对使用new和delete时要采用相同形式(Use the

2021-03-27 23:30:00 2305 2

原创 (2)构造/析构/赋值运算 Effective C++改善程序与设计的55个具体做法(Effective C++: 55 Specific Ways to Improve Your Programs)

文章目录7. 为多态基类声明virtual析构函数(Declare destructors virtual in polymorphic base classes)8. 别让异常逃离析构函数(Prevent exceptions from leaving destructors)9. 绝不在构造和析构过程中调用virtual函数(Never call virtual functions during construction or destruction)10. 令operator=返回一个referenc

2021-03-27 17:46:10 2302 2

原创 (1)让自己习惯C++ Effective C++改善程序与设计的55个具体做法(Effective C++: 55 Specific Ways to Improve Your Programs)

文章目录1. 视C++为一个语言联邦(View C++ as a federation of languages)Scott Meyers是全世界最知名的C++软件开发专家之一。他是畅销书《Effective C++》系列(Effective C++,More Effective C++,Effective STL)的作者,又是创新产品《Effective C++ CD》的设计者和作者。《Effective C++:改善程序与设计的55个具体做法》(中文版)(第3版)一共组织55个准则,每一条准则描述

2021-03-25 23:44:07 2318 4

原创 git 面向工作Tips4: 猴子偷桃,神仙采葡萄

xxx

2021-03-25 11:34:06 81

原创 C++角度看《代码整洁之道》之函数

xxx

2021-03-25 09:33:55 62 1

原创 C++角度看《代码整洁之道》之有意义的命名

xxx

2021-03-24 00:06:20 72 2

原创 ubuntu日志服务rsyslogd及配置文件

xxx

2021-03-22 13:10:53 78

原创 C++高阶 对象内存模型

xxx

2021-03-22 00:32:00 2277

原创 C++高阶 extern “C“的作用

xxx

2021-03-21 23:35:34 4822 2

原创 C++高阶 函数名修饰规则及函数调用约定

xxx

2021-03-21 19:25:46 4807 2

原创 C++高阶 函数调用规则

xx

2021-03-21 17:41:18 2286 1

原创 C++ 左值右值探讨

xxxx

2021-03-21 15:05:11 76

转载 C++11 变量类型获取typeid

文章目录1、typeid使用1) 原型:const char* name() const;2) 原型:bool before (const type_info& rhs) const;3) 原型:bool operator== (const type_info& rhs) const;4) 原型:bool operator!= (const type_info& rhs) const;2 、判断类型是否相等1) 内置类型的比较2) 类的比较3、type_info 类的声明1、typ

2021-03-21 13:17:54 3015 2

转载 C++11 新增基本数据类型std::nullptr_t以及关于C/C++中NULL、nullptr对比

文章目录一、C程序中的NULL是(void *)0二、C++中的NULL其实是0三、C++11 引入nullptr在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有二义性的问题。一、C程序中的NULL是(void *)0在C语言中,NULL通常被定义为:#define NULL ((void *)0)所以说NULL实际上是一个空指针,如果在C语言中写入

2021-03-20 23:00:03 2631 2

转载 C++11 写一个支持基于范围的for循环的类

String,array和所有的STL容器类都能被这种新的基于范围的for循环迭代。但是,如果你将新语法应用到你自定义的数据结构上呢?为了使一个数据具有可迭代性,他必须与STL迭代具有相似的工作属性。(1)具有begin和end方法,即可以作为成员函数也可以作为独立的函数,函数返回数据结构开始和结束的迭代器。(2)迭代器必须支持操作符*,!=,++,即可以作为成员函数也可作为独立函数(详细的信息可以参考操作符重载)。在这里请注意,++操作符必须是前缀的,它被声明为不带参数的operator函数。就

2021-03-16 00:27:07 1799 2

原创 C++专业术语

算术类型arithmetic typeC++中的整型和浮点型。基本类型fundamental types整型、浮点型、void和std::nullptr_t标量类型scalar type算数类型、指针、枚举、std::nullptr_ttrivial typehttp://www.cplusplus.com/reference/type_traits/is_trivial/?kw=is_trivial待完成...

2021-03-15 00:23:22 89

原创 C++11 POD定义

xxxx

2021-03-14 20:30:27 81 1

原创 C++11 右值引用

xxx

2021-03-14 18:02:41 72

原创 C++11 强类型枚举和普通枚举

xxx

2021-03-14 18:01:47 107 1

原创 C++11 lambda函数对象中的静态变量如何工作

你是否思考过这个问题?

2021-03-14 17:57:39 105

转载 C++11 lambda匿名函数看这一篇足以

lambda 源自希腊字母表中第 11 位的 λ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。继 Python、Java、C#、PHP 等众多高级编程语言都支持 lambda 匿名函数后,C++11 标准终于引入了 lambda,本节将带领大家系统地学习 lambda 表达式的具体用法。lambda匿名函数的定义定义一个 lambda 匿名函数很简单,可以套用如下的语法格式:[外部变量访问方式说

2021-03-14 17:38:06 2184 2

原创 C++11 原生字符串

1、原生字符串定义C/C++中提供了字符串,字符串支持转义,在某些时候给我们提供了便利,比如换行符\n,制表符\t。但在我们不需要的时候又成了麻烦,如果需要原生义的时候,需要反转义,比较麻烦。C++提供了,原生字符串,即字符串中无转义,亦无需再反义。原生字符串的准确定义应该是:R"自定义分隔符(字符串)自定义分隔符"前后两处自定义分隔符必须一致,可以省略,所以我们看到的一般原生字符串为:std::string word = R"(hello world)";提供自定义分隔符的用意为,当你的字

2021-03-14 17:21:13 92 2

原创 C++11 std::any_of、all_of、none_of条件遍历算法

如果你有这种需求:判断容器中是否有某个元素满足指定条件,或者所有元素都不满足指定条件,或者都满足指定条件,那么可以考虑使用std::any_of、none_of、all_of通用算法。template <class InputIterator, class UnaryPredicate> bool any_of (InputIterator first, InputIterator last, UnaryPredicate pred);遍历给定区间,对每个元素施加pred,pred可以

2021-03-14 14:52:29 108 2

原创 C++11 for_each遍历算法让你的代码更简洁

template <class InputIterator, class Function> Function for_each (InputIterator first, InputIterator last, Function fn);for_each函数模板的作用是对于给定区间的每一个元素进行fn调用,fn可以是函数,函数对象,lamba表达式。它的行为类似于:template<class InputIterator, class Function> Func

2021-03-14 14:12:48 102 2

原创 C++11 std::find_if

std::find用于查找给定区间里是否有等于我们传入数,但有时候我们可能不是判断是否相等这么简单,我们可能有其他判断需求,比如对于People数组,我们想查找是否有年龄大于50的People。template< class InputIt, class UnaryPredicate >InputIt find_if( InputIt first, InputIt last, UnaryPredicate p );第三个参数是我们自定义的判断条件,它必须

2021-03-14 13:53:04 444 1

原创 C++11 std::find的使用(普通类型和自定义类型)

# include <algorithm>template< class InputIt, class T >InputIt find( InputIt first, InputIt last, const T& value );在传入的区间[first, last) 内查找值等于value的元素,找到则返回指向该元素的迭代器,没有则返回last,其实现大致类似于:template<class InputIt, class T>constexpr In

2021-03-14 12:56:11 135 1

原创 linux启动和服务管理(6)systemd启动过程

Linux系统的启动方式有点复杂,而且总是有需要优化的地方。传统的Linux系统启动过程主要由著名的init进程(也被称为SysV init启动系统)处理,而基于init的启动系统被认为有效率不足的问题,systemd是Linux系统机器的另一种启动方式,宣称弥补了以传统Linux SysV init为 基础的系统的缺点。在这里我们将着重讨论systemd的特性和争议,但是为了更好地理解它,也会看一下通过传统的以SysV init为基础的系统的Linux启动过程是什么样的。主流的Linux发行版已经有很多采

2021-03-07 22:26:52 120 1

转载 linux启动流程(5)SysV init 的启动过程

xxxx

2021-03-07 16:45:10 88 1

原创 linux启动流程(4)systemd 控制命令systemctl

xxxx

2021-03-07 16:03:47 98 1

原创 linux启动流程和服务管理(3)systemd service单元配置文件介绍

文章目录前面说过,systemd以unit为单位来管理事务,其中unit分成了若干类型,service是我们最常用的类型,即后台服务。systemd 配置文件存在于以下三个文件夹中:①/etc/systemd/system 存放系统启动的默认级别及启动的unit的软连接,优先级最高。②/run/systemd/system,系统执行过程中产生的服务脚本,优先级次之。③/usr/lib/systemd/system 存放系统上所有的启动文件。优先级最低.我们今天来认识service单元配置文件。

2021-03-07 16:01:51 127 1

原创 linux启动和服务管理(2)Debian系统的服务启动进程systemd概述

文章目录1、认识systemd前面我们说到,init 程序是系统执行的第一个程序(PID=1),它启动其它各种程序以完成主引导流程。init 程序的默认路径是 ”/sbin/init“,但可通过内核启动参数修改,例如 ”init=/path/to/init_program"。默认的 init 程序一直在变化中,最新的debian系统,/sbin/init是一个到systemd的软链接。因此我们今天来研究systemd。systemd这个话题太大了,可以讲个三天三夜。1、认识systemdsyste

2021-03-07 14:25:45 135 1

原创 linux启动和服务管理(1)Debian系统启动流程概述

作为系统管理员,粗略地了解 Debian 系统的启动和配置方式是明智的。尽管准确的细节在安装的软件包及对应的文档中,但这些知识对我们大多数人来说都是必须掌握的。笔者基于自己和其他人的过往及现在的知识,尽己所能地提供关于 Debian 系统的知识要点及其配置的快速概览作为读者的参考。由于 Debian 系统在不断地更新中,系统的状况可能已经有所变化。在对系统做任何修改之前,请参考各个软件包的最新文档。man bootup(7) 介绍了基于 systemd 的系统启动流程。(近期的 Debian)man

2021-03-07 01:22:25 141 1

原创 认识UNIX System V

UNIX System V是Unix操作系统众多版本中的一支。它最初由AT&T开发,在1983年第一次发布,因此也被称为AT&T System V。一共发行了4个System V的主要版本:版本1、2、3和4。System V Release 4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头,例如“SysV 初始化脚本”(/etc/init.d),用来控制系统启动和关闭,System V Interface Definition(SVID)是一个System V如何工作的

2021-03-07 00:48:57 137

HI3519AV100最新SDK smaple

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

2019-03-29

v4l2读取摄像头

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

2018-01-30

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

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

2018-04-27

空空如也

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

TA关注的人 TA的粉丝

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