- 博客(40)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 POSIX进程同步(一):互斥锁和条件变量
文章目录前言一、互斥量和条件变量的初始化二、操作步骤三、代码小例子前言对于进程间的同步知识,之前觉的自己什么都了解一些,在使用的时候觉的什么都不确定。所以决定好好温故一下。互斥量和条件变量出自Posix.1线程标准,一般用于线程间的同步,但是它也可以用作进程间的同步。是否能用于进程间同步在posix中是一个选项,不是必然的要求。可以通过如下代码测试是否支持进程间同步 #ifdef _POSIX_THREAD_PROCESS_SHARED //支持进程间同步 #endif一、互斥
2020-11-02 14:25:59 966 2
原创 第十一章 进程间通信IPC(二),信号量、mmap和共享内存
接续前面一篇《 第十一章 进程间通信IPC(一))》。目录一、信号量1.创建、打开、关闭和删除有名信号量2.信号量的使用3.无名信号量的创建和销毁提示:这一章主要介绍IPC中的信号量一、信号量信号量的主要作用是同步进程之间和线程之间的操作,以达到无冲突的访问共享资源的目的。POSIX中对信号量的操作有两种,wait和post。信号量讲创建和初始化合二为一,避免可能出现竞争条件问题。修改信号量值的接口(sem_post和sem_wait),一次只能修改一个信号量修改信号量值的接口(sem_p
2020-10-29 11:58:50 628
原创 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 408
原创 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 1182
原创 交叉编译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 2403
原创 Fast-RTPS简单测试
虽然在官方的Github中有不少的例子,但是感觉都挺复杂的,不能很好的理解,所以自己拆解成比较简单的,易于学习理解。我是刚开始学习,一定会有不扫理解有误的地方,希望大家指正首先编写 .idl 文件,这个文件的主要作用是定义用于发布topic的数据类型//test.idlstruct Test{ unsigned long index; string message;};...
2019-05-31 15:28:36 3159 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 1858
原创 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 178
转载 Scientific Understand软件使用教程
很强大的源码阅读软件 https://blog.csdn.net/u011776903/article/details/73563957
2018-08-02 17:39:04 2463 1
转载 Fast-RTPS教程
简介(官网的翻译,水平有限,有误请指正): Fast-RTPS(实时发布订阅)协议的c++实现,该协议通过不可靠的传输(如UDP)提供发布者-订阅者通信,由对象管理组(OMG)定义和维护。RTPS也是为数据分发服务(DDS)标准定义的有线互操作性协议,由OMG再次定义。Fast-RTPS具有独立和最新的优点,因为大多数供应商解决方案要么将RTPS实现为实现DDS的工具,要么使用规范的过去版...
2018-08-01 17:25:35 9149
原创 通用责任链分配(GRASP)模式——创建者模式
Creator Pattern创建者模式的规定软件开发中,如下情况中,A类对象应该是B类对象的创建者:A类对象是B类对象的聚合体A类对象包含B类对象A类对象使用B类对象A类对象记录B类对象状态A类对象拥有创建B类对象的数据/信息优缺点同一个对象可能会有不同的创建行为示例代码(待续……)...
2018-07-23 16:07:09 454
原创 通用责任链分配(GRASP)模式——控制器模式·
Controller Pattern控制器模式的规定 接收业务请求,并将请求转发至业务处理对象接收业务请求处理结果,并将结果分发到响应页面 在控制器模式中主要指的是MVC结构的工程 优缺点控制器对象可能承担过多职责示例代码(待续……)...
2018-07-23 15:56:35 717
原创 通用责任链分配(GRASP)模式——专家模式
Information Expert Pattem在专家模式中的规定: 软件设计和代码开发中,请求的处理行为应该赋予信息专家对象 信息专家对象是指具有处理业务请求所需的信息数据的对象 专家模式的优缺点信息专家对象可能会承担过多职责示例代码(待续……)...
2018-07-23 15:50:15 659
原创 数组中查找重复数字的问题
题目在一个长度为 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 508
原创 单例 C++各种实现
#include <iostream>#include <mutex>using namespace std;#if 0//懒汉,不安全,不是放new对象class Singleton{ Singleton(){} static Singleton * instance;public: static Singleton* getIn...
2018-07-03 15:03:52 1617
转载 算法复杂度计算学习
尊重原创,源博主地址前面学习过好多次,都是得过且过一直没有学会(lll¬ω¬),这次下定决心(ง •_•)ง算法的效率算法的效率主要有以下两个复杂度开评估: 时间复杂度:评估执行程序所需要的时间,可以估算出程序对处理器的使用程度 空间复杂度:评估程序执行所需要的存储空间,可以估算出对计算机内存的实用程度设计程序算法的时候,考虑系统环境,然后权衡时间复杂度...
2018-07-02 15:42:24 397
原创 查找二叉树(二)
查找二叉树模板类的完全实现查找二叉树的特点是:左子树的所有节点小于根节点,右子树的所有节点大于根节点。 类似的数据结构最难的操作是remove操作,这也是本文中最经典的操作(自我感觉),在代码后面详细说一下remove操作binaryTree.h#ifndef BINARYSEARCHTREE_H#define BINARYSEARCHTREE_Htemplate<t...
2018-07-02 11:31:58 188
原创 查找二叉树 (一)
记录分文件写模板类遇到的错误1.将节点结构体的定义放在private中遇到的错误,错误代码如下:binarySearchTree.h#ifndef BINARYSEARCHTREE_H#define BINARYSEARCHTREE_Htemplate<typename Comparable>class BinarySearchTree{public: ...
2018-06-29 14:12:08 322
原创 多叉树 (递归遍历,尾插入)
学习<<数据结构与算法分析>>,给以后留个记录tree.h#ifndef TREE_H#define TREE_H#include <string>#include <iostream>using namespace std;struct TreeNode{ string element; TreeN...
2018-06-29 11:52:36 1120 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 761
转载 CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...
2018-06-27 09:53:10 116
转载 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
本篇是前面两篇教程:给深度学习入门者的Python快速教程 - 基础篇给深度学习入门者的Python快速教程 - numpy和Matplotlib篇的番外篇,因为严格来说不是在讲Python而是讲在Python下使用OpenCV。本篇将介绍和深度学习数据处理阶段最相关的基础使用,并完成4个有趣实用的小例子:- 延时摄影小程序- 视频中截屏采样的小程序- 图片数据增加(data augmentati
2017-10-13 14:11:18 6549
转载 给深度学习入门者的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 536 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 1016 1
转载 Markdown 语法说明
Markdown 语法说明 (简体中文版) / (点击查看快速入门)概述宗旨兼容 HTML特殊字符自动转换区块元素段落和换行标题区块引用列表代码区块分隔线区段元素链接强调代码图片其它反斜杠自动链接感谢Markdown 免费编辑器概述宗旨Markdown 的目标是实现「易读易写」。可读性,无论如何,都是最重要的。一份使用 Markdown 格式撰写的文件应该可以直接以纯文本
2017-09-29 19:10:59 308
转载 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 1110
原创 琐碎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 248
原创 琐碎c++
首先告明出处:http://www.cnblogs.com/lizhenghn/p/3674430.htmldo{…}while(0)的妙用 的确在工作中我们不常用到这个语法,一般都是for、while,看了这篇博文后还真是大有用处。 首先展示一下场景: #define FUN() food1(); food2(); 这句宏定义就是说调用FUN()宏的时候就带哦用后面两个函数,但是
2017-09-13 10:27:30 217
原创 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 289
转载 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 3348
原创 02-STL
STL组件容器 Containers,用来管理某类对象的集合。迭代器 Iterators,用来在一个对象群集的元素上进行遍历动作,姑且可以理解为指针。算法 Algorithms,用来处理集群内的元素。STL容器的类型序列式容器,每个元素有固定位置——取决于插入的时机和地点,于元素的值无关,vecto、deque、list、string关联式容器,元素位置取决于特定的排序准则。与元素的值有
2017-07-25 13:05:06 261
原创 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 214
原创 在树莓派3的ROS平台上发布sensor_msgs/Imu消息
在树莓派3的ROS平台上发布sensor_msgs/Imu消息一: 首先当然是搭建基于RaspbianOS Jessie系统的ROS-indigo环境 这个不是本文的重点,在这里就不详述了。需要的可以点击打开链接(这个过程非常酸爽,装了2天)二: 获得Imu数据 本文获取Imu数据所用传感器是GY-
2017-07-13 11:12:18 7779 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 2741
原创 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 554
原创 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 3369
原创 Qt Quick学习一(核心编程)
在一个quick 程序中其实 .qml 和c++文件是两个平行的世界,所以想要在qml中使用c++ 在qt中提供了两种方法 a、把c++的一个类注册为qml环境的一个类型 这样就能在qml环境中使用该类型创建对象 b、在c++中构造一个对象,将这个对象设置为qml的上下文属性,在qml中能够直接使用该属性 想要在qml中使用 c
2017-03-08 14:07:49 2609
原创 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 1423
原创 qt学习(二):信号和槽
信号和槽是qt的精髓 相信接触过一点的人都知道这个名称 1、一个信号可以链接多个槽 但是要注意的是在发射这个信号的时候会以不确定的顺序一个接一个的调用这些槽 2、多个信号链接一个槽 无论那个信号发射都会调用这个槽 3、一个信号可以和另外一个信号链接 一个信号发射被链接信号接着发射 和链接槽没有区别 4、链接可以移除 disconnect
2017-03-06 18:04:16 293 1
原创 qt学习(一):代码法布局qt控件 比较基础
三哥布局管理器QHBoxLayout在水平方向排列部件QVBoxLayout在竖直方向上排列部件QGridLayout在网格中排列部件QHBoxLayout *topLeftLayout = new QHBoxLayout;topLeftLayout->addWidget(lable);topLeftLayout->addWidget(lineEdit);Q
2017-03-06 17:23:17 5167 1
在linux中拷贝依赖库到指定目录
2017-09-19
C++模板函数,传参数后参数添加了const属性
2020-04-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人