自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

segments的专栏

开源为我们做了什么?我们又为开源做了什么?

  • 博客(90)
  • 收藏
  • 关注

原创 fdbus和vsomeip的对比

近日发现,在智能座舱系统里核间通讯,有项目团队使用了fdbus这一开源项目作为解决方案,于是特意调研了下。

2023-12-20 12:11:29 447

转载 【转载】Fast Distributed Bus - FDBus:高速分布式总线以及中间件开发框架

摘要本文描述了一种新型IPC机制:Fast Distributed Bus(FDBus)。从IPC(Inter-Process Communication)角度,FDBus和广泛使用的D-Bus(Desktop Bus)有类似之处,但是FDBus具有自身优势,功能更齐全,性能更高,使用便利,除了支持主机内的IPC,还能在多个主机之间组网,同时可以定制安全策略,支持不同的安全等级。FDBus构筑于socket(Unix domain和TCP)之上,采用Google protobuf做序列化和反序列化。FDB

2023-12-18 11:32:03 327

转载 [翻译] SOMEIP和DDS的区别

翻译自。感觉原文作者是一个DDS的扈拥,字里行间都在贬低SOME/IP。所以,看看就好。 SOME/IP DDS Notes 概念 SOME/IP和DDS都允许分布式应用程序使用发布/订阅模式和服务请求/回复模式(RPC)进行通信。 但是也存在重大差异。 SOME/IP专为汽车行业设计。 SOME/IP是作为AUTOSAR一部分而开发的一系列规范,描述了其序列化协议,服务发现以及集成在Classic AUTOSAR中的协议标准接口。 DDS(数据分发服务)的目标

2021-09-26 11:18:11 4397 1

转载 Some/IP和DDS的区别

​​​​​​What's the difference between DDS and SOME/IP?SOME/IP is an automotive middleware solution that can be used for control messages. DDS is also an automotive middleware for communication. I want to know what's the difference between them? and, why an

2021-09-26 10:53:47 2114

原创 沉思录四:如何优化性能

面对一个架构设计繁复的linux服务器端应用,难于维护的局面,如何破局?其中,性能总是不达标怎么办?

2021-03-24 10:03:41 193

原创 沉思录三:敏捷开发的精髓是什么

面对一个架构设计繁复的linux服务器端应用,难于维护的局面,如何破局?我想起当年大家讨论敏捷开发的事情。若干年后,尘埃落定,敏捷开发遗留下的最实用和重要的是:结对review和每次构建。

2021-03-16 17:54:18 271

原创 沉思录二:以unix哲学基础的架构设计

面对一个架构设计繁复的linux服务器端应用,难于维护的局面,如何破局?看看《unix编程艺术》一书里,unix哲学基础章节如何说的。1 模块原则:使用简洁的接口拼合简单的部件2 清晰原则: 清晰胜于机巧3 组合原则:设计时考虑拼接组合4 分离原则: 策略同机制分离,接口同引擎分离5 简洁原则:设计要简洁,复杂度能低则低6 吝啬原则: 除非确无它法,不要编写庞大的程序7 透明性原则:设计要可见,以便审查和调试8 健壮原则: 健壮源于透明与简洁9 表示原则: 把知识叠入数据以求逻辑质朴而

2021-03-12 20:03:29 136

原创 沉思录一:如何维护一个复杂的网络应用

写下这个文章的时候,刚从一个复杂的linux服务端网络应用项目中脱出,除去身心的疲惫不堪后,不得不反思标题中的问题,如何破局?这样在下次面对相似问题时,可能就多几分幸存的几率。“最想知道我是在什么地方死的,这样我就可以避开死亡了。” 这个是查理芒格多次讲过的话。但是很多人被困难问题击败后,都没有找到自己是在哪儿失败的?如何破局?首先是找到在哪儿挂的和挂的原因。

2021-03-12 19:45:43 88 1

转载 TCP 为什么三次握手而不是两次握手(正解版)

