自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sunrise的专栏

厚积薄发

  • 博客(101)
  • 资源 (6)
  • 收藏
  • 关注

原创 什么是批处理系统,多道程序设计,分时系统?

在解答什么是批处理系统之前,先想想为什么会有批处理系统,当一个事物出现时,一定是为了解决某个问题,知道了这个原因,就能更好的理解这个事物。同上,我们先看历史。

2024-10-27 20:48:30 611

原创 【工具】使用perf抓取火焰图

perf采集数据生成火焰图

2024-10-19 16:08:56 676

原创 fork中的死锁问题

我们要尽量在多线程程序中使用fork()使用fork()后立即调用exec()避免在持有锁时调用fork()当然当我们编写多进程大型程序时,很难避免,特别是引用了一些三方库这些不受控的代码。

2024-10-15 22:10:50 320

原创 2023年10月14日

晴。

2024-10-14 22:49:12 91

原创 2024年10月13日

晴。

2024-10-13 21:56:56 361

原创 【问题分析】使用gperftools分析排查内存问题

内存泄漏使用gperftool进行排查

2024-10-13 10:46:44 745

原创 【功能安全】什么是Aspice?

英文全称:Automotive Software Process Improvement Capability dEtermanitionASPICE4.0文档汽车软件过程改进及能力评定,是汽车行业用于评价软件开发团队的研发能力水平的模型框架。最初由欧洲20多家主要汽车制造商共同制定,于2005年发布,目的是为了指导汽车零部件研发厂商的软件开发流程,从而改善车载软件的质量。德国的一些整车厂,一起推动和制定了这个规范。这么一个组织。

2024-10-12 22:50:09 692

原创 2024年10月12日

晴。

2024-10-12 18:49:42 248

原创 2024年10月11日

多云。

2024-10-11 22:01:26 132

原创 C++对象声明周期问题记录

多个对象的生命周期管理问题

2024-10-11 21:22:46 554

原创 2024年10月8日

日记

2024-10-09 08:45:42 92

翻译 Gazebo简介

gazebo

2022-03-13 22:16:46 2927

翻译 DDS是什么?

DDS: 全称为Data Distribution Service(数据分发服务)。

2022-03-07 17:55:36 12759

原创 函数优化中inline的用法

inline方法使用

2022-02-23 11:16:24 725

原创 C++的静态类型检查

C++静态类型检查

2022-02-20 22:28:56 853

原创 c++类成员函数的inline属性

问题类成员函数添加inline关键字的原因是什么,为什么存在?为什么存在?Bjarne在《The Design and Evolution of C++ 》中描述“带类的C”时有相关介绍:将inline函数引进带类的C,直接原因是一个具体的项目。在该项目中,由于某些类与实时处理有关,这种函数调用的开销是无法接受的;为了使类机制能够成为在这个应用中有用的东西,就要求在跨越保护屏障时不付出任何代价。只有在类声明中提供一种可用表示,并能把对公用(界面)函数的调用变成在线的(inline),才可能达到这个

2022-02-20 12:22:20 833

原创 CMake传递相关宏至源代码

Cmake传递预处理宏至源码

2022-02-19 10:32:31 4806

原创 constexpr关键字

constexpr关键字

2022-02-09 19:37:33 834

原创 从几个例子看函数重载

函数重载,名称修饰,name mangling

2022-02-06 21:08:10 942

原创 松弛型内存模型(Relaxed memory models)的一个有趣的例子

代码例子性能测试代码#include <benchmark/benchmark.h>int A, B;void func1() { A = B + 1; asm volatile("pause" ::: "memory"); B = 0;}void func2() { A = B + 1; B = 0;}void BM_MemoryBarrier(benchmark::State& state) { for (auto _

2022-01-17 20:06:59 651

原创 Pimpl中的unique_ptr编译错误及解决方法

C++ impl

2021-12-26 17:14:20 1404

原创 Google benchmark使用手册及范例

构建集成在robotic_arm的third_party已经集成了benchmark,只需在相关测试用例代码的CmakeLists.txt添加如下内容:target_link_libraries(xxx PRIVATE benchmark pthread)Demo样例存在以下模式样例:1. 使用BENCHMARK、BENCHMARK_MAIN宏#include <benchmark/benchmark.h>#include <chrono>#include <

