自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(182)
  • 资源 (6)
  • 收藏
  • 关注

原创 C++ tuple模板类使用体验

C++ tuple模板类使用体验make_tuplegettietuple类可以说是一种特殊的pair类型,其内部可以最大包含10个左右不同类型的成员(pair只能包含两个)使用tuple需要包含头文件对应std::make_pair,tuple也有对应的std::make_tuple模板函数用于创建特定类型的tuple对象tuple主要有如下常用的操作make_tuplemake_tuple用于创建一个指定类型的tuple对象,例如std::make_tuple<int, float,

2022-03-27 12:53:06 5288

原创 建造者模式

借用看到的一篇文章中的话来总结就是:当一个类的构造函数超过4个的时候,就应当考虑使用建造者模式来创建该类的对象。在java中,有一种简单的构造者模式实现,就是将类的构造函数全部放到其静态内部builder类中,而该类的构造函数以builder 类成员来构造。例如,通过builder类,用户可以选择构造的电脑的内存大小,硬盘大小,但是CPU和主板是不可更改的。那么将设置了内存或者内存和硬盘大小的builder对象给到computer类既可构造处对应配置的computer对象。个人感觉,bu

2022-02-02 10:57:40 440

原创 工厂模式总结

工厂模式主要有如下三种:1.简单工厂2.工厂方法模式3.抽象工厂简单工厂:简单工厂有一个工厂类,负责创建产品,而产品是所有具体产品的抽象,定义了产品的接口。糖果是产品的定义,而大白兔,荷氏薄荷,牛轧糖则是实际的产品,糖果工厂根据传入的名称参数生产不同的糖果。该模式的缺点在于所有创建产品的逻辑全部集中在工厂类中,随着产品的拓展可能会导致工厂的创建逻辑越发复杂,并且也违反了设计模式中高内聚的原则。工厂方法模式: 工厂方法模式一定程度上优化了简单工厂模式...

2022-02-01 20:34:48 329

原创 内存对齐的理解

1.编译器默认的内存对齐规则默认的对齐规则是一个变量的地址需要是其类型的长度的整数倍:例如下面这个结构体:struct A{char m1;short m2;int m3;}对于A变量的m1成员,其大小为1个字节,起始地址为0,可以满足整除的要求对于A变量的m2成员,其大小为2个字节,因此起始地址1不满足被2整除,需要按照2字节对齐,因此,其起始地址为2,占用2,3两个字节对于A变量的m3成员,其大小为4个字节,因此其起始地址4满足整除4这个要求最终该结构的内

2021-12-26 13:47:59 241

翻译 eProsima Fast DDS Documentation翻译

#########

2021-11-22 19:18:18 254

原创 阿里巴巴Java开发手册 阅读总结(针对C++开发进行了精简)

命名规则:1.不用特殊符号(¥,$,_等)开头或者结尾(无论对于函数名,类名还是变量名)2.使用大写驼峰对应函数名和类名3.使用小写驼峰对应变量名4.使用全大写对应常量名,单词间用下划线(_)连接5.抽象类类名使用Base或者Abstract开头6.测试类类名使用Test作为结尾7.数组的中括号紧接着类型后面8.包名/命名空间名称使用小写9.使用完整英文单词解析名称用途,不适用中文,中文拼音或者不完整英文单词来命名10.如果类或者方法对应使用了某种设计模式,那么类名/方法名中最好体现该设

2021-10-24 17:58:39 150

原创 protobuf 2.0版本排查必填字段未填的方法

在proto2.0版本中,如果required字段没有填写,那么proto编码字符串发给对方进行parse时,对方会parse失败,因此有必要在发送前检查一下是否存在这种情况(特别是在debug阶段)1.为了获取proto序列化的错误信息,首先不能使用MESSAGE_LITE形式的proto,即不要在proto的开头申明 option optimize_for = LITE_RUNTIME;2.在proto对象调用SerializeToString之前,通过IsInitialized方法判断是否该p

2021-10-18 15:14:37 213

转载 recv()函数中MSG_PEEK参数的解释(转)

recv默认最后一个flag参数是0,调用完recv,如果socket的接收缓冲区存在数据,则recv调用会从缓冲区中取走数据但是如果flag参数设置为0,则调用完recv,不从接收缓冲区中移除读取的数据。recv()函数中MSG_PEEK参数的解释_sinat_37372543的博客-CSDN博客...

