自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux下使用lookbusy加载cpu负载

Lookbusy 是一个用于在 Linux 系统上生成合成负载的简单应用程序。它可以在 CPU 上生成固定的、可预测的负载,保持选定数量的内存处于活动状态,并生成您需要的任意数量的磁盘流量。

2023-09-12 11:22:14 582

原创 解决ROS2 humble版本源码编译中resdep init及rosdep update失败的问题

超时的原因主要是从国外的服务器下载东西,因此可以采用github添加代理的方式来解决。找到34行,修改FUERTE_GBPDISTRO_URL 的地址, 在原网址上添加“找到64行,修改DEFAULT_SOURCES_LIST_URL, 在原网址上添加“找到36行,修改REP3_TARGETS_URL,在原网址上添加“将获取到的ip添加到该文件下即可。找到119行, 在原网址上添加“找到202行, 在原网址上添加“找到68行, 在原网址上添加“找到68行,在原网址上添加“采用了一下方法顺利解决了。

2023-09-06 10:31:09 269

原创 Linux查询直连设备的IP

1、使用arp协议显示直连设备的ip。2、nmap扫描在线IP。nmap扫描开放的端口。

2023-05-26 10:42:56 616

原创 Linux代码性能分析工具

docker下需要安装gperftools、ghostscript、graphviz。

2023-05-16 10:20:40 796

原创 hiredis中使用空格

cli中使用sadd key data1 data2的时候,查询到的是两个数据,有时候我们需要data1和data2为一个数据,比如 sadd key "hello world",在命令中使用双引号将hello world包起来即可,但是在c++调用的hiredis接口的时候却实现不了。

2023-03-20 16:23:33 225

原创 Win10下使用WSL2

WSL2

2023-01-31 10:38:37 1728

原创 win11 右键恢复到win10操作

windows

2022-11-21 15:44:21 221

原创 Win10 WSL2 ubuntu20.04编译apollo

WSL2 apollo

2022-08-29 16:10:11 639

原创 Linux用backtrace定位分析段错误

Linux c/c++开发环境下,可以使用以下函数来获取进程调用的堆栈信息#include <execinfo.h>int backtrace(void **buffer, int size);该函数用于获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针列表。参数 size 用来指定buffer中可以保存多少个void* 元素。函数返回值是实际获取的指针个数,最大不超过size大小,为了取得全部的函数调用列表,应保证buffer和size足够大。

2022-04-01 15:58:15 1226

原创 Ubuntu18.04 Sublime Text3

安装sudo dpkg -i sublime-text_build-3211_amd64.deb 卸载sudo dpkg -r sublime-text插件基本功能:ClangAutoCompleteChineseLocalizationsFileHeaderSideBarEnhancementsConvertToUTF8主题:FlatlandMaterial屏蔽自动更新sudo vi /etc/hosts打开后添加下面几行 # s

2021-11-29 15:50:19 308

原创 Ubuntu生成core文件

永久设置ulimitsudo vim /etc/security/limits.conf增加以下内容后重启即可 * soft core unlimited * hard core unlimited生成core并设定位置echo那个指令是临时修改的,重启后又没了sudo bash -c 'echo "/data/core_file/%t.%e.core.%p"

2021-11-17 14:21:11 214

原创 c++总结(2)

1、initializer_listauto i = {1, 2, 3, 4};cout << typeid(i).name()<<endl;//输出//class std::initializer_list<int>c++11中的vector<int> vec{1,2,3};就是使用了initializer_list,可变参数也是使用的initializer_list。initializer_list最常用的方式是通过大括号包围的值列表对其

2021-11-09 18:19:05 776 1

原创 c++总结(1)

1、C++中NULL和nullptr的区别c++语言中NULL的定义如下#ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif#endif即C++中NULL为0,C中NULL 为(void*)0;c++下有重载机制,如下代码#include <stdio.h>#include <stdlib.h