2021-12-03 19:37:54 6545

原创 Benchmark tool library for c++ code

c++ benchmark tool library

2021-11-22 20:28:12 4936

原创 字节序: big-endian vs little-endian

如何快速记忆big-endian又名大尾序,就是数值的尾巴存储在大地址上。尾是相对我们认识的变量值,大是指地址;相对应,little-endian又名小尾序,数值的尾巴存储在小地址上。一句话大小是尾巴的地址,尾巴是数值的尾巴,指的是0xABCD(十进制43981)的D 如何判断字节序是大端还是小端通过二进制工具查看: readelf -h mainint main(){ return 0;}编译出二进制g++ main.cpp -o main使用readelf查看字节序

2021-10-31 17:57:56 349

原创 Thread Local Storage理解

Thread Local Storage理解带着问题去学习1. 什么是thread local storage?一种计算机编程方法,使用线程本地静态或全局的内存。2. 主要作用是什么?避免资源竞争;当多个线程访问同一个资源时,会产生竞争。当将资源声明为thread local storage时,则不会有竞争。使用全局对象方法的重入性;比如一个函数使用全局变量设置一个错误码(比如c库中的errno),如果errno是个全局变量,一个系统方法会重写这个值之前刚被另外一个线程修改,然而另一个线程的代

2021-10-31 01:08:35 1423

原创 C++代码review问题<三>:变量默认初始化

题记变量是我们编写程序的必不可少的元素(可谓程序大厦的一砖一瓦),当我们声明定义一个变量后,这个变量的初始值是什么,你可能会有疑惑(如果没疑惑,请确保你是已经完全清楚而不是不关心或者不在意,因为不符合预期的变量值,会将程序带到undefine behavior的境地);为了全面理解变量的初始化,我们按照下面几个方面进行分析:变量的种类(都有哪些变量),变量在进程内存中的存储位置、变量的初始值、变量的规范初始化变量的种类分为两大类:local variable、non-local variable;

2021-10-16 22:39:03 181

原创 C++代码review问题<二>:CMakeLists编写的一些规范

add_definitionsCMake文档描述Adds definitions to the compiler command line for targets in the current directory and below (whether added before or after this command is invoked)影响范围大( targets in the current directory and below ),会污染其他cmake文件。可以使用set_targ..

2021-10-14 20:51:32 197

原创 C++代码review问题<一>

包含头文件时,推荐使用c++风格详细讨论见知乎帖子:https://www.zhihu.com/question/51288493看下来一句话:都可以,c++风格代码风格会优雅些 #include <stdio.h> // bad #include <cstdio> // good非必要情况下,不使用无符号类型主要遵循c++ google style:You should not use the unsigned integer types such as.

2021-10-11 20:38:48 199

原创 Ros1中的pub和sub是如何建立连接的?

Ros1中的pub和sub是如何建立连接的?先上时序图,一睹为快连接拓扑关系简要描述连接拓扑关系:pub<–>rosmaster: pub节点进程与rosmaster使用xmlrpc机制进程通讯,xmlrpc是基于xml格式和http协议的一种rpc(remote procedure call)。sub<–>rosmaster: 同pub节点。pub<–>sub: 节点间使用socket(tcp/udp传输层协议)进行连接连接过程中的数据流图...

2021-09-10 19:44:23 1044

原创 ros源码下载及编译

Ros1 源码下载及编译准备工作Setup your sources.listSetup your computer to accept software from packages.ros.org.sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'Set up your keyssudo a

2021-08-27 20:02:35 2682

原创 知识点学习

C++多态的原理是什么? 虚表什么时候确定,存放位置?虚函数的作用,为什么要用虚函数,virtual的其他用法?运行时多态和编译时多态区别,及优缺点?多态就是在基类函数上加上virtual关键字,在派生类中重写该函数,运行时会根据对象的实际类型来调用相应的函数,如果对象类型是派生类,则调用派生类的函数,如果对象类型是基类,则调用基类的函数。对于存在virtual关键字的对象,维护一个指向虚函数表的指针,虚函数表存放了该对象的所有虚函数地址;虚函数表是在编译阶段确定的,存放在程序的只读数据区; 指