2021-10-17 15:21:51 173

翻译 Linux平台下从源码安装FastDDS(翻译)

3. Linux平台下从源码安装FastDDS本文介绍了从源代码中安装Fast DDS library 的方法以及 Fast DDS-Gen 生成工具的使用源码进行,章节组织如下: Fast DDS 库安装 要求 依赖 Colcon安装 CMake 安装 Fast DDS-Gen 工具安装 要求 编译Fast DDS-Gen 3.1. Fast DDS库安装该章节描述了linux环

2021-10-02 19:14:48 1341

翻译 Linux平台下二进制安装FastDDS

1. Linux平台下二进制安装该页面主要介绍在linux环境下,使用二进制release安装 eProsima公司的 Fast DDSThe。 安装 内容 运行应用 在一个CMake项目中包含Fast-DDS 卸载 1.1. 安装eProsima Fast DDS在Linux平台下最新的release可以从 Downloads tab站点下载到。下载完成后,将下载的压缩包解压到指定目录,然后在系统中使用有管理员权限的用户来执行

2021-09-06 23:11:30 512

翻译 eProsima Fast DDS

eprosima Fast DDS(之前为Fast RTPS)是一个OMG(Object Management Group)组织下的DDS (Data Distribution Service)标准的C++实现。eProsima Fast DDS实现了RTPS (Real Time Publish Subscribe)协议,该协议提供了基于不可靠传输(例如UDP)通信方式下的发布-订阅功能。由于是由OMG组织定义和维护的,因此,RTPS也是为数据分发服务(DDS)定义的线性互操作协议。eP...

2021-09-05 22:44:47 918

原创 调查线程死锁/阻塞的一种方法

最近在使用冰羚中间件的时候,发现应用中的订阅者线程从冰羚获取到订阅数据后,经常随机出现阻塞的问题(应该没有死锁,因为只在该线程中访问冰羚订阅数据)现象就是线程的while循环直接停了,并且排除到是sleep的原因(因为日志显示阻塞的时候还没有运行到sleep),由于时间紧迫,为了尽快解决问题,想到从线程栈来排查问题,问题就在于如何在阻塞时查看线程栈,搜索后发现通过给进程发送abort信号,可以产生核心转储文件或者说是墓碑,里面有各个线程的调用栈,经过操作后获取到coredump文件,根据订阅线程所用的函

2021-08-28 16:44:57 67

转载 网络层常用协议

1.IPIP协议是Internet Protocal(网际互联协议)的简称,该协议中包含了通信的源地址和目标地址,源端口,目标端口,协议版本以及该包数据的生存时间等。IP协议是无状态,无连接,且不可靠的,因为其无法保证IP数据包一定能够到达指定的目标地址。IP协议的设计目的主要是为了解决大规模且异构网络之间的数据通信,IP数据包可以向下通过链路层使用不同的技术(令牌环网络,以太网等)进行传送。2.ARPARP协议是Address Resolution Prot...

2021-08-25 21:35:09 764

原创 libcurl使用记录

1.curl_easy_init 返回easy_handle对象(一个CURL*指针)2.curl_easy_setopt 设置行为 2.1 CURLOPT_URL 设置访问URL 2.2 CURLOPT_HEADERFUNCTION 设置获取到RESPONSE HEADER数据时的回调函数,主要通过curl_easy_getinfo解析其中的应答码,头大小等信息 2.3 CURLOPT_WRITEFUNCTION 设置接收到数据时的回调函数 回调函数原型为:size...

2021-07-29 06:51:17 82

原创 Ubuntu下查看磁盘使用情况的工具

最近工作中遇到下载代码过程中显示根分区磁盘空间不足的问题,发现ubuntu下有个图形工具查看磁盘的使用情况非常方便,叫做Disk Usage A nalyzer

2021-06-15 15:28:56 263

翻译 冰羚-IceOryx FAQ翻译

iceoryx FAQ这份文档中包含的是一些知识点和文档的链接,用于帮助排查RouDi的问题。偶尔我们也会有一些拓展。Available memory is insufficient(可用内存不足)如果你从RouDi的日志或者输出中看到Available memory is insufficient(可用内存不足),那么这哥时候,RouDi就无法预订共享内存给到发布者了。为了避免这种情况发生,你需要检查一下你的主机环境到底支持多大的共享内存,例如在Ubuntu系统上,你可以用下面的命令来检查:df

2021-05-17 10:59:03 458

