自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yngz_Miao的博客

优秀是一种习惯。

原创 【C++】weak_ptr弱引用智能指针详解
原力计划

weak_ptr这个指针天生一副小弟的模样,也是在C++11的时候引入的标准库,它的出现完全是为了弥补它老大shared_ptr天生有缺陷的问题。 相比于上一代的智能指针auto_ptr来说,新进老大shared_ptr可以说近乎完美,但是通过引用计数实现的它,虽然解决了指针独占的问题,但也引来了...

2020-05-03 15:34:11 303 0

原创 【C++】shared_ptr共享型智能指针详解
原力计划

指针是C/C++区别于其他语言的最强大的语法特性,借助指针,C/C++可以直接操纵内存内容。但是,指针的引入也带来了一些使用上的困难,这要求程序员自己必须手动地对分配申请的内存区进行管理。 本文实例源码github地址:https://github.com/yngzMiao/yngzmiao-bl...

2020-04-27 13:36:39 498 0

原创 【C++】unique_ptr独占型智能指针详解
原力计划

指针是C/C++区别于其他语言的最强大的语法特性,借助指针,C/C++可以直接操纵内存内容。但是,指针的引入也带来了一些使用上的困难,这要求程序员自己必须手动地对分配申请的内存区进行管理。 本文实例源码github地址:https://github.com/yngzMiao/yngzmiao-bl...

2020-04-24 11:03:57 1050 0

原创 【C++】右值引用、移动语义、完美转发(下篇)
原力计划

上篇中,主要讲解了右值引用和移动语义的具体定义和用法。在C++11中几乎所有的容器都实现了移动语义,以方便性能优化。本文以C++11容器中的insert方法为例,详细讲解在容器中移动语义是如何提高性能的,同时,在这个过程中STL又解决了什么问题。 本文实例源码github地址:https://gi...

2020-04-18 14:24:14 783 0

原创 【C++】右值引用、移动语义、完美转发(上篇)
原力计划

在C++11,引入了右值引用的概念,在此基础上的移动语义在STL容器中使用非常广泛。简单来说,move语义使得你可以用廉价的move赋值替代昂贵的copy赋值,完美转发使得可以将传来的任意参数转发给其他函数。然而,这些新特性的背后是什么深意和原理呢?将从两篇博文中做详细的介绍。 本文实例源码git...

2020-04-15 18:56:20 738 0

原创 【C++】C++11统一初始化(initializer_list<T>源码分析)
原力计划

C++11之前的初始化语法很乱,有四种初始化方式,而且每种之前甚至不能相互转换。让人有种剪不断,理还乱的感觉。因此,C++11添加了统一初始化的方式,本文将对统一初始化的语法进行详细讲解。 本文实例源码github地址:https://github.com/yngzMiao/yngzmiao-bl...

2020-04-04 18:58:03 1878 1

原创 【C++】C++11可变参数模板(函数模板、类模板)
原力计划

在C++11之前,类模板和函数模板只能含有固定数量的模板参数。C++11增强了模板功能,允许模板定义中包含0到任意个模板参数,这就是可变参数模板。可变参数模板的加入使得C++11的功能变得更加强大,而由此也带来了许多神奇的用法。 本文实例源码github地址:https://github.com/...

2020-04-01 15:37:09 1689 0

原创 【C++】NULL和nullptr的关联与差别

在写代码的过程中,有时候需要将指针赋值为空指针,以防止野指针。在C中,都是使用NULL来实现的;在C++中,除了NULL之外,还提供了nullptr来进行定义。那么两者之间有什么区别呢,分别适用于什么类型的场景呢? 本文实例源码github地址:https://github.com/yngzMia...

2020-03-29 19:05:31 2447 0

原创 【Python】python曲线拟合
原力计划