参考文章Why do we need a 3-way handshake? Why not just 2-way大部分网络博客的错误解读首先需要声明的是, 百度搜索到的大部分网络博客关于这个问题的解答都是不清晰或者不准确的。 讨论这个问题的大部分博客都会引用《计算机网络》的内容:防止已失效的连接请求又传送到服务器端,因而产生错误不幸的是, 这种解释是不准确的, TCP 采用三次握手的原因其实非常简单, 远没有大部分博客所描述的那样云山雾绕。这里先给出结论:为了实现可靠数据传输,

2020-12-17 15:26:34 131

转载 valgrind可以输出部分报告而无需退出配置文件应用程序吗?

我想用valgrind检查一个长时间运行的内存泄漏过程.我怀疑我之后的内存泄漏可能会在执行几个小时之后才会发生.我可以在valgrind下运行应用程序并获得valgrind日志就好了,但这样做意味着我必须退出应用程序并重新启动它以重新启动一个新的valgrind会话,我仍然需要等待几个小时.是否可以保持valgrind和应用程序运行并在执行期间的任何时候仍然获得valgrind的(部分)数据?你可以使用 Valgrind gdbserver and GDB来做到这一点.简而言之,您可以像往常一样使用

2020-12-15 17:00:59 520

转载 无人驾驶刚刚开始的未来

作者:刘少山,唐洁,吴唯玥责编:何永灿,欢迎人工智能领域技术投稿、约稿、给文章纠错,请发送邮件至[email protected]本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅《程序员》本文是无人驾驶技术系列的第12篇,也是最后一篇(文末汇总了无人驾驶系列文章)。本文梳理总结了前面11篇涉及到的技术点,尝试呈现一个宏观的无人驾驶系统架构。另外,简单分析了无人驾驶的产业链现状以及根据笔者自己的经验提出了一些给开发者、创业者,以及投资者的建议。无人驾驶技术总结无人驾驶是...

2020-12-08 16:48:15 835

转载 【无人驾驶系列】光学雷达(LiDAR)在无人驾驶技术中的应用

作者:刘博聪,刘少山,James Peng责编:周建丁(投稿请联系[email protected])声明:《程序员》原创文章未经允许不得转载,更多精彩文章请订阅2016年程序员:http://dingyue.programmer.com.cn/http://geek.csdn.net/news/detail/70880?utm_source=tuicool&utm_medium=referral摘要:本文为《程序员》无人驾驶技术系列文章的第一篇,深入解析光学雷达(LiDAR)在无...

2020-12-08 11:30:51 1562

转载 Linux 下的 AddressSanitizer