翻译 冰羚-README.md翻译

iceoryx(冰羚) - 一个建立在POSIX系统上的IPC中间件介绍很高兴您已经接触到了IceOryx这个Eclipse项目,让我们快速了解一下背景,介绍这个项目的范围并且通过一些例子带你入门首先,什么是IceOryx(冰羚)?IceOryx是一个在 POSIX 系统上跨进程通信的的中间件,通过POXIS系统上共享内存的特性来完成一个真正的零拷贝数据传输机制。更多的信息可以在 1000 words iceoryx introduction in the eclipse newslet

2021-05-16 21:26:19 953

翻译 冰羚 example-icedelivery-README.md翻译

icedelivery - 在Posix应用间传输数据介绍这个例子展示了基于冰羚系统的进程间通信(IPC),零拷贝完成数据单向传输的例子它提供了发布者和订阅者应用,这些应用包含了两种风格(Bare-metal版本 以及simplified版本)RouDi, 守护进程RouDi是 Routing and Discovery的别名,这个名称很好的描述了RouDi的任务内容。RouDi负责建立通信,但是不实际参与发布者和订阅者间的通信,可以将RouDi想象为冰羚系统中的交换机。RouDi所负责的另一个

2021-05-15 10:34:34 338

翻译 冰羚Planned features.md翻译

计划的特性下面这个列表包含了较高级别的冰羚系统的特性,这些特性将很可能在下一个版本实现Windows和Mac系统平台运行的支持RouDi以及posh runtime的使用手册请求-响应的通信模式同一个主题支持多个发布者范围外的特性下面这些特性不是冰羚系统主要关注的,但是,如果你有想法并且希望他们出现在特性清单上,可以针对这个特性提出请求来讨论是否需要增加。让冰羚系统运行在单片机上...

2021-05-14 16:32:43 77

翻译 冰羚中间件 conceptual-guide.md翻译

ContentsIceOryx冰羚系统的结构共享内存管理交互机制IceOryx冰羚系统的结构冰羚的组成如下:一个RouDi守护进程多个加载了"Posh Runtime"运行时的进程RouDi守护进程RouDi 的名称由来是’‘Rou’‘ting 和’‘Di’'scovery,其是冰羚系统的核心,并且负责如下功能:Service discovery(服务发现):RouDi是Publisher(发布者)和Subscriber(订阅者)的中心节点Shared memory man

2021-05-03 17:31:51 867

翻译 冰羚中间件 RouDi usage-guide.md翻译

内容内容配置RouDiConfiguring RouDiRouDi可以支持读取从一个配置文件中读取mempool config。如果需要支持这个特性,CMake的编译选项中需要使用 -DTOML_CONFIG=onmempool config配置文件需要以-c命令选项的方式传给RouDi,像下面这样:./RouDi -c /absolute/path/to/config/file.tomlRouDi支持不同的共享内存段使用不同的访问属性用于限制不同应用对于共享内存段的存取。下面是格式版

2021-05-03 00:23:03 359

原创 V2X车联网-学习整理笔记

一致性测试预备条件:1.具备WIFI或者LAN通信能力2.具备GNSS能力,能够获取设备经纬度以及授时3.具备RF通信能力aid为应用标识,应用标识分配如下:111:普通车辆状态112:普通车辆关键事件提醒113:紧急车辆状态114:紧急车辆关键事件提醒3618:地图类应用3619:信号灯类应用3620~3623:道路类信息应用3627:证书类应用3628:证书撤销列表3629:异常行为管理CV2X协议栈层结构,从下到上分别为:1.射频2.物理层3.MAC层4.RL

2021-02-11 15:27:01 2794 6

转载 MySQL操作入门

下载链接:1.百度网盘:链接:https://pan.baidu.com/s/1vP-D71PmMsXhLwO8y2lL9A提取码:n4mt2.官网下载:https://www.mysql.com解压下载的安装包后存放到C:\Program Files (x86)目录下设置环境变量:1.mysql:设置为C:\Program Files (x86)目录下mysql根目录2.path中增加$mysql\bin路径常用命令:①安装服务:mysql...

2021-02-11 11:58:34 34

原创 内存调查工具 - tinymob使用说明