python作为一款可以简单方便地进行科学计算的语言,进行曲线拟合自然是必备的功能之一了。本文就如何进行曲线拟合进行讲解。 本文需要进行拟合的数据为: x = np.arange(1, 31, 1) y = np.array([20, 23, 26, 29, 32, 35, 38, 45, 53,...

2020-03-25 13:57:00 2830 0

原创 【OpenCV】OpenCV常用函数(C++版)
原力计划

俗话说:好记性不如烂笔头。在使用OpenCV的过程中,时常会用到很多函数,而且往往可能会一时记不起这个函数的具体参数怎么设置,故在此将常用函数做一汇总。 本文实例源码github地址:https://github.com/yngzMiao/yngzmiao-blogs/tree/master/20...

2020-03-20 17:52:04 2444 0

原创 【OpenCV】OpenCV图像/视频的读取与写入(C++版)
原力计划

使用C++开发图像处理算法时,最基础的就是利用OpenCV完成图像文件的输入、输出以及自动内存管理(重点)。所以,只要需要掌握一些简单的OpenCV的操作即可。本博文就对这些基础内容进行讲解。 本文实例源码github地址:https://github.com/yngzMiao/yngzmiao-...

2020-03-17 11:33:48 2687 0

原创 【Gradle】Groovy的语法详解(下篇)

上文介绍了Groovy的一般省略规则,以及字符串、列表、Map的使用方式,然而在Groovy中,闭包是其中的一大杀器,可以对代码的结构和逻辑带来的优化显而易见。本博文主要对Groovy闭包的使用、文件IO的使用进行讲解。 本文实例源码github地址:https://github.com/yngz...

2020-01-10 21:05:22 3121 0

原创 【Gradle】Groovy的语法详解(上篇)

Gradle之所以在项目构建的过程中很强大,其中很大一部分原因就是在于Groovy。Grooovy是Java平台上设计的一种强大的、可选类型和动态的语言。Groovy可以无缝地集成任何Java程序,并立即让你的应用程序拥有强大的特性,包括脚本功能、DSL、运行时和编译时元编程和函数式编程。 也就是...

2020-01-08 21:17:57 3221 1

原创 【CMake】CMake的configure_file指令

有些时候,我们需要在项目中标明版本号、Git的hash号、编译时间等信息,但是显然,对于Git的hash号、编译时间我们不想自己手动填写。现在提供一种途径,将这些信息写入到头文件中,再编译到so库文件或者可执行程序中。 这样,就可以通过提供库文件的接口或者可执行程序的打印中得到这些值了。 本文实例...

2020-01-06 21:13:11 3518 0

原创 【python】Python学到什么程度可以面试工作(解答一)

逛知乎,看到帖子Python学到什么程度可以面试工作?,在桃花岛主的回答中讲到2019年最新的Python面试题,同时还有旭东大佬已做了大部分的解答。 博主会在几篇博文中,结合大佬的回答,对这些题目做更详尽的解答。 本文实例源码github地址:https://github.com/yngzMia...

2020-01-03 21:06:16 13220 7

原创 【Protobuf】Protobuf的编解码规则详解

在很多很多时候被问起,为什么选择protobuf?最先被想起的回答的就是体积小、解析快。那相比较于json、XML,为什么protobuf能够做到又小又快呢? 归其原因,这与它的编解码方式有很大的关系。本文将走进protobuf的深层原理来进行剖析。 实例 本文针对实际的例子,来对protobu...

2019-12-30 21:06:08 3599 0

原创 【Protobuf】Protobuf的C++/python版本的使用

上一篇博文讲解了protobuf的安装和.proto文件的定义,并且可以生成C++版本的.cc和.h文件,python的.py文件。那么本文就利用生成的这些数据访问类,进行对象的序列化和反序列化。 上篇博文地址: .proto文件定义 syntax = "proto2"; ...

2019-12-28 09:53:43 3299 0

原创 【Protobuf】Protobuf下载安装和.proto文件定义

序列化和反序列化 有些时候,我们希望将对象保存到文件中,或者传输给其他的应用程序。比如:web网页后端和前端的数据交互,应用程序产生的中间数据等等。 这种将数据结构或对象以某种格式转化为字节流的过程,称之为序列化(Serialization),目的是把当前的状态保存下来,在需要时复原数据结构或对象...

2019-12-25 19:00:53 3367 0

原创 【C++】C++11的std::function和std::bind用法详解

在设计回调函数的时候,无可避免地会接触到可回调对象。在C++11中,提供了std::function和std::bind两个方法来对可回调对象进行统一和封装。 可调用对象 C++中有如下几种可调用对象:函数、函数指针、lambda表达式、bind对象、函数对象。其中lambda表达式和bind对象...

2019-12-23 10:09:44 3002 0

原创 【Cmake】利用NDK进行Android的交叉编译(附实例)

很多时候,对于C++软件工程师来说,可能需要编译能够在Android版本上直接运行的可执行程序、或者是编译so库文件,这个时候就需要完成交叉编译。在命令行下执行交叉编译有两种方式: 一是用NDK自带的工具链 二是使用独立工具链 一般来说,只要使用NDK自带的工具链即可满足日常的需求。本文就这种...

2019-12-19 21:14:32 3642 1

原创 【CPU】ARM底层汇编之neon指令集优化(附实例)

当在ARM芯片上进行一些例如图像处理等计算的时候,常常会因为计算量太大造成计算帧率较低的情况。因而,需要选择一种更加简单快捷的计算方式以获得处理速度上的提升。ARM NEON就是一个不错的选择。 Neon指令优化 NEON是一种SIMD(Single Instruction Multiple Da...

2019-12-16 21:19:54 3301 0

原创 【Simpleperf】Android的CPU分析,性能优化利器

很多时候,写代码是一件很爽的事情,但最后需要对APP进行瘦身、性能分析却是一件很棘手的事情。当需要对APP的性能进行分析时,Simpleperf是一个简单快捷的选择。 正文开始前,先奉上官方的资料: Simpleperf 命令和选项参考 Simpleperf 用法 什么是Simpleper...

2019-12-10 19:41:21 3362 0

原创 【Gradle】Gradle于C++工程(安装、生命周期)

在C++项目工程的搭建中,一般很少使用Gradle,或者你接手的C++项目中很不幸地使用了。因此,你会不断地搜索相关的使用方法,但网络上基本都是在Android Studio中使用,很少涉及到C++项目。从本文开始,会有几篇博文从Gradle项目工程的搭建、到常用语法、到最终实战案例,带你手把手完...

2019-11-30 18:51:35 3108 0

原创 【C++】C++字符串和数字的拼接

如果你使用过python,你会发现字符串和int/float/double便捷的拼接方式;但如果你使用C++,可能你每次需要的时候搜索一下才能知道。本文提供两种简单的方式来完成这个功能。 std::to_string() 通过std::to_string()将数字类型转换成std::string...

2019-11-27 11:21:18 3330 0

原创 【CMake】cmake的install指令

在cmake的时候,最常见的几个步骤就是: mkdir build && cd build cmake .. make make install 那么,make install的时候,是需要我们定义一个install的目标么? 显然并不需要,作为一个经常需要被运行的指令,官方提供...

2019-11-05 14:56:16 12501 0

原创 【C++】C++11的std::array的详细剖析

当学习C++的时候,数组是最基本的结构之一,通常通过以下的方式来定义: int a[5]; int *b = new int[5]; 上面一句是在栈上定义了一个长度为5的数组,下面一句是在堆上定义了一个长度为5的数组,并用一个指针指向它。 在C++11中,引入了一种新的数组定义方式std::ar...

2019-10-31 09:45:41 6930 3

原创 【CMake】cmake的add_custom_command和add_custom_target指令

在很多时候,需要在cmake中创建一些目标,如clean、copy等等,这就需要通过add_custom_target来指定。同时,add_custom_command可以用来完成对add_custom_target生成的target的补充。 add_custom_target 如果你写过Mak...

2019-10-29 13:00:57 4050 0

原创 【CMake】cmake中的include指令(.cmake文件/MACRO宏/function函数)

说到cmake,可能最先想到的就是CmakeLists.txt文件,但是在很多情况下,也会看到.cmake文件。也许,你会诧异,.cmake文件是干什么的,甚至会想.cmake文件是不是cmake的正统文件,而CmakeLists.txt并不是。 但其实,CmakeLists.txt才是cmake...

2019-10-24 13:51:08 11176 1

原创 【Python】Python之PyLab的绘制折线图(手把手教程)

Python的可视化工具有很多,数不胜数,各有优劣。本文就对其中的pylab进行介绍。之所以介绍这一款,是因为它和Matlab的强烈相似度,如果你使用过Matlab,那么相信pylab你也会很快上手。 简单的plot函数 pylab绘图,最基本的函数就是plot函数,当然如果想要将图片显示出来,...

2019-10-21 17:05:48 9904 0

原创 【Python】Python之Numpy的超实用基础详细教程

Numpy numpy的官方中文文档:NumPy 中文 NumPy是使用Python进行科学计算的基础软件包。除其他外,它包括: 功能强大的N维数组对象; 精密广播功能函数; 集成C/C+和Fortran代码的工具; 强大的线性代数、傅立叶变换和随机数功能。 更简单的说,Numpy是Pytho...

2019-10-17 10:50:28 11448 0

原创 【C++】C++函数需要有返回值,但非全分支return(RVO)

今天在review以前的代码的时候,遇到了一个比较奇怪的现象,函数的有返回值,但只在if后面有return,else后面忘写了。但这个版本的代码已经调试验证通过了,没有问题的,这就很怪异。 考验一道题 下面这道题Print的内容是什么? # include <iostream> c...

2019-10-15 09:30:57 7426 1

原创 【GDB】手把手教你用gdb调试程序(超清晰流程)

实例 我以自己曾经写的一段实际代码为例,来讲解究竟该怎么进行GDB调试。 实例地址: 码云:https://gitee.com/yngzMiao/protobuf-parser-tool GitHub:https://github.com/yngzMiao/protobuf-parser-tool...

2019-10-12 15:20:58 10557 0

原创 【CMake】CMakeLists.txt的超傻瓜手把手教程(附实例源码)

新手写CMakeLists.txt简直就是实例劝退,各种命令让很多人头大,如何写一个最基础的CMakeLists.txt呢?本文从一个实例出发,教你编写的基本流程。 本文附实例的源码地址。 CMakeLists.txt的基本结构 编写CMakeLists.txt最常用的功能就是调用其他的.h头文...

2019-10-10 11:20:52 10585 2

原创 【Protobuf】proto二进制文件的生成与解析(附完整源码)

protobuf是Google开源的一个跨平台的结构化数据存储格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。 前言 说起proto的用法,可能最熟悉的莫过于以下两句: obj.ParseFromString(data) data = obj.Seriali...

2019-09-29 11:27:41 12254 0

原创 【Git】Git的“隐身术”:git status/git diff……文件被忽略的秘密

问题描述 今天在公司查看项目源码,当我在某个文件夹下新增加了一个README.md文件之后,想要将它push到远程仓库之前,习惯性地git status一下,发现,提示与上游分支一致,无文件要提交,干净的工作区! 我明明就新增加了一个文件,怎么可能一致呢? 问题解释 原来,这是因为git提供了...

2019-06-29 16:37:16 8194 2

原创 【Linux】Ubuntu下安装并配置Android-NDK(附详细过程)

Android-NDK NDK是Native Develop Kit的含义,从含义很容易理解,本地开发。 一般而言,Android开发语言是Java。不过我们也知道,Android是基于Linux的,其核心库很多都是C/C++的,比如Webkit等。 那么NDK的作用,就是Google为了提供给开...

2019-06-29 14:28:46 7244 1

原创 【JAVA】Win10实现Java文件的开机自启动(附详细步骤)

问题描述 随着入了Win10的坑,发现它最不能让人忍受的一点就是强制系统更新,而且系统更新之频繁,简直不能忍。这就导致,对于一些想要一直运行的Java文件,就会造成每次系统更新之后的重启导致Java文件无法继续运行。 本文就以很简单的程序为例,来实现解决这个问题的过程。 问题解决 问题解决的途径...

2019-06-15 15:10:35 16903 1

原创 【Linux】虚拟机和Ubuntu14.04操作系统零基础安装(附:软件下载链接、图)

Linux定制安装 个人PC可以安装独立的Linux操作系统,也可以采用虚拟机在Windows平台上安装Linux系统。对于初学嵌入式系统开发的人来说,采用在Windows平台上安装虚拟机是一种比较合理的选择。 虚拟机版本:VMware10 Linux操作系统版本:Ubuntu 14.04 附上...

2019-06-11 16:04:46 19863 1

原创 【杂说】东南大学建校117周年,校庆快乐

东南大学主页:www.seu.edu.cn 宣传微信贴:亲爱的东南大学,117岁生日快乐! 东南大学 校史什么的就不说了,这是一个引战的话题,就像是苏南苏北一样。 成就什么的也不说了,网络这么发达,随便Google一下一大堆。而且,作为一所985的高校,无论怎么样,都会有很多拿得出手的专业或者成...

2019-06-06 16:25:36 7751 1

原创 【Linux】制作U-Boot烧写镜像到SD卡的过程(下篇:Makefile文件)

上文讲到,如果需求仅略微修改,整个从编译到仅保留二进制文件到添加HeaderInfo到烧写到SD卡的一系列命令都需要重新再输入一遍,这很繁琐。 如何解决这个问题呢? 制作一个bash脚本文件 制作一个bash脚本文件,也就是制作一个批处理文件: #!/bin/bash arm-linux-gc...

2019-05-26 02:07:23 33871 0

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