AddressSanitizer 是一个性能非常好的 C/C++ 内存错误探测工具。它由编译器的插桩模块(目前,LLVM 通过)和替换了 malloc 函数的运行时库组成。这个工具可以探测如下这些类型的错误:对堆,栈和全局内存的访问越界(堆缓冲区溢出,栈缓冲区溢出,和全局缓冲区溢出) UAP(Use-after-free,悬挂指针的解引用,或者说野指针) Use-after-return(无效的栈上内存,运行时标记 ASAN_OPTIONS=detect_stack_use_after_return

2020-12-08 10:58:02 742

转载 怎样实时判断socket连接状态?

摘自:https://www.cnblogs.com/embedded-linux/p/7468442.html对端正常close socket,或者进程退出(正常退出或崩溃),对端系统正常关闭这种情况下,协议栈会走正常的关闭状态转移,使用epoll的话,一般要判断如下几个情况 处理可读事件时,在循环read后,返回结果为0 处理可写事件时,write返回-1,errno为EPIPE EPOLLERR或EPOLLHUP或事件 对端非正常断开,比如服务器断电,网线被拔掉这种情况下,协

2020-12-07 18:03:38 7862

原创 在Linux系统里使用SS命令获取TCP RTT

在Linux下的TCP通讯,如果能通过工具实时的获取某TCP通讯的RTT,就能比较清楚得知道当前网络TCP通讯的拥塞程度,在一定程度上对网络拥塞做出量化数据,记录历史日志。问题是,有什么工具或办法直接拿到RTT数据呢?------------------摘自某个被TCP通讯中的timeout搞得头痛的码农什么是TCP的RTT?这个还是网上搜索科普吧。这里将范围缩小,我们讨论的目标是如何对一个正在运行的socket(TCP)通讯应用,做一个RTT的Benchmark。如何测试硬件系统和操作系统本身带

2020-12-07 17:01:31 1666

原创 linux程序依赖的第三方库相互冲突问题

Linux下的软件开发,因为有着众多的开源项目助力,开发难度应该降低很多才是。但是如果用的开源库太多了,偶尔也会遇到2个开源库相互冲突的问题。好比正在干活,有2个好朋友一起过来帮忙,但是活没有干完,这2个好朋友却先起冲突干起来了。人在江湖,朋友多了,似乎朋友之间的矛盾也成了自己的矛盾。-------------------------摘自某某码农开发笔记。特别是在纯C的软件开发中,如果依赖的2个第三方库,有同名的函数,变量或宏定义,那么麻烦就大了去了。有人说,难道编译不过吗?不是,还真不影响编译。但就是

2020-11-26 21:11:56 1872

原创 如何防止shell脚本的重入--flock

可重入的函数是安全的。不可重入的函数,每次调用返回的结果,可能是不一致的,即使每次传入的参数是一样的。编程语言里的函数如此,那么linux的shell脚本是不是可重入的呢?答案是:未必。其中,有很大部分的shell脚本是不可重入的。这自然带出问题:如何防止shell脚本的重入?---------------------------------------摘自某某不会装AC的码农笔录这里讨论的脚本重入问题,是说在同一时刻,同时调用2次同一个脚本文件。很多时候,我们希望的结果可能有2种,分别是:1. 多

2020-11-21 15:17:10 921

原创 谈谈随机crash的问题

没有遭遇过软件的随机crash问题的研发人生是不完满的,没有解决过软件随机crash问题的研发人生是有遗憾的!-------------摘自某某装AC人士笔录!在一个大型软件里,或是服务器软件,或是嵌入式系统终端软件里,软件crash问题,比比皆是,是个软件开发者必然遭遇过。但是,软件随机crash问题,相遇很难,解决亦难。这里说的随机crash,是会发生在软件运行过程里的不同地方,具体地说,使用GDB追踪几次crash,你会发现每次crash发生得代码文件和行数都不一样。 这就说明,每次追踪得死亡现

2020-11-21 13:47:06 395

转载 shell脚本返回值及其使用场景

本文链接:https://blog.csdn.net/hongweigg/article/details/78978295应用场景在一些应用中(比如Jenkins),嵌入了shell脚本,系统通过shell脚本的返回值来判断执行结果,如果返回值非0,则发生了执行错误,需要中止执行,这在使用单个命令时没有问题。然而,在shell (A)脚本又调用了shell脚本文件(B )时,当被调用的shell脚本B执行过程中发生了错误时,系统不会认为B有问题,而是继续往下执行。这样就会掩盖了问题。解决在被

2020-11-18 15:57:37 2643

原创 Linux下杂乱无章的Bash脚本传入参数--如何解析?

无论是外置的getopt命令,亦或是bash内置的getopts函数,都对bash脚本的传入参数做了一些规定,比如强制规定了短参数"-t 1",长参数“--test 1”。但是现实环境的脚本参数是杂乱无章的,不光是长短参数结合的, 还有类似这样的参数"-test 1", 注意了是长参数的基础上少一个减号“-”。如此混乱的传入参数,如何解析,是一个令人头大的难题。...

2020-11-17 16:32:00 435

转载 Linux C/C++内存越界定位: 利用mprotect使程序在crash在第一现场

原文链接:https://blog.csdn.net/thisinnocence/article/details/80025064对于大型Linux C/C++程序,内存越界和野指针类问题往往比较难定位。有的由于内存被非法改写造成了业务功能问题,有的则直接导致了程序crash,而且还经常不是第一现场。针对这种问题,可以采取的解决方法有:利用valgrind工具来排查,会影响程序性能; 使用Address Sanitizer工具排查; 如果是固定的内存被破坏,可以利用gdb watch来抓取第一现

2020-11-13 17:37:23 469

原创 [bashdb]SHELL脚本的事脚本解决

Bash Debugger这个开源项目很有意思,可以对需要调试的脚本单步跟踪,设置断点,查看变量值,打印调用堆栈等等。它是怎么做到的?有点意想不到。

2020-05-27 17:31:32 210

转载 linux的shell脚本的调试方法

前言被问及bash shell的调试方法问题,写了10多年的各种脚本,还真被问到了。以往的打印信息和输出log文件的搞法,对于一些linux后台开发使用到的复杂脚本调试,确实是不够的。有点糗!已存在的方法Shell脚本调试选项Shell本身提供一些调试方法选项:-n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误。 -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出。 -x,提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。使用这些选项有三种方法(注意:避免几种

2020-05-25 13:54:52 866

原创 开源项目libevent

前言开源项目libevent已经在业界广泛使用,甚至是一些对开源软件有着苛刻看法的大公司都在自己的项目里引入了libevent。好吧,libevent项目到底是什么鬼?简介

2020-05-21 09:34:13 705

原创 linux里多进程能否同时写同一个FIFO

前言linux里多进程能否同时写同一个FIFO?这个问题,在网络上似乎有很多人早就探讨过了。但是似乎一搜索,总是搜索不到正确的说法。还是写点内容记录下,防止遗忘。需求是什么因为FIFO里存放的都是有序字节流数据,多进程写入的数据必须保证原有的字节顺序不变。当然最基本的问题是,是否多个进程可以同时写同一个FIFO,如果多次打开失败,同时写的时,持续奔溃,就没有必要继续讨论了。理论和实践1. 多进程是可以同时打开并同时写同一个FIFO的FIFO的设计保证了这个需求是可实现执行的。2.

2020-05-15 18:34:21 1351

转载 基于ROS的Autoware开源项目

还记得百度的阿波罗项目吗?基于ROS系统的自动驾驶系统,Autoware也是基于ROS的。在github上关注Autoware很久了,这个是又日本一个大学主导的开源项目,不停演化,已经发展到了一定的高度。支持的sensor也很多,唯一可惜的是,似乎毫米波雷达的支持,还在开发中。

2020-05-15 16:58:06 2073

原创 显式调用dll文件中的函数居然crash了

windows系统下,调用dll文件里的函数,无非2种方法,一种就是直接包含头文件,编译连接dll文件对应的lib文件。另外一种,就是显示调用:在代码里load这个dll文件,声明函数指针,并绑定DLL文件里的某函数。背景显示调用在编程时,还是有很多使用场景的。比如说,需要同时调用2个厂家的SDK库函数,无奈的很,这2个SDK离大部分函数居然是同名的,传参数也相同,甚至API的作用都是一致的。大家估计想起了山寨,嘿嘿。动态得load不同的dll文件,调用API的过程都是相同的,在这个情况下使用显.

2020-05-14 18:16:13 489

转载 对_stdcall 的理解

引用自:https://www.cnblogs.com/songfeixiang/p/3733661.html对_stdcall的理解(上)在C语言中,假设我们有这样的一个函数:intfunction(inta,intb)调用时只要用result=function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知...

2020-05-14 17:43:10 163

原创 回忆福特AppLink项目

为了不忘却的记忆: 记福特AppLink项目调试。被问起这个项目时,居然发现很多细节已经模糊了,又翻查了项目笔记,用blog记下一些细节。以此记录那些年的工作经历。

2020-05-12 15:58:54 365

原创 [SPI通讯] 没有被SPI调试搞痛过吗

没有被SPI调试搞痛过,敢说自己调试过SPI通讯吗?分享一次调试SPI的经历,其中遇到的困难和问题,以及应对问题的方法,可能对读者有一定的参考意义。当然读完后,没有发现有价值的东西,还请求继续读下一篇........

2020-05-12 10:40:43 1817

原创 QT里的windows.h和winsock2.h重定义错误

windows.h和winsock2.h的相爱相杀的故事,在网络上广为流传,引发无数血案。各种作案场景,前置环境复杂纷繁,其中root原因和发生规律,以及解决方法,大致几种。今天就写上网上没有出现过的解决方法。现场前2天,一同事QT-Creator(msvc编译工具)开发一个远程socket通讯软件,包含 winsock2.h后,编译失败,各种重复winsock2.h里的结构体变量的重复包...

2020-04-28 17:30:20 3952 4

原创 如何测试验证linux下的CAN接口

嵌入式linux下的CAN接口,如何方便地测试验证是一个问题。实际上Linux系统已经自带了测试验证的软件工具。

2020-04-14 14:44:43 7852 3

原创 Android为毛出现Treble架构

Android 8.0 版本的一项新元素是 Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。有人告诉我android系统多出了Treble架构后,我查询到以上谷歌官方的宣言。Treble这个名词,让我开始以为是很新的东西。但是仔细研究后,发觉Treble还是建立在已有技术上的。当然,谷歌弄出Treble的真实原因到底是什么呢?先从Treble带来什么开始吧。...

2020-04-13 23:36:17 366

转载 Detailed Operations For Standalone On Linux BSP of I.MX Processors

由Wigros Sun于 2019-4-24 创建的文档•最后由Wigros Sun于 2019-4-25 修改 版本 2Host Environment: ubuntu 16.04 LTSLinux BSP For i.MX : version 4.9.88...

2020-01-21 18:15:53 395

原创 [i.MX6] 下载编译NXP的linux源代码

按照NXP官网获取的文档i.MX_Yocto_Project_User's_Guide.pdf说明,下载imx6相关的linux源代码过程。遇到如下repo init失败问题.$ mkdir imx-yocto-bsp$ cd imx-yocto-bsp$ repo init -u https://source.codeaurora.org/external/imx/imx-manif...

2020-01-08 14:00:20 2162 1

转载 [转] [Gerrit] [Git] 新增/刪除tag

1). 在local端新增tag,如果commit_id为空,默认以最新的commit_id为准$ git tag -a [tag_name] [commit_id]$ git tag -a 1.0.1 -m '.' # 创建带附注的附注标签,m参数可选2). 切换标签$ git checkout 1.0.1 #跳转到某标签$ git show 1.0.1 ...

2020-01-07 14:27:03 922

转载 [转] Git 最佳实践:commit msg

1.引言git commit 是很小的一件事情,但是往往小的事情往往引不起大家的关注,不妨打开公司的 gitlab 上的任一个 repo,查看 commit log,满篇的 update 和 fix,完全不知道这些 commit 是要做啥。下面就说一些最近的看到和自己尝试的一些还不错的实践。2. Tips1. one thing one commit在提交 ...

2020-01-07 14:14:19 618

原创 重格式化输出QT的QDebug信息

QT-Creator的qDebug()输出调试信息很方便,并且可以简单的重定向保存为log文件。但是qDebug()输出的信息没有直接带上当前文件名和行号,甚至当前系统日期时间等信息。这里介绍一个方法重新格式化qDebug()输出信息,可以添加上你需要显示的额外信息,同时保存成log文件。QtMessageHandler gDefaultHandler = NULL; // get ...

2019-05-05 10:51:42 1316

原创 QT应用在windows系统下调用bat脚本的坑

QT应用在windows系统下调用bat脚本,居然报错了。该BAT脚本,是用来检查svn.exe这个命令行工具,是否在当前系统里存在。在cmd终端里,一直是可正常执行的。但是在windows7家庭中文版操作系统下,使用QT应用的QProcess来调用返回值就始终不对。同样的应用可执行文件和bat脚本,在windows7旗舰版和windows10家庭中文版下运行正常!调试了一段时间,始终没有找...

2019-01-30 11:16:05 3012

转载 自动驾驶汽车传感器融合系统及多传感器数据融合算法浅析

“自动泊车、公路巡航控制和自动紧急制动等自动驾驶汽车功能在很大程度上是依靠传感器来实现的。重要的不仅仅是传感器的数量或种类,它们的使用方式也同样重要。目前,大多数路面上行驶车辆内的ADAS都是独立工作的,这意味着它们彼此之间几乎不交换信息。只有把多个传感器信息融合起来,才是实现自动驾驶的关键。” 现在路面上的很多汽车,甚至是展厅内的很多新车,内部都配备有基于摄像头、雷达、超声波或LIDAR...

2018-09-27 16:52:19 20071 1

空空如也

空空如也

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

TA关注的人

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