自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 python包管理工具pip

查看版本pip -V查看已经安装的包 pip listC:\Users\hongjh>pip listPackage Version-------------- ---------beautifulsoup4 4.9.3certifi 2020.12.5cffi 1.14.3chardet 4.0.0cryptography 3.2.1idna 2.10lxml 4.6.3

2021-05-29 11:57:11 2756

原创 repo代码管理之manifest配置文件介绍

xxx

2021-05-28 14:05:31 2745

原创 C++11 std::move将左值强制转换为右值

通过学习 《C++11 移动语义与移动构造》一节我们知道,C++11 标准中借助右值引用可以为指定类添加移动构造函数,这样当使用该类的右值对象(可以理解为临时对象)初始化同类对象时,编译器会优先选择移动构造函数。注意,移动构造函数的调用时机是:用同类的右值对象初始化新对象。那么,用当前类的左值对象(有名称,能获取其存储地址的实例对象)初始化同类对象时,是否就无法调用移动构造函数了呢?当然不是,C++11 标准中已经给出了解决方案,即调用 move() 函数。move 本意为 “移动”,但该函数并不能移动

2021-05-23 20:38:42 4345

原创 C++高阶 深拷贝和浅拷贝

文章目录1、浅拷贝3、到底是浅拷贝还是深拷贝1、浅拷贝对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存。例如:class Base{public: Base(): m_a(0), m_b(0) { } Base(int a, int b): m_a(a), m_b(b) { }private: int m_a; int m_b;};int main(){ int a = 10; int b = a; //拷贝

2021-05-23 13:24:56 1634

原创 C++高阶 理解左值和右值、左值引用和右值引用

在 C++ 或者 C 语言中,一个表达式(可以是字面量、变量、对象、函数的返回值等)根据其使用场景不同,分为左值表达式和右值表达式。确切的说 C++ 中左值和右值的概念是从 C 语言继承过来的。值得一提的是,左值的英文简写为“lvalue”,右值的英文简写为“rvalue”。很多人认为它们分别是"left value"、“right value” 的缩写,其实不然。lvalue 是“loactor value”的缩写,可意为存储在内存中、有明确存储地址(可寻址)的数据,而 rvalue 译为 “read

2021-05-23 00:26:06 1612

原创 C++11 lamba表达式小细节

如果lamba表达式没有捕获任何变量,则可以转换为一个普通的函数指针:// Example program#include <iostream>#include <string>int main(){ int a = 11; auto f = [](int) { std::cout << "hello world";}; void (*fptr)(int) = f; (*fptr)(a);}...

2021-05-22 23:53:34 656

原创 C++11 lamba表达式的优越性体现在哪

优越性比较应该是和C++原本的函数、函数对象(重载operator()的struct)做对比的。其实lambda本质也就是之前的函数对象,但是由于lambda是C++11的语法扩充,而非库的扩充。它其实有着之前函数或者函数对象所不能比拟的一些优势。首先,大家都知道的:它能够在需要使用的时候定义,而无需跳出当前函数,在函数外重新定义一个函数或者struct。你或许会觉得这是一个微不足道的语法糖。其次,大家未必知道的:其实lambda还有一个优势,就是定义时立即执行。[]() { //....}

2021-05-22 22:48:12 647

原创 C++高阶 成员函数指针例子小记

下面展示了成员函数,虚函数、静态成员函数转成函数指针的调用方法,#include <iostream>using namespace std;class A {public: static void staticMethod(){cout<<"static"<<endl;} //static member 静态函数 void nonStaticMethod() {cout<<"nonstatic"<<endl;}

2021-05-22 16:18:45 13

原创 C++高阶 各种可调用对象--重点成员函数指针

文章目录1、简单函数形式1.1 普通函数1.2 类成员函数1.3 仿函数1.4 函数指针1.5 成员函数指针一组执行任务的语句都可以视为一个函数,一个可调用对象。在程序设计的过程中,我们习惯于把那些具有复用性的一组语句抽象为函数,把变化的部分抽象为函数的参数。函数的使用能够极大的极少代码重复率,提高代码的灵活性。C++中具有函数这种行为的方式有很多。就函数调用方式而言func(param1, param2);这儿使用func作为函数调用名,param1和param2为函数参数。在C++中就fun

2021-05-22 14:10:14 4359 1

原创 不得不看的全网精华之C++11 60篇链接汇总

整理得比较完整的一个C++11系列教程,遵循由浅到深的编排顺序,并且做了大量上机验证和堪误,以及语病和语义通顺修改,呕心沥血,增删改查1年多时间才完成,汇聚csdn、博客园、Google搜索、百度搜索等全网精华,在此奉献给各位爱好C++、被迫学习C++的网友,欢迎文章下方留言评论,指出纰漏。C++11 系列文章C++11(0)10个开始使用 C++11 的理由C++11(1) 原生字符串C++11(2) 新增基本数据类型std::nullptr_t以及关于C/C++中NULL、nullptr对比

2021-05-22 00:37:51 684 1

原创 520当然是来看我的博客好好学习了

520,好好学习,才能早日脱单。

2021-05-20 23:51:45 38

原创 git clone 指定分支 拉代码

1.git clone 不指定分支git clone http://10.1.1.11/service/tmall-service.git2.git clone 指定分支git clone -b dev_jk http://10.1.1.11/service/tmall-service.git命令中:多了一个 -b dev-jk,这个dev_jk就是分支,http://10.1.1.11/service/tmall -service.git为源码的仓库地址。...

2021-05-20 11:40:26 26

原创 C++高阶 聚合类型和聚合类

首先,数组是聚合类型的(即使它的元素是非聚合类)。class、struct、union也可以是聚合类型,但要满足一些条件。聚合类(aggregate class)使用户可以直接访问其成员,并且具有特殊的初始化语法。当一个类满足以下条件时,我们说它是聚合的:所有成员都是public没有定义构造函数没有类内初始值没有基类,也没有虚函数聚合类可以有非public的static数据成员。聚合类可以有成员函数。聚合类可以有用户自定义析构函数、赋值运算符。class NotAggregate1{

2021-05-20 00:19:08 85

原创 C++高阶 变量初始值确定

关于变量的初始值也是C++比较迷惑人的地方之一,因为一个小细节不一致,就有不一样的初始值。一个没有初始化的全局int数组,元素初始值0,bool数组则是false而一个没有初始化的局部数组,其值具有不确定性一个仅初始化了一个元素的数组其表现又不一样了一个初始化了一部分的类数组,该类要支持默认构造方可。class A{public: A(int) {} //no default constructor};class B{public: B() {} //default con

2021-05-20 00:01:58 97

原创 C++11 decltype类型推导

C++11中新增了decltype关键字,主要的功能是在编译时推导出一个表达式的类型,它的语法格式如下:decltype(exp) //exp为一个表达式1 decltype的推导规则decltype的推导规则如下:exp是标识符或者类访问表达式时,decltype(exp)的结果和exp表达式一致exp是函数调用时,decltype(exp)的结果是函数的返回值除上述两种外,如果exp是一个左值,则decltype(exp)的结果是exp类型的左值引用,否则和exp类型一致按照上面的规

2021-05-18 22:43:58 650

原创 Linux基础(9)计划任务

待写

2021-05-16 15:20:15 475 1

原创 Linux基础(10)关于服务器登录用户信息查看的若干命令

w命令# w // 显示当前用户登录信息及执行的命令19:50:14 up 9:27, 4 users, load average: 0.31, 0.26, 0.18USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot tty7 :0 Thu12 31:39m 10:10 0.60s gnome-sessionroot pts/0 :0.0 17:09 2:18m 15.26s 0.15s

2021-05-16 15:06:03 417

原创 Linux系统管理(1)权限管理扩展ACL

待写

2021-05-16 13:06:04 406

原创 C++模板元编程(12)真正的模板元编程

待写

2021-05-15 20:12:51 14

原创 C++模板元编程(12)偏特化带来的多义性问题

待写

2021-05-15 20:11:05 16

原创 C++模板元编程(11)模板全特化和偏特化

文章目录1、C++模板2、C++模板全特化3、C++模板偏特化4、模板类调用优先级1、C++模板大家都对C++的模板编程应该都能很熟练使用了,下面就是一段很简单不过的例子了//模板函数template<typename T1, typename T2> void func(T1 num1, T2 num2){}//模板类template<typename T1, typename T2> class Test{ void func(T1 a,T2 b)

2021-05-15 17:26:11 33

原创 C++模板元编程(10)模板默认参数

文章目录1.函数模板默认模板参数简介2.函数模板默认模板参数的特点3 函数模板的参数推导规则1.函数模板默认模板参数简介函数模板与类模板在 C++98 一起被引入,因种种原因,类模板可以拥有默认模板参数,而函数模板不可以。从 C++11 开始,这个限制被解除了,即函数模板同样可以拥有默认模板参数。默认模板参数的用法与函数的默认参数类似,考察如下示例:#include <iostream>using namespace std;//函数默认参数void testFunc(int pa

2021-05-14 00:29:37 1393 1

原创 C++模板元编程(9)模板别名--typedef臭包裹与using的引入

文章目录1、typdef的无奈2、C++引入using定义模板别名1、typdef的无奈在C++98/03里,我们可以通过typedef 关键字定义一个类型的别名,比如 typedef unsigned int uint32;在这里我们定义了unsigned int类型的别名uint32,在以后需要使用unsigned int的时候我们都可以用uint32替换,但是v仅仅是作为unsigned int的一个别名,如下的定义是不合法的:typedef unsigned int uint32;void

2021-05-13 22:34:19 1389 1

原创 Linux C高阶(25)通过netlink机制检测usb热插拔

Netlink socket 是一种Linux特有的socket,用于实现用户进程与内核进程之间通信的一种特殊的进程间通信方式(IPC) ,也是网络应用程序与内核通信的最常用的接口。Netlink 是一种在内核和用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就能使用 Netlink 提供的强大功能,内核态需要使用专门的内核 API 来使用 Netlink。Android udev机制就是采用的PF_NETLINK....

2021-05-13 16:41:12 42 1

原创 vscode设置代码格式化--选择Google风格

2021-05-13 00:13:00 1672 2

原创 Linux C高阶(21)监听键盘单个按键输入

文章目录1 前言2 终端IO的三种模式2.1 canonical 模式2.2 nocanonical 模式2.3 raw 模式3 终端控制结构1 前言编写测试工具的时候,需要实时的读取终端的输入(不需要按下enter键才读取), 然后执行相应命令,所以研究了下如何在linux下监听键盘信息。本例子采用了阻塞读取串口终端的方式,可以修改成另起一个线程。2 终端IO的三种模式2.1 canonical 模式这个模式也叫做cooked模式。在这种模式下,终端设置每次返回一行数据,换句话说就是遇到换行符才

2021-05-12 19:28:16 1385 2

原创 C++11 shared_ptr循环依赖引入的内存泄露问题

#include <memory>#include <iostream>class CB;class CA{public: CA() { std::cout << "CA() called! " << std::endl; } ~CA() { std::cout << "~CA() called! " << std::endl; } void set_ptr(std::shared_ptr<CB

2021-05-11 17:51:20 1905 1

原创 C++17 文件系统操作

待写

2021-05-11 11:49:46 812

原创 全网唯一UAVCAN中文教程(17)uavcan_linux库介绍

待写

2021-05-10 10:23:14 1657 1

原创 C++高阶 继承时的名字遮盖问题

待写

2021-05-10 00:52:38 822 1

原创 C++高阶虚析构

待写

2021-05-10 00:51:54 839

原创 C++高阶 向上转型

待写

2021-05-10 00:49:34 17

原创 C++发展过程中的杰出人物

Dennis M. Ritchie被称为C语言之父,UNIX之父,生于1941年9月9日,哈佛大学数学博士,曾任朗讯科技公司贝尔实验室(原AT&T实验室)下属的计算机科学研究中心系统软件研究部的主任一职。他开发了C语言,并著有《C程序设计语言》(The C Programming Language)一书,还和Ken Thompson一起开发了UNIX操作系统。他因杰出的工作得到了众多计算机组织的公认和表彰,1983年,获得美国计算机协会颁发的图灵奖(又称计算机界的诺贝尔奖),还获得过C&C基

2021-05-10 00:36:46 56 1

原创 C++高阶 类型转换函数最透彻的一篇文章

用*转换构造函数可以将一个指定类型的数据转换为类的对象*。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。在C++提供类型转换函数(type conversion function)来解决这个问题。*类型转换函数的作用是将一个类的对象转换成另一类型的数据。*如果已声明了一个Complex类,可以在Complex类中这样定义类型转换函数: operator double( ) { return real; }函数返回dou

2021-05-10 00:02:27 47 1

原创 C++高阶 什么是logic constness 和 bitwise constness

1、什么是 Logic constness有以下类 BigArray,其成员 vector v; 是一个数组数据结构,为了让外部可以访问该数组,此类提供了一个 getItem 接口,除此之外,为了计算外部访问数组的次数,该类还设置了一个计数器 accessCounter ,可以看到用户每次调用 getItem 接口,accessCounter 就会自增,很明显,这里的成员 v 是核心成员,而 accessCounter 是非核心成员,我们希望接口 getItem 不会修改核心成员,而不考虑非核心成员是否被

2021-05-09 22:29:36 19

原创 全网唯一UAVCAN中文教程(16)多线程示例

待写

2021-05-07 17:48:35 1621

原创 C/C++ 可见性问题

待调研http://gcc.gnu.org/wiki/Visibility

2021-05-07 16:44:53 36

原创 C++11 type_traits类型处理(1)

待写

2021-05-07 16:30:02 21

原创 C++ 实战技巧(2)实现一个简单的内存分配器

待写

2021-05-07 15:43:53 15 1

原创 C++高阶 枚举和int的相互转换

待写

2021-05-07 10:30:14 292 1

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的粉丝

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