内存调查工具 - tinymob使用说明实机上操作流程以TestServer进程为例停止进程stop TestServer 启动进程LD_PRELOAD=/存放路径/libtinymob.so TestServer & 画面&机能操作 输出内存分配状态tinymobcat pid > /tmp/TestServer.txt// pid为TestServer进程pid 获取进程map表cat /proc/pid/maps > TestServer.ma...

2020-12-24 16:47:53 126 1

原创 创建者模式

当类A和类B存在如下关系的情况下,可以将类A对象的创建的责任交给类B1.类B聚合类A类对象 (聚合)2.类B包含类A类对象 (组合)3.类B密切使用A类对象4.类B对象是A类对象创建时需要的元素(例如类A构造函数中需要传入类B指针)创建者模式的一个重要特点就是被创建的类对象不再由用户创建,而是由创建者类(例如类A)负责创建,用户只负责调用创建的类对象...

2020-12-12 18:37:24 139

转载 TCP套接字状态

TCP套接字解释 状态意义CLOSED没有使用这个套接字LISTEN套接字正在监听入境连接SYN_SENT套接字正在试图主动建立连接SYN_RECEIVED正在处于连接的初始同步状态ESTABLISHED连接已建立CLOSE_WAIT远程套接字已经关闭:正在等待关闭这个套接字FIN_WAIT_1套接字已关闭,正在关闭连接CLOSING套接字已关闭,远程套接字正在关闭,暂时挂起关闭确认LAST_ACK远程套接字已,正在等待本地套接字的关闭确认FIN_WAIT_2套接字已

2020-12-11 14:11:07 124

转载 exit,abort,_exit的区别

1.exitexit调用会让当前进程调用退出处理函数,并且清空IO缓存,然后调用_exit()2._exit调用exit系统调用,终止程序运行,清空进程使用的内存空间,以及在内核中的数据结构3.abortC 库函数void abort(void)中止程序执行,直接从调用的地方跳出。#include <stdio.h>#include <stdlib.h>int main (){ FILE *fp; printf("准备打开 n..

2020-11-28 22:16:45 124

原创 Android进程间文件描述符传递原理-初

Android进程间文件描述符传递原理-初1.进程表2.进程控制块状态存储文件3.文件描述符4.进程间共享文件描述符a.binder驱动将调用进程传入的文件描述符使用fget内核函数后去file对象b.binder驱动在被调用进程中创建新的文件描述符与该file对象关联c.binder修改调用进程传入的文件描述符,改为该被调用进程中创建的新的文件描述符1.进程表操作系统为了了一张表格,即进程表,每个进程占用一个表格项。2.进程控制块每个进程在进程表中占有的表格项目被称为进程控制块,进程控制块中的内容

2020-11-28 21:56:38 117

原创 virtualbox中给虚拟机加载新硬盘

挂载新磁盘(扩容)1.创建新磁盘(虚拟机关机状态下)(1)virtualbox界面/Settings/Storage/Controller:SCSI +号 (Adds hard disk)/Create new disk/VDI(默认) Next/Dynamically allocated(默认) Next/设置虚拟磁盘的名字和size/Create2.挂载新磁盘(1)查看磁盘:df -h查看可用的磁盘名,比如sdb (不要与已有的磁盘重名)(2)格式化磁盘虚拟机开机/按w

2020-11-14 13:03:06 154

原创 SELINUX初步理解

SELinux简介1. 系统中所有的文件都必须打上SELinux的标签, 多个文件可以打上同一个标签2. 每个进程运行在一个单独的domain中3. 每个进程需要访问任何文件都需要进行显示的声明, 声明该domain对某标签的权限系统中的每个进程会分配一个domain,每个domain有自己的te文件,te文件中显示声明了该domain有哪些权限。每个进程做系统设计的时候,需要整理一份MAC权限表格, 编译系统会根据所有的excel表格生成selinux的策略文件...

2020-10-25 22:01:20 57

转载 linux应用程序core dump处理

默认编译出来的程序在出现Segmentation fault 时并没有生成core崩溃文件,可以在gcc/g++编译时增加-g选项。如果仍然没有生成core文件,则可能是因为系统设置了core文件大小为0,可以通过:ulimit -a 查询得知。执行 ulimit -c unlimited 命令后可以使core文件大小不受限制。此时再次运行程序应该就能在同级目录看到core.XXX文件了使用 gdb ./a.out core.XXX 可以查看出错所在行信息,这样就进入了 gdb core 调试模

2020-10-24 12:37:37 110

转载 如何处理下载的tgz格式安装文件