2021-04-29 23:50:34 147

原创 uint8使用stringstream序列化和反序列化的坑

关于uint8使用stringstream序列化和反序列化注意点问题现象(通过一个例子查看)例子:int main(int argc, char** argv) { uint8_t in = stoi(string(argv[1])); printf("in: %c, %d\n", in, in); // 序列化 std::ostringstream ostream; ostream.str(""); ostream << in;

2020-12-17 21:38:21 1395

原创 进程间通信:condition_variable && unique_lock(c++)

condition_variable(条件变量)简介互斥锁用于上锁,条件变量用于等待;condition_variable类是一个同步原语,可以用来阻塞一个线程,或者同时阻塞多个线程,直到另外一个线程修改了条件(a shared variable: the condition)并且通知了condition_variable(notify).修改条件,并通知获取一把锁,通常使用std::lock_guard。在锁锁定的状态下,修改条件。调用notify_one 或者 notify_all,进行

2020-08-05 11:55:00 2371

原创 C++对象模型:构造函数语意--Default Constructor 什么时候生成,又做了什么

引言C++ Annotated Reference Manual中告诉我们:default constructors 在需要的时候被编译器产生出来;那么被谁需要?又做了什么事情呢?一个简单的例子#include <stdio.h>class Foo { // 不会合成出一个default constructorpublic: int val; Foo *pNext;};void FooBar(){ Foo bar; if (bar.val ||

2020-07-27 16:52:49 398

原创 从c++ istringstream读取字符(二)

get、getline、readgetsingle characterint get();istream& get (char& c);功能:从流中提取单个字符。返回该字符(第一个方法),或将其设置为参数的值(第二个方法)。c-stringistream& get (char* s, streamsize n);istream& get (char* s, streamsize n, char delim);从流中提取字符并将其作为c字符串存储在

2020-06-28 20:18:51 1845 1

原创 从c++ istringstream读取字符(一)

c++ istringstream读取字段之operator>>istringstream的继承关系如下:operator>>操作符继承istream,为extraction operator(导出符),它被重载为以下3类成员函数:arithmetic types(算术类型)istream& operator>> (bool& val);istream& operator>> (short& val);ist

2020-06-28 19:13:49 1961

原创 C++智能指针实现(shared_ptr, non-intrusive reference count)

题计根据上编智能指针好文中counted_ptr.h,实现智指针。智能指针实现的方式 (下面代码按照该方式实现)代码#include <iostream>class Data {public: Data(int data) : data(data){} ~Data() { std::cout << "~Data(): " << data << std::endl; } int data;};

2020-06-23 21:15:48 305

转载 Smart Pointer好文转载

转载:智能指针原理及应用详细介绍

2020-06-22 16:56:26 137

原创 C++的访问控制:private、protected、public

C++访问控制修饰符

2019-12-14 14:45:33 1784

原创 子类初始化列表不能初始化父类元素 -- class 'Derived' does not have any field named 'x'

缘由偶尔编写如下代码,编译出错,class Base{public: int x;};class Derived : public Base {public: Derived() : x(10) { cout << "Derived " << x << endl; }; int y;};int ...

2019-12-12 19:14:16 6586

工具使用perf抓取火焰图

svg火焰图

2024-10-19

me525 root工具

一键root工具完美支持me525 me526。android 2.3.6

2013-03-21

android_Maptest

android平台下,Openstreet Map API工具第三方osmdroid插件开发的地图浏览器

2013-03-15

lingoes_2.8.1_zh

快捷支持离线翻译的软件,中文版,适合于阅读文档和学习的时候使用

2013-03-14

osmdroid-android-1.0.8

OpenStreet Map基于android的插件和接口

2013-03-14

slf4j-api-1.7.2.jar

slf4j-api-1.7.2.jar android开发的第三方插件

2013-03-14

slf4j-api-1.7.2-source.jar

slf4j-api-1.7.2-source.jar android中开发基于osmdroid所需的第三方插件包

2013-03-14

空空如也

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

TA关注的人

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