自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Markus

心之所向,素履以往 生如逆旅,一苇以航

原创 CMake编程实践(六) 模块使用和自定义模块
原力计划

文章目录模块使用和自定义模块使用系统预定义的FindCURL模块编写自定义的UtilsBox模块编译执行小结 模块使用和自定义模块 cmake开发者在开发过程中认为纯粹依靠cmake本身提供的基本指令来管理工程是也一件非常复杂的事情,所以cmake设计成了可扩展的架构,可以通过编写一些通用的模块来...

2020-04-25 23:39:32 105 0

原创 CMake编程实践(五) 编译静态库和动态库

使用Cmake 编译库 本篇使用CMake编译一个动态库和静态库,并安装到系统中,对应的工程是cmake-utilsbox-lib 编译静态库 指定编译静态库,关键词为static,不添加关键字默认静态库 add_library(utils ${LIB_SOURCE}) 在使用该库的工程中链接都...

2020-04-25 23:33:28 90 0

原创 CMake编程实践(四) 控制指令
原力计划

文章目录控制指令IF指令基本语法 if-else-endif:基本语法:if-elseif-endif正则比较表达式数字比较表达式:按照字母序的排列进行比较:小括号优先计算WHILE指令FOREACH指令使用列表 FOREACH(loop_var arg1 arg2 ...)使用范围 FOREAC...

2020-04-25 23:30:56 47 0

原创 CMake编程实践(三) 常用变量和常用环境变量
原力计划

文章目录常用变量和常用环境变量cmake 变量引用的方式:自定义变量的方式:cmake常用变量:1. CMAKE_BINARY_DIR2. CMAKE_SOURCE_DIR3. CMAKE_CURRENT_SOURCE_DIR4. CMAKE_CURRRENT_BINARY_DIR5. CMAKE...

2020-04-25 23:29:01 55 0

原创 CMake编程实践(二) 常用语法

文章目录CMake常用语法PROJECT 定义工程名称SET 定义变量MESSAGE 输出信息ADD_EXECUTABLE 定义可执行文件INCLUDE_DIRECTORIES 添加头文件路径LINK_DIRECTORIES 添加库的路径TARGET_LINK_LIBRARIES 为target添...

2020-04-25 23:26:24 54 0

原创 CMake编程实践(一) 基础CMake工程入门

文章目录CMake简介CMake 是什么?CMake的工作流程环境要求分析一个简单的CMake工程基本语法规则:编译安装编译生成的应用在哪里?安装到哪里?安装那些内容? CMake简介 CMake 是什么? CMake是一个开源的跨平台工具系列,旨在构建,测试和打包软件。CMake用于使用简单的平...

2020-04-25 23:21:33 83 0

原创 vscode中配置或添加头文件路径

vscode中配置或添加头文件路径 在vscode中按Ctrl+Shift+P 输入configuration 在c_cpp_properties.json中includePath字段中添加待添加的SDK或者库的头文件路径 例:"/usr/local/xxx/include/"...

2020-04-06 15:58:49 1291 0

原创 gnuplot绘图教程(一)

目录1 gnuplot简介1.1 gnuplot安装(ubuntu)1.2 测试是否安装成功 1 gnuplot简介 gnuplot 是一个小巧实用的数据处理工具,主要用来绘制2D/3D的数据或者函数图像,但是也包含数学计算、拟合等功能。虽然它的名字里有个 “gnu”,但是它和大名鼎鼎的 GNU ...

2020-03-21 11:09:37 108 0

原创 shell判断文件结尾是否有回车符

tail -n1 <your file> | wc -l 输出为1表示有换行, 输出为0无换行 e.g : if [ $(tail -n1 <your file> | wc -l) -eq 1 ];then echo "The file line En...

2020-01-12 00:46:02 1068 0

原创 Shell Programming in Unix, Linux and OS X, 4th Edition 笔记

