
C/C++ 基本功
文章平均质量分 94
frank909
爱阅读的程序员,专注于技术思考和分享。关注架构设计、Android 开发、AI、数学、自动驾驶领域,个人公号:Frankcall
展开
-
通信中间件 Fast DDS 基础概念简述与通信示例
从事汽车软件开发,通信中间件绕不开,当前最火热的无非有 2 种:Some/IP 和 DDS。DDS 是一种分布式通信标准,有很多商业和开源的实现,Fast DDS 是其中的一种。它在 ROS2 中被应用,而 Apollo 中的 CyberRT 框架中也有它的身影。讲 Fast DDS 之前先讲什么是 DDS。1. 什么是 DDS ?DDS 是 OMG 组织发布的一种中间件协议和 API 标准,它将系统的组件集成在一起,提供业务和任务关键型物联网 (IoT) 应用程序所需的低延迟数据连接、极高的可靠性和原创 2022-04-10 17:02:11 · 16021 阅读 · 9 评论 -
深入浅出CMake(四):配置多线程
我们知道,直接用 g++ 编译多线程代码时,可以这样。gcc -o test test.c -lpthread但是,如果整个工程是 CMake 构建的,需要怎么做呢?修改 CMakeFileLists.txt 文件。假设,要链接的目标叫做 test,只需要简单 2 行代码就好了。find_package(Threads)target_link_libraries(test ${C...原创 2019-10-14 16:57:29 · 9008 阅读 · 0 评论 -
CMake 进行调试
在 Linux 下开发,可以用 gdb 进行调试,但是如果工程是用 CMake 构建的,那么需要在 CMakeLists.txt 中加入如下代码:CMake 配置SET(CMAKE_BUILD_TYPE "Debug") SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb") SET(CMAKE_CXX_FLAGS...原创 2019-09-18 17:51:07 · 13274 阅读 · 0 评论 -
深入浅出CMake(三):find_package 添加依赖库
深入浅出CMake(一):基础篇深入浅出CMake(二):基础语法及实现九九乘法表有了前面两篇博文的基础,相信我们已经能够用 CMake 去编译比较简单的工程了,但是我们还差一步就可以应付大多数开发编译场景。目前我们还不知道怎么样处理在工程中引入第三方库。以 Unix 环境下的 c++ 代码工程为例。加入工程要引入一个 libtest.so 动态库,源码是 hello.cpp。如果用 ...原创 2019-06-13 12:04:44 · 13084 阅读 · 0 评论 -
c++ 开发中利用yaml-cpp读写yaml配置文件
在程序员的开发生涯中,读写配置文件必不可少。配置文件有利于我们灵活配置工程,解决大量重复劳动,也方便调试。配置文件的格式有很多,最简单的有一行一行的文本,也有像 json、xml、protocol buffer 这样结构化的格式,当然也有 yaml 这种格式。今天的博文介绍的是如何在 C++ 开发中利用 yaml-cpp 开源库读写 yaml 配置文件。如果有 Python 开发经验的同学...原创 2019-04-25 14:27:47 · 65834 阅读 · 24 评论 -
Linux 多进程通信开发(七): unix domain socket 之 UDP 通信
这会是一系列文章,讲解的内容也很简单,文章的目的是让自己的知识固话和文档化,以备自己不时的复习,同时也希望能够给予初学者一些帮助。前面的文章一系列文章有介绍了 linux 下常见的 IPC 机制,如管道、消息队列、信号量、共享内存。之前有讲到共享内存是最高效的 IPC 方式,但是在 linux 环境下,应用最广泛的可能是 Socket。什么是 Unix Domain Socket ?S...原创 2019-04-17 10:30:44 · 8406 阅读 · 0 评论 -
Linux 多进程通信开发(八): unix domain socket 之 TCP 通信
这会是一系列文章,讲解的内容也很简单,文章的目的是让自己的知识固话和文档化,以备自己不时的复习,同时也希望能够给予初学者一些帮助。前面的文章一系列文章有介绍了 linux 下常见的 IPC 机制,如管道、消息队列、信号量、共享内存。之前有讲到共享内存是最高效的 IPC 方式,但是在 linux 环境下,应用最广泛的可能是 Socket。什么是 Unix Domain Socket ?S...原创 2019-04-21 17:19:24 · 5125 阅读 · 0 评论 -
Linux 多进程通信开发(六): 共享内存
这会是一系列文章,讲解的内容也很简单,文章的目的是让自己的知识固话和文档化,以备自己不时的复习,同时也希望能够给予初学者一些帮助。前面的文章一系列文章有介绍了 linux 下常见的 IPC 机制,如管道、消息队列、信号量,今天这篇文章介绍一下最核心的机制,那就是共享内存,因为它是最高效的 IPC 方式。什么是共享内存?共享内存其实很容易理解,不同的进程共享一块内存。我们都知道,进程间通...原创 2019-04-10 19:11:37 · 5756 阅读 · 5 评论 -
Linux 多进程通信开发(五): 信号量
这会是一系列文章,讲解的内容也很简单,文章的目的是让自己的知识固话和文档化,以备自己不时的复习,同时也希望能够给予初学者一些帮助。前面的文章有介绍了如何利用管道和消息队列进行进程间的通信,但是能够进行 IPC 的方式有很多种,最高效的是共享内存,比较常见的还有 socket,但是在介绍共享内存之前,先介绍本篇文章的主题,那就是信号量。什么是信号量?信号量不是传统意义的信号(signal)...原创 2019-03-31 17:49:21 · 1137 阅读 · 2 评论 -
Linux 多进程通信开发(四): 消息队列
这会是一系列文章,讲解的内容也很简单,文章的目的是让自己的知识固话和文档化,以备自己不时的复习,同时也希望能够给予初学者一些帮助。前面的文章有介绍了如何利用管道进行进程间的通信,但是那只适合比较简单的场景,发送一些简单的通知,我只在 Android 的 Framework 源码中见过这么一回。而 Linux 下 IPC 的手段有很多,今天介绍的消息队列就是其中的一种。什么是消息队列?顾名...原创 2019-03-26 14:59:22 · 1577 阅读 · 0 评论 -
Linux 多进程通信开发(二):exec 执行新程序
这会是一系列文章,讲解的内容也很简单,文章的目的是让自己的知识固话和文档化,以备自己不时的复习,同时也希望能够给予初学者一些帮助。前面讲过,在 linux 开发中,一般调用 fork 创建新进程后,是为了调用 exec 方法来启动一个新的程序。exec 函数族exec 其实是一个函数族,它有 6 种变换,定义在 <unistd.h>这个头文件当中。#include <...原创 2019-03-18 19:47:08 · 1472 阅读 · 0 评论 -
Linux 多进程通信开发(三):管道
这会是一系列文章,讲解的内容也很简单,文章的目的是让自己的知识固话和文档化,以备自己不时的复习,同时也希望能够给予初学者一些帮助。在代码编程过程中,进程之间进行通信是很常见的需求,它有个专业的名词 IPC,能够实现 IPC 的手段有许多,管道(Pipe)是其中一种。本文的示例是用 C++ 编写的,不熟悉 C++ 的同学,用 c 也是可以实现效果的。管道(Pipe)管道的本质是一个文件,...原创 2019-03-21 18:57:29 · 1416 阅读 · 0 评论 -
深入浅出CMake(二):基础语法及实现九九乘法表
在《深入浅出CMake(一):基础篇》文章中,我们已经知道了怎么依葫芦画瓢编写简单的 CMake 构建文件了,但如果应对复杂的工程的话,这还是远远不够的。CMake 是一套编译构建体系,所以它有自己的一套语法概念,也有自己的 CMake Language,你可以讲它看做是一套脚本语言,所以它能做很多编程的事情。这篇博文的目的是对 CMake 的基础语法进行概括,文章最后用一个九九乘法表的例子让...原创 2019-03-12 13:59:24 · 2205 阅读 · 0 评论 -
深入浅出CMake(一):基础篇
什么是 CMake?CMake 是一个跨平台的编译构建工具,用来自动化生成 Makefile 之类的构建文件的。一般在 unix 类系统上开发,我们用 gcc 或者 g++ 编译源码。g++ hello.cpp world.cpp 针对很小的工程,处理的源码文件就这么几个,我们完全手写编译脚步就好了。但是如果工程量变大,情况就变得复杂了,我们就需要用 make 工具,并编写 Make...原创 2019-03-11 16:22:47 · 4732 阅读 · 2 评论 -
Linux 多进程通信开发(一):fork 进程
这会是一系列文章,文章的目的是让自己的知识固话和文档化,以备自己不时的复习,同时也希望能够给予初学者一些帮助。进程是操作系统中一个很重要的概念,几乎每一种应用都是单独跑在一个进程当中。我们编译生成的程序一般放在磁盘上,需要运行的时候内核会创建一个进程空间,分配内存,然后分配 ID 号码,再将程序的代码段存放在一个地方,程序中定义的静态变量和全局变量存放在一个地方,动态分配的内存划定在进程的堆,...原创 2019-03-14 17:30:36 · 1829 阅读 · 0 评论