自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奔跑的蜗牛

你还有好多未完成梦,你有什么理由停下脚步

  • 博客(40)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 POSIX进程同步(一):互斥锁和条件变量

文章目录前言一、互斥量和条件变量的初始化二、操作步骤三、代码小例子前言对于进程间的同步知识,之前觉的自己什么都了解一些,在使用的时候觉的什么都不确定。所以决定好好温故一下。互斥量和条件变量出自Posix.1线程标准,一般用于线程间的同步,但是它也可以用作进程间的同步。是否能用于进程间同步在posix中是一个选项,不是必然的要求。可以通过如下代码测试是否支持进程间同步 #ifdef _POSIX_THREAD_PROCESS_SHARED //支持进程间同步 #endif一、互斥

2020-11-02 14:25:59 917 2

原创 第十一章 进程间通信IPC(二),信号量、mmap和共享内存

接续前面一篇《 第十一章 进程间通信IPC(一))》。目录一、信号量1.创建、打开、关闭和删除有名信号量2.信号量的使用3.无名信号量的创建和销毁提示:这一章主要介绍IPC中的信号量一、信号量信号量的主要作用是同步进程之间和线程之间的操作,以达到无冲突的访问共享资源的目的。POSIX中对信号量的操作有两种,wait和post。信号量讲创建和初始化合二为一,避免可能出现竞争条件问题。修改信号量值的接口(sem_post和sem_wait),一次只能修改一个信号量修改信号量值的接口(sem_p

2020-10-29 11:58:50 595

原创 c++预定义的一些宏以及用法

CPlusPlus中的预定义和宏定义宏定义中的变长参数以及__VA_ARGS__宏示例://定义#define LOG(...) {\ printf("%s : Line %d:\t", __FILE__, __LINE__); \ printf(__VA_ARGS__);\ printf("\n"); \}//调用int x = 3;LOG("x = %...

2020-02-29 10:48:57 390

原创 Linux平台下交叉编译boost_1_68,ARM平台下ld library path的设置

交叉编译Boost#第一步./bootstrap.sh --prefix=/home/frp/boost/install --without-mpi --without-wave --without-python#第二步#修改project-config.jam文件如下,路径为交叉编译器的位置,注意空格(很重要) if ! gcc in [ feature.values <too...

2020-01-09 17:49:19 1122

原创 交叉编译libbz2,zlib

在linux平台,使用arm交叉编译链编译libbz2起因,在arm平台下使用boost库.修改Makefile文件SHELL=/bin/bash# To assist in cross-compilingCC=/home/frp/code/third_libs/gcc-linaro-7.3.1-2018.05-x86_64_arm-linux-gnueabihf/bin/arm-li...

2020-01-08 11:45:02 2322

原创 Fast-RTPS简单测试

虽然在官方的Github中有不少的例子,但是感觉都挺复杂的,不能很好的理解,所以自己拆解成比较简单的,易于学习理解。我是刚开始学习,一定会有不扫理解有误的地方,希望大家指正首先编写 .idl 文件,这个文件的主要作用是定义用于发布topic的数据类型//test.idlstruct Test{ unsigned long index; string message;};...

2019-05-31 15:28:36 3121 1

原创 Fast-RTPS Ubuntu16.04编译

克隆Fast-RTPS并回滚(我用的这个版本)https://github.com/eProsima/Fast-RTPS.gitgit checkout f661619b04347e9365445af91ca542dddbce3cf9安装依赖包sudo apt-get install openjdk-8-jdksudo apt-get install gradle这两个依赖...

2019-05-30 13:45:16 1841

原创 C++复习-01

C++复习-01 (想到哪写到哪系列)C++析构函数为什么要写成virtualclass Base{public: Base(){cout << "Base" << endl;} ~Base(){cout << "~Base" << endl;} //void print(){cout << "This...

2019-03-19 10:56:40 148

转载 Scientific Understand软件使用教程

很强大的源码阅读软件 https://blog.csdn.net/u011776903/article/details/73563957

2018-08-02 17:39:04 2437 1

转载 Fast-RTPS教程

简介(官网的翻译,水平有限,有误请指正): Fast-RTPS(实时发布订阅)协议的c++实现,该协议通过不可靠的传输(如UDP)提供发布者-订阅者通信,由对象管理组(OMG)定义和维护。RTPS也是为数据分发服务(DDS)标准定义的有线互操作性协议,由OMG再次定义。Fast-RTPS具有独立和最新的优点,因为大多数供应商解决方案要么将RTPS实现为实现DDS的工具,要么使用规范的过去版...

2018-08-01 17:25:35 9074

原创 通用责任链分配(GRASP)模式——创建者模式

Creator Pattern创建者模式的规定软件开发中,如下情况中,A类对象应该是B类对象的创建者:A类对象是B类对象的聚合体A类对象包含B类对象A类对象使用B类对象A类对象记录B类对象状态A类对象拥有创建B类对象的数据/信息优缺点同一个对象可能会有不同的创建行为示例代码(待续……)...

2018-07-23 16:07:09 433

原创 通用责任链分配(GRASP)模式——控制器模式·

Controller Pattern控制器模式的规定 接收业务请求,并将请求转发至业务处理对象接收业务请求处理结果,并将结果分发到响应页面 在控制器模式中主要指的是MVC结构的工程 优缺点控制器对象可能承担过多职责示例代码(待续……)...

2018-07-23 15:56:35 684

原创 通用责任链分配(GRASP)模式——专家模式

Information Expert Pattem在专家模式中的规定: 软件设计和代码开发中,请求的处理行为应该赋予信息专家对象 信息专家对象是指具有处理业务请求所需的信息数据的对象 专家模式的优缺点信息专家对象可能会承担过多职责示例代码(待续……)...

2018-07-23 15:50:15 645

原创 数组中查找重复数字的问题

题目在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为 7 的数组 {2, 3, 1, 0, 2, 5},那么对应的输出是第一个重复的数字 2。要求复杂度为 O(N) + O(1),也就是时间复杂度 O(N),空间复杂度 O(1)。因此不能...

2018-07-03 16:41:59 491

原创 单例 C++各种实现

#include &lt;iostream&gt;#include &lt;mutex&gt;using namespace std;#if 0//懒汉,不安全,不是放new对象class Singleton{ Singleton(){} static Singleton * instance;public: static Singleton* getIn...

2018-07-03 15:03:52 1612

转载 算法复杂度计算学习

尊重原创,源博主地址前面学习过好多次,都是得过且过一直没有学会(lll¬ω¬),这次下定决心(ง •_•)ง算法的效率算法的效率主要有以下两个复杂度开评估: 时间复杂度:评估执行程序所需要的时间,可以估算出程序对处理器的使用程度 空间复杂度:评估程序执行所需要的存储空间,可以估算出对计算机内存的实用程度设计程序算法的时候,考虑系统环境,然后权衡时间复杂度...

2018-07-02 15:42:24 378

原创 查找二叉树(二)

查找二叉树模板类的完全实现查找二叉树的特点是:左子树的所有节点小于根节点,右子树的所有节点大于根节点。 类似的数据结构最难的操作是remove操作,这也是本文中最经典的操作(自我感觉),在代码后面详细说一下remove操作binaryTree.h#ifndef BINARYSEARCHTREE_H#define BINARYSEARCHTREE_Htemplate&lt;t...

2018-07-02 11:31:58 179

原创 查找二叉树 (一)

记录分文件写模板类遇到的错误1.将节点结构体的定义放在private中遇到的错误,错误代码如下:binarySearchTree.h#ifndef BINARYSEARCHTREE_H#define BINARYSEARCHTREE_Htemplate&lt;typename Comparable&gt;class BinarySearchTree{public: ...

2018-06-29 14:12:08 310

原创 多叉树 (递归遍历,尾插入)

学习&lt;&lt;数据结构与算法分析&gt;&gt;,给以后留个记录tree.h#ifndef TREE_H#define TREE_H#include &lt;string&gt;#include &lt;iostream&gt;using namespace std;struct TreeNode{ string element; TreeN...

2018-06-29 11:52:36 1100 1

原创 c++ NULL、nullptr和数字0的区别

1、NULL、0和nullptr的区别直接上源码#include using namespace std;void fun(int){ cout << "hello \n";}void fun(void*){ cout << "world \n";}int main(int argc, char *argv[]){ cout << "Hello

2018-06-29 11:26:08 746

转载 CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...

2018-06-27 09:53:10 107

转载 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

本篇是前面两篇教程:给深度学习入门者的Python快速教程 - 基础篇给深度学习入门者的Python快速教程 - numpy和Matplotlib篇的番外篇,因为严格来说不是在讲Python而是讲在Python下使用OpenCV。本篇将介绍和深度学习数据处理阶段最相关的基础使用,并完成4个有趣实用的小例子:- 延时摄影小程序- 视频中截屏采样的小程序- 图片数据增加(data augmentati

2017-10-13 14:11:18 6492

转载 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

首发于From Beijing with Love写文章登录给深度学习入门者的Python快速教程 - numpy和Matplotlib篇達聞西10 个月前本篇部分代码的下载地址:https://github.com/frombeijingwithlove/dlcv_for_beginners/tree/master/chap5上篇:给深度学习入门者的Python快速教程 - 基础篇5.3 Pyth

2017-10-13 13:58:03 525 1

转载 深度学习入门者的Python快速教程 - 基础篇

给深度学习入门者的Python快速教程 - 基础篇達聞西10 个月前下篇:给深度学习入门者的Python快速教程 - numpy和Matplotlib篇Life is short, you need Python人生苦短,我用Python– Bruce Eckel5.1 Python简介本章将介绍Python的最基本语法,以及一些和深度学习还有计算机视觉最相关的基本使用。5.1.1 Python简史

2017-10-13 13:40:08 1001 1

转载 Markdown 语法说明

Markdown 语法说明 (简体中文版) / (点击查看快速入门)概述宗旨兼容 HTML特殊字符自动转换区块元素段落和换行标题区块引用列表代码区块分隔线区段元素链接强调代码图片其它反斜杠自动链接感谢Markdown 免费编辑器概述宗旨Markdown 的目标是实现「易读易写」。可读性,无论如何,都是最重要的。一份使用 Markdown 格式撰写的文件应该可以直接以纯文本

2017-09-29 19:10:59 297

转载 qt常用代码段(获取ip,MAC,username,hostname)

// 涉及到网络模块时记得在工程问题,加上:   QT += network// 并且根据相应提示,添加相应的头文件:#include <QtNetwork>[cpp] view plain copy print?// 获得ip地址  QString getIpAdress()  {      QString localIPAddress = ”“;       QList <QHostAddre

2017-09-28 09:41:03 1088

原创 琐碎c++1

继上一篇琐碎c++足部整理在c++中遇到有意思的应用(自己感觉c++的程序原脑子都态他妈好了,这样的应用都能想出来)关于c++11中的线程void fun(string const& t1);void oops(int some_param){ std::thread t(fun, "hello"); t.detach();}在std::thread(fun,string)中

2017-09-25 16:03:37 226

原创 琐碎c++

首先告明出处:http://www.cnblogs.com/lizhenghn/p/3674430.htmldo{…}while(0)的妙用  的确在工作中我们不常用到这个语法,一般都是for、while,看了这篇博文后还真是大有用处。 首先展示一下场景: #define FUN()  food1();  food2();  这句宏定义就是说调用FUN()宏的时候就带哦用后面两个函数,但是

2017-09-13 10:27:30 196

原创 c++中不知道的事儿

一 c++11趣事NULL、0和nullptr的区别#include <iostream>using namespace std;void fun(int){ cout << "hello \n";}void fun(void*){ cout << "world \n";}int main(int argc, char *argv[]){ cout << "He

2017-08-14 16:45:19 281

转载 c++对象和实例化的区别(new和不用new的区别)

一. new创建对象与不new的区别new创建的对象需要指针接收,一出初始化,多出使用new出来的对象需要delete销毁,不用new的对象只能在它的作用域使用,作用域结束对象自动调用类的析构函数new出来的对象在堆空间,不用new的在栈空间转至 http://blog.csdn.net/chang_ge/article/details/52750393

2017-08-14 13:07:23 3307

原创 02-STL

STL组件容器 Containers,用来管理某类对象的集合。迭代器 Iterators,用来在一个对象群集的元素上进行遍历动作,姑且可以理解为指针。算法 Algorithms,用来处理集群内的元素。STL容器的类型序列式容器,每个元素有固定位置——取决于插入的时机和地点,于元素的值无关,vecto、deque、list、string关联式容器,元素位置取决于特定的排序准则。与元素的值有

2017-07-25 13:05:06 252

原创 01-STL

对组pair pair<int, const char*> p(43, "hello"); make_pair(42,"asd"); //用来返回两个值 智能指针auto_ptr std::auto_ptr ptr(new classA); //ok std::auto_ptr ptr = new classA; //error std::auto_pt

2017-07-25 11:31:02 199

原创 在树莓派3的ROS平台上发布sensor_msgs/Imu消息

在树莓派3的ROS平台上发布sensor_msgs/Imu消息一: 首先当然是搭建基于RaspbianOS Jessie系统的ROS-indigo环境       这个不是本文的重点,在这里就不详述了。需要的可以点击打开链接(这个过程非常酸爽,装了2天)二: 获得Imu数据       本文获取Imu数据所用传感器是GY-

2017-07-13 11:12:18 7727 5

原创 ros-qt环境搭建

1、首先linux 版本选择 :ubuntu14.04  2、ros的安装  (在安装之前需要配置软件库:看下面的截图 图1和图2)a,sudo sh -c'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main">/etc/apt/sources.list.d/ros-latest.list'b,s

2017-05-09 13:44:38 2709

原创 ROS - QT - Ubuntu14.04.5的搭建

序言:之前在搭建过一次,搞得自己心力憔悴。各种下载,各种安装然后是各bug,不过大伙放心把现在有了更加简单的安装方法。不扯别的直接上干货。注:我实在虚拟机下安装的,虚拟机是干净的!1、首先linux 版本选择 :ubuntu14.04 2、ros的安装 (在安装之前需要配置软件库:看下面的截图 图1和图2) a,sudo sh -c ‘echo “deb http://packages

2017-05-09 13:41:22 543

原创 c++编程中遇到的错误定位

invalid use of incomplete type struct 或者是class的解决办法这个错误是找不到这个class 或struct 的具体实现 1> 常遇场景定义了一个类 class A 要在类B中使用A在B的 b.h中声明 class A; 并实例化出一个对象 A a;在b.cpp中直接使用A的成员函数会报这个错误2> 解决办法在b.cpp中添加这个类的

2017-04-19 10:59:22 3129

原创 Qt Quick学习一(核心编程)

在一个quick 程序中其实 .qml 和c++文件是两个平行的世界,所以想要在qml中使用c++ 在qt中提供了两种方法              a、把c++的一个类注册为qml环境的一个类型  这样就能在qml环境中使用该类型创建对象              b、在c++中构造一个对象,将这个对象设置为qml的上下文属性,在qml中能够直接使用该属性 想要在qml中使用 c

2017-03-08 14:07:49 2583

原创 qt学习(三):使用qt设计器来设计

具体的gui设计就不写了,需要自己手动操作在这里记录一些槽函数  accept()  reject() 具体菜吗如下connect(okButton,SIGNAL(clicked(bool)), this,SLOT(accept()));connect(cancelButton,SIGNAL(clicked(bool)), this,SL

2017-03-07 10:24:23 1401

原创 qt学习(二):信号和槽

信号和槽是qt的精髓 相信接触过一点的人都知道这个名称       1、一个信号可以链接多个槽   但是要注意的是在发射这个信号的时候会以不确定的顺序一个接一个的调用这些槽       2、多个信号链接一个槽  无论那个信号发射都会调用这个槽       3、一个信号可以和另外一个信号链接  一个信号发射被链接信号接着发射 和链接槽没有区别       4、链接可以移除 disconnect

2017-03-06 18:04:16 282 1

原创 qt学习(一):代码法布局qt控件 比较基础

三哥布局管理器QHBoxLayout在水平方向排列部件QVBoxLayout在竖直方向上排列部件QGridLayout在网格中排列部件QHBoxLayout *topLeftLayout = new QHBoxLayout;topLeftLayout->addWidget(lable);topLeftLayout->addWidget(lineEdit);Q

2017-03-06 17:23:17 5129 1

在linux中拷贝依赖库到指定目录

资源支持平台是linux,主要功能是复制 ldd 出来的库到指定的文件夹下, 主要是项目中自己用,所以容错性可能不好,欢迎指正!使用方法: 编译出的程序名 + 空格 + 库或程序名+指定的路径名

2017-09-19

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

TA关注的人

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