文章目录 Shell Programming in Unix, Linux and OS X, 4th Edition 读书笔记,随缘更新~ shell脚本中的单引号和双引号以及反引号详解 loading…

2020-01-12 00:27:46 79 0

原创 [笔记] shell脚本中的单引号和双引号以及反引号详解

文章目录引用单引号'双引号"反斜线\反引号` 引用 在第五章中讲到shell中的引用,shell能识别到4种不同的引用字符: 单引号’ 双引号" 反斜线\ 反引号` 前两种和最后一种必须成对出现,而反斜线可以在命令中根据需要多次出现,这些引用字符在shell中的含...

2020-01-12 00:20:02 121 0

原创 父scrollview拦截到其他子控件的touch事件的解决方法

概述 父Scrollview中放置了一个RockerView,在RockerView中上下滑动时触发scrollview的滑动,导致了RockerView不能正常使用。 解决 原因是因为事件分发时被父容器view给消费了。所以导致子View没有获取到触摸事件,所以也就没有响应了。 详见:Andro...

2019-12-30 23:53:30 131 0

原创 Valgrind检测内存泄漏

概述 任何长期运行的应用程序都必须正确地管理内存,否则它最终会耗尽所有可用内存并崩溃,如果你使用的是自动为你管理内存的语言,那么祝贺你,如果你用C/C++则需要你负责内存管理,这里有一个valgrind的简短教程,这个工具将对你的程序的任何内存泄漏出具报告。 Valgrind是用于构建动态分析工具...

2019-12-30 23:41:52 220 0

原创 Android Studio 3.2配置ButterKnife

文章目录概述:安装Android butterknife Zeleny插件配置使用 概述: ButterKnife是android studio 中一个自动生成和关联viewUI控件与view变量的一个工具,人称黄油刀,可以极大提高工作码代码效率,但不同的Android studio版本对应有不同...

2019-11-29 00:02:55 74 0

原创 各国语言缩写以及国际域名缩写

文章目录各国语言缩写国际域名缩写 各国语言缩写 en 英文 en_US 英文 (美国) ar 阿拉伯文 ar_AE 阿拉伯文 (阿拉伯联合酋长国) ar_BH 阿拉伯文 (巴林) ar_DZ 阿拉伯文 (阿尔及利亚) ar_EG 阿拉伯文 (埃及) ar_IQ 阿拉伯文 (伊拉克) ar_JO 阿...

2019-11-28 23:48:26 75 0

原创 VSCode: PlatformIO IntelliSense Index Rebuild 解决

概述 在vscode中打开platformio时,PIO Home一直处于加载状态 主页上一直显示loading 在左下方的状态栏中提示PlatformIO IntelliSense Index Rebuild 任务一直在运行 环境: ubuntu16.04 vscode 并无自动更新过 Plat...

2019-10-16 23:14:58 1245 0

原创 getDeclaredFields获取到$change以及serialVersionUID成员解决