tgz文件是linux下的一种压缩文件格式(如windows下的.rar或.zip),必须先解压出du来,然后配置安装,可zhi以使用命令:1.解压缩至当前目录2.cd命令切换到解开的目录中3.然后执行命令进行安装配置 ./configure4.等到配置完成后执行 make5.编译完后,安装 makeinstall6.最后清除掉配置编译的一些文件 makeclean...

2020-10-12 21:03:20 2031

原创 【Android】dumpsys activity package $packagename

具体作用后续跟进检讨补全

2020-08-12 16:12:32 140

转载 Android AIDL中支持的数据类型

AIDL支持的数据类型分为如下几种:八种基本数据类型:byte、char、short、int、long、float、double、boolean String,CharSequence 实现了Parcelable接口的数据类型 List 类型。List承载的数据必须是AIDL支持的类型,或者是其它声明的AIDL对象 Map类型。Map承载的数据必须是AIDL支持的类型,或者是其它声明的AIDL对象链接:https://www.jianshu.com/p/29999c1a93cd...

2020-08-05 16:39:42 644

原创 Android原生壁纸加载日志

05-01 00:00:01.049 3008 3008 V WallpaperManagerService: bindWallpaperComponentLocked: componentName=ComponentInfo{com.android.systemui/com.android.systemui.ImageWallpaper}05-01 00:00:01.049 3008 3008 V WallpaperManagerService: Binding to:ComponentInfo...

2020-07-22 10:27:01 154

原创 [Android]系统启动时序

最近公司的群里面有大佬分享了一张自己总结的系统启动时序,觉得画的非常清晰简练,因此在这里分享一下:

2020-03-11 13:38:09 489

原创 汽车电子部分专业术语英文简称

BCM Body Control Module CLUSTER Instrument panel (or dashbord) METER CLUSTER HUD Head Up Display CDM ...

2020-02-09 14:55:03 888

原创 《深入解析Android虚拟机》Dalvik和Art基础:读书笔记

1.Dalvik虚拟机和普通java虚拟机的区别: a.dalvik虚拟机基于寄存器,java虚拟机基于栈 b.dalvik会通过dx将所有的class打包到dex文件,普通的java虚拟机将所有的class打包到jar文件 c.dalvik和普通java虚拟机使用的字节码不同,即class文件的格式不同,无法互通2.每一个Android应用都运行在一个Dal...

2020-01-31 22:29:15 226

原创 jni编写时的教训(函数签名不对应)

最近由于项目结构上的调整原先我的模块位于APP层,通过aidl,hidl调用到native层的c++的服务的接口,用于更新EMMC上的文件内容,需要改为C++服务更新EMMC上文件内容的代码封装成jni的so库,由我的模块去调用。由于jni仓库是由我去创建,因此,我需要创建jni仓库,增加Android.mk,同时添加cpp文件,完成jni的so中的接口函数的空实现以及native方法...

2020-01-20 11:32:14 223

转载 ECALL,BCALL,ICALL

eCall的基本原理可以描述为:在发生车祸的时候,车载系统自动拨打紧急呼救电话,同时通过语音通道将车祸相关信息发送到呼叫中心。这里面有3个名词,看英文文档的时候经常会用到,翻译如下:车载系统:In-Vehicle System (IVS)呼叫中心:Public Safety Answering Point (PSAP) (学名叫公共安全应答中心,可以理解为国内的110服务台)相关信息:M...

2020-01-03 10:15:43 4888

opengl预习资料.md

opengl预习资料.md

2022-04-04

ICEORYX.pptx

ICEORYX.pptx

2021-08-28

SecureCRT.rar

SecureCRT,比较好用的ssh,串口连接工具,比putty在文字编辑,使用习惯上好很多,比finalshell也好不少

2020-09-01

teraterm.zip

类似与putty的软件,但是有很多额外功能,可以通过串口传文件等 软件需要解压后才能使用,经常在开发过程中使用他的marco菜单下的功能,配合ttl文件完成testmode模式下的设备的相关操作

2020-06-03

makefile中文手册

make中文手册 希望对大家有帮助 ~~~~~~~~~~ ~~~~~~~~~~ 谢谢~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~ ~~~~~~~~

2017-09-21

WINDOWS程序设计第五版中英文

C语言下编写WINDOWS程序的编程宝典,帮助你深入理解WINDOW程序的运行原理

2011-02-10

空空如也

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

TA关注的人

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