2021-10-25 18:23:57 181

原创 sort和priority_queue比较函数的区别

两者第三个参数比较函数的区别是相反的。两者默认的都是less1、less情况sort排序是从小到大 priority_queue是大顶堆,即从大到小2、greater情况sort排序是从大到小 priority_queue是小顶堆,即从小到大3、自定义同样的仿函数,sort和priority_queue也是相反的struct MyStruct{ int data; MyStruct(int val) { data = val; }};struct cmp {

2021-10-11 10:18:12 596

原创 linux vscode c++调试

基础介绍linux下用vscode调试c++程序时,会在工作区的.vscode文件中遇到launch.json和tasks.json,作用分别如下:1、lauch.json负责的是启动任务,执行文件(可执行文件)2、tasks.json负责的是配置相关任务。简单来说就是负责编译链接生成可执行文件,其实就是执行终端的编译指令[g++ -g main.cpp -o main.o]。所以在执行launch.json文件之前必须先执行tasks.json3、launch.json和tasks.js

2021-09-19 21:56:54 1970

原创 CMakeLists.txt语法介绍

一、常用命令1.指定最小版本//设置cmake需要的最低版本号cmake_minimum_required(VERSION 3.6)2.设置项目名称//生成test.sln的工程名称project(test)3.基本指令//生成可执行程序add_executable(test, main.cpp)//生成静态库add_library(libstatic STATIC libstatic.cpp)//生成动态库add_library(dlldemo SHARED

2021-09-18 18:19:22 469

原创 C++设计模式(14)——外观模式

动机(Motivation) 客户和组件中各种复杂的子系统有过多的耦合 如何简化外部客户程序和系统间的交互接口?如何解耦? 模式定义为子系统中的一组接口提供一个一致(稳定)的界面,Façade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。 ——《设计模式》GoF要点总结 从客户程序角度来看,Façade模式简化了整个组件系统的接口,对于组件内部与外部的客户程序来说, 达到了一种”解耦“的效果——内部子系统的任何变化不会影响到Façade接口的变化。

2021-08-16 17:14:52 393

原创 C++设计模式(13)——状态模式

动机(Motivation) 对象状态如果改变,其行为也会随之而发生变化,比如文档处于只读状态,其支持的行为和读写状态支持的行为就可能完全不同。 如何在运行时根据对象的状态来透明地改变对象的行为? 模式定义允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。 ——《设计模式》GoF要点总结 State模式将所有与一个特定状态相关的行为都放入一个State的子对象中,在对象状态切换时,切换相应的对象; 但同时维持State的接口,这样实现了具体操作与

2021-08-16 17:00:21 69

原创 C++设计模式(12)——原型模式

动机(motivation) 在软件系统中,经常面临这“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。 如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得依赖这些”易变对象“的客户程序不随着需求改变而改变。 模式定义使用原型实例指定创建对象的种类,然后通过拷贝这些原型来创建新的对象。 ——《设计模式》GoF要点总结 Prototype模式同样用于隔离对象的使用者和具体类

2021-08-16 14:41:09 87

原创 C++设计模式(11)——适配器模式

动机(Motivation) 由于应用环境的变化,常常需要将”一些现存的对象“放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足。 如何应对这些”迁移的变化“? 模式定义将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 ——《设计模式》GoF要点总结 在遗留代码复用、类库迁移等方面有用 非适配器模式缺点:增加个欧元(ERO)的时候,对外的接口发生了变化,代码的功能需要重新写,.

2021-08-16 11:46:43 124

原创 C++设计模式(10)——桥模式

动机(Motivation) 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度(功能类),乃至多个纬度的变化。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引入额外的复杂度? 模式定义将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。 ——《设计模式》GoF要点总结 Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。所谓抽

2021-08-15 22:49:54 230

原创 C++设计模式(9)——装饰者模式

动机(Motivation) 在某些情况下我们可能会“过度地使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性; 并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀。 如何使“对象功能的扩展”能够根据需要来动态地实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致的影响将为最低? 模式定义动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子

2021-08-15 20:52:27 176

原创 C++设计模式(8)——代理模式

动机(Motivation) 在面向对象系统中,有些对象由于某种原因(比如对象创建的开销很大,或者某些操作需要安全控制,或者需要进程外的访问等), 直接访问会给使用者、或者系统结构带来很多麻烦。 如何在不失去透明操作对象的同时来管理/控制这些对象特有的复杂性?增加一层间接层是软件开发中常见的解决方式。 模式定义为其他对象提供一种代理以控制(隔离,使用接口)对这对象的访问。 ——《设计模式》GoF要点总结 Proxy并不一定要求保持接口完整的一致性,只要能够实现间接控制,有时

2021-08-14 22:59:08 113

原创 C++设计模式(7)——享元模式

动机(Motivation) 在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价——主要指内存需求方面的代价。 如何在避免大量细粒度对象问题的同时,让外部客户程序仍然能够透明地使用面向对象的方式来进行操作? 模式定义运行共享技术有效地支持大量细粒度的对象的复用。 ——《设计模式》GoF要点总结 面向对象很好地解决了抽象性的问题,但是作为yield运行机器中的程序实体,我们需要考虑对象的代价问题, Flyweight主要解决面向对

2021-08-14 21:25:02 240

原创 C++设计模式(6)——单例模式

动机(Motivation) 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。 如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例? 这应该是类设计者的责任,而不是使用者的责任。 模式定义保证一个类仅有一个实例,并提供一个该实例的全局访问点。 ——《设计模式》GoF要点总结 Singleton模式中的实例构造器可以设置为protected以允许子类派生。 Singleton模式一

2021-08-14 18:39:13 104

原创 C++设计模式(5)——观察者模式

动机(Motivation) 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对 象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。 使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。 模式定义定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。 ——《 设计

2021-08-13 23:48:33 165

原创 C++设计模式(4)——工厂模式

动机(Motivation) 在软件系统中,经常面临着创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。 如何应对这种变化?如何绕过常规的对象创建方法(new),提供一种“封装机制”来避免客户程序和这种“具体对象创建工作”的紧耦合? 模式定义定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。 ——《设计模式》GoF要点总结 Factory Method模式用于隔离类对象

2021-08-13 17:54:04 86

原创 C++设计模式(3)——策略模式

动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题? 模式定义定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。 ——《设计模式》 GoF要点总结 Strategy及其子

2021-08-13 16:59:05 106

原创 C++设计模式(2)——模板模式

动机(Motivation) 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。 如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期实现需求? 模式定义定义一个操作中的算法的骨架 (稳定) ,而将一些步骤延迟 (变化) 到子类中。 Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的 某

2021-08-13 16:05:04 60

原创 C++设计模式(1)——设计原则

什么是设计模式“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。 ——Christopher Alexander松耦合:降低每个模块之间的依赖关系,减少后期的修改工作量紧耦合:代码模块之间高度依赖,牵一发而动全身,不利于后期的修改设计模式使用的目的是为了管理变化、提高复用。一般在程序稳定、需要提高其复用性、扩展性的时候可以使用设计模式,刚开始的时候可以暂不考虑使用设计模式。在代...

2021-08-12 18:34:08 244

原创 c++单调栈

单调栈一般用来求下一个最值问题,是LeetCode中常考的算法题。496. 下一个更大元素 I给你两个 没有重复元素 的数组nums1 和nums2,其中nums1是nums2的子集。请你找出 nums1中每个元素在nums2中的下一个比其大的值。nums1中数字x的下一个更大元素是指x在nums2中对应位置的右边的第一个比x大的元素。如果不存在,对应位置输出 -1 。//496. 下一个更大元素 I/*Next Greater Elem...

2021-07-05 14:22:24 726

原创 Qt线程的四种创建方式

Qt中主线程负责界面显示和窗口控件的数据更新,子线程负责逻辑业务处理和数据计算,子线程不能对窗口有任何操作,子线程可通过信号槽来将数据传递给主线程。1、子线程继承QThread子线程继承QThread,然后重写run()函数来执行子线程每一个子业务逻辑都可继承一个QThread来实现多线程 m_thread = new MyThread; connect(m_thread, &MyThread::signalsThreadCalNum, this, [=](in.

2021-07-02 17:21:21 11344 2

原创 C++计时

1、采用clock()来实现clock_t start = clock();// do something...clock_t end = clock();cout << "time is " << (double)(end - start) / CLOCKS_PER_SEC << "s" << endl;2、采用c++11 的chronostd::milli:毫秒std::micro:微秒std::nano:纳秒..

2021-07-02 10:36:46 68

原创 c++回调函数

一、使用函数指针可以使用typedef和using两种表示方法//回调//typedef void(*CbkFunc)(void *arg);using CbkFunc = void(*)(void *arg);//c++11 using新用法,可以替代typedefvoid TestFunc(void *arg){ int param = (int)arg; cout << param << endl;}void TestCbk(CbkFunc c.

2021-06-29 10:17:57 99

原创 Qt小技巧

记录几个Qt使用过程中的小技巧1、支持高清分辨率Qt从5.6.0开始,支持High-DPI在main.cpp中加上QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);使其自适应屏幕,并且一定要加在QApplication的前面。#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) QCoreApplication::setAttribute(Qt::AA_EnableH.

2021-06-28 13:31:08 118

原创 c++ Lambda表达式

[capture list] (params list) mutable exception-> return type { function body } 表达式中各个参数的含义如下:[capture list]:外部变量列表 (表示外部传进来的数值)(params list):形参列表 (比如用for_each传进来的数值)mutable:表示能不能修改捕获的变量 (可省略)exception:异常设定 ...

2021-06-22 13:21:02 62

原创 Git基本操作记录

1、分支操作查看分支//查看本地分支git branch //查看远端分支git brabch -r切换分支//切换到分支(test)git checkout test//切换到主分支(master)git checkout master合并分支//先切换到mastergit checkout mastergit merge test//有冲突解决冲突,无冲突则进行下一步 add commit pushgit add test.cpp(修改的文件)

2021-05-13 10:48:31 85

原创 vs2017创建dll并调用

1.动态链接库的创建直接按图片的顺序一步一步来即可//dllTest.h#pragma once#ifdef dllTest_EXPORTS #ifdef __GNUC__ #ifndef __linux__ #define DLL_TEST_API __attribute__((dllexport)) #else #define DLL_TEST_API __attribute__((visibility("default"))) #endif #el

2021-04-07 12:11:17 472

原创 feof如何跳出循环问题

介绍一下IO操作的基础知识 (1) long ftell(FILE *stream);功能:用于得到文件位置指针当前位置相对于文件首的偏移字节数,即可计算得到stream的当前位置(2)int fseek(FILE *stream, long offset, int origin)功 能:函数设置文件指针stream的位置。如果执行成功,stream将指向以stream的位置为基准,偏移offset(指针偏移量)个字节的位置,函数返回0。如果执行失败(比如offset超过文件自身大小..

2021-03-24 18:01:12 760 1

原创 数组和链表实现Stack

数组的实现需要先开辟一定的理论空间capacity的数组 当实际空间size大于理论空间capacity时,需要重新分配空间大小 通过size来指向栈顶 压栈就是将新的数值放在size处,然后size++ 出栈就是将size处的数值返还,size--//ArrayStack.h#pragma once//栈的两种实现方法之数组实现template <typename T>class ArrayStack{public: ArrayStack(int cap);

2021-03-09 17:16:07 89

空空如也

空空如也

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

TA关注的人

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