概述 最近在使用Android Studio时遇到使用getDeclaredFields获取到$change成员的问题,代码如下: public class MainActivity extends AppCompatActivity { private static final Str...

2019-10-13 01:20:03 105 0

原创 Excel表格对比合并图形显示工具(支持Git或Mercurial)

概述 ExcelMerge是用于Excel或CSV Diff的图形显示工具。当前功能仅限于显示Diff,但目标是实现合并功能。它也可以用作Git或Mercurial的差异工具。 系统要求 Windows 7或更高版本 支持的文件类型 .xls .xlsx .csv .tsv 安装 从此处下载E...

2019-10-13 00:14:34 258 0

原创 Linux系统下查看指定命令的安装位置

概述 在linux命令行中运行各种命令时,会遇到需要配置或者卸载该命令的情况,这时候就需要找到这个命令存放的目录 解决 1.which + 命令 会出现这个命令的路径,如果不是软链接的话,这就是此软件的安装路径;如果是软连接的话,那么下一步 $ which echo /bin/echo 2.进入...

2019-10-13 00:04:37 59 0

原创 error: expected '(' before 'void' __ASM void xxx

概述 使用gcc 编译时才会出现这种错误,在keil中虽然会标红,但可以正常编译 解决 去掉函数名称前的__ASM 使用__ASM volatile()将汇编语句包裹起来 例如: __ASM void MSR_MSP(u32 addr) { MSR MSP, r0 //set Main Sta...

2019-10-12 23:54:33 652 0

原创 Base64编码中有回车换行符

概述 RFC2045[https://www.ietf.org/rfc/rfc2045.txt]中有规定: The encoded output stream must be represented in lines of no more than 76 characters each. Bas...

2019-10-12 23:50:03 498 0

原创 获取网卡Mac地址(grep、正则表达式)

文章目录在命令行或者脚本中获取指定网卡的mac地址方法1方法2 在命令行或者脚本中获取指定网卡的mac地址 方法1 ifconfig |grep HWaddr |head -n 1 | grep -o "[a-f0-9A-F]\\([a-f0-9A-F]\\:[a-f0-9A-F]\\...

2019-08-27 22:49:41 361 0

原创 linux下iwconfig命令参数

文章目录iwconfig用法说明参数essidnwidnickmodefreq/channelaprate/bittxpowersensretryrtsfragkey/enc[ryption]powercommit设置ath1无线网卡的channel 为11设置模式:通过MAC 设置AP:连接到W...

2019-08-27 22:40:26 384 0

原创 C++ lock_guard 自动释放锁

概述 根据对象的析构函数自动调用的原理,c++11推出了std::lock_guard自动释放锁,其原理是:声明一个局部的lock_guard对象,在其构造函数中进行加锁,在其析构函数中进行解锁。最终的结果就是:在定义该局部对象的时候加锁(调用构造函数),出了该对象作用域的时候解锁(调用析构函数)...

2019-07-22 12:53:12 814 0

原创 VSCode CMake 安装与配置详解

概述 在windows上使用cmake编译C/C++程序时,首先需要CMake,安装gcc/g++编译环境,然后使用VSCode 以及配置下CMakelist.txt。 所需工具: VSCode (需要安装以下插件) C/C++ C++ Intellisense CMake CMake to...

2019-06-25 00:35:28 23286 11

原创 vscode 优化.vscode/ipch(解决格式化失效以及占用存储空间大的问题)

概述 使用vscode打开一个文件夹,然后随便编辑几个C++代码文件,跳转几个函数,然后就能看到在该文件目录下生成了一个.vscode的文件夹 然后进入到.vscode文件夹后,继续进入ipch文件夹 随便打开一个文件夹 可以看到每个缓存目录中缓存文件大小为2M 解决占用存储空间大 i...

2019-05-27 00:07:40 2204 1

原创 在Mac平台下使用tar压缩生成 "._" 文件的解决办法

概述 最近在Mac平台下压缩文件夹时,然后在Linux平台解压后,发现每一个文件都多了一份 ._ 开头的文件副本,例如,我们的正常文件里面是这样的: files | 001.txt | 002.txt | 003.txt 在 Mac 平台下使用如下命令对其进行压缩: tar -zcv...

2019-05-26 23:28:47 1232 0

原创 C/C++ 开发利器 CLion安装与配置

概述 CLion是Jetbrains公司旗下新推出的一款专为开发C/C++所设计的跨平台IDE,它是以IntelliJ为基础设计的,同时还包含了许多智能功能来提高开发人员的生产力,提高开发人员的工作效率。这个强大的IDE不仅可以帮助开发人员在Linux、OS X和Windows上来开发C/C++,...

2019-04-14 22:28:35 6204 0

原创 #pragma once与 #ifndef比较

在C++的编程中为了避免同一个文件被include多次,一般有以下两种方式,在能够支持这两种方式的编译器上,这两种方式并没有太大的区别。 1. #ifndef #ifndef的方式兼容C语言,主要依赖于宏名字不能冲突,这不仅可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小...

2019-03-31 18:12:38 101 0

原创 C++ String去除头尾空格 实现trim()方法

虽然C++11的标准库中并没有提供trim()方法,但我们可以使用string的find_first_not_of,和find_last_not_of方法实现trim() #include <iostream> #include <string> std::string&...

2019-03-31 17:51:24 2108 0

原创 C++ find_first_not_of() 和 find_first_of() 和 find()

find_first_not_of()函数 查找当前string与指定的字符串中任意一个字符都不相符的字符,并返回该字符在字符串中第一次出现的位置。 size_t find_first_not_of ( const string& str, size_t pos = 0 ) const; ...

2019-03-31 15:26:18 1025 0

原创 C++ this指针

意义 系统在创建对象时,默认生成的指向当前对象的指针,这样做的目的,就是为了带来方便。 作用 1.避免构造器的入参和成员名相同。 2.基于this指针的自身引用还被广泛的应用于那些支持多重串联调用的函数中,比如连续赋值。 3.每个类成员函数的参数列表中,会由编译器自动传入this参数(this指针...

2019-03-31 11:32:31 65 0

原创 自定义ViewGroup不可或缺的ViewDragHelper工具类

ViewDragHelper概述 ViewDragHelper实质上是对父ViewGroup中的子view的滑动操作、重新定位视图以及状态跟踪等做了一系列的封装,即只需输入父ViewGroup的TouchEvent,则会通过Callback返回子View的相关操作。省去了程序员需要对ViewGro...

2019-02-21 23:28:09 110 0

原创 Android事件分发机制深度分析(四)

View事件分发机制的源码解析 ViewGroup不论是拦截事件或者将事件分发给子View,其最终都是调用了View的dispatchTouchEvent方法,毕竟ViewGroup也是继承自View。所以下面分析View#dispatchTouchEvent源码来了解View事件分发机制。 ...

2019-02-21 00:33:56 98 0

原创 Android事件分发机制深度分析(三)

ViewGroup事件分发的源码解析 虽然ViewGroup是继承自View,但ViewGroup和View的事件分发的处理还是不一样的,所以这里分开来讲。 当点击事件到达ViewGroup时,会调用ViewGroup的dispatchTouchEvent方法。而dispatchTouchEven...

2019-02-21 00:26:15 110 0

原创 Android事件分发机制深度分析(二)

从Activity到根ViewGroup事件分发的源码解析 上篇有提到点击事件经过层层传递来到了当前Activity,当事件到达当前Activity时,会调用Activity#dispatchTouchEvent方法: public boolean dispatchTouchEvent(M...

2019-02-21 00:15:13 111 0

原创 Android事件分发机制深度分析(一)

概述 对Android的事件分发已经研究一段时间了,主要涉及Activity-&amp;amp;gt;ViewGroup-&amp;amp;gt;View 之间的事件传递与拦截,主要源代码在android\view\ViewGroup.java、android\view\View....

2019-02-21 00:09:25 176 0

原创 Android studio 3.2.0 使用Android Device Monitor 调试View

概述 需要分析一个APP的UI组成,准备用DDMS中的Hierarchy View工具来完成,结果Android Studio 3.2 中竟然没找打DDMS的打开入口,Google后发现下面的说明: 1.来自Google官方文档的一段话: https://developer.android.com...

2019-02-15 11:15:50 2877 0

原创 排序算法之七 堆排序(Heap Sort)

概述 堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 算法描述 将待排序的元素序列(R1,R2….Rn)构建成最大堆,此堆为初始的无序区。(关于最大堆的详细构建过程请...

2019-01-12 16:19:53 223 0

原创 排序算法之六 快速排序(Quick Sort)

概述 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。在平均状况下,排序n个元素要O(nlogn)次比较。在最坏状况下则需要O(n^2)次比较,但这种状况并不常见。事实上,快速排序通常...

2019-01-12 16:12:29 137 0

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