自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

翻译 14.1. Overview of Dynamic Types

​ 本文主要描述了FastDDS中动态数据类型的相关内容,在文章的最后会有一个简短的例子来展示如何使用动态数据类型。

2024-07-13 15:44:18 18

转载 Android.mk中添加对AndroidX的依赖

背景大致是这样的,需要将AndroidStudio的工程移到Android源码中进行编译,使用的Android.mk。我一般都是直接全部加进来。

2024-06-28 21:05:53 34

原创 RTPS Reader接收数据流程

该文的目的是为了整体大致的梳理RTPS协议层从创建Reader到Reader收到数据的大致流程以及涉及到的相关类的关系。同时,在日常使用RTPS Reader时,总是对部分概念存在疑问,在这里也想提出这些问题并且从代码中找到答案。

2024-06-27 15:34:46 615

原创 CMake编译proto的方法(custom_target和custom_command)

之前一直使用protobuf_generate_cpp来编译proto文件,但这个有一个弊端,就是无法控制生成的.cc和.h文件的路径,这个会影响到依赖改proto文件的其他源代码文件的编译,例如a.cpp依赖message.proto,其头文件包含是这样写的。3.通过custom_command手动调用protoc来编译proto,通过--cpp_out, -I以及proto文件控制生成的.pb.h, .pb.cc文件的路径。2. custome_target依赖custom_command中的输出。

2024-06-18 20:23:18 324

原创 Android12 将成果物生成到system和vendor分区

最近工作中遇到这么个事情,之前项目中留存的动态库是生成在vendor分区中,现在需要在system_ext分区中也生成,以便Android的系统进程也能访问这个动态库。因此,需要修改对应动态库项目的Android.bp。

2024-05-29 18:23:34 507 1

原创 Android HAL Service开发总结

3.为了让HWServiceManager知晓有我们创建的这么一个hwservice(vendor.device.xxx_hwfunservice-1.1),需要将我们HWService的信息注册到供应商清单文件中(manifests.xml)那么我们的HWSerice信息也需要添加到 system FCM矩阵中(还有product FCM,如果product中的app用到了我们的HWService,那么Product的FCM文件中需要添加我们的HWService)

2024-05-23 17:47:02 567

原创 Gradle设置引用的JAR包不编译到APK中

为了缩减编译出来的APK的大小,将其引用的JAR包通过Android.bp编译到最终的img中,然后希望APK在编译的时候,对于这个JAR包的操作是只参与编译,不编译到最终的APK中(类似于动态链接)这需要修改项目的build.gradle,在dependencies中添加compileOnly files("引用的JAR包“)

2024-05-10 20:03:41 150 1

原创 浮点数运算

浮点数的运算有三个步骤,这里从http://rangercyh.blog.51cto.com/1444712/1313162转载这三个步骤1、对阶(就是使两个浮点数的两个指数部分相同,规定小数向大数对齐,因为如果是大数向小数对齐,那么就要左移大数的尾数部分,就有可能会丢失大数的最高有效位;小数向大数对齐是右移小数的尾数部分,而丢失小数的那点精度对结果来说是无关紧要的)

2024-05-10 11:26:10 165

原创 FastDDS编译安装说明

1.2 下载asio源码(git clone https://github.com/chriskohlhoff/asio.git)1.3 找到autogen.sh所在的目录。4.下载编译安装FastDDS。2.安装tinyxml。3.安装libssl。

2024-05-06 10:18:50 521

原创 CMakeLists.txt总结

注意,属性等设置应该放在target的add_library, add_execute的下面,否则cmake的时候会提示set_target_properties的target找不到的情况。其中,RUNTIME,LIBRARY,ARCHIVE代表的是目标文件的类型,分别代表可执行程序,动态库和静态库,此外还有FILE类型代表文件,我个人一般使用FILE类型来安装头文件。用于设置target的属性,例如target目标文件输出的目录位置,target目标文件的版本号,target目标文件的名称等。

2024-05-03 20:02:47 738

转载 GIT的working directory,stage area和repository

转载:Part 1: What is the Staging Area?🚀🌟。

2024-04-30 22:13:32 29

原创 Android12中JAVA项目中proto文件的编译方式

最近的工作有涉及到将原来Android9平台下的java工程防到Android12中编译,结果发现在Android9中可以编译的工程,没有修改Android.bp,在Android12中编译失败了,原因是java文件中以来项目中的proto文件生成的java类,而这些proto文件没有编译出来。在Android12中对于proto文件的编译,会先将其设置为一个文件组,然后在编译的地方饮用这个文件组。而最重要的改动是增加的。部分的规则,设置了proto头文件饮用的路径等。

2024-04-19 09:38:54 408

原创 RTPS协议概述

RTPS协议主要由四个部分组成:​ 发现模块是定义了RTPS的参与者(Participant)获取其他RTPS的参与者(Participant),端点(Endpoint)的协议,使得每个参与者(Participant)能够了解到整个网络中其他参与者的存在并且相互匹配。​ metatraffic通信使得RTPS的参与者(Participant)可以获取到所有Participant,Reader以及Writer的快照并且让本地Reader和远端Writer以及本地Writer和远端Reader之间通信。​ RT

2024-04-06 05:36:08 1016

原创 酷壳网居然要科学访问

结果发现需要科学++上网++才能访问了,尼玛太离谱了。

2024-04-05 08:15:27 91

原创 Ubuntu系统切换多版本JDK

2.通过update-alternatives命令sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java 1000。update-alternatives: 使用 /usr/lib/jvm/java-1.8.0-openjdk-amd64/bin/java 来在手动模式中提供 /usr/bin/java (java)

2024-01-29 10:13:25 768

原创 SOMEIP学习总结

​ 其中,SOMEIP-SD的消息都是通过UDP发送的。

2024-01-14 12:17:23 1094

转载 c++ RAII

C++的RAII是C++的发明者提出的一个使用C++面向对象特性管理关键的操作系统资源的编程方式,其核心想法就是通过类封装管理操作系统资源,并且利用了C++类的栈对象出栈的时候会调用析构函数的特性,在析构函数中释放系统资源来避免资源泄漏。

2023-11-30 14:48:32 96

原创 c++静态初始化map容器

前提:使用c++ 11及以上版本。

2023-10-11 21:04:30 298

原创 对日项目工作总结

5.一个公司分为很多机能组,例如media,hal,driver,hardware,framework,app这些,每个功能点的实现都需要一个或者多个机能组的参与,共同实现,式样会将式样书分发给不同的机能组做要件分析,就是分析这些功能点是否我机能组该当,是否主担当,或者是辅助,并且确认责务,就是这个功能点我这个机能组需要做什么,其他的机能组是否需要提供帮助,提供什么帮助,那么都需要在要件分析的文档中写出来,写清楚,并且展开给需要辅助我组实现该功能点的其他机能组让他们知晓。大致就是上面这套流程。

2023-09-29 12:15:23 213

原创 首次使用ninja的体验

首先编写CMakeLists.txt,然后cmake -G Ninja生成build.ninja,最后ninja all对该build文件进行编译,生成二进制成果物。首先总结说自己的理解,就是NINJA是一个和MAKE同一级别的编译工具,在CMAKE/GRADLE等工具之下工作。cmake目前可以生成makefile,也可以生成ninja文件(CMAKE选项中增加了-G Ninja)当然也可以直接编写build.ninja文件然后ninja all来编译工程。ninja:源码安装。

2023-08-14 18:02:46 237

原创 TypeScript初学记录【1】

let obj = { nm : "lcb", // 解构对象。let arr1 = [1, 2, 3] // 展开。let input = [1, 2] // 解构数组。主要涉及到基本类型,变量作用域。

2023-03-13 16:46:35 197

原创 JAVA使用socket outputstream中碰到的问题

JAVA socket的OutputStream 调用write发送int型数据碰到的问题

2023-02-24 17:31:30 848

原创 TCP网络编程整理总结

1.每一个TCP套机字中都存在I/O缓冲,该缓冲在创建套接字的时候自动生产2.即使关闭套接字,I/O缓冲中输出缓冲的遗留的数据也会继续传输3.关闭套接字会导致I/O缓冲中输入缓冲中遗留的数据丢失4.tcp数据包header中的seq表示本次发送出去的数据包的序列号,而ack则是在最后一次收到的对方的TCP包中的seq上+该TCP包数据的字节数 + 1 即: A发送的数据包(SEQ:1000, ACK:NULL, datalen:82) B回复数据包(SEQ:2000, ACK:...

2023-02-24 17:17:53 552

转载 c++ backtrace

今天在看apollo代码时,看到了C++中打印backtrace的方法:// 打印堆栈信息void ShowStack() { int i; void *buffer[STACK_BUF_LEN]; int n = backtrace(buffer, STACK_BUF_LEN); char **symbols = backtrace_symbols(buffer, n); AINFO << "=============call stack begin:=====

2023-02-24 17:15:41 277

原创 [C++][模板]char*作为模板实参时的一个问题

C++模板使用字符串作为类型参数时的注意点

2022-12-22 17:27:55 638

原创 linux C++注册程序退出信号处理的代码

linux C++注册程序退出信号处理的代码

2022-12-01 09:40:47 685

转载 OPENGL知识点整理(一)

概述内容为阅读相关博主文档后整理,因此,相当部分的内容直接引用自如下链接:https://www.jianshu.com/p/5da5a17ad5cbhttps://blog.csdn.net/u012861978/article/details/97833643在opengl中,根据处理的先后次序来分,主要有如下几个坐标系:就是以要被渲染物体的重心作为坐标体系,可以标识出该物体的各个定点的坐标(个人理解)不同的物体都有其自己的物体坐标系惯性坐标系原点域物体的物理坐标系相同,但是其x,y,z轴与世界

2022-11-16 22:55:56 364

原创 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 5461

原创 建造者模式

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

2022-02-02 10:57:40 504

原创 工厂模式总结

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

2022-02-01 20:34:48 537

原创 内存对齐的理解

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 423

翻译 eProsima Fast DDS Documentation翻译

#########

2021-11-22 19:18:18 758

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

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

2021-10-24 17:58:39 521

原创 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 577

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

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

2021-10-17 15:21:51 630

翻译 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 2872

翻译 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 1030

翻译 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 1951 1

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

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

2021-08-28 16:44:57 200

转载 网络层常用协议

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

2021-08-25 21:35:09 2356

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

WINDOWS程序设计第五版中英文

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

2011-02-10

空空如也

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

TA关